利用百度翻译API实现多语言的翻译 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

利用百度翻译API实现多语言的翻译

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:43


中英、英中、每日、日中、中韩、韩中、中法、法中、中西、西中、中泰、泰中、中阿、阿中、中俄、俄中、英日、日英、英泰、泰英、英阿、阿英、英西、西英、英葡、葡英
频率限制:
通俗开辟者供给1000次/小时限制,支撑扩容;
GET请求方法:
响应示例:
{"from":"en","to":"zh","trans_result":[{"src":"today","dst":"\u4eca\u5929"}]}
                            codes[0] = (byte)code2;//必须是小端在前
今朝支撑11种说话,如下所示:
西班牙语  spa  法语  fra 
泰语  th  阿拉伯语  ara 
日语  jp  韩语  kor 
                    {
俄罗斯语  ru  葡萄牙语  pt 
粤语  yue  文言文  wyw 
白话文  zh  主动检测  auto 
步调:
Step1. 申请ApiKey,
http://developer.baidu.com/console#app/project
Step2. 构成Get请求
Step3. 获得响应
Step4. 对响应进行解析(关键)
Step5. 结不雅输出

关键代码(C#):
public string getTraslation(string src)
支撑说话:
        {
            //发送请求
            HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=" + client_id + "&q=" + src + "&from=" + from + "&to=" + to);
//获得响应
            string res = string.Empty;
            try
                //获取响应流
                HttpWebResponse response = (HttpWebResponse)myReq.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                res = reader.ReadToEnd();
                reader.Close();
                response.Close();
//正则表达式
                string pattern = @"""dst"":""(?.*?)""}";
                MatchCollection matchs;
                string result = string.Empty;
                matchs = Regex.Matches(res, pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                foreach (Match m in matchs)
                {
                    string strTokenValue = http://www.sjsjw.com/100/000144MYM030971/m.Groups["tokenVal"].Value;
                    string[] stringSeparators = new string[] { "\\u" };
                    string[] unicodeArray = strTokenValue.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
                    StringBuilder sb = new StringBuilder();
                    if (unicodeArray.Length <= 1)
                        result = strTokenValue;
http://openapi.baidu.com/public/2.0/bmt/translate?client_id=YourApiKey&q=today&from=auto&to=auto
    }
                    }
                    else
                    {
                        foreach (string item in unicodeArray)
                        {
                            byte[] codes = new byte[2];
            {
                            int code1, code2;
                            code1 = Convert.ToInt32(item.Substring(0, 2), 16);
                            code2 = Convert.ToInt32(item.Substring(2), 16);
                            codes[1] = (byte)code1;
                            sb.Append(Encoding.Unicode.GetString(codes));
                        }
                        result = sb.ToString();
中文  zh  英语  en 
                    }
                }
                return result;
            }
            catch (Exception)
            {
            }
        }
关键代码(Java):
public String getResult(String input){
  try {
   String src = http://www.sjsjw.com/100/000144MYM030971/URLEncoder.encode(input,"utf-8");
                return null;
   httpGet = new HttpGet("http://openapi.baidu.com/public/2.0/bmt/translate?client_id="+client_id+"&q="+src+"&from="+from+"&to="+to);
   httpResponse = httpClient.execute(httpGet);
   httpEntity = httpResponse.getEntity();
   String content = EntityUtils.toString(httpEntity, "utf-8");
   
   if (matcher.find()){
             strTokenValue = http://www.sjsjw.com/100/000144MYM030971/matcher.group("tokenVal");
             String[] sarray = strTokenValue.split("\\\\u");
             if (sarray.length <= 1){
              result = strTokenValue;
             }
请加微信:xiaoran-668
             else {
              mybyte = new byte[2*sarray.length-2];
              for (int i = 0; i < sarray.length-1; i++){
               mybyte[2*i] = (byte)Integer.parseInt(sarray[i+1].substring(0, 2), 16);
               mybyte[2*i+1] = (byte)Integer.parseInt(sarray[i+1].substring(2, 4), 16);
              }
              result = new String(mybyte,"utf-16");
            }
   httpGet.abort();
   Matcher matcher = Pattern.compile("\"dst\":\"(?.*?)\"}").matcher(content);
   return result;
  } catch (Exception e) {
   return null;
  }
 }

相关案例查看更多