参考:http://api.fanyi.baidu.com/api/trans/product/index

http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91API

winform:

    /// <summary>
/// 涂聚文
/// </summary>
public partial class Form5 : Form
{
TranClass tranClass = new TranClass();
string url = "";
string youAPI_Id = "geovindu";
/// <summary>
///
/// </summary>
/// <returns></returns>
DataTable setLanguage()
{ DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Rows.Add(1, "中文--英文");
dt.Rows.Add(2, "英文--中文");
dt.Rows.Add(3, "中文--日文");
dt.Rows.Add(4, "日文--中文");
dt.Rows.Add(5, "中文--韩文");
dt.Rows.Add(6, "韩文--中文");
dt.Rows.Add(7, "西班牙文--中文");
dt.Rows.Add(8, "中文--西班牙文");
return dt; }
/// <summary>
///
/// </summary>
public Form5()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form5_Load(object sender, EventArgs e)
{
this.cbxTranslateChange.DataSource = setLanguage();
this.cbxTranslateChange.ValueMember = "id";
this.cbxTranslateChange.DisplayMember = "name"; }
/// <summary>
/// 翻译
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
WebClient client = new WebClient(); //引用System.Net
string fromTranslate = tbxFromContent.Text; //翻译前的内容
if (!string.IsNullOrEmpty(fromTranslate))
{
//client_id为自己的api_id,q为翻译对象,from为翻译语言,to为翻译后语言
string url = string.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id={0}&q={1}&from={2}&to={3}", youAPI_Id, fromTranslate, tranClass.From, tranClass.To);
var buffer = client.DownloadData(url);
string result = Encoding.UTF8.GetString(buffer);
StringReader sr = new StringReader(result);
JsonTextReader jsonReader = new JsonTextReader(sr); //引用Newtonsoft.Json 自带
JsonSerializer serializer = new JsonSerializer();
var r = serializer.Deserialize<TranClass>(jsonReader); //因为获取后的为json对象 ,实行转换
tbxToContent.Text = r.Trans_result[0].dst; //dst为翻译后的值
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cbxTranslateChange_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox comboBox = sender as ComboBox;
switch (comboBox.SelectedIndex)
{
case 1:
tranClass.From = "zh";
tranClass.To = "en";
break;
case 2:
tranClass.From = "en";
tranClass.To = "zh";
break;
case 3:
tranClass.From = "zh";
tranClass.To = "jp";
break;
case 4:
tranClass.From = "jp";
tranClass.To = "zh";
break;
case 5:
tranClass.From = "zh";
tranClass.To = "kor";
break;
case 6:
tranClass.From = "kor";
tranClass.To = "zh";
break;
case 7:
tranClass.From = "zh";
tranClass.To = "spa";
break;
case 8:
tranClass.From = "spa";
tranClass.To = "zh";
break;
default:
tranClass.From = "auto";
tranClass.To = "auto";
break; }
} } public class TranClass
{
public string From { get; set; }
public string To { get; set; }
public List<Trans_result> Trans_result { get; set; }
}
public class Trans_result
{
public string src { get; set; }
public string dst { get; set; }
} /* 语言简写 名称
auto 自动检测
zh 中文
en 英语
yue 粤语
wyw 文言文
jp 日语
kor 韩语
fra 法语
spa 西班牙语
th 泰语
ara 阿拉伯语
ru 俄语
pt 葡萄牙语
de 德语
it 意大利语
el 希腊语
nl 荷兰语
pl 波兰语
bul 保加利亚语
est 爱沙尼亚语
dan 丹麦语
fin 芬兰语
cs 捷克语
rom 罗马尼亚语
slo 斯洛文尼亚语
swe 瑞典语
hu 匈牙利语
cht 繁体中文
*/
}

  

webform:

 TranClass tranClass = new TranClass();
string url = "www.dusystem.com";
string youAPI_Id = "geovindu";
/// <summary>
/// 涂聚文
/// </summary>
/// <returns></returns>
DataTable setLanguage()
{ DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Rows.Add(1, "中文--英文");
dt.Rows.Add(2, "英文--中文");
dt.Rows.Add(3, "中文--日文");
dt.Rows.Add(4, "日文--中文");
dt.Rows.Add(5, "中文--韩文");
dt.Rows.Add(6, "韩文--中文");
dt.Rows.Add(7, "西班牙文--中文");
dt.Rows.Add(8, "中文--西班牙文");
return dt; }
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.DropDownList1.DataSource = setLanguage();
this.DropDownList1.DataTextField = "name";
this.DropDownList1.DataValueField = "id";
this.DropDownList1.DataBind();
//DropDownList1.SelectedIndex = 0;
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
int k = int.Parse(DropDownList1.SelectedValue);
switch (k)
{
case 1:
tranClass.From = "zh";
tranClass.To = "en";
break;
case 2:
tranClass.From = "en";
tranClass.To = "zh";
break;
case 3:
tranClass.From = "zh";
tranClass.To = "jp";
break;
case 4:
tranClass.From = "jp";
tranClass.To = "zh";
break;
case 5:
tranClass.From = "zh";
tranClass.To = "kor";
break;
case 6:
tranClass.From = "kor";
tranClass.To = "zh";
break;
case 7:
tranClass.From = "zh";
tranClass.To = "spa";
break;
case 8:
tranClass.From = "spa";
tranClass.To = "zh";
break;
default:
tranClass.From = "auto";
tranClass.To = "auto";
break; } WebClient client = new WebClient(); //引用System.Net
string fromTranslate = this.TextBox1.Text; //翻译前的内容 if (object.Equals(tranClass, null))
{
tranClass.From = "zh";
tranClass.To = "en";
} if (!string.IsNullOrEmpty(fromTranslate))
{
//client_id为自己的api_id,q为翻译对象,from为翻译语言,to为翻译后语言
string url = string.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id={0}&q={1}&from={2}&to={3}", youAPI_Id, fromTranslate, tranClass.From, tranClass.To);
var buffer = client.DownloadData(url);
string result = Encoding.UTF8.GetString(buffer);
StringReader sr = new StringReader(result);
JsonTextReader jsonReader = new JsonTextReader(sr); //引用Newtonsoft.Json 自带
while (jsonReader.Read())
{
//Response.Write(jsonReader.Value.ToString() + "<br/>");//jsonReader.TokenType.ToString() + "" + jsonReader.ValueType.ToString() + "" +
}
Response.Write(CallInterface(fromTranslate, tranClass.From, tranClass.To));
var j = JsonConvert.DeserializeObject<TranClass>(result); //JsonSerializer serializer = new JsonSerializer(); //TranClass p1 = (TranClass)serializer.Deserialize(new JsonTextReader(sr), typeof(TranClass));
//TranClass r = serializer.Deserialize<TranClass>(jsonReader); //因为获取后的为json对象 ,实行转换 反序列化 错误
//this.TextBox2.Text = r.Trans_result[0].dst; //dst为翻译后的值
if (!object.Equals(j, null))
{
this.TextBox2.Text = j.Trans_result[0].dst;
}
}
} /// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{ switch (DropDownList1.SelectedIndex)
{
case 0:
tranClass.From = "zh";
tranClass.To = "en";
break;
case 1:
tranClass.From = "en";
tranClass.To = "zh";
break;
case 2:
tranClass.From = "zh";
tranClass.To = "jp";
break;
case 3:
tranClass.From = "jp";
tranClass.To = "zh";
break;
case 4:
tranClass.From = "zh";
tranClass.To = "kor";
break;
case 5:
tranClass.From = "kor";
tranClass.To = "zh";
break;
case 6:
tranClass.From = "zh";
tranClass.To = "spa";
break;
case 7:
tranClass.From = "spa";
tranClass.To = "zh";
break;
default:
tranClass.From = "auto";
tranClass.To = "auto";
break; }
}
/// <summary>
/// 请求百度接口
///
/// https://github.com/lbv/litjson
/// </summary>
/// <param name="sub">要翻译的文本</param>
/// <param name="from">from语言</param>
/// <param name="to">翻译为语言</param>
/// <returns></returns>
private string CallInterface(string sub, string from, string to)
{ HttpContext.Current.Application.Lock();
if (HttpContext.Current.Application["baidu"] == null)
{
HttpContext.Current.Application["baidu"] = 1;
}
else
{
HttpContext.Current.Application["baidu"] = (int)HttpContext.Current.Application["baidu"] + 1;
}
HttpContext.Current.Application.UnLock();
string url = string.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id={0}&q={1}&from={2}&to={3}", youAPI_Id, sub, from, to);
string down = "", result = "";
try
{
WebClient wc = new WebClient();
down = wc.DownloadString(url);
}
catch (Exception)
{ }
JsonData jd = JsonMapper.ToObject(down);
if (JsonDataContainsKey(jd, "error_code"))
{
result += sub;
}
else
{
JsonData jdResult = jd["trans_result"];
for (int j = 0; j < jdResult.Count; j++)
{
JsonData jdDst = jdResult[j]["dst"];
result += jdDst.ToString();
}
}
return result;
}
/// <summary>
///
/// </summary>
/// <param name="data"></param>
/// <param name="key"></param>
/// <returns></returns>
public bool JsonDataContainsKey(JsonData data, string key)
{
bool result = false;
if (data == null)
return result;
if (!data.IsObject)
{
return result;
}
IDictionary tdictionary = data as IDictionary;
if (tdictionary == null)
return result;
if (tdictionary.Contains(key))
{
result = true;
}
return result;
} } /// <summary>
///
/// </summary>
public class TranClass
{
public string From { get; set; }
public string To { get; set; }
public List<Trans_result> Trans_result { get; set; }
}
/// <summary>
///
/// </summary>
public class Trans_result
{
/// <summary>
/// 原文
/// </summary>
public string src { get; set; }
/// <summary>
/// 翻译后的值
/// </summary>
public string dst { get; set; }
} /*
{"from":"zh","to":"en","trans_result":[{"src":"\u4e2d\u56fd","dst":"China"}]}
*/
}

  

csharp:百度翻译的更多相关文章

  1. Android开发学习之路-机器学习库(图像识别)、百度翻译

    对于机器学习也不是了解的很深入,今天无意中在GitHub看到一个star的比较多的库,就用着试一试,效果也还行.比是可能比不上TensorFlow的,但是在Android上用起来比较简单,毕竟Tens ...

  2. C# 调用百度翻译Api

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

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

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

  4. Python 调用百度翻译API

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

  5. 百度翻译&&金山词霸API

    #/usr/bin/env python3 #coding=utf8 """百度翻译api功能实现函数,本模块基于Python3.x实现,getTransResult(q ...

  6. 百度翻译word-wrap,页面错乱原因查找过程(已修复)

    今天群里有人发问, 进入百度翻译http://fanyi.baidu.com/#auto/zh/, 输入word-wrap,发现页面错乱. 寻找错乱原因. 上图 开始查找原因: 1.从请求入手 从ch ...

  7. 百度翻译API

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...

  8. Asp.NET调用百度翻译

    Asp.NET调用百度翻译,图示: HTML: <%@ Page Language="C#" AutoEventWireup="true" CodeFil ...

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

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

随机推荐

  1. C#3.0新特性之扩展方法介绍

    C#3.0扩展方法是给现有类型添加一个方法.现在类型即可是基本数据类型(如int,String等),也可以是自己定义的类.以下是引用片段: //Demo--1 //扩展基本类型 namespace T ...

  2. pod 出错备忘

    pod install #输出信息 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems ...

  3. asihttprequest本机调试时正常,发布后闪退

    "Compile sources" -->"Build Phases" 找到ASIFormDataRequest.m和ASIHTTPRequest.m,修 ...

  4. SCRIPT1010: 缺少标识符 常见原因

    SCRIPT1010: 缺少标识符 ,一般是在IE下会出现这个问题. 今天在调试一段js代码时,在chrome,ff下均正常,但是在IE下就是一直这样的提示,出现这个问题的原因主要有以下几点: 1.出 ...

  5. [LeetCode] Additive Number

    Af first I read the title as "Addictive Number". Anyway, this problem can be solved elegan ...

  6. c++ 访问者模式(visitor pattern)

    概述: 我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的.我们的访问者模式可以很好付诸在这个场景中:对于银行柜 台来说,他们是不用变化的,就是说今天和明天提供 ...

  7. ios 实现推送消息

      iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的 ...

  8. ubuntu 安装node.js + express + mongodb

    转载自http://my.oschina.net/reg/blog/289536 Ctrl + Alt + T,打开终端,输入以下命令安装: sudo apt-get install nodejs 安 ...

  9. [iOS]关于状态栏(UIStatusBar)的若干问题

    版本: OS X 10.10.5 Xcode 6.4(6E35b) iOS >= 7 一.概述 状态栏(UIStatusBar)指iPhone/iPad/iPod屏幕顶部用于显示网络.时间和电量 ...

  10. Android中使用自身携带的Junit新建一个测试工程

    1.新建立一个Android工程 package com.shellway.junit; public class Service { public int divide(int a,int b){ ...