前几天因为频繁使用翻译功能,但是市面上的翻译软件都臃肿了,对我我这个只需要翻译的人没有什么太大用处,反而有更多弊端。

于是在百度开发者中心申请了一个百度翻译的API。自己写了一个简单的翻译功能。仅供自己平时开发使用。

首先肯定是需要百度开发者中心去申请一个百度翻译的API的。申请方式具体可以去这里看:百度翻译API帮助中心,我就简单说一下:登录之后,新建一个工程。在控制面板里面有一个其它API的选项。进入选择百度翻译API。[[url=http://www.godlyl.com]银鸥的博客[/url]]提交申请之后,会显示正在提交申请之类的,不用管,拿到key就行了。

接下来打开visual studio,新建一个winform项目。可以先把窗体空间拖好。

这是我拖好的界面,是丑了点,我也没过多美化。
[img=http://img.bbs.csdn.net/upload/201408/12/1407823957_816144.png][/img]
使用了两个ComboBox控件,是当前语言的选择和目标语言的选择。语言支持请看这里:[url=http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/26.gif][/img]%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91/%E7%BF%BB%E8%AF%91API]翻译API语言列表以及json[/url]

这是百度的官方文档。因为我们仔细发送语言的时侯,不是通过中文发送的,而是使用的对应的英文,例如:英语==en,简体中文==zh

这应该很容易理解。在C#里面可以通过键值对的集合来保存语言列表。
[code=csharp]
//能够选择的当前语言信息
            Dictionary<String, String> NowLanguage = new Dictionary<string, string>();
            NowLanguage.Add("auto", "自动检测");
            NowLanguage.Add("zh", "简体中文");
            NowLanguage.Add("en", "英语");
            NowLanguage.Add("de", "德语");
            NowLanguage.Add("jp", "日语");
            NowLanguage.Add("spa", "西班牙语");
            NowLanguage.Add("th", "泰语");
            NowLanguage.Add("ru", "俄罗斯语");
            NowLanguage.Add("yue", "粤语");
            NowLanguage.Add("kor", "韩语");
            NowLanguage.Add("fra", "法语");
            NowLanguage.Add("it", "意大利语");
            NowLanguage.Add("ara", "阿拉伯语");
            NowLanguage.Add("pt", "葡萄牙语");
            NowLanguage.Add("wyw", "文言文");
            //能够选择的目标语言信息
            TargetLanguage = new Dictionary<string, string>();
            TargetLanguage.Add("auto", "自动检测");
            TargetLanguage.Add("zh", "简体中文");
            TargetLanguage.Add("en", "英语");
            TargetLanguage.Add("de", "德语");
            TargetLanguage.Add("jp", "日语");
            TargetLanguage.Add("spa", "西班牙语");
            TargetLanguage.Add("th", "泰语");
            TargetLanguage.Add("ru", "俄罗斯语");
            TargetLanguage.Add("yue", "粤语");
            TargetLanguage.Add("kor", "韩语");
            TargetLanguage.Add("fra", "法语");
            TargetLanguage.Add("it", "意大利语");
            TargetLanguage.Add("ara", "阿拉伯语");
            TargetLanguage.Add("pt", "葡萄牙语");
            TargetLanguage.Add("wyw", "文言文");
[/code]

以上的内容是文档里面提供的,我直接使用了Dictionary集合储存了语言列表,然后再添加到了ComboBox(绑定数据源)。绑定数据源应该不需要再说吧。如果不会的可以看这里:[url=http://www.cnblogs.com/refresh/archive/2012/07/14/2591503.html]ComboBox绑定Dictionary做为数据源[/url]

使用ComboBox的事件:SelectedIndexChanged   来获取用户选择的语言,使用属性SelectedValue。

现在最主要通过API获取返回的翻译结果。百度官方的文档可以知道返回的结果是json代码。主要还是可以自己看看上面所发的第二个链接,也就是百度官方的使用文档。

我[[url=http://www.godlyl.com]银鸥的博客[/url]]现在就主要说C#如何发送请求获得JSON代码。

百度翻译API的接口Get请求方式:
[code=csharp]http://openapi.baidu.com/public/2.0/bmt/translate?client_id=你申请的Key&q=查询内容&from=源语言&to=目标语言[/code]

其中的from和to是两个ComboBox的选择值。

有了API接口之后,我们需要的就是发送请求了。可以使用实例化一个WebClient,然后使用方法:DownloadString方法。里面传入API的Get请求网址。

具体的实现方法:
[code=csharp]/// <summary>
        /// 调用百度API的翻译方法
        /// </summary>
        /// <param name="NowLanguage">当前语言</param>
        /// <param name="TargetLanguage">目标语言</param>
        /// <param name="Content">翻译内容</param>
        /// <returns>翻译的结果</returns>
        public String TranslationMain(String NowLanguage, String TargetLanguage,String Content)
        {
            String api = String.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=你的Key&q={0}&from={1}&to={2}", Content, NowLanguage, TargetLanguage);
            WebClient client = new WebClient();
            return client.DownloadString(api);
        }[/code]

这个方法返回一个JSON字符串。

格式如下:
[code=csharp]{"from":"en","to":"zh","trans_result":[{"src":"today","dst":"\u4eca\u5929"}]}[/code]

看到JSON之后,我们可以看到当前语言、目标语言、翻译内容、翻译结果。很明显,翻译结果是Unicode码。所以到后面还需要转换成UTF-8代码。这个先不急,先把trans_result里面的dst获取到,因为dst就是翻译结果。

仔细看JSON代码,可以看成是两层内容。所以要分两次解析。

解析JSON可以通过一个dll:Newtonsoft.Json

下载地址:http://pan.baidu.com/s/1pJ2UM8N   提取密码:24lp

包里面有很多dll,选择自己.net版本相对应的dll添加到项目中的引用即可。

现在就可以写一个解析JSON的方法了:

[code=csharp]/// <summary>
        ///解析Json代码
        /// </summary>
        /// <param name="jsonCode">JSON代码</param>
        /// <returns>返回翻译的字符串</returns>
        public String Analytical(String JsonCode)
        {
            JObject ResultParent = JObject.Parse(JsonCode);
            String trans_result = ResultParent["trans_result"].ToString();
            JObject ResultChild = JObject.Parse(trans_result.Replace("[", " ").Replace("]", " "));
            //翻译后的目标结果
            String target = ResultChild["dst"].ToString();
            return target;
        }[/code]

很明显,我上面就解析了两次,其中的trans_result为解析的第一次,也就是解析出来trans_result的内容。后面又将trans_result里面的方括号给转换成了空格,如果不转换,那么就不是一个正确的json代码,所以我使用空格将json大括号前后的方括号去掉。String ResultChild就是解析出来的src和dst内容。然后我再将dst取出来,放到target变量中,返回target。也就返回了翻译结果。在解析JSON中,其中的Unicode码也就直接被翻译成了UTF-8。所以,返回的结果就是我们所需要的内容。

….

现在貌似就已经搞定了。

这次写的教程写得比较乱,如果看得不懂的地方可以提出来。

我写的源代码下载地址:链接: http://pan.baidu.com/s/1i3zdpTb   密码: pyo8
[[url=http://www.godlyl.com]银鸥的博客[/url]]

C#调用百度翻译API实现自己的简单翻译工具相关推荐

  1. tensorflow调用百度云API实现颜值打分简单实例

    tensorflow调用百度云API实现颜值打分简单实例 首先还是在百度智能云官网注册/登陆账号,再申请一个人脸识别的API,记好API和密码,也要放到代码里面. 详细申请操作请详看tensorflo ...

  2. 【c#】Form调用百度地图api攻略及常见问题

    首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/ ...

  3. C#调用百度地图API入门解决BMap未定义问题

    本文主要是最近帮助好友研究JavaScript的百度地图API,同时显示到C# Winform界面.同时遇到了BMap未定义的错误(BMap is not defined)及解决方法.以前写过基于An ...

  4. 调用百度汇率api 获取各国的汇率值

    设置一个定时任务,每天更新汇率java代码如下 package com.thinkgem.jeesite.modules.huiLvApi.service;import java.io.Buffere ...

  5. 调用百度地图API出现 error inflating class com.baidu.mapapi.map.mapview

    调用百度地图API出现 error inflating class com.baidu.mapapi.map.mapview 问题如下 本来以为解决了,但后来重新运行了一下,又坏了,然后改成原来的样子 ...

  6. python调用百度地图API爬取西安市POI数据

    任务前提 做该项目之前,首先得有基础知识: 编程语言:python 编译工具:PyCharm 网络爬虫相关知识,xpath库,numpy,pandas等库. 任务准备: 去百度地图开放平台申请密匙:h ...

  7. c语言api获取百度地图,H5调用百度地图API获取地理位置

    //获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...

  8. java 地图api接口_Java调用百度地图API

    本实战代码将使用百度地图的接口来实现以下功能: 1.确定输入地址的坐标 2.两个坐标的距离 其他的话,还要使用百度账户申请相关的api,具体见: http://lbsyun.baidu.com/ind ...

  9. Python调用百度地图api路径查询

    通过调用百度地图api获取两个地点的距离和时间.参数详见百度地图api官方文档. # -*- coding: utf-8 -*- """ Created on Thu M ...

最新文章

  1. LeetCode 96不同的二叉搜索树95不同的二叉搜索树Ⅱ
  2. python封装 继承 多态 举例_python面向对象中的封装、继承、多态
  3. 全国计算机等级考试题库二级C操作题100套(第29套)
  4. AsyncTask知识整理笔记
  5. range函数python_range()函数以及Python中的示例
  6. 计算机软件基础第四版,《计算机软件技术基础》徐士良(第4版)课后习题答案详解|复习笔记...
  7. 用Python读取CSV文件的5种方式
  8. 网络蜘蛛爬取邮箱地址
  9. ios label 高度紫石英_iOS_NSMutableAttributedString和自适应宽度高度
  10. 2013年US News全美综合大学排名(全)
  11. 我的硬件工程师成长之路
  12. 【死磕 Spring】----- IOC 之 Factory 实例化 bean
  13. 准大二生的暑期自学安排
  14. 为perf4j提供集中式监控项目perf4j-dashboard
  15. 矩阵的Kronecker积、Khatri-Rao积、Hadamard积
  16. 汽车音响的各个按钮的功能汇总
  17. 创造与魔法服务器维护一维护是多久,创造与魔法5月17日更新维护公告
  18. 从mkv文件中提取src格式等字幕流
  19. 王慧文复出进军人工智能,王兴投资BlockCity区块城市搞元宇宙
  20. javascript实现关键字搜索和匹配关键字高亮效果

热门文章

  1. 耳穴诊疗记录0526-内人舌头苔厚微黄
  2. 推送网页到kindle
  3. 中原银行:数据资产管理与运营实践
  4. 缓和曲线段长度的计算分析
  5. PDH SDH WDM
  6. 系统克隆工具:操作系统一键迁移
  7. Acunetix WVS 11安装及漏洞扫描
  8. LED灯的开尔文与色温
  9. 常用控件:列表框控件ListBox
  10. 宠物喂食器芯片方案设计