C#调用百度翻译API实现一个翻译功能

 更新时间:2021年06月27日 11:38:09   作者:汪锦鹏  
一直喜欢用Google Translate API进行在线翻译,但是服务越来越慢这篇文章,所以只能换一个了,主要给大家介绍了关于C#调用百度翻译API实现一个翻译功能的相关资料,需要的朋友可以参考下

前言

虽然百度翻译相对于谷歌翻译在准确性方面还有很大的提升空间,但网络的现实情况及百度翻译接口的免费易用性方面让我们选择百度翻译接口。下面来一起看看详细的步骤吧

方法如下

appId 和 passWord 需要到百度翻译开放平台申请

using System;
using System.Net;
using System.Web.Security;
using System.Web.Script.Serialization;

namespace TranslatorOfWang
{
    class TranslateFunction
    {
        public static string Translate(string content)
        {
            string languageFrom = "en", languageTo = "zh";
            if (Translate(content, languageFrom, languageTo).Error_code == null)
            {
                return Translate(content, languageFrom, languageTo).Trans_result[0].Dst;
            }
            else
                return Translate(content, languageFrom, languageTo).Error_msg;
        }
        public static PostResult Translate(string content, string languageFrom, string languageTo)
        {
            string appId = "2018111519456789", passWord = "gMk8wEKxENvbpUcvFxxx", 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;
            string m_Content = new WebClient().DownloadString(FullRequest);
            PostResult m_postResult = new JavaScriptSerializer().Deserialize<PostResult>(m_Content);
            return m_postResult;
        }
        public  class PostResult{
            public string Error_code { set; get; }
            public string Error_msg { set; get; }
            public string From { set; get; }
            public string To { set; get; }
            public TranslateContent[] Trans_result { set; get; }
        }
        public class TranslateContent
        {
            public string Src { set; get; }
            public string Dst { set; get; }
        }
    }
}

PostResult为百度API返回的值类型组成的一个自定义类,类里的每个名字和百度翻译API返回值里名字要一致。

升级功能:

先将要翻译的文本写入TXT文档,存入主目录下的File目录下,可以用以下代码读取后翻译,用以解决每次翻译,百度翻译有句子长短限制的问题。TBTxtName.txt为要翻译的文件名,要替换的符号以及语言可自己选择。

        public void ReadAndTranslate()
        {
            string TextName = “TBTxtName.txt”;
            string path = "File/";
            StreamReader sr = new StreamReader(path + TextName + ".txt", Encoding.Default);
            StreamWriter m_SW = new StreamWriter(path + DateTime.Now.ToString("yyyymmddhhmm") + "TransLated" + ".txt", true);

            //去除符号重新定义句子
            string xx = sr.ReadToEnd();
            string[] split = xx.Split(new char[] { '.','!','?', ';', ',', ':' });

            string content;
            for (int i = 0; i < split.Length; i++)
            {
                content = split[i];
                if (content != null & content != "" & content != " " & content != "\n" & content != "\t" & content != "\r")
                {
                    string line = TranslationFunction.Translate(content);
                    m_SW.WriteLine(line);
                    //m_SW.WriteLine(content);
                }
            }
            m_SW.Dispose();
            m_SW.Close();
        }

总结

到此这篇关于C#调用百度翻译API实现一个翻译功能的文章就介绍到这了,更多相关C#调用百度翻译API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#获取所有SQL Server数据库名称的方法

    C#获取所有SQL Server数据库名称的方法

    这篇文章主要介绍了C#获取所有SQL Server数据库名称的方法,涉及C#针对sql server数据库的简单查询技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#实现char字符数组与字符串相互转换的方法

    C#实现char字符数组与字符串相互转换的方法

    这篇文章主要介绍了C#实现char字符数组与字符串相互转换的方法,结合实例形式简单分析了C#字符数组转字符串及字符串转字符数组的具体实现技巧,需要的朋友可以参考下
    2017-02-02
  • C#实现关闭子窗口而不释放子窗口对象的方法

    C#实现关闭子窗口而不释放子窗口对象的方法

    下面小编就为大家带来一篇C#实现关闭子窗口而不释放子窗口对象的方法 。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • C#截图程序类似腾讯QQ截图实现代码

    C#截图程序类似腾讯QQ截图实现代码

    拖动过程中显示当前鼠标下一小块的图像信息 尺寸、颜色信息的 注意 这里颜色是用的ARGB,需要的朋友可以参考下
    2012-12-12
  • C#使用UdpClient类进行简单通信的实例

    C#使用UdpClient类进行简单通信的实例

    本文主要介绍了C#使用UdpClient类进行简单通信的实例,具有很好的参考价值,需要的朋友可以看下
    2016-12-12
  • C#使用stackalloc分配堆栈内存和非托管类型详解

    C#使用stackalloc分配堆栈内存和非托管类型详解

    这篇文章主要为大家介绍了C#使用stackalloc分配堆栈内存和非托管类型详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-12-12
  • C#把dll分别放在指定的文件夹的方法步骤

    C#把dll分别放在指定的文件夹的方法步骤

    本文主要介绍了C#把dll分别放在指定的文件夹的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • c#通过反射实现对象自动映射的实现

    c#通过反射实现对象自动映射的实现

    本文主要介绍了c#通过反射完成对象自动映射的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • 详解C#如何优雅地终止线程

    详解C#如何优雅地终止线程

    在大多情况下,我们只关心线程的创建与启动,运行,却并不关心线程的结束或者终止。今天这篇文章,我们就以一些简单的小例子,简述如何有效的停止线程,仅供学习分享使用,如有不足之处,还请指正
    2023-03-03
  • C/C++与Java各数据类型所占字节数的详细比较

    C/C++与Java各数据类型所占字节数的详细比较

    本篇文章主要是对C/C++与Java各数据类型所占字节数进行了详细的对比。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01

最新评论