zoukankan      html  css  js  c++  java
  • C#&.Net干货分享- 构造BaiduLanguageHelper对接百度的语言翻译

    全部是封装的API源码。。。

    namespace Frame.Api
    {
        /// <summary>
        /// 百度多语言支持器
        /// </summary>
        public class BaiduLanguageHelper
        {
            /*
    语言简写    名称
    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    繁体中文
    vie    越南语
             */

            //可以直接到百度翻译API的官网申请
            private static string LAN_APPID_BAI_DU = WebConfigHelper.GetWebConfigString("BaiduLanAppId");

            //可以直接到百度翻译API的官网申请
            private static string LAN_PWD_BAI_DU = WebConfigHelper.GetWebConfigString("BaiduLanPwd");

            /// <summary>
            /// 调用百度翻译API进行翻译
            /// 详情可参考http://api.fanyi.baidu.com/api/trans/product/apidoc
            /// </summary>
            /// <param name="tContent">待翻译字符</param>
            /// <param name="fromLan">源语言</param>
            /// <param name="toLan">目标语言</param>
            /// <returns>翻译结果</returns>
            public static string Translation(string tContent, string fromLan, string toLan)
            {
                string jsonResult = String.Empty;
                string languageFrom = fromLan.ToLower();
                string languageTo = toLan.ToLower();
                string randomNum = System.DateTime.Now.Millisecond.ToString();
                string md5Sign = GetMD5WithString(LAN_APPID_BAI_DU + tContent + randomNum + LAN_PWD_BAI_DU);
                String url = String.Format("http://api.fanyi.baidu.com/api/trans/vip/translate?q={0}&from={1}&to={2}&appid={3}&salt={4}&sign={5}", HttpUtility.UrlEncode(tContent, Encoding.UTF8), languageFrom, languageTo, LAN_APPID_BAI_DU, randomNum, md5Sign);
                WebClient wc = new WebClient();
                try
                {
                    jsonResult = wc.DownloadString(url);
                }
                catch
                {
                    jsonResult = string.Empty;
                }
                JavaScriptSerializer jss = new JavaScriptSerializer();
                TranslationResult ret = jss.Deserialize<TranslationResult>(jsonResult);
                if (ret != null && string.IsNullOrEmpty(ret.Error_code))
                {
                    return ret.Trans_result[0].Dst.Trim();
                }
                //翻译失败,返回原来的字符
                return tContent;
            }


            /// <summary>
            /// md5加密
            /// </summary>
            /// <param name="input">待加密字符串</param>
            /// <returns>加密结果</returns>
            private static string GetMD5WithString(string input)
            {
                //input必须转换为UTF-8编码
                if (input == null)
                {
                    return null;
                }
                MD5 md5Hash = MD5.Create();
                // 将输入字符串转换为字节数组并计算哈希数据  
                byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
                // 创建一个 Stringbuilder 来收集字节并创建字符串  
                StringBuilder sBuilder = new StringBuilder();
                // 循环遍历哈希数据的每一个字节并格式化为十六进制字符串  
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
                // 返回十六进制字符串  
                return sBuilder.ToString();
            }

        }

        /// <summary>
        /// 翻译API返回对象
        /// </summary>
        public class TranslationResult
        {
            /// <summary>
            ///
            /// </summary>
            public string Error_code { get; set; }

            /// <summary>
            ///
            /// </summary>
            public string Error_msg { get; set; }

            /// <summary>
            ///
            /// </summary>
            public string From { get; set; }

            /// <summary>
            ///
            /// </summary>
            public string To { get; set; }

            /// <summary>
            ///
            /// </summary>
            public string Query { get; set; }

            /// <summary>
            ///
            /// </summary>
            public Translation[] Trans_result { get; set; }
        }

        /// <summary>
        ///
        /// </summary>
        public class Translation
        {
            /// <summary>
            ///
            /// </summary>
            public string Src { get; set; }

            /// <summary>
            ///
            /// </summary>
            public string Dst { get; set; }
        }
    }

  • 相关阅读:
    MFC程序执行过程剖析
    不同位数操作系统的 数据长度
    测试:safenet提供的CheckKey函数 内存泄漏。具体来说是句柄.
    关于更改项目名称
    内存泄漏相关的
    美化MFC 之调整静态文本的颜色 字体。 用于添加公司标题 联系方式 口号等数据
    DAVINCI DM365-DM368开发攻略——开发环境搭建(DVSDK4.02)
    Removing Unnecessary HTTP Headers in IIS and ASP.NET 在ASP.Net和IIS中删除不必要的HTTP响应头
    Implementing Singleton in C#
    WEBAPI VS WCF微软随.NET 4.5发布新REST API框架
  • 原文地址:https://www.cnblogs.com/hualiuliu/p/11458099.html
Copyright © 2011-2022 走看看