C# 調用百度翻譯Api


這是簡單的界面。用的是wpf,winform也可以

 具體的操作類

public partial class MainWindow : Window
    {
        string url = "";
        public MainWindow()
        {
            InitializeComponent();
            this.cbxTranslateChange.SelectedIndex = 0;
        }
        private TranClass tranClass = new TranClass();
        private void btnTranslate_Click(object sender, RoutedEventArgs e)
        {

            WebClient client = new WebClient();  //引用System.Net
            string fromTranslate = tbxFromContent.Text; //翻譯前的內容
            if (!string.IsNullOrEmpty(fromTranslate))
            {
         //client_id為自己的api_id,q為翻譯對象,from為翻譯語言,to為翻譯后語言
string url = string.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id={0}&q={1}&from={2}&to={3}", "youAPI_Id", fromTranslate, tranClass.From, tranClass.To); var buffer = client.DownloadData(url); string result = Encoding.UTF8.GetString(buffer); StringReader sr = new StringReader(result); JsonTextReader jsonReader = new JsonTextReader(sr); //引用Newtonsoft.Json 自帶 JsonSerializer serializer = new JsonSerializer(); var r = serializer.Deserialize<TranClass>(jsonReader); //因為獲取后的為json對象 ,實行轉換 tbxToContent.Text = r.Trans_result[0].dst; //dst為翻譯后的值 } }      
     
     //改變翻譯語言來執行相應的操作
private void cbxTranslateChange_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox comboBox = sender as ComboBox; switch (comboBox.SelectedIndex) { case 1: tranClass.From = "zh"; tranClass.To = "en"; break; case 2: tranClass.From = "en"; tranClass.To = "zh"; break; case 3: tranClass.From = "zh"; tranClass.To = "jp"; break; case 4: tranClass.From = "jp"; tranClass.To = "zh"; break; case 5: tranClass.From = "zh"; tranClass.To = "kor"; break; case 6: tranClass.From = "kor"; tranClass.To = "zh"; break; case 7: tranClass.From = "zh"; tranClass.To = "spa"; break; case 8: tranClass.From = "spa"; tranClass.To = "zh"; break; default: tranClass.From = "auto"; tranClass.To = "auto"; break; } }

     //對翻譯后的內容發音,操作類具體我也不了解,默認發音英文,中文,其他語言要自己添加。
private void btnsound_Click(object sender, RoutedEventArgs e) { ///gettts?lan=en&text=Scattering&spd=2&source=web SpeechLib.SpeechVoiceSpeakFlags svsFlags = SpeechLib.SpeechVoiceSpeakFlags.SVSFlagsAsync; SpeechLib.SpVoice voice = new SpeechLib.SpVoice(); voice.Speak(tbxToContent.Text, svsFlags); } }

這是返回結果使用的類

namespace BDTranslate.Models
{
    public class TranClass
    {
        public string From { get; set; }
        public string To { get; set; }
        public List<Trans_result> Trans_result { get; set; }
    }
    public class Trans_result
    {
        public string src { get; set; }
        public string dst { get; set; }
    }
}

 百度翻譯api :http://developer.baidu.com/wiki/index.php?title=幫助文檔首頁/百度翻譯/翻譯API


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM