using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Security.Cryptography; using System.Text; using System.Threading; using System.Windows.Forms; namespace VSoft.Tools { public partial class FrmTrans : Skins.SKinForm { public FrmTrans() { InitializeComponent(); CbbLngFrom.SelectedIndex = 0; CbbLngTo.SelectedIndex = 0; } private string Tran(string from_txt,string lng_from,string lng_to) { try { if (from_txt.Length == 0) { return ""; } // 原文 string q = from_txt; // 源语言 string from = lng_from; // 目标语言 string to = lng_to; // 改成您的APP ID string appId = "20220508001207657"; Random rd = new Random(); string salt = rd.Next(100000).ToString(); // 改成您的密钥 string secretKey = "l6ngE7GjtdvRESJqQzDL"; RyWeb.QuickWeb web = new RyWeb.QuickWeb(); string sign = EncryptString(appId + q + salt + secretKey); string post_data = "q=" + web.UrlEncode(q); post_data += "&from=" + from; post_data += "&to=" + to; post_data += "&appid=" + appId; post_data += "&salt=" + salt; post_data += "&sign=" + sign; var http= web.Post("http://api.fanyi.baidu.com/api/trans/vip/translate", post_data); JObject jo = JObject.Parse(http.Html); var trans_result = jo["trans_result"]; if (trans_result != null) { var jarr = (JArray)trans_result; var text = ""; for (int i = 0; i < jarr.Count; i++) { if (text.Length > 0) { text += "\r\n"; } if (jarr[i] != null) { var dst = jarr[i]["dst"]; if (dst != null) { text+= dst.ToString(); } } } last_text = from_txt; return text; } return ""; } catch(Exception ex) { return "错误=>"+ex.Message; } } string last_text = ""; // 计算MD5值 public static string EncryptString(string str) { MD5 md5 = MD5.Create(); // 将字符串转换成字节数组 byte[] byteOld = Encoding.UTF8.GetBytes(str); // 调用加密方法 byte[] byteNew = md5.ComputeHash(byteOld); // 将加密结果转换为字符串 StringBuilder sb = new StringBuilder(); foreach (byte b in byteNew) { // 将字节转换成16进制表示的字符串, sb.Append(b.ToString("x2")); } // 返回加密的字符串 return sb.ToString(); } private void Trans() { var lng_from = lng_convert(CbbLngFrom.Text); var lng_to = lng_convert(CbbLngTo.Text); string lng_convert(string lng_text) { if (lng_text == "自动") { return "auto"; } else if (lng_text == "中文") { return "zh"; } else if (lng_text == "英文") { return "en"; } else if (lng_text == "日语") { return "jp"; } else if (lng_text == "韩语") { return "kor"; } else { return ""; } } var from_text = RichText.Text; Thread th = new Thread(Start); th.Start(); void Start() { var to_text= Tran(from_text, lng_from, lng_to); this.Invoke(new Action(() => { RichResult.Text = to_text; })); } } private void CbbFrom_SelectedIndexChanged(object sender, EventArgs e) { Trans(); } private void CbbTo_SelectedIndexChanged(object sender, EventArgs e) { Trans(); } private void RichText_TextChanged(object sender, EventArgs e) { Trans(); } private void FrmTrans_Load(object sender, EventArgs e) { var screen = Screen.FromPoint(MousePosition).WorkingArea; this.Location = new Point(screen.Left+ ((screen.Width-this.Width)/2),screen.Top+ ((screen.Height - this.Height) / 2)); } } }