谷歌百度翻譯器

目錄web

說明服務器

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

設計spa

「麻雀雖小五臟俱全」,因爲支持兩種翻譯方式,因此能夠將一些共性抽象出來,放在一個獨立的接口當中(假如之後擴展更多種翻譯方式,也會方便不少)。咱們定義一個「翻譯接口」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接口,不會直接依賴於兩個具體的翻譯類:設計

以上是「依賴倒置原則」最簡單的應用場合。code

使用blog

使用很簡單,定義一個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(前者較後者更高層、更抽象)。get

已知缺陷

  • 因爲有些詞語並無獲得支持,因此翻譯的朗讀效果並不太好。
  • 並且程序中是經過「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

相關文章
相關標籤/搜索