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

news2024/11/24 15:43:47

我们可以使用百度翻译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.coloradmin.cn/o/849986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最强“双非”!所有专业爆冷!最低273分上岸!

一、学校及专业介绍 深圳大学&#xff08;Shenzhen University&#xff09;&#xff0c;简称“深大”&#xff0c;位于广东省深圳市。入选广东省高水平大学重点建设高校&#xff0c;粤港澳高校联盟成员单位。深圳大学于1983年经中华人民共和国国务院批准创办。北京大学援建中文…

笛卡尔积文本的python处理

一 背景 大致背景是这样的&#xff0c;笔者在做数据处理时&#xff0c;遇到一个棘手的事情&#xff0c;主要遇到如下字符串拼接变动的场景&#xff0c;场景主要为&#xff0c;需要考虑如下两张表的组合&#xff1a; 表1-原始文本样式 序号文本样式1A变量B2A变量C3A变量CD4E变…

Promise详细版

promise基础原理到难点分析 常见的Promise的方法解读 扩展async和await深入分析 逐步分析Promise底层逻辑代码 一、Promise基础 1.什么是promise 为了解决回调地狱&#xff1a; //2.设置点击事件btn.onclick function() {//3.创建ajax实例化对象let xhr new XMLHttpRe…

RocketMQ Learning(一)

目录 一、RocketMQ 0、RocketMQ的产品发展 1、RocketMQ安装 1.1、windows下的安装 注意事项 1.2、Linux下的安装 1.3、源码的安装 1.4、控制台 2、消息发送方式 2.1、发送同步消息 2.2、发送异步消息 2.3、单向发送 3、消息消费方式 3.1、负载均衡模式&#xff0…

生活小妙招之UE custom Decal

因为这几年大部分时间都在搞美术&#xff0c;所以博客相关的可能会鸽的比较多&#xff0c;阿巴阿巴 https://twitter.com/Tuatara_Games/status/1674034744084905986 之前正好看到一个贴花相关的小技巧&#xff0c;正好做一个记录&#xff0c;也在这个的基础上做一些小的拓展…

子集——力扣78

文章目录 题目描述法一 迭代法实现子集枚举题目描述 法一 迭代法实现子集枚举 class Solution {public:vector<int> t;vector<vector<

【C++基础】友元总结一些坑

友元类 友元类&#xff08;Friend Class&#xff09;是一种在C中用于实现类之间访问权限的特殊机制。通过友元类&#xff0c;一个类可以允许另一个类访问其私有成员&#xff0c;甚至可以使另一个类成为其友元&#xff0c;使其能够访问所有成员&#xff0c;包括私有成员。这种机…

[HDLBits] Exams/m2014 q4f

Implement the following circuit: module top_module (input in1,input in2,output out);assign out (!in2)&in1; endmodule

gma 2 教程(二)数据操作:5. 多维科学数据

多维科学数据定义 如下图所示&#xff0c;gma将多维栅格定义为N&#xff08;>1&#xff09;个普通栅格数据集&#xff08;DataSet&#xff09;1组&#xff08;记录多维数据信息的&#xff09;元数据组成的多数据集&#xff08;MultiDataSets&#xff09;。   注&#xff1…

Leetcode.2146 价格范围内最高排名的 K 样物品

题目链接 Leetcode.2146 价格范围内最高排名的 K 样物品 rating : 1837 题目描述 给你一个下标从 0 0 0 开始的二维整数数组 g r i d grid grid &#xff0c;它的大小为 m x n &#xff0c;表示一个商店中物品的分布图。数组中的整数含义为&#xff1a; 0 表示无法穿越的一…

伪原创小发猫怎么样【php源码】

大家好&#xff0c;小编为大家解答初学者自学python哪本书好的问题。很多人还不知道自学python需要什么基础&#xff0c;现在让我们一起来看看吧&#xff01; 火车头采集ai伪原创插件截图&#xff1a; 目前python可以说是一门非常火爆的编程语言&#xff0c;应用范围也非常的广…

TCP三次握手、四次握手过程,以及原因分析

TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手&#xff1a;为了对每次发送的数据量进行跟踪与协商&#xff0c;确保数据段的发送和接收同步&#xff0c;根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系&#xff0c;并建立虚连接。 四次挥手&…

vs code remote ssh: Resolver error: Error: Got bad result from install script

今天像往常一样&#xff0c;打开 windows 11&#xff0c;使用 vs code 远程连接服务器 ubuntu 20&#xff0c;但是遇到了一个错误&#xff1a;Resolver error: Error: Got bad result from install script。 ok&#xff01;&#xff01;&#xff01;开始 Bing &#xff01;&…

.Net C# 免费PDF合成软件

最近用到pdf合成&#xff0c;发现各种软件均收费啊&#xff0c;这个技术非常简单&#xff0c;别人写好的库一大把&#xff0c;这里用到了PDFsharp&#xff0c;项目地址Home of PDFsharp and MigraDoc Foundation 软件下载地址 https://download.csdn.net/download/g313105910…

OBD针脚定义参考

OBD定义的一种标准的参考&#xff0c;不同的车场有不同的定义&#xff0c;貌似没有统一。 在某宝上看到的ODB转db9的不同的线序&#xff1a; 1&#xff09;1/2/3/6几个针脚都是一样的&#xff0c;分别上下针脚对应。 2&#xff09;其中一种4/5/7/8也是上下对应的&#xff1b;另…

检验代码生成器完成版

写维护页面重复逻辑写烦了&#xff0c;连页面的增、删、改、查、弹窗等代码都不行手写了&#xff0c;为此做成代码生成器成型版1.0.干到10点。。。 代码&#xff1a; Class Demo.CodeGener Extends %RegisteredObject {/// 生成操作表相关的代码&#xff0c;包括M、C#调用代码…

有效管理IT问题的5个原则

问题管理就是发现未知的、隐藏的问题&#xff0c;这是根本原因&#xff0c; 这是您 IT 帮助台无穷无尽的工单来源。当您实施有效的 问题管理&#xff0c;您的 IT 团队可以超越消防模式&#xff0c;专注于战略 IT 目标。以下是可以帮助您实现一流问题管理的五个原则&#xff1a;…

远程运维大批量IT设备?向日葵批量部署、分组授权与安全功能解析

数字化转型的不断推进&#xff0c;给予了企业全方位的赋能&#xff0c;但任何发展都伴随着成本与代价&#xff0c;比如在数字化转型过程中企业内部办公与外部业务所需的不断增加的IT设备数量&#xff0c;就为日常的运维工作提出了更大的挑战。 针对企业面对海量IT设备时的运维…

多态总结

什么是多态&#xff1f; 所谓多态&#xff0c;就是同一个操作&#xff0c;作用在了不同的对象上&#xff0c;就会有不同的解释&#xff0c;进而产生不同的执行结果。使用时&#xff0c;是采用父类指针指向子类对象的方法。其中&#xff0c;重载和重写是常见的实现多态的手段。…

【MySQL】基础知识(一)

MySQL基础知识&#xff08;一&#xff09; 文章目录 MySQL基础知识&#xff08;一&#xff09;00 MySQL安装01 数据库介绍1.1 什么是数据库1.2数据库分类 02 SQL分类03 数据库操作3.1显示数据库3.2创建数据库3.3选中数据库3.4删除数据库 04 常用数据类型4.1数值类型4.2字符串类…