KizunaNana:完成语言即时翻译

终于拿到了景优的offer,等入职后没什么问题的话,工作的事就暂时稳定了,今天(2018/6/8)把KizunaNana与图灵交流的地方进行了优化,添加了即时翻译,因为不知道怎么申请Google的API,所以用的是百度翻译的API,API的接入其实上次就完成了,但是因为转码和算法问题,导致无法翻译中文,今天终于把这个问题解决了,心情大好。下面记录关键代码:

这里是调用百度翻译取得Json返回值的

 public static TranslationResult GetTranslationFromBaiduFanyi(string source, Language from = Language.Auto, Language to = Language.Auto)
 string jsonResult = String.Empty;
            string languageFrom = from.ToString().ToLower();
            string languageTo = to.ToString().ToLower();
            string randomNum = DateTime.Now.Millisecond.ToString();
            string so = HttpUtility.UrlEncode(source,Encoding.UTF8);
            byte[] sign = Encoding.UTF8.GetBytes(appid+source+randomNum+apppwd);

            string md5Sign = GetMD5HashFromFile(sign);
            string url = @"https://api.fanyi.baidu.com/api/trans/vip/translate?q=" + so + "&from=" + languageFrom + "&to=" +
                         languageTo + "&appid=" + appid + "&salt=" + randomNum + "&sign=" + md5Sign;
            WebClient wc = new WebClient();
            try
            {
                jsonResult = wc.DownloadString(url);
            }
            catch (Exception e)
            {
                jsonResult = string.Empty;
                Console.WriteLine(e.Message);
            }
            JavaScriptSerializer jss = new JavaScriptSerializer();
            TranslationResult ret = jss.Deserialize<TranslationResult>(jsonResult);
            return ret;

这里是使用MD5按照百度翻译API帮助文档的要求对Appid等参数进行加密的

 private static string GetMD5HashFromFile(byte[] dataBytes)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(dataBytes);
            return BitConverter.ToString(output).Replace("-", "").ToLower();
        }

一个枚举类型来枚举所有可翻译的语言

public enum Language
        {
            Auto = 0,
            ZH = 1,
            JP = 2,
            EN = 3,
            KOR = 4,
            SPA = 5,
            FRA = 6,
            TH = 7,
            ARA = 8,
            RU = 9,
            PT = 10,
            YUE = 11,
            WYW = 12,
            DE = 13,
            NL = 14,
            IT = 15,
            EL = 16
        }

这里是将返回的Json解析并读取 

        private BaiduTranslate.TranslationResult result = new BaiduTranslate.TranslationResult();
        result = BaiduTranslate.GetTranslationFromBaiduFanyi(reader.Value.ToString(), BaiduTranslate.Language.Auto, bLanguage);
        string txtVal = null;
        for (int i = 0; i < result.trans_result.Length; i++)
        {
             txtVal = result.trans_result[i].Dst;
        }
        result1 = null;
效果图





因为图灵默认我的语言是中文,所以发送外文过去会变成翻译,然后百度翻译API将Hello翻译为日语发送

图灵接收到后,默认是接收了一个外语,默认处理方式为翻译,所以就翻译了Hello回来

然后在回来的时候又接受到百度翻译API的处理,所以这句Hello发送出去后,会出现两句一样的话。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值