csharp:百度翻译

王朝学院·作者佚名  2016-08-28  
宽屏版  字体: 小 | 中 | 大 | 超大  

参考: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"}]}

*/

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有