百度翻译开放平台:点击打开链接

1. 定义类用于保存解析json得到的结果

public class Translation
{
public string Src { get; set; }
public string Dst { get; set; }
} public class TranslationResult
{
//错误码,翻译结果无法正常返回
public string Error_code { get; set; }
public string Error_msg { get; set; }
public string From { get; set; }
public string To { get; set; }
public string Query { get; set; }
//翻译正确,返回的结果
//这里是数组的原因是百度翻译支持多个单词或多段文本的翻译,在发送的字段q中用换行符(\n)分隔
public Translation[] Trans_result { get; set; }
}

2. 定义枚举保存一些常用语言

public enum Language
{
//百度翻译API官网提供了多种语言,这里只列了几种
auto = 0,
zh = 1,
en = 2,
cht = 3,
}

3. 因为百度翻译要求对发送数据中的一部分做md加密,所以这里给出对字符串做md5加密的函数

//对字符串做md5加密
private static string GetMD5WithString(string input)
{
if (input == null)
{
return null;
}
MD5 md5Hash = MD5.Create();
//将输入字符串转换为字节数组并计算哈希数据
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
//创建一个 Stringbuilder 来收集字节并创建字符串
StringBuilder sBuilder = new StringBuilder();
//循环遍历哈希数据的每一个字节并格式化为十六进制字符串
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
//返回十六进制字符串
return sBuilder.ToString();
}

4. 调用百度翻译API的函数。记得去申请appid

/// <summary>
/// 调用百度翻译API进行翻译
/// 详情可参考http://api.fanyi.baidu.com/api/trans/product/apidoc
/// </summary>
/// <param name="q">待翻译字符</param>
/// <param name="from">源语言</param>
/// <param name="to">目标语言</param>
/// <returns></returns>
private static TranslationResult GetTranslationFromBaiduFanyi(string q, Language from, Language to)
{
//可以直接到百度翻译API的官网申请
//一定要去申请,不然程序的翻译功能不能使用
string appId = "0123456789";
string password = "0123456789"; string jsonResult = String.Empty;
//源语言
string languageFrom = from.ToString().ToLower();
//目标语言
string languageTo = to.ToString().ToLower();
//随机数
string randomNum = System.DateTime.Now.Millisecond.ToString();
//md5加密
string md5Sign = GetMD5WithString(appId + q + randomNum + password);
//url
string url = String.Format("http://api.fanyi.baidu.com/api/trans/vip/translate?q={0}&from={1}&to={2}&appid={3}&salt={4}&sign={5}",
HttpUtility.UrlEncode(q, Encoding.UTF8),
languageFrom,
languageTo,
appId,
randomNum,
md5Sign
);
WebClient wc = new WebClient();
try
{
jsonResult = wc.DownloadString(url);
}
catch
{
jsonResult = string.Empty;
}
//解析json
JavaScriptSerializer jss = new JavaScriptSerializer();
TranslationResult result = jss.Deserialize<TranslationResult>(jsonResult);
return result;
}

5. 对获取的翻译结果进行提取

/// <summary>
/// 将中文翻译为英文
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static string translation(string source)
{
TranslationResult result = GetTranslationFromBaiduFanyi(source, Language.zh, Language.en);
//判断是否出错
if(result.Error_code == null)
{
return result.Trans_result[0].Dst;
}
else
{
//检查appid和密钥是否正确
return "翻译出错,错误码:" + result.Error_code + ",错误信息:" + result.Error_msg;
}
}

百度翻译API(C#)的更多相关文章

  1. C# 调用百度翻译Api

    这是简单的界面.用的是wpf,winform也可以 具体的操作类 public partial class MainWindow : Window { string url = "" ...

  2. 基于百度翻译API开发属于自己的翻译工具

    你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那 ...

  3. Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  4. WP8.1小梦词典开发2:百度翻译API使用

    原文出自:http://www.bcmeng.com/api2/ 小梦昨天和大家分享了WP8.1金山词霸API使用方法,今天继续分享windows phone 8.1中百度翻译API的使用方法.和昨天 ...

  5. 原生js简单调用百度翻译API实现的翻译工具

    先来个在线demo: js翻译工具 或者百度搜索js简单调用百度翻译API工具(不过有个小小的界面显示bug,我想细心的人应该会发现) 或者直接前往该网址:js翻译工具 或者前往我的github:gi ...

  6. 利用百度翻译API,获取翻译结果

    利用百度翻译API,获取翻译结果 translate.py #!/usr/bin/python #-*- coding:utf-8 -*- import sys reload(sys) sys.set ...

  7. 有道翻译 / 百度翻译Api

    比较推荐使用百度翻译api 不推荐有道翻译,比较水. http://ai.youdao.com/docs/doc-trans-api.s#p02 http://ai.youdao.com/docs/d ...

  8. 百度翻译api 实现简易微信翻译小程序

    介绍 口袋翻译 口袋翻译 微信小程序 翻译功能 含7类语言的相互翻译 包含最近10条的翻译历史回溯功能 微信搜索:简e翻译 功能展示   使用百度翻译api需要申请 appid 与 key 并在 ap ...

  9. Go语言使用百度翻译api

    Go语言使用百度翻译api 之前做过一个使用百度翻译api的工具,这个工具用于用户的自动翻译功能,是使用C#调用百度翻译api接口,既然在学习Go语言,那必然也是要使用Go来玩耍一番.这里我是这么安排 ...

随机推荐

  1. laravel 获取上一条insert语句产生的id

    <?php //頭部引入DB類 use Illuminate\Support\Facades\DB; //在方法中獲取获取上一条insert语句产生的id $id = DB::getPdo()- ...

  2. thinkphp5 列表页数据分页查询2-带搜索条件

    一.控制器部分 <?php namespace app\user\controller; use app\index\controller\Common; use app\user\model\ ...

  3. java Collections.sort()

    sort()是Collections中的静态方法,用于对List容器中的元素排序. 如容器list中存储的是Integer对象 List<Integer> list =Arrays.asL ...

  4. NET设计模式 第二部分 结构性模式(8):桥接模式(Bridge Pattern)

    桥接模式(Bridge Pattern) ——.NET设计模式系列之九 Terrylee,2006年2月 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维 ...

  5. php大量数据 10M数据从查询到下载 【内存溢出,查询过慢】解决方案

    功能描述:做数据导出 功能分析:1.采用csv的格式,因为csv的格式比excel小 2. 3W条数据,100个字段需要全部导出 开始 直接查询 //此处使用的laravel框架,具体含义一看就懂 t ...

  6. ThinkPHP 3.1.2 CURD特性 -3

    一.ThinkPHP 3 的CURD介绍  (了解) 二.ThinkPHP 3 读取数据    (重点) 对数据的读取 Read $m=new Model('User'); $m=M('User'); ...

  7. Python关于self用法重点分析

    在介绍Python的self用法之前,先来介绍下Python中的类和实例…… 我们知道,面向对象最重要的概念就是类(class)和实例(instance),类是抽象的模板,比如学生这个抽象的事物,可以 ...

  8. 黄聪:保持web页面生成的app一直处于用户登录状态不退出

    用户登录了会员中心,怎么保持登录状态! 由于封壳的内核及组件肯定没有浏览器APP应用那么强大,所以目前暂时的解决方案是: jquery.cookie.js  本文转载至:https://www.cnb ...

  9. 黄聪:Windows+PHP7+ImageMagick

    需要Apache下才适用,Nginx没测试过~ Step1 把ImageMagick对应版本下载下来(ps: 我这里下载的是这个版本ImageMagick-6.9.3-7-vc14-x86.zip) ...

  10. vagrant box保存路径修改

    add box的时候默认保存在C盘用户文件夹 C:\Users\xxx.vagrant.d,通过设置VAGRANT_HOME环境变量改变默认位置 WIN setx VAGRANT_HOME “X:/y ...