文档章节

谷歌百度翻译器

IT周见智
 IT周见智
发布于 2015/06/05 17:18
字数 800
阅读 6
收藏 0

目录

说明

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

© 著作权归作者所有

IT周见智

IT周见智

粉丝 10
博文 61
码字总数 185891
作品 0
西青
私信 提问
主流机器翻译系统(谷歌、百度、搜狗)对比测评(2018年4月)

你也许听过这样的论调:“人工智能将取代人工翻译”,这并不是噱头,事实上这一天的到来已经越来越近了。由此带来的好处是显而易见的,相比于寻求专业的人工翻译,更多的人将能享受到廉价且优...

程序师
2018/05/26
0
0
响铃:当AI翻译能识别“语境”,我们的“地球村”梦想就不远了

     文|曾响铃   来源|科技向令说(xiangling0815)   《圣经.旧约》里记载着这样一段故事:   当时人类联合起来兴建希望能通往天堂的高塔,为了阻止人类的计划,上帝让人类说不同...

深度学习
2018/06/08
0
0
百度宣布AI同传最新突破!能预测,低延时,演示效果惊人,外媒称媲美人类翻译...

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yH0VLDe8VG8ep9VGe/article/details/83353547 夏乙 栗子 乾明 一璞 发自 三区五地 量子位 报道 | 公众号 Qbit...

量子位
2018/10/24
0
0
Wox一款国产开源的快捷启动器辅助工具神器

     前言   如果你也不喜欢电脑桌面上满是程序的快捷方式,如果你也喜欢博主这样干干净净的桌面,甚至喜欢高效的键盘操作,那么你需要一款好用的快速启动器软件。   今天推荐一款国...

后端编程嘟
2017/03/15
0
0
八款主流浏览器的“杀手级”功能

本文将对比八种国内最常用的PC浏览器,找出它们各自的亮点以及“杀手级”功能,所有浏览器都是基于Windows平台。和杀毒软件不一样,浏览器之间虽然也竞争激烈,却不存在兼容性的问题,因此以...

红薯
2011/12/07
3.9K
35

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
11分钟前
1
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
14分钟前
1
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
44分钟前
6
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
54分钟前
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部