使用C#winform写一个翻译软件

用C#语言写一个winform翻译软件

哈喽,大家好,这是小鱼第一次写博客,而且还是写一个自己刚接触的技术,相信很多小伙伴都有接触过百度翻译的API,这是新手学习API的必经之路吧,对于大佬们来说,可能这有点显得小儿科,希望大佬们不要介意,话不多说,直奔主题。

新建项目

小鱼使用的是VS2017,新建winform应用程序,创建好项目后,进行布局,选择三个textbox文本框和一个button按钮,至于为什么三个,下面说。
使用C#winform写一个翻译软件

申请百度翻译平台API

百度翻译平台的通用翻译API是可以免费申请的,在翻译开放平台这里有对通用翻译API进行详细的说明,小鱼也是根据这才学会的哦。使用C#winform写一个翻译软件
申请完成后,在管理控制台这边就是显示个人的开发者信息,在这里我们需要做的添加服务器地址,将本地ip地址添加到通用翻译API_服务信息。
这样我们的准备工作就完成了,下面开始我们的重头戏。
使用C#winform写一个翻译软件

调用百度翻译API

public class Baidu
{
//install-package newtonsoft.json
public string BaiduTrans(string text)
{
// 原文
string q = text;
// 源语言
string from = “auto”;
// 目标语言
string to = “kor”;
// 改成您的APP ID
string appId = “20200516”;
Random rd = new Random();
string salt = rd.Next(100000).ToString();
// 改成您的**
string secretKey = “ViYeBNdMNp3P”;
string sign = EncryptString(appId + q + salt + secretKey);
string url = “http://api.fanyi.baidu.com/api/trans/vip/translate?”;
url += “q=” + HttpUtility.UrlEncode(q);
url += “&from=” + from;
url += “&to=” + to;
url += “&appid=” + appId;
url += “&salt=” + salt;
url += “&sign=” + sign;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = “GET”;
request.ContentType = “text/html;charset=UTF-8”;
request.UserAgent = null;
request.Timeout = 6000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding(“utf-8”));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
//Console.WriteLine(retString);
//Console.ReadLine();
}
// 计算MD5值
public 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();
}
}

这个类是百度翻译提供的,我们只需要将源语言、目标语言修改、APP ID、**进行修改即可(APP ID 和**在前面的百度翻译开放平台的开发者信息里有),这边的语言代码对照下图修改就行。
使用C#winform写一个翻译软件

查看百度翻译返回的数据

我们调用刚才的类

Baidu AB = new Baidu();
string retString = AB.BaiduTrans(textBox1.Text);
textBox2.Text = retString;
使用C#winform写一个翻译软件
我们接下来进行第一次测试,在textbox1文本框输入“你好”, 现在百度翻译返回的是没有解析的json字符串,我们需要取到我们想要的数据,\uc548\ub155\ud558\uc138\uc694. 可以看出这是Unicode编码,我们通过编码工具 https://www.css-js.com/tools/unicode.html 对结果进行解码,发现数据是正确的。

使用C#winform写一个翻译软件

我们将获取的json数据写成C#实体类,这里推荐一个网站
https://www.bejson.com/convert/json2csharp/

使用C#winform写一个翻译软件
我们将获取到的实体类复制到项目里
使用C#winform写一个翻译软件

解析Json数据

首先通过vs自带的Nuget安装newtonsoft.json包,接下来需要调用。

install-package newtonsoft.json

json解析也很简单,就下面的几行代码

Root rt = JsonConvert.DeserializeObject(retString);
//由于这个JSON字符串的 public List data 是一个集合,所以我们需要遍历集合里面的所有数据
for (int i = 0; i < rt.trans_result.Count; i++)
{
textBox3.Text = rt.trans_result[i].dst;
}

然后整个项目的架构就都完成了,我们进行测试一下
使用C#winform写一个翻译软件
整个项目的架构如下
使用C#winform写一个翻译软件

使用C#winform写一个翻译软件