基于Google API的全文翻译Web Service实现
来源:互联网 发布:查看淘宝账号退款率 编辑:程序博客网 时间:2024/04/29 11:11
1. Google AJAX Language API
2.Web Service
3. JSON
三、 Web Service的实现
首先使用Visual Studio 2008新建一个“ASP.NET Web服务应用程序”
由于Google AJAX Language API返回的是JSON格式的数据。所以我们先将下载后的“Newtonsoft.Json.dll”引用到项目,并添加新项“Web服务”将文件命名为“WebService.asmx”。
我们需要获得从Google返回的JSON数据,实现方法如下:
[code="csharp"]
///
/// 使用WebRequest获取Google翻译后的内容
///
/// 需要翻译的内容 /// 原文语种 /// 译文语种 ///
private string GetGoogleTranslateJSONString(string strTranslateString,
string strRequestLanguage, string strResultLanguage)
{
WebRequest request = HttpWebRequest.Create("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q="
+ strTranslateString + "&langpair=" + strRequestLanguage + "%7C" + strResultLanguage + "");
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
[/code]
实现原理:利用WebRequest把需要翻译的内容提交到Google服务器“http://ajax.googleapis.com/ajax /services/language/translate”,v=1.0是Google AJAX Language API的版本,q参数传递的是需要进行翻译的内容,langpair传递的是需要翻译的内容的语种,“%7C”后面的是译文语种。再使用 HttpWebResponse获取Google返回的数据。
Google返回的JSON数据格式为:
[code="js"]
{"responseData": {
"translatedText":"Ciao mondo"
},
"responseDetails": null,
"responseStatus": 200
};
[/code]
按照Google返回的JSON数据格式,声明反系列化类。
[code="csharp"]
///
/// 翻译结果的反系列化类
///
public class TranslateString
{
private TranslatedText responsedata;
public TranslatedText responseData
{
get { return responsedata; }
set { responsedata = value; }
}
private string responsedetails;
public string responseDetails
{
get { return responsedetails; }
set { responsedetails = value; }
}
private int responsestatus;
public int responseStatus
{
get { return responsestatus; }
set { responsestatus = value; }
}
///
/// 译文
///
public class TranslatedText
{
private string translatedtext;
public string translatedText
{
get { return translatedtext; }
set { translatedtext = value; }
}
}
[/code]
对Google返回的数据进行反系列化后,就可以把反系列化后获得的译文返回显现给用户了。
[code="csharp"]
///
/// 翻译
///
/// 需要翻译的内容 /// 原文语种 /// 译文语种 ///
[WebMethod(Description = "Multi Language Translate.")]
public string MultiLanguageTranslate(string strTranslateString, string strRequestLanguage, string strResultLanguage)
{
try
{
if (!string.IsNullOrEmpty(strTranslateString))
{
TranslateString transtring = (TranslateString)Newtonsoft.Json.JavaScriptConvert.DeserializeObject(
GetGoogleTranslateJSONString(strTranslateString, strRequestLanguage, strResultLanguage),
typeof(TranslateString));
if (transtring.responseStatus == 200)
return transtring.responseData.translatedText;
else
return "There was an error.";
}
else
{
return strTranslateString;
}
}
catch (Exception e)
{
return e.Message;
}
}
[/code]
这句“(TranslateString)Newtonsoft.Json.JavaScriptConvert.DeserializeObject(GetGoogleTranslateJSONString(strTranslateString, strRequestLanguage, strResultLanguage), typeof(TranslateString));”的作用是将GetGoogleTranslateJSONString(…)方法返回的字符串调用Json.NET的静态方法Newtonsoft.Json.JavaScriptConvert.DeserializeObject实现反系列化,并将其转化为TranslateString类型。
到这里这个Web Service基本上已经完成了。为方便使用,我们再内置两个中英文互译的方法。
[code="csharp"]
///
/// 翻译
/// 默认地将英文翻译成简体中文
///
/// 需要翻译的内容 ///
[WebMethod(Description = "Translate English to Chinese.")]
public string TranslateEnglishToChinese(string strTranslateString)
{
return MultiLanguageTranslate(strTranslateString, "en", "zh-CN");
}
///
/// 翻译
/// 默认地将简体中文翻译成英文
///
/// 需要翻译的内容 ///
[WebMethod(Description = "Translate Chinese to English.")]
public string TranslateChineseToEnglish(string strTranslateString)
{
return MultiLanguageTranslate(strTranslateString, "zh-CN", "en");
}
[/code]
到这里就完工了。
参考文献
[1]林弘之.Web Services原理与开发实务.北京:电子工业出版社,2003.11
[2]李健富.利用Google公开的API做在线翻译.http://blog.moozi.net/archives/2008/10/11/use-the-api-of-google-to-translating-online/,2008-04-12
[3]李健富.使用Json.Net 1.3.1的第一个演示.http://blog.moozi.net/archives/2008/09/15/the-first-demo-of-json-net/,2008-09-15
源码下载:http://www.box.net/shared/plpnnrlf8l
http://blog.moozi.net/archives/2008/10/16/the-realization-of-web-service-of-full-text-translations-based-on-google-ajax-language-api.aspx
- 基于Google API的全文翻译Web Service实现
- 基于Google API的全文翻译Web Service实现
- 基于Google API的全文翻译Web Service实现
- 基于Google API的全文翻译Web Service实现
- Google API的全文翻译 asp.net,简单调用实现,源代码
- 调用Google API 的Java实现(Web service)
- 调用Google API 的Java实现(Web service)
- 调用google全文翻译
- 基于 java 的 Web Service 简单实现
- 文本翻译API及Web Service
- 调用Google的API实现简单的翻译功能
- 基于搜索引擎的全文翻译软件构想
- Google 翻译API的使用
- Google发布基于web的3D图形API
- 如何更好的设计你的REST API之基于REST架构的Web Service设计及REST框架实现
- Google Web Search API 实现
- 使用Google的Web Service
- 使用Google的Web Service
- IIS设置方法
- 公司绝不会告诉你的20大秘密
- 上海某数学老师的经典损人语录(搞笑)
- 阳光明媚,很舒服
- 桃花庵歌
- 基于Google API的全文翻译Web Service实现
- 分享一个格式化文件大小的 C# 方法
- C#把数字转换为大写金额
- 4个时段喝水肚不饿狂瘦身
- 行列转换等经典SQL语句
- 内核文件操作
- celog & kernel tracker
- KMP算法中的next数组求解
- 这次是真的搞定了, 用VBA读取Perkin Elmer的*.sp二进制谱图文件