C#调用百度翻译API自动将中文转化为英文,按行转换

我们可以使用百度翻译API获取到翻译结果

翻译API地址:

http://api.fanyi.baidu.com/api/trans/vip/translate

 一、新建窗体应用程序TranslatorDemo,将默认的Form1重命名为FormTranslator。

窗体FormTranslator设计器如图:

 窗体设计器源代码如下:

文件:FormTranslator.Designer.cs


namespace TranslatorDemo
{
    partial class FormTranslator
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗体设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要修改
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.bntToEnglish = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.rtxtChinese = new System.Windows.Forms.RichTextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.rtxtEnglish = new System.Windows.Forms.RichTextBox();
            this.btnToChinese = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // bntToEnglish
            // 
            this.bntToEnglish.Location = new System.Drawing.Point(638, 181);
            this.bntToEnglish.Name = "bntToEnglish";
            this.bntToEnglish.Size = new System.Drawing.Size(102, 23);
            this.bntToEnglish.TabIndex = 2;
            this.bntToEnglish.Text = "中文转英文>>";
            this.bntToEnglish.UseVisualStyleBackColor = true;
            this.bntToEnglish.Click += new System.EventHandler(this.bntToEnglish_Click);
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Font = new System.Drawing.Font("宋体", 13F);
            this.label1.Location = new System.Drawing.Point(9, 11);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(53, 18);
            this.label1.TabIndex = 1;
            this.label1.Text = "中文:";
            // 
            // rtxtChinese
            // 
            this.rtxtChinese.Location = new System.Drawing.Point(12, 44);
            this.rtxtChinese.Name = "rtxtChinese";
            this.rtxtChinese.Size = new System.Drawing.Size(609, 623);
            this.rtxtChinese.TabIndex = 0;
            this.rtxtChinese.Text = "";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Font = new System.Drawing.Font("宋体", 13F);
            this.label2.Location = new System.Drawing.Point(749, 11);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(53, 18);
            this.label2.TabIndex = 3;
            this.label2.Text = "英文:";
            // 
            // rtxtEnglish
            // 
            this.rtxtEnglish.Location = new System.Drawing.Point(752, 44);
            this.rtxtEnglish.Name = "rtxtEnglish";
            this.rtxtEnglish.Size = new System.Drawing.Size(609, 624);
            this.rtxtEnglish.TabIndex = 1;
            this.rtxtEnglish.Text = "";
            // 
            // btnToChinese
            // 
            this.btnToChinese.Location = new System.Drawing.Point(638, 266);
            this.btnToChinese.Name = "btnToChinese";
            this.btnToChinese.Size = new System.Drawing.Size(102, 23);
            this.btnToChinese.TabIndex = 3;
            this.btnToChinese.Text = "<<英文转中文";
            this.btnToChinese.UseVisualStyleBackColor = true;
            this.btnToChinese.Click += new System.EventHandler(this.btnToChinese_Click);
            // 
            // FormTranslator
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1371, 679);
            this.Controls.Add(this.btnToChinese);
            this.Controls.Add(this.rtxtEnglish);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.rtxtChinese);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.bntToEnglish);
            this.Name = "FormTranslator";
            this.Text = "中文批量翻译为英文";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Button bntToEnglish;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.RichTextBox rtxtChinese;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.RichTextBox rtxtEnglish;
        private System.Windows.Forms.Button btnToChinese;
    }
}

二、新建关键翻译类TranslateUtil

TranslateUtil.cs源程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using System.Web.Security;

namespace TranslatorDemo
{
    /// <summary>
    /// 翻译过程
    /// </summary>
    public class TranslateUtil
    {
        /// <summary>
        /// 使用Get的方式调用百度API进行翻译
        /// </summary>
        /// <param name="content">要转化的文本</param>
        /// <param name="languageFrom">要转化的语言</param>
        /// <param name="languageTo">目标语言</param>
        /// <returns></returns>
        public static FeedbackResult TranslateGet(string content, string languageFrom, string languageTo)
        {
            string appId = "20230722001753350";
            string passWord = "your password";
            string randomNum = new Random().Next().ToString();
            string md5Sign = FormsAuthentication.HashPasswordForStoringInConfigFile(appId + content + randomNum + passWord, "MD5").ToLower();
            string FullRequest = "http://api.fanyi.baidu.com/api/trans/vip/translate?q=" + content + "&from=" + languageFrom + "&to=" + languageTo + "&appid=" + appId + "&salt=" + randomNum + "&sign=" + md5Sign;
            try
            {
                string resultContent = new WebClient().DownloadString(FullRequest);
                FeedbackResult feedbackResult = new JavaScriptSerializer().Deserialize<FeedbackResult>(resultContent);
                feedbackResult.ResponseJson = resultContent;
                return feedbackResult;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                return new FeedbackResult()
                {
                    Error_code = "-1",
                    Error_msg = ex.Message
                };
            }
        }

        /// <summary>
        /// 使用Post的方式调用百度API进行翻译
        /// </summary>
        /// <param name="content">要转化的文本</param>
        /// <param name="languageFrom">要转化的语言</param>
        /// <param name="languageTo">目标语言</param>
        /// <returns></returns>
        public static FeedbackResult TranslatePost(string content, string languageFrom, string languageTo)
        {
            string appId = "20230722001753350";
            string passWord = "your password";
            string randomNum = new Random().Next().ToString();

            #region 获取MD5加密编码后的小写格式文本
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
            byte[] buffer = md5.ComputeHash(Encoding.UTF8.GetBytes(appId + content + randomNum + passWord));
            string md5Sign = string.Join("", buffer.Select(x => x.ToString("x2")));//转化为小写
            #endregion

            try
            {
                WebClient webClient = new WebClient();
                System.Collections.Specialized.NameValueCollection nameValueCollection = new System.Collections.Specialized.NameValueCollection();
                nameValueCollection.Add("q", content);
                nameValueCollection.Add("from", languageFrom);
                nameValueCollection.Add("to", languageTo);
                nameValueCollection.Add("appid", appId);
                nameValueCollection.Add("salt", randomNum);
                nameValueCollection.Add("sign", md5Sign);
                string apiUrl = "http://api.fanyi.baidu.com/api/trans/vip/translate";
                byte[] bytes = webClient.UploadValues(apiUrl, "POST", nameValueCollection);
                string resultContent = Encoding.UTF8.GetString(bytes);
                FeedbackResult feedbackResult = new JavaScriptSerializer().Deserialize<FeedbackResult>(resultContent);
                feedbackResult.ResponseJson = resultContent;
                return feedbackResult;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                return new FeedbackResult()
                {
                    Error_code = "-1",
                    Error_msg = ex.Message
                };
            }
        }
    }

    /// <summary>
    /// 反馈结果类
    /// </summary>
    public class FeedbackResult
    {
        /// <summary>
        /// 错误号,翻译出错时有此项,翻译成功时该项为null
        /// </summary>
        public string Error_code { set; get; }
        /// <summary>
        /// 错误消息,翻译出错时代表出错信息,翻译成功时该项为null
        /// </summary>
        public string Error_msg { set; get; }
        /// <summary>
        /// 起始语言
        /// </summary>
        public string From { set; get; }
        /// <summary>
        /// 目标语言
        /// </summary>
        public string To { set; get; }
        /// <summary>
        /// 响应的源Json字符串,自定义项
        /// </summary>
        public string ResponseJson { set; get; }
        /// <summary>
        /// 翻译结果,翻译失败时该项为null,翻译成功时按照换行符"\n"来分割的数组,元组数据
        /// </summary>
        public TranslateResult[] Trans_result { set; get; }
    }

    /// <summary>
    /// 翻译结果类
    /// </summary>
    public class TranslateResult
    {
        /// <summary>
        /// 源文本 Source
        /// </summary>
        public string Src { set; get; }
        /// <summary>
        /// 翻译后的文本 Destination
        /// </summary>
        public string Dst { set; get; }
    }

    /// <summary>
    /// 语言枚举常数
    /// </summary>
    public class Language
    {
        public const string 自动检测 = "auto";
        public const string 中文 = "zh";
        public const string 英语 = "en";
        public const string 粤语 = "yue";
        public const string 文言文 = "wyw";
        public const string 日语 = "jp";
        public const string 韩语 = "kor";
        public const string 法语 = "fra";
        public const string 西班牙语 = "spa";
        public const string 泰语 = "th";
        public const string 阿拉伯语 = "ara";
        public const string 俄语 = "ru";
        public const string 葡萄牙语 = "pt";
        public const string 德语 = "de";
        public const string 意大利语 = "it";
        public const string 希腊语 = "el";
        public const string 荷兰语 = "nl";
        public const string 波兰语 = "pl";
        public const string 保加利亚语 = "bul";
        public const string 爱沙尼亚语 = "est";
        public const string 丹麦语 = "dan";
        public const string 芬兰语 = "fin";
        public const string 捷克语 = "cs";
        public const string 罗马尼亚语 = "rom";
        public const string 斯洛文尼亚语 = "slo";
        public const string 瑞典语 = "swe";
        public const string 匈牙利语 = "hu";
        public const string 繁体中文 = "cht";
        public const string 越南语 = "vie";
    }
}

三、窗体FormTranslator测试程序如下:

文件FormTranslator.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TranslatorDemo
{
    public partial class FormTranslator : Form
    {
        public FormTranslator()
        {
            InitializeComponent();
            /*string test = @"上料X轴 错误
上料X轴 伺服错误
上料X轴 手自动冲突
上料Y轴 错误
上料Y轴 伺服错误
上料Y轴 手自动冲突
上料Z轴 错误
上料Z轴 伺服错误
上料Z轴 手自动冲突
上料模组取料夹爪气缸 原位报警
上料模组取料夹爪气缸 动位报警
上料模组取料夹爪气缸 手自动冲突
上料模组取料夹爪气缸 错误
上料模组升降气缸 原位报警
上料模组升降气缸 动位报警
上料模组升降气缸 手自动冲突
上料模组升降气缸 错误
上料模组滑台气缸 原位报警
上料模组滑台气缸 动位报警
上料模组滑台气缸 手自动冲突
上料模组滑台气缸 错误
上料模组 取料失败
上料模组 中途掉料
上料模组 夹爪放料报警
上料模组 夹爪取料报警";
            string english = @"message queue
death knight
sword seven
the move speed is 200 mm/s
thunder bird";*/
        }

        private void bntToEnglish_Click(object sender, EventArgs e)
        {
            rtxtEnglish.Clear();
            FeedbackResult feedbackResult = TranslateUtil.TranslatePost(rtxtChinese.Text.Trim(), Language.中文, Language.英语);
            TranslateResult[] contents = feedbackResult.Trans_result;
            for (int i = 0; contents != null && i < contents.Length; i++)
            {
                rtxtEnglish.AppendText($"【{contents[i].Dst}】<-【{contents[i].Src}】\n");
            }
            rtxtEnglish.AppendText($"响应的源Json数据为:\n{feedbackResult.ResponseJson}");
        }

        private void btnToChinese_Click(object sender, EventArgs e)
        {
            rtxtChinese.Clear();
            FeedbackResult feedbackResult = TranslateUtil.TranslateGet(rtxtEnglish.Text.Trim(), Language.英语, Language.中文);
            TranslateResult[] contents = feedbackResult.Trans_result;
            for (int i = 0; contents != null && i < contents.Length; i++)
            {
                rtxtChinese.AppendText($"【{contents[i].Dst}】<-【{contents[i].Src}】\n");
            }
            rtxtChinese.AppendText($"响应的源Json数据为:\n{feedbackResult.ResponseJson}");
        }
    }
}

四、测试运行如图:

【需要到百度上申请开发者账号appId和密码password】

①中文--->英文

 ②英文--->中文

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/64859.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[保研/考研机试] 约瑟夫问题No.2 C++实现

题目要求&#xff1a; 输入、输出样例&#xff1a; 源代码&#xff1a; #include<iostream> #include<queue> #include<vector> using namespace std;//例题5.2 约瑟夫问题No.2 int main() {int n, p, m;while (cin >> n >> p >> m) {//如…

【Linux操作系统】GCC编译与静态库、动态库制作详解

GCC是一款广泛使用的开源编译器&#xff0c;它支持多种编程语言&#xff0c;并且具有强大的编译能力。在软件开发中&#xff0c;我们经常需要将代码编译成可执行文件或者库文件。本文将详细介绍GCC编译过程以及如何制作静态库和动态库。 文章目录 一、GCC编译过程1. 预处理阶段…

龙芯积极研发二进制翻译,提升软硬件兼容性,提高LoongArch架构

根据8月8日Phoronix报道&#xff0c;龙芯正在积极研发龙芯二进制翻译功能&#xff08;Loongson Binary Translationm&#xff0c;LBT&#xff09;以提高LoongArch架构与其他处理器&#xff08;如MIPS/x86/Arm&#xff09;的二进制翻译能力&#xff0c;这重要举措将显著提升龙芯…

list交并补差集合

list交并补差集合 工具类依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version> </dependency><dependency><groupId>commons-collections&…

数据库管理员知识图谱

初入职场的程序猿&#xff0c;需要为自己做好职业规划&#xff0c;在职场的赛道上&#xff0c;需要保持学习&#xff0c;并不断点亮自己的技能树。  成为一名DBA需要掌握什么技能呢&#xff0c;先让Chat-GPT为我们回答一下&#xff1a; 数据库管理系统 (DBMS)知识&#xff…

网络安全--mysql中事务锁以及事务隔离解析

一、事务锁 1、个人理解&#xff1a; 专一性和历史性&#xff0c;例如一个男人历史上是花心的&#xff0c;但当他成长后开启begin和update后变的专一了&#xff0c;多项事务也影响不到他了&#xff0c;直到水泥封心&#xff0c;只可被一个人查询在此我们进入正题&#xff1a;…

前端工具类

日期类 1️⃣ 新建index.js文件/*** param {date} time 需要转换的时间* param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss*/ export function formatTime(time, fmt) {if (!time) {return "";}else {const date new Date(time);const o {M:…

web前端html

文章目录 快捷方式一、html5的声明二、html5基本骨架 2.1 html标签 2.2 head标签 2.3 body和head同级 2.4 body标签 2.5 title标签 2.6 meta标签 三、标题标签介绍与应用 3.1 标题的介绍 3.2 标题标签位置摆放 3.3 标签之段落、换行、水平线 3.3 标签之图片 3.3.1 图…

2023,谁在引领实时互动进入高清时代?

实践是检验真理的唯一标准&#xff0c;技术是行业进步的核心动能。在实时互动的新时代里&#xff0c;不断进化的声网已然完成自证。 作者|斗斗 出品|产业家 “一个医疗行业的客户&#xff0c;曾向我们提出一个需求&#xff0c;希望在120急救场景下&#xff0c;可以远程看清…

【C++】常用到的“using namespace std;”到底是什么?

一、引言 在初学C时&#xff0c;在包含完头文件之后&#xff0c;我们常常会看到这么一句话&#xff1a;using namespace std; 比如&#xff1a; #include<iostream> using namespace std; int main() {cout << "hello world" << endl;return 0…

dubbo之基础知识

Dubbo 官网地址&#xff1a;Apache Dubbo Dubbo 是一款易用、高性能的 WEB 和 RPC 框架&#xff0c;同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践 作用 1.远程方法调用 2.容错和负载均衡 3.提供服务的自动注册与发现 为什么需要…

代理模式(C++)

定义 为其他对象提供一种代理以控制(隔离&#xff0c;使用接口)对这个对象的访问。。 应用场景 在面向对象系统中&#xff0c;有些对象由于某种原因(比如对象创建的开销很大&#xff0c;或者某些操作需要安全控制&#xff0c;或者需要进程外的访问等)直接访问会给使用者、或…

接口测试——电商网站接口测试实战(四)

1. 接口测试需求分析 常见接口文档提供的两种方式 ①word文档 ②在线文档 电商网站网址模拟练习&#xff1a;Swagger UI 2. 登陆的分析 慕慕生鲜网址&#xff1a;慕慕生鲜账号密码点击execute后 输入账号密码后点击开发者工具&#xff0c;再登录&#xff0c;点击网络&…

Nginx的优化和防盗链

一、Nginx的优化 1、隐藏版本号 curl -I http://192.168.79.28 #查看信息&#xff08;版本号等&#xff09;方法一&#xff1a;修改配置文件 vim /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf http {include mime.types;default_type ap…

2023-08-04 Untiy进阶 C#知识补充4——C#5主要功能与语法

文章目录 一、概述二、回顾——线程三、线程池四、Task 任务类五、同步和异步 ​ 注意&#xff1a;在此仅提及 Unity 开发中会用到的一些功能和特性&#xff0c;对于不适合在 Unity 中使用的内容会忽略。 一、概述 C# 5 调用方信息特性&#xff08;C# 进阶内容&#xff09;异步…

【大数据】Flink 详解(二):核心篇 Ⅰ

Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ 14、Flink 的四大基石是什么&#xff1f; ​ Flink 的四大基石分别是&#xff1a; Checkpoint&#xff08;检查点&#xff09;State&#xff08;状态&#xff09;Time&#xff08;时间&#xff09;Window&#xff…

54款宝藏级AIGC工具分享(claude,Midjourney,Stable Diffusion等)

随着ChatGPT的一波又一波高潮&#xff0c;生成式AI逐渐进入人们视野&#xff0c;并开始大行其道&#xff0c;正如人们所说&#xff1a;AI用的好&#xff0c;天天下班早&#xff01; 当然&#xff0c;有效的利用AI不但能下班早&#xff0c;还能在上班时间摸鱼&#xff0c;就如潘…

【Docker】数据库动态授权组件在Kubernetes集群下的测试过程记录

目录 背景 组件原理 测试设计 环境 测试脚本 脚本build为linux可执行文件 镜像构建 Dockerfile Docker build 镜像有效性验证 总结 资料获取方法 背景 我们都知道出于安全性考虑&#xff0c;生产环境的权限一般都是要做最小化控制&#xff0c;尤其是数据库的操作授…

2023年华数杯数学建模B题思路代码分析 - 不透明制品最优配色方案设计

# 1 赛题 B 题 不透明制品最优配色方案设计 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明 制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色 存在一定的局限性&#xff0c;如主观性强、效率低下等。因此…

华三H3C S5120V3交换机的配置之组建IRF

IRF&#xff08;Intelligent Resilient Framework&#xff0c;智能弹性架构&#xff09;&#xff0c;是华三交换机实现虚拟堆叠的一种技术&#xff0c;其核心思想是将多台交换机连接在一起&#xff0c;虚拟成一台交换机&#xff0c;进而实现统一管理。和传统的堆叠概念不同&…
最新文章