日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#调用百度翻译API实现自己的简单翻译工具

發布時間:2024/3/24 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#调用百度翻译API实现自己的简单翻译工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前幾天因為頻繁使用翻譯功能,但是市面上的翻譯軟件都臃腫了,對我我這個只需要翻譯的人沒有什么太大用處,反而有更多弊端。


于是在百度開發者中心申請了一個百度翻譯的API。自己寫了一個簡單的翻譯功能。僅供自己平時開發使用。


首先肯定是需要百度開發者中心去申請一個百度翻譯的API的。申請方式具體可以去這里看:百度翻譯API幫助中心,我就簡單說一下:登錄之后,新建一個工程。在控制面板里面有一個其它API的選項。進入選擇百度翻譯API。[[url=http://www.godlyl.com]銀鷗的博客[/url]]提交申請之后,會顯示正在提交申請之類的,不用管,拿到key就行了。


接下來打開visual studio,新建一個winform項目。可以先把窗體空間拖好。


這是我拖好的界面,是丑了點,我也沒過多美化。
[img=http://img.bbs.csdn.net/upload/201408/12/1407823957_816144.png][/img]
使用了兩個ComboBox控件,是當前語言的選擇和目標語言的選擇。語言支持請看這里:[url=http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/26.gif][/img]%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91/%E7%BF%BB%E8%AF%91API]翻譯API語言列表以及json[/url]


這是百度的官方文檔。因為我們仔細發送語言的時侯,不是通過中文發送的,而是使用的對應的英文,例如:英語==en,簡體中文==zh


這應該很容易理解。在C#里面可以通過鍵值對的集合來保存語言列表。
[code=csharp]
//能夠選擇的當前語言信息
? ? ? ? ? ? Dictionary<String, String> NowLanguage = new Dictionary<string, string>();
? ? ? ? ? ? NowLanguage.Add("auto", "自動檢測");
? ? ? ? ? ? NowLanguage.Add("zh", "簡體中文");
? ? ? ? ? ? NowLanguage.Add("en", "英語");
? ? ? ? ? ? NowLanguage.Add("de", "德語");
? ? ? ? ? ? NowLanguage.Add("jp", "日語");
? ? ? ? ? ? NowLanguage.Add("spa", "西班牙語");
? ? ? ? ? ? NowLanguage.Add("th", "泰語");
? ? ? ? ? ? NowLanguage.Add("ru", "俄羅斯語");
? ? ? ? ? ? NowLanguage.Add("yue", "粵語");
? ? ? ? ? ? NowLanguage.Add("kor", "韓語");
? ? ? ? ? ? NowLanguage.Add("fra", "法語");
? ? ? ? ? ? NowLanguage.Add("it", "意大利語");
? ? ? ? ? ? NowLanguage.Add("ara", "阿拉伯語");
? ? ? ? ? ? NowLanguage.Add("pt", "葡萄牙語");
? ? ? ? ? ? NowLanguage.Add("wyw", "文言文");
? ? ? ? ? ? //能夠選擇的目標語言信息
? ? ? ? ? ? TargetLanguage = new Dictionary<string, string>();
? ? ? ? ? ? TargetLanguage.Add("auto", "自動檢測");
? ? ? ? ? ? TargetLanguage.Add("zh", "簡體中文");
? ? ? ? ? ? TargetLanguage.Add("en", "英語");
? ? ? ? ? ? TargetLanguage.Add("de", "德語");
? ? ? ? ? ? TargetLanguage.Add("jp", "日語");
? ? ? ? ? ? TargetLanguage.Add("spa", "西班牙語");
? ? ? ? ? ? TargetLanguage.Add("th", "泰語");
? ? ? ? ? ? TargetLanguage.Add("ru", "俄羅斯語");
? ? ? ? ? ? TargetLanguage.Add("yue", "粵語");
? ? ? ? ? ? TargetLanguage.Add("kor", "韓語");
? ? ? ? ? ? TargetLanguage.Add("fra", "法語");
? ? ? ? ? ? TargetLanguage.Add("it", "意大利語");
? ? ? ? ? ? TargetLanguage.Add("ara", "阿拉伯語");
? ? ? ? ? ? TargetLanguage.Add("pt", "葡萄牙語");
? ? ? ? ? ? TargetLanguage.Add("wyw", "文言文");
[/code]


以上的內容是文檔里面提供的,我直接使用了Dictionary集合儲存了語言列表,然后再添加到了ComboBox(綁定數據源)。綁定數據源應該不需要再說吧。如果不會的可以看這里:[url=http://www.cnblogs.com/refresh/archive/2012/07/14/2591503.html]ComboBox綁定Dictionary做為數據源[/url]


使用ComboBox的事件:SelectedIndexChanged ? 來獲取用戶選擇的語言,使用屬性SelectedValue。


現在最主要通過API獲取返回的翻譯結果。百度官方的文檔可以知道返回的結果是json代碼。主要還是可以自己看看上面所發的第二個鏈接,也就是百度官方的使用文檔。


我[[url=http://www.godlyl.com]銀鷗的博客[/url]]現在就主要說C#如何發送請求獲得JSON代碼。


百度翻譯API的接口Get請求方式:
[code=csharp]http://openapi.baidu.com/public/2.0/bmt/translate?client_id=你申請的Key&q=查詢內容&from=源語言&to=目標語言[/code]


其中的from和to是兩個ComboBox的選擇值。


有了API接口之后,我們需要的就是發送請求了。可以使用實例化一個WebClient,然后使用方法:DownloadString方法。里面傳入API的Get請求網址。


具體的實現方法:
[code=csharp]/// <summary>
? ? ? ? /// 調用百度API的翻譯方法
? ? ? ? /// </summary>
? ? ? ? /// <param name="NowLanguage">當前語言</param>
? ? ? ? /// <param name="TargetLanguage">目標語言</param>
? ? ? ? /// <param name="Content">翻譯內容</param>
? ? ? ? /// <returns>翻譯的結果</returns>
? ? ? ? public String TranslationMain(String NowLanguage, String TargetLanguage,String Content)
? ? ? ? {
? ? ? ? ? ? String api = String.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=你的Key&q={0}&from={1}&to={2}", Content, NowLanguage, TargetLanguage);
? ? ? ? ? ? WebClient client = new WebClient();
? ? ? ? ? ? return client.DownloadString(api);
? ? ? ? }[/code]


這個方法返回一個JSON字符串。


格式如下:
[code=csharp]{"from":"en","to":"zh","trans_result":[{"src":"today","dst":"\u4eca\u5929"}]}[/code]


看到JSON之后,我們可以看到當前語言、目標語言、翻譯內容、翻譯結果。很明顯,翻譯結果是Unicode碼。所以到后面還需要轉換成UTF-8代碼。這個先不急,先把trans_result里面的dst獲取到,因為dst就是翻譯結果。


仔細看JSON代碼,可以看成是兩層內容。所以要分兩次解析。


解析JSON可以通過一個dll:Newtonsoft.Json


下載地址:http://pan.baidu.com/s/1pJ2UM8N ? 提取密碼:24lp


包里面有很多dll,選擇自己.net版本相對應的dll添加到項目中的引用即可。


現在就可以寫一個解析JSON的方法了:


[code=csharp]/// <summary>
? ? ? ? ///解析Json代碼
? ? ? ? /// </summary>
? ? ? ? /// <param name="jsonCode">JSON代碼</param>
? ? ? ? /// <returns>返回翻譯的字符串</returns>
? ? ? ? public String Analytical(String JsonCode)
? ? ? ? {
? ? ? ? ? ? JObject ResultParent = JObject.Parse(JsonCode);
? ? ? ? ? ? String trans_result = ResultParent["trans_result"].ToString();
? ? ? ? ? ? JObject ResultChild = JObject.Parse(trans_result.Replace("[", " ").Replace("]", " "));
? ? ? ? ? ? //翻譯后的目標結果
? ? ? ? ? ? String target = ResultChild["dst"].ToString();
? ? ? ? ? ? return target;
? ? ? ? }[/code]


很明顯,我上面就解析了兩次,其中的trans_result為解析的第一次,也就是解析出來trans_result的內容。后面又將trans_result里面的方括號給轉換成了空格,如果不轉換,那么就不是一個正確的json代碼,所以我使用空格將json大括號前后的方括號去掉。String ResultChild就是解析出來的src和dst內容。然后我再將dst取出來,放到target變量中,返回target。也就返回了翻譯結果。在解析JSON中,其中的Unicode碼也就直接被翻譯成了UTF-8。所以,返回的結果就是我們所需要的內容。


….


現在貌似就已經搞定了。


這次寫的教程寫得比較亂,如果看得不懂的地方可以提出來。


我寫的源代碼下載地址:鏈接: http://pan.baidu.com/s/1i3zdpTb ? 密碼: pyo8
[[url=http://www.godlyl.com]銀鷗的博客[/url]]

總結

以上是生活随笔為你收集整理的C#调用百度翻译API实现自己的简单翻译工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。