谷歌百度翻譯器


目錄

說明

由於項目需要,我整理了網上一些跟在線翻譯有關的資料,做了一個整合Google和百度翻譯的Demo程序。大概工作就是將Google翻譯和百度翻譯的Web在線版本功能移植PC客戶端,用的是它們提供的一些翻譯API(非付費)。功能簡單,原理也不復雜,記下來希望能夠幫助一些人。以下是截圖:

設計

“麻雀雖小五臟俱全”,由於支持兩種翻譯方式,所以可以將一些共性抽象出來,放在一個獨立的接口當中(假如以后擴展更多種翻譯方式,也會方便很多)。我們定義一個“翻譯接口”ITranslator,負責翻譯的兩個類分別為GoogleTranslator和BaiduTranslator。ITranslator接口代碼如下:

 1  /// <summary>
 2  /// 翻譯器接口  所有翻譯器必須實現該接口
 3  /// </summary>
 4  interface ITranslator
 5  {
 6         /// <summary>
 7         /// 翻譯方法
 8         /// </summary>
 9         /// <param name="srcTxt"></param>
10         /// <param name="srcLanguage"></param>
11         /// <param name="desLanguage"></param>
12         /// <returns></returns>
13         string TranslateText(string srcTxt, string srcLanguage, string desLanguage);
14         /// <summary>
15         /// 翻譯結果發音URL
16         /// </summary>
17         string TranslateSpeechURL
18         {
19             get;
20         }
21         /// <summary>
22         /// 所有支持的語言
23         /// </summary>
24         List<string> AllSupportedLanguages
25         {
26             get;
27         }
28         /// <summary>
29         /// 本次翻譯耗時
30         /// </summary>
31         double TranslateTime
32         {
33             get;
34         }
35  }

兩個翻譯類(GoogleTranslator和BaiduTranslator)均實現該接口。UI界面直接依賴於ITranslator接口,不會直接依賴於兩個具體的翻譯類:

以上是“依賴倒置原則”最簡單的應用場合。

使用

使用很簡單,定義一個ITranslator接口即可:

 1 itranslator = new GoogleTranslator();
 2 //翻譯
 3 string translated_string = itranslator.TranslateText("我是一個地球人 ——來自Google的翻譯", "中文", "英語");
 4 //翻譯結果朗讀URL
 5 string speechURL = itranslator.TranslateSpeechURL;
 6 //翻譯耗時(毫秒)
 7 int translate_time = (int)itranslator.TranslateTime;
 8 
 9 itranslator = new BaiduTranslator();
10 //翻譯
11 translated_string = itranslator.TranslateText("我是一個地球人 ——來自百度的翻譯", "中文", "德語");
12 //翻譯結果朗讀URL
13 speechURL = itranslator.TranslateSpeechURL;
14 //翻譯耗時(毫秒)
15 translate_time = (int)itranslator.TranslateTime;

后續如果有更多種翻譯方式,可以參照GoogleTranslator和BaiduTranslator的實現。具體代碼我就不貼了,源碼中注釋很詳細。請求Web Server時用到了WebClient和WebRequest/WebResponse(前者較后者更高層、更抽象)。

已知缺陷

  • 由於有些詞語並沒有得到支持,所以翻譯的朗讀效果並不太好。
  • 而且程序中是通過“http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&text=博客園”這種方式去加載音頻文件的,如果語句太長,官方web版本中是分多次加載音頻數據,但是程序中並沒有做如此處理,所以可能拋出異常。
  • 另外,音頻是通過一個簡單的WebBrowser控件加載的,在有些環境中,並不能直接朗讀,需要打開系統自帶的media palyer進行播放。
  • 程序中在解析服務器返回來的Json數據時,並不嚴格(可以說是很隨便)。建議實際使用過程中,可以采用專門的JSON解析工具。

源碼地址

http://files.cnblogs.com/files/xiaozhi_5638/Translator.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM