C#調(diào)用百度翻譯API實(shí)現(xiàn)一個(gè)翻譯功能
前言
雖然百度翻譯相對(duì)于谷歌翻譯在準(zhǔn)確性方面還有很大的提升空間,但網(wǎng)絡(luò)的現(xiàn)實(shí)情況及百度翻譯接口的免費(fèi)易用性方面讓我們選擇百度翻譯接口。下面來(lái)一起看看詳細(xì)的步驟吧
方法如下
appId 和 passWord 需要到百度翻譯開(kāi)放平臺(tái)申請(qǐng)
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返回的值類型組成的一個(gè)自定義類,類里的每個(gè)名字和百度翻譯API返回值里名字要一致。
升級(jí)功能:
先將要翻譯的文本寫(xiě)入TXT文檔,存入主目錄下的File目錄下,可以用以下代碼讀取后翻譯,用以解決每次翻譯,百度翻譯有句子長(zhǎng)短限制的問(wèn)題。TBTxtName.txt為要翻譯的文件名,要替換的符號(hào)以及語(yǔ)言可自己選擇。
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);
//去除符號(hào)重新定義句子
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();
}
總結(jié)
到此這篇關(guān)于C#調(diào)用百度翻譯API實(shí)現(xiàn)一個(gè)翻譯功能的文章就介紹到這了,更多相關(guān)C#調(diào)用百度翻譯API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#事件標(biāo)準(zhǔn)命名規(guī)則及說(shuō)明(包括用作事件類型的委托命名)
這篇文章主要介紹了C#事件標(biāo)準(zhǔn)命名規(guī)則及說(shuō)明(包括用作事件類型的委托命名),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
C#中的小數(shù)和百分?jǐn)?shù)計(jì)算與byte數(shù)組操作
這篇文章介紹了C#中的小數(shù)和百分?jǐn)?shù)計(jì)算與byte數(shù)組操作,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
Unity游戲開(kāi)發(fā)實(shí)現(xiàn)場(chǎng)景切換示例
這篇文章主要為大家介紹了Unity游戲開(kāi)發(fā)實(shí)現(xiàn)場(chǎng)景切換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
C#基于數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的AJAX分頁(yè)實(shí)例
這篇文章主要介紹了C#基于數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的AJAX分頁(yè)實(shí)現(xiàn)方法,以實(shí)例形式詳細(xì)講述了數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的定義、數(shù)據(jù)庫(kù)的訪問(wèn)及Ajax的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-01-01
c# 使用handle.exe解決程序更新文件被占用的問(wèn)題
這篇文章主要介紹了c# 使用handle.exe解決程序更新文件被占用的問(wèn)題,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03

