csharp:百度翻译

简介: 参考:http://api.fanyi.baidu.com/api/trans/product/index http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91AP

参考:http://api.fanyi.baidu.com/api/trans/product/index

http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91API

winform:

 /// <summary>
    /// 涂聚文
    /// </summary>
    public partial class Form5 : Form
    {
        TranClass tranClass = new TranClass();
        string url = "";
        string youAPI_Id = "geovindu";
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        DataTable setLanguage()
        {
 
            DataTable dt = new DataTable();
            dt.Columns.Add("id", typeof(int));
            dt.Columns.Add("name", typeof(string));
            dt.Rows.Add(1, "中文--英文");
            dt.Rows.Add(2, "英文--中文");
            dt.Rows.Add(3, "中文--日文");
            dt.Rows.Add(4, "日文--中文");
            dt.Rows.Add(5, "中文--韩文");
            dt.Rows.Add(6, "韩文--中文");
            dt.Rows.Add(7, "西班牙文--中文");
            dt.Rows.Add(8, "中文--西班牙文");
            return dt;
 
        }
        /// <summary>
        ///
        /// </summary>
        public Form5()
        {
            InitializeComponent();
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form5_Load(object sender, EventArgs e)
        {
            this.cbxTranslateChange.DataSource = setLanguage();
            this.cbxTranslateChange.ValueMember = "id";
            this.cbxTranslateChange.DisplayMember = "name";
 
 
        }
        /// <summary>
        /// 翻译
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs 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为翻译后的值
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbxTranslateChange_SelectedIndexChanged(object sender, EventArgs 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;
 
            }
        }
 
 
 
 
    }
 
 
    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; }
    }
 
    /*
      
     语言简写   名称
auto    自动检测
zh  中文
en  英语
yue 粤语
wyw 文言文
jp  日语
kor 韩语
fra 法语
spa 西班牙语
th  泰语
ara 阿拉伯语
ru  俄语
pt  葡萄牙语
de  德语
it  意大利语
el  希腊语
nl  荷兰语
pl  波兰语
bul 保加利亚语
est 爱沙尼亚语
dan 丹麦语
fin 芬兰语
cs  捷克语
rom 罗马尼亚语
slo 斯洛文尼亚语
swe 瑞典语
hu  匈牙利语
cht 繁体中文
     */
}

webform:

 

TranClass tranClass = new TranClass();
        string url = "www.dusystem.com";
        string youAPI_Id = "geovindu";
        /// <summary>
        /// 涂聚文
        /// </summary>
        /// <returns></returns>
        DataTable setLanguage()
        {
 
            DataTable dt = new DataTable();
            dt.Columns.Add("id", typeof(int));
            dt.Columns.Add("name", typeof(string));
            dt.Rows.Add(1, "中文--英文");
            dt.Rows.Add(2, "英文--中文");
            dt.Rows.Add(3, "中文--日文");
            dt.Rows.Add(4, "日文--中文");
            dt.Rows.Add(5, "中文--韩文");
            dt.Rows.Add(6, "韩文--中文");
            dt.Rows.Add(7, "西班牙文--中文");
            dt.Rows.Add(8, "中文--西班牙文");
            return dt;
 
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.DropDownList1.DataSource = setLanguage();
                this.DropDownList1.DataTextField = "name";
                this.DropDownList1.DataValueField = "id";
                this.DropDownList1.DataBind();
                //DropDownList1.SelectedIndex = 0;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            int k = int.Parse(DropDownList1.SelectedValue);
            switch (k)
            {
                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;
 
 
            }
 
 
            WebClient client = new WebClient();  //引用System.Net
            string fromTranslate = this.TextBox1.Text; //翻译前的内容
 
 
            if (object.Equals(tranClass, null))
            {
                tranClass.From = "zh";
                tranClass.To = "en";
            }
 
            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 自带
                while (jsonReader.Read())
                {
                    //Response.Write(jsonReader.Value.ToString() + "<br/>");//jsonReader.TokenType.ToString() + "" + jsonReader.ValueType.ToString() + "" +
                }
                Response.Write(CallInterface(fromTranslate, tranClass.From, tranClass.To));
                var j = JsonConvert.DeserializeObject<TranClass>(result);
 
                //JsonSerializer serializer = new JsonSerializer();
 
                //TranClass p1 = (TranClass)serializer.Deserialize(new JsonTextReader(sr), typeof(TranClass));
                //TranClass r = serializer.Deserialize<TranClass>(jsonReader); //因为获取后的为json对象 ,实行转换  反序列化 错误
                //this.TextBox2.Text = r.Trans_result[0].dst;  //dst为翻译后的值
                if (!object.Equals(j, null))
                {
                    this.TextBox2.Text = j.Trans_result[0].dst;
                }
            }
        }
         
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
             
            switch (DropDownList1.SelectedIndex)
            {
                case 0:
                    tranClass.From = "zh";
                    tranClass.To = "en";
                    break;
                case 1:
                    tranClass.From = "en";
                    tranClass.To = "zh";
                    break;
                case 2:
                    tranClass.From = "zh";
                    tranClass.To = "jp";
                    break;
                case 3:
                    tranClass.From = "jp";
                    tranClass.To = "zh";
                    break;
                case 4:
                    tranClass.From = "zh";
                    tranClass.To = "kor";
                    break;
                case 5:
                    tranClass.From = "kor";
                    tranClass.To = "zh";
                    break;
                case 6:
                    tranClass.From = "zh";
                    tranClass.To = "spa";
                    break;
                case 7:
                    tranClass.From = "spa";
                    tranClass.To = "zh";
                    break;
                default:
                    tranClass.From = "auto";
                    tranClass.To = "auto";
                    break;
 
            }
        }
        /// <summary>
        /// 请求百度接口
        ///
        /// https://github.com/lbv/litjson
        /// </summary>
        /// <param name="sub">要翻译的文本</param>
        /// <param name="from">from语言</param>
        /// <param name="to">翻译为语言</param>
        /// <returns></returns>
        private string CallInterface(string sub, string from, string to)
        {
 
            HttpContext.Current.Application.Lock();
            if (HttpContext.Current.Application["baidu"] == null)
            {
                HttpContext.Current.Application["baidu"] = 1;
            }
            else
            {
                HttpContext.Current.Application["baidu"] = (int)HttpContext.Current.Application["baidu"] + 1;
            }
            HttpContext.Current.Application.UnLock();
            string url = string.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id={0}&q={1}&from={2}&to={3}", youAPI_Id, sub, from, to);
            string down = "", result = "";
            try
            {
                WebClient wc = new WebClient();
                down = wc.DownloadString(url);
            }
            catch (Exception)
            {
 
            }
            JsonData jd = JsonMapper.ToObject(down);
            if (JsonDataContainsKey(jd, "error_code"))
            {
                result += sub;
            }
            else
            {
                JsonData jdResult = jd["trans_result"];
                for (int j = 0; j < jdResult.Count; j++)
                {
                    JsonData jdDst = jdResult[j]["dst"];
                    result += jdDst.ToString();
                }
            }
            return result;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public bool JsonDataContainsKey(JsonData data, string key)
        {
            bool result = false;
            if (data == null)
                return result;
            if (!data.IsObject)
            {
                return result;
            }
            IDictionary tdictionary = data as IDictionary;
            if (tdictionary == null)
                return result;
            if (tdictionary.Contains(key))
            {
                result = true;
            }
            return result;
        }
 
    }
 
    /// <summary>
    ///
    /// </summary>
    public class TranClass
    {
        public string From { get; set; }
        public string To { get; set; }
        public List<Trans_result> Trans_result { get; set; }
    }
    /// <summary>
    ///
    /// </summary>
    public class Trans_result
    {
        /// <summary>
        /// 原文
        /// </summary>
        public string src { get; set; }
        /// <summary>
        /// 翻译后的值
        /// </summary>
        public string dst { get; set; }
    }
 
    /*
     {"from":"zh","to":"en","trans_result":[{"src":"\u4e2d\u56fd","dst":"China"}]}
     */
}



 

目录
相关文章
|
安全
宜搭平台产品技术演进
宜搭平台产品技术演进自制脑图, 主要介绍了宜搭从BPM驱动的1.0阶段到元数据驱动的2.0阶段再到数据驱动、云钉一体的3.0阶段以及它的产品特性,平台共享面临的问题,泛业务面临的问题,产品无边界面临的问题,开放 & 安全面临的问题。
480 0
宜搭平台产品技术演进
|
前端开发
前端项目实战23-前端上传文件进行数据绑定用fileList
前端项目实战23-前端上传文件进行数据绑定用fileList
168 0
|
机器学习/深度学习 Devops 云栖大会
2017深圳云栖大会---开源技术论坛预告
开源颠覆了开发方式,云颠覆了IT能力交付方式;当开源遇上云计算,从端到云无可分割; 2017阿里移动端最新开源力作,加上DevOps,集群调度,深度学习技术的云上实践,会分享给大家如何用优雅的姿势,让艺术融入技术。
4467 0
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1217 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1181 87
|
10天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1779 12
|
19天前
|
人工智能 运维 安全