2022-11-30 01:08:25 +00:00
|
|
|
|
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";
|
2023-12-04 01:26:23 +00:00
|
|
|
|
RyWeb.QuickWeb web = new RyWeb.QuickWeb();
|
2022-11-30 01:08:25 +00:00
|
|
|
|
string sign = EncryptString(appId + q + salt + secretKey);
|
2023-12-04 01:26:23 +00:00
|
|
|
|
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);
|
2022-11-30 01:08:25 +00:00
|
|
|
|
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));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|