基於Google AJAX Language API的全文翻譯Web Service實現

來源:互聯網
上載者:User
基於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 APILi 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)(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在瀏覽器中啟動並執行

參考文獻

[1]林弘之.Web Services原理與開發實務.北京:電子工業出版社,2003.11

相關下載:http://www.box.net/shared/plpnnrlf8l

本文轉自http://www.cnblogs.com/moozi/archive/2008/11/07/1329113.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.