參考: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"}]} */}
新聞熱點
疑難解答