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

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

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

新建项目

小鱼使用的是VS2017,新建winform应用程序,创建好项目后,进行布局,选择三个textbox文本框和一个button按钮,至于为什么三个,下面说。
在这里插入图片描述

申请百度翻译平台API

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

调用百度翻译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 和密钥在前面的百度翻译开放平台的开发者信息里有),这边的语言代码对照下图修改就行。
在这里插入图片描述

查看百度翻译返回的数据

我们调用刚才的类

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

在这里插入图片描述

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

{"from":"zh","to":"kor","trans_result":[{"src":"\u4f60\u597d","dst":"\uc548\ub155\ud558\uc138\uc694."}]}
我们将获取到的实体类复制到项目里
在这里插入图片描述

解析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;
}

然后整个项目的架构就都完成了,我们进行测试一下
在这里插入图片描述
整个项目的架构如下
在这里插入图片描述

在这里插入图片描述

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,以下是一个简单的C# WinForm计算器代码示例,实现了加减乘除四则运算和幂运算的功能: 首先需要在Visual Studio中创建一个WinForm应用程序,添加一个TextBox用于显示计算结果,以及多个Button用于输入数字和运算符。 ``` using System; using System.Windows.Forms; namespace Calculator { public partial class CalculatorForm : Form { public CalculatorForm() { InitializeComponent(); } private void btnNum_Click(object sender, EventArgs e) { // 将数字键的文本添加到显示框中 Button btn = (Button)sender; txtResult.Text = txtResult.Text + btn.Text; } private void btnOp_Click(object sender, EventArgs e) { // 保存当前的数字和运算符 Button btn = (Button)sender; double num = double.Parse(txtResult.Text); txtResult.Tag = num; txtResult.Text = ""; txtResult.Tag2 = btn.Text; } private void btnEquals_Click(object sender, EventArgs e) { // 根据保存的数字和运算符进行计算 double num1 = (double)txtResult.Tag; double num2 = double.Parse(txtResult.Text); string op = txtResult.Tag2.ToString(); double result = 0; switch (op) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; case "^": result = Math.Pow(num1, num2); break; default: break; } txtResult.Text = result.ToString(); } private void btnClear_Click(object sender, EventArgs e) { // 清空显示框 txtResult.Text = ""; txtResult.Tag = null; txtResult.Tag2 = null; } } } ``` 该代码中,首先在构造函数中初始化窗体和控件。然后通过btnNum_Click和btnOp_Click事件处理函数分别处理数字键和运算符键的点击事件,将输入的数字和运算符保存到显示框的Tag和Tag2属性中。最后通过btnEquals_Click事件处理函数处理等号键的点击事件,根据保存的数字和运算符进行计算,并将结果显示在显示框中。 需要注意的是,此处使用C#的事件处理机制,以及WinForm控件的属性和方法。同时,为了实现幂运算的功能,使用了Math.Pow函数。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值