谷歌百度翻译器

简介:

目录

说明

由于项目需要,我整理了网上一些跟在线翻译有关的资料,做了一个整合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

作者:周见智 
出处:http://www.cnblogs.com/xiaozhi_5638/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类:  .NET Framework

本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/4514911.html,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
数据采集 算法 搜索推荐
谷歌文章不收录是什么原因?
答案是:文章质量太差,建议使用GPC爬虫池促收录。 谷歌的收录机制 谷歌搜索引擎的收录机制非常复杂,它的机器人会通过各种算法来决定是否收录一个网页。 这些算法会考虑网站的内容质量、网站的可访问性、链接的数量和质量,以及网站是否符合谷歌的指南等因素。 内容质量 网站的内容质量是谷歌是否收录的重要因素之一。 如果您的文章内容太短,没有提供有价值的信息,或者是复制其他网站的内容,那么谷歌可能不会收录您的文章。
77 0
谷歌文章不收录是什么原因?
|
8月前
|
数据采集 搜索推荐 UED
做的国内网站如何让谷歌收录?
答案是:国内网站的谷歌快速收录可以通过GPC爬虫池技术完成。 理解谷歌的收录机制 了解谷歌的收录机制是至关重要的。 谷歌会通过它的爬虫来搜索和收录网站,但它更偏向于收录具有高质量内容和良好用户体验的网站。 提供高质量的内容 内容是王道。确保你的网站内容是原创的、高质量的,并且为用户提供真正的价值。 确保网站结构清晰 一个清晰的网站结构不仅有助于用户更好地导航你的网站,而且还可以帮助谷歌爬虫更容易地抓取你的网页。
137 2
做的国内网站如何让谷歌收录?
|
8月前
|
Python
正确姿势百度
正确姿势百度
51 0
|
8月前
|
数据采集 搜索推荐 算法
为什么谷歌文章不收录?
答案是:因为你的文章质量太差,建议使用GPC爬虫池促收录。 搜索引擎算法的不断进化 谷歌作为全球最大的搜索引擎,其背后的搜索算法非常复杂。 每次的更新可能都会影响到某些网站在搜索结果中的排名。 这里我们将探讨几个可能的原因。 内容质量问题 内容是谷歌排名的一个重要指标。 谷歌始终优先显示高质量、原创、有价值的内容。 如果您的文章内容过于浅显、复制粘贴或者与其他网站重复率较高,那么谷歌可能不会收录。
70 0
为什么谷歌文章不收录?
|
存储 安全
百度妙传浏览器脚本
百度妙传浏览器脚本
181 0
|
存储 安全 开发工具
百度一面总结
百度一面总结
84 0
|
Web App开发 搜索推荐 定位技术
谷歌杀死了孩子们的圣诞老人?
现在的小孩在很小时就能明白圣诞老人不存在,这与他们越来越早的接触互联网和搜索引擎有关吗?是谷歌杀死了圣诞老人吗?
101 0
|
算法 Java Linux
谷歌语言标准中,C++成绝对的佼佼者
谷歌发布了一份调查报告[pdf](首页如下图),指出C++是市场上最高效的编程语言。该互联网巨头将一个紧凑的算法实现在四大预言——C++,Java,Scala以及它自己的编程语言Go之上——然后评估运行结果以找出‘差异因素’。
715 0