用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/


我们将获取到的实体类复制到项目里

解析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写一个翻译软件相关推荐

  1. 用python自己写一个翻译软件

    今天我们来写一个翻译的小软件 文后有源码 想法: 之前学python的时候总是要去查英语单词,下了个有道翻译,感觉挺不错的,就想自己去写写这样的一个翻译软件. 翻译的话,python有自带的trans ...

  2. [WinForm]写一个小程序把指定目录的程序添加到开机自动启动(无法绕过360检查)

    网友阿东提示了这样一个需求:写一个小程序把指定目录的程序添加到开机自动启动,跳过360 我就到百度上搜了一下:C# 将程序添加到启动项 (写入注册表),及从启动项中删除 - 赤狐(zcm123) - ...

  3. 「桌面」怎样写一个自己的PC版百度翻译软件

    为什么要用百度翻译? 从前是百度粉,现在我是百度黑,百度要完! 但是(真香),在各种翻译App中,我真的觉得百度的翻译最准确~~ 不过也可能是个人喜好吧,勿喷. 为啥要搞PC版? 因为英语能力有限,经 ...

  4. 用Python做一个翻译软件,还怕英语不好?

    本文转载自公众号 | Ahab杂货铺 作者 | Ahab 前两天吃了平哥的一波狗粮,他给女朋友写了一个翻译软件,自己真真切切的感受到了程序员的浪漫.在学习requests请求的时候做过类似的Demo, ...

  5. python写一个服务_写一个Python的windows服务

    1. 安装pywin32和pyinstaller pip install pywin32 pip install pyinstaller 2.写一个服务Demo # -*- coding: utf-8 ...

  6. 三十七、下篇 | tkinter实现一个翻译软件

    @Author : Runsen 下面使用 tkinter实现一个翻译软件,我们用的有道云翻译 我先试下把访问的url搞出来 你可以查看这些参数,都是请求的参数,这需要进一步找的,不是我不会,是我写过 ...

  7. 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧

    写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...

  8. python 翻译代码_python200行代码实现一个翻译软件

    python200行代码实现一个翻译软件 心血来潮写一个命令行的翻译软件方便使用(基于百度翻译api), 话不多说上代码-_- 支持从文件输入输出 支持从剪切板输入输出 #!/home/fyang/. ...

  9. 使用C# winform 制作一个按钮可自适应屏幕大小的 简易加减乘除计算器

    一:成果物     不多展示,,,我们开始吧.. 二: 窗体包含内容 2.1 显示屏部分组成 显示屏部分由两个组件组成,一个是方便操作的panel控件位于顶部,且为了使其显示屏在改变窗体大小时一直位于 ...

最新文章

  1. VS2010集成Qt5.2环境搭建
  2. redis安装,主从集群
  3. 责任分配矩阵和raci的区别_PyTorch学习笔记——repeat()和expand()区别
  4. hdu3949(线性基,求第k小的异或和
  5. 8086状态标志寄存器含义
  6. Vue.js 学习笔记 十一 自定义指令
  7. Beyond Compare可以进行二进制比较
  8. CentOS项目实例之一--操作系统安装
  9. 普通版Mobaxterm查看保存的密码明文
  10. 学生用计算机如何解方程,学生党必备神器!一键解方程计算器App
  11. unity reflect_使用Unity Reflect的不同方法
  12. windows系统cab补丁安装方法
  13. Web自动化【9】——生成HTML格式的report,并邮件发送
  14. JQuery 解决多个文件下载只下载一个的问题
  15. OSChina 周一乱弹 ——这个公主都没一旁的汪可爱
  16. 键盘 BIOS 扫描码和 ASCII 码表
  17. 中国连锁药店行业发展机遇与竞争格局分析报告2022-2028年版
  18. 《人类简史》笔记三—— 历史从无正义
  19. linux CST与EDT时区互转
  20. Spring Boot 集成spring security4

热门文章

  1. 工业机器人运动轨迹规划方法简述
  2. ntohl()头文件
  3. 计算机网络-面试题汇总
  4. 图书馆管理系统UML建模
  5. 嵌入式linux之yocto(十)添加软件包菜谱
  6. ubuntu翻译工具 GoldenDict 词典
  7. 你知道吗?CAD电子目录≠产品CAD库
  8. Django 扩展(一)
  9. 重入锁-ReentrantLock
  10. php 生成订单号跳号,用条码标签打印软件生成跳号的流水号