在本文中,将探讨如何使用Bing翻译API来开发一个WPF应用程序,该程序能够提供文本翻译功能。Bing翻译API是一个提供即时文本翻译、语言检测、协作翻译以及多语言文本到语音的服务。目前,该API被一些知名网站如Facebook和eBay所使用。
Bing翻译API是一个服务,它提供即时文本翻译、语言检测、协作翻译功能以及多语言的文本到语音转换。该API目前被一些知名网站如Facebook和eBay所使用。Bing翻译服务提供不同使用量级别的服务,高使用量的服务是收费的,而低使用量和业余爱好者使用则是免费的。
需要注意的是,虽然Bing翻译API目前对低使用量是免费的,但这并不是未来的保证。Bing网络服务API使用条款的第14项部分指出,"(微软)可能随时更改(包括移除功能或对之前免费提供的功能收费)、更新或增强(统称为“修改”)服务..."。
要使用翻译API,需要获取一个免费的Bing应用ID。要获取Bing应用ID,请访问,使用Windows Live ID登录,填写并保存应用程序表格以生成应用ID,并启用该ID。
将使用的URL格式如下:
http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=应用ID&text=要翻译的文本&from=源语言的ISO 639-1语言代码&to=目标语言的ISO 639-1语言代码
URL有四个参数必须指定:
最终的URL可能看起来像这样:
http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=1A2345B6789C2345B6789&text=翻译&from=en&to=es
下表显示了目前(截至本文撰写时)翻译API支持的语言及其ISO 639-1语言代码:
语言 | 代码 |
---|---|
阿拉伯语 | ar |
捷克语 | cs |
丹麦语 | da |
德语 | de |
英语 | en |
爱沙尼亚语 | et |
芬兰语 | fi |
荷兰语 | nl |
希腊语 | el |
希伯来语 | he |
海地克里奥尔语 | ht |
印地语 | hi |
匈牙利语 | hu |
印度尼西亚语 | id |
意大利语 | it |
日语 | ja |
韩语 | ko |
立陶宛语 | lt |
拉脱维亚语 | lv |
挪威语 | no |
波兰语 | pl |
葡萄牙语 | pt |
罗马尼亚语 | ro |
西班牙语 | es |
俄语 | ru |
斯洛伐克语 | sk |
斯洛文尼亚语 | sl |
瑞典语 | sv |
泰语 | th |
土耳其语 | tr |
乌克兰语 | uk |
越南语 | vi |
简体中文 | zh-CHS |
繁体中文 | zh-CHT |
使用翻译应用程序非常简单。只需运行应用程序,输入想要翻译的文本,指定语言,然后单击“翻译”按钮即可显示翻译后的文本。
在类Translator中的GetTranslatedText()方法调用Bing翻译服务,并返回包含翻译文本的字符串。
VB.NET
Public Function GetTranslatedText(ByVal textToTranslate As String, ByVal fromLang As String, ByVal toLang As String) As String
Dim translation As String
' 仅在指定的语言不同的情况下进行翻译。
If (fromLang <> toLang) Then
Dim uri As String = "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=" & appID & "&text=" & textToTranslate & "&from=" & fromLang & "&to=" & toLang
Dim request As HttpWebRequest = CType(WebRequest.Create(uri), HttpWebRequest)
Try
Using response As WebResponse = request.GetResponse()
Dim strm As Stream = response.GetResponseStream()
Using sr As New StreamReader(strm)
translation = sr.ReadToEnd()
End Using
End Using
Catch ex As WebException
MessageBox.Show("确保已连接到互联网。", "翻译器", MessageBoxButton.OK, MessageBoxImage.Stop)
Exit Function
End Try
Else
MessageBox.Show("不会翻译到相同的语言。", "翻译器", MessageBoxButton.OK, MessageBoxImage.Exclamation)
Exit Function
End If
' 解析字符串为XElement并获取XElement值,作为翻译后的文本返回。
Return (XElement.Parse(translation).Value)
End Function
设置translation字符串变量的值后,将得到一个看起来像这样的XML字符串:
XML
翻译后的文本
然后,使用XElement.Parse()方法将XML字符串解析为XElement对象,并使用XElement的Value属性返回翻译后的文本。
注意:在运行项目之前,需要在Translator类中设置appID字段的值。