谷歌百度翻译器

简介:

目录

说明

由于项目需要,我整理了网上一些跟在线翻译有关的资料,做了一个整合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,如需转载请自行联系原作者
目录
相关文章
|
弹性计算 黑灰产治理
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
阿里云服务器怎么续费?新老用户分别有什么优惠?目前新用户续费阿里云服务器指定ECS实例可享4.5折优惠折扣,老用户开通包年自动续费享1次6.5折,开通包月自动续费享3次7.5折,现在续费还可以领取和使用阿里云续费优惠券,本文为大家介绍一下阿里云服务器续费流程及续费过程中如何使用续费优惠券。
6139 0
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
|
5月前
|
人工智能 自然语言处理 JavaScript
千星计划视频号系统开发源码
千星计划是由抖音生活服务联合头部商家发起的战略项目,旨在通过视频号橱窗功能,培育具备影响力、内容力和交易力的新主播
|
7月前
|
数据挖掘 数据安全/隐私保护 UED
千星计划小店模式开发
千星计划模式是一种创新的电商模式,旨在通过自动化操作和社交裂变效应,帮助用户轻松实现电商梦想并获取高额佣金
|
11月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
179 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
6月前
|
人工智能 监控 算法
千星计划如何解决私域裂变难题?
《千星计划:破解私域裂变难题》介绍了通过“零成本裂变引擎”降低参与门槛、构建轻量启动场景,实现低成本高回报的用户增长;借助指数级收益模型激发用户动力,提升裂变效率;清流机制解决流量垄断问题,确保公平分配;视频号变现闭环与自动化运营体系助力降本增效。方案结合实际案例(如众店生活、店商豹等),为高毛利低决策成本品类提供可验证的增长模型,打造私域流量全链路闭环。作者张梅以丰富经验,为企业搭建自驱型增长生态提供参考。
|
芯片
一文搞懂I2C协议-硬件基础
I2C总线是由飞利浦在80年代初设计的,以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计,早期的电视机中很多地方用到了I2C这种通信方式。飞利浦半导体于2006年迁移到了NXP。I2C名称翻译为“ Inter IC”。有时,该总线称为IIC或I²C总线。I2C总结的基本的特征
1436 0
|
存储 Kubernetes API
在K8S中,各组件是如何实现高可用的?
在K8S中,各组件是如何实现高可用的?
|
安全 API 语音技术
阿里云百炼大模型服务平台是什么
阿里云百炼大模型服务平台是一个为企业提供一站式专属大模型生产与应用的平台,支持多样化模型和自定义编排。平台提供即插即用的智能工具箱,包括API接口、模型微调及部署功能,同时具备流程编排以适应复杂业务场景。此外,平台内置多种工具和插件,支持Python等,允许企业集成自定义API。平台优势在于快速构建业务应用、多行业大模型,以及保障模型效果的三大核心竞争力。它还提供丰富的模型服务,如通义千问模型用于文字创作、翻译等,通义万相模型用于图像生成,以及语音合成和识别模型等。企业可通过标准API和SDK进行集成,确保高效安全。
|
Java API Android开发
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
229 0
|
运维 Cloud Native 安全
带你读《云原生架构白皮书2022新版》——DevOps(上)
带你读《云原生架构白皮书2022新版》——DevOps(上)
725 96