谷歌百度翻译器

目录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

相关文章
相关标签/搜索