基于Google API的全文翻译Web Service实现

基于Google API的全文翻译Web Service实现

这是我发到《电脑编程技巧与维护》杂志的一篇文章,一直都没有收到回复,可能是技术含量太低了吧,现在发到博客上。转载请保留出处,谢谢!

基于Google AJAX Language API的全文翻译Web Service实现
李健富
(河北理工大学 机械工程学院,河北 唐山 063009)
摘  要:在开发应用软件和网站的过程中,越来越多的地方需要用到翻译功能。利用Google AJAX Language API,我们就可以开发出支持全球30多种语言的全文翻译Web Service。
关键词:Google AJAX Language API;Web服务;JSON;全文翻译
 
The Realization of Web Service of Full Text Translations Based on Google AJAX Language API
Li Jianfu
(Hebei Polytechnic University, Tangshan Hebei 063009)
Abstract: In the process of developing application software and website, the translation function will be used in more conditions. Taking advantage of Google AJAX Language API, we will be able to develop the Web Service supporting full text translations in more than 30 languages.
Key Words: Google AJAX Language API, Web Services, JSON, Full Text Translation.
 
一、引言
 
    随着我国互联网迅猛发展,网络与我们生活结合得越来越紧密,多语言交流越来越频繁,也越来越多地需要用到机器翻译。
作为程序员,在开发软件时需要给用户提供全文翻译的地方也越来越多, Google AJAX Language API是一个非常成熟、易用的API,通过它我们可以实现全球30多种语言全文翻译。
 
二、Google AJAX Language API及相关技术介绍
 
1. Google AJAX Language API
    使用Google AJAX Language API可以实现对用户给定的一段文字进行翻译和检测工作。
2.Web Service
    Web Services是建立可互操作的分布式应用程序的新平台。Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web Service ,我们就可以通过Web Service标准对这些服务进行查询和访问。Web Service是一种应用程序,它可以使用标准的互联网协议,像超文本传输协议(HTTP)和XML,将功能纲领性地体现在互联网和企业内部网上。
Web Service建立在一些通用协议的基础上,如HTTP,SOAP,XML,WSDL,UDDI等。这些协议在涉及到操作系统、对象模型和编程语言的选择时,没有任何倾向,因此Web Service有很强的生命力。
3. JSON
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
    Google AJAX Language API有支持非JavaScript环境的接口,它是以JSON进行数据交互的。
    在.NET Framework 2.0环境下,不能直接反系列化JSON数据。在这里,我们使用开源的Json.NET类库进行JSON反系列化。Json.NET可以在http://www.codeplex.com/Json下载,我们使用Json.NET 1.3.1。
 
三、 Web Service的实现

首先使用Visual Studio 2008新建一个“ASP.NET Web服务应用程序”

由于Google AJAX Language API返回的是JSON格式的数据。所以我们先将下载后的“Newtonsoft.Json.dll”引用到项目,并添加新项“Web服务”将文件命名为“WebService.asmx”。

    Services.asmx的功能流程图如下:

我们需要获得从Google返回的JSON数据,实现方法如下:

复制代码
/// <summary> 
/// 使用WebRequest获取Google翻译后的内容 
/// </summary> 
/// <param name="strTranslateString">需要翻译的内容</param> 
/// <param name="strRequestLanguage">原文语种</param> 
/// <param name="strResultLanguage">译文语种</param> 
/// <returns></returns> 

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; 
}
复制代码

 

实现原理:利用WebRequest把需要翻译的内容提交到Google服务器“http://ajax.googleapis.com/ajax/services/language/translate”,v=1.0是Google AJAX Language API的版本,q参数传递的是需要进行翻译的内容,langpair传递的是需要翻译的内容的语种,“%7C”后面的是译文语种。再使用HttpWebResponse获取Google返回的数据。

    语种必须使用简写格式,如简体中文(zh-CN)、繁体中文(zh-TW)、英语(en)、日语(ja)等。Google AJAX Language API支持的所有语言较多,这里不再一一列出,详情请查阅Google AJAX Language API官方网站的“翻译API类参考”。( http://code.google.com/apis/ajaxlanguage/documentation/reference.html#LangNameArray)

    Google返回的JSON数据格式为:

{"responseData": 
    
"translatedText":"Ciao mondo" 
    }, 
    "responseDetails":  null
    "responseStatus": 200 
};
按照Google返回的JSON数据格式,声明反系列化类。
复制代码
/// <summary> 
/// 译文的反系列化类 
/// </summary> 

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; } 
    } 
 
     /**/ /// <summary> 
    
/// 译文内容 
    
/// </summary> 

     public  class TranslatedText 
    
        
private  string translatedtext; 
         public  string translatedText 
        
            
get  return translatedtext; } 
             set  { translatedtext = value; } 
        } 
    } 
}
复制代码
对Google返回的数据进行反系列化后,就可以把反系列化后获得的译文返回显现给用户了。
复制代码
/// <summary>
/// 翻译
/// </summary>
/// <param name="strTranslateString">需要翻译的内容</param>
/// <param name="strRequestLanguage">原文语种</param>
/// <param name="strResultLanguage">译文语种</param>
/// <returns></returns>

[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;
    }
}
复制代码

 

这句“(TranslateString)Newtonsoft.Json.JavaScriptConvert.DeserializeObject(GetGoogleTranslateJSONString(strTranslateString, strRequestLanguage, strResultLanguage), typeof(TranslateString));”的作用是将GetGoogleTranslateJSONString(…)方法返回的字符串调用Json.NET的静态方法Newtonsoft.Json.JavaScriptConvert.DeserializeObject实现反系列化,并将其转化为TranslateString类型。

到这里这个Web Service基本上已经完成了。为方便使用,我们再内置两个中英文互译的方法。

复制代码
/// <summary>
/// 翻译
/// 默认地将英文翻译成简体中文
/// </summary>
/// <param name="TranslateString">需要翻译的内容</param>
/// <returns></returns>

[WebMethod(Description =  " Translate English to Chinese. ")]
public  string TranslateEnglishToChinese( string strTranslateString)
{
    
return MultiLanguageTranslate(strTranslateString,  " en "" zh-CN ");
}

/// <summary>
/// 翻译
/// 默认地将简体中文翻译成英文
/// </summary>
/// <param name="TranslateString">需要翻译的内容</param>
/// <returns></returns>

[WebMethod(Description =  " Translate Chinese to English. ")]
public  string TranslateChineseToEnglish( string strTranslateString)
{
    
return MultiLanguageTranslate(strTranslateString,  " zh-CN "" en ");
}
复制代码

 

这个Web Service在浏览器中运行的效果如图

 

参考文献

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值