目的:为了方便快捷调用翻译工具,ctrl+alt+T(启用程序)、Alt+t(翻译)、Alt+c(退出程序),实现春键盘操作。
缺点:通用翻译免费接口翻译很差
界面:
主代码:
using Newtonsoft.Json;
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.Tasks;
using System.Web;
using System.Windows.Forms;
namespace BaiduTranslate
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
}
/// <summary>
/// 获取url的返回值
/// </summary>
/// <param name="url">eg:http://m.weather.com.cn/atad/101010100.html </param>
public string GetInfo(string url)
{
try
{
string strBuff = "";
Uri httpURL = new Uri(url);
///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容
///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理
Stream respStream = httpResp.GetResponseStream();
///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以
//StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)
StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);//Encoding.UTF8
strBuff = respStreamReader.ReadToEnd();
return strBuff;
}
catch
{
return "400";
}
}
private void button2_Click(object sender, EventArgs e)
{
}
/// <summary>
/// 加密成32位小写的MD5
/// </summary>
/// <param name="myString">传入需要加密的字符串</param>
/// <returns>返回加密后的字符串</returns>
public static string GetMD5(string myString)
{
string res = "";
MD5 md5 = MD5.Create();//实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(myString));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0; i < s.Length; i++)
{
// 将得到的字符串使用32进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
res = res + s[i].ToString("x");
}
return res;
}
private void button3_Click(object sender, EventArgs e)
{
// http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
if (string.IsNullOrEmpty(textBox1.Text))
{
//翻译成英文
}
else
{
//翻译成中文
string appid = "自己的百度Appid";
string q = textBox1.Text;
string salt = "1235485";
string key = "自己的百度秘钥";
string st = appid + q + salt + key;
string sign = GetMD5(st);
string dst = "";
//接收JSON
string Json = GetInfo("http://api.fanyi.baidu.com/api/trans/vip/translate?q=" + q + "&from=auto&to=auto&appid=" + appid + "&salt=" + salt + "&sign=" + sign);
JObject jo = (JObject)JsonConvert.DeserializeObject(Json); // 反序列化对象
// string error_code = jo["error_code"].ToString();//接收错误时的JSON
try
{
//JSON数组解析
var jsonObj = new JObject();
jsonObj = JObject.Parse(Json);//jsontest即为接收到的Json数据
JArray jlist = JArray.Parse(jsonObj["trans_result"].ToString()); //数组trans_result集合
//一层一层的把数组分为一个组合
foreach (var item in jlist)
{
dst += item["dst"].ToString() + "\n";//译文字符拼接
// dst += item["src"].ToString() + "\n"; //原文字符拼接
}
textBox2.Text = dst;//赋值给译文
}
catch
{
string error_code = jo["error_code"].ToString();
textBox2.Text = error_code;//赋值给译文
}
}
}
private void button1_Click_1(object sender, EventArgs e)
{
System.Environment.Exit(0);
}
//public class Item
// {
// /// <summary>
// /// 原文
// /// </summary>
// public string src { get; set; }
// /// <summary>
// /// 译文
// /// </summary>
// public string dst { get; set; }
// }
//public class trans_result
//{
// /// <summary>
// /// Item列表
// /// </summary>
// public List<Item> Item { get; set; }
//}
}
}
配合上传案例使用:https://download.csdn.net/download/weixin_42401291/10752488
配合桌面快捷方式使用:
如需合作加QQ:1174787689 备注合作
本人可开发:.Net、数据库、小程序、网站、App...,你敢来我就敢做