public async Task <string> TranslateAsync(string sourceText, string desLang, string srcLang) { if (sourceText == "" || desLang == "" || srcLang == "") { errorInfo = "Param Missing"; return(null); } if (desLang == "jp") { desLang = "ja"; } if (srcLang == "jp") { srcLang = "ja"; } // 原文 string q = sourceText; string retString; string trans_type = srcLang + "2" + desLang; string url = "https://api.interpreter.caiyunai.com/v1/translator"; //json参数 string jsonParam = JsonConvert.SerializeObject(new Dictionary <string, object> { { "source", new string[] { q } }, { "trans_type", trans_type }, { "request_id", "demo" }, { "detect", true } }); var hc = CommonFunction.GetHttpClient(); var req = new StringContent(jsonParam, null, "application/json"); req.Headers.Add("X-Authorization", "token " + caiyunToken); try { retString = await(await hc.PostAsync(url, req)).Content.ReadAsStringAsync(); } catch (System.Net.Http.HttpRequestException ex) { errorInfo = ex.Message; return(null); } catch (System.Threading.Tasks.TaskCanceledException ex) { errorInfo = ex.Message; return(null); } finally { req.Dispose(); } CaiyunTransResult oinfo; try { oinfo = JsonConvert.DeserializeObject <CaiyunTransResult>(retString); } catch { errorInfo = "JsonConvert Error"; return(null); } if (oinfo.target?.Length >= 1) { //得到翻译结果 return(string.Join("", oinfo.target.Select(x => Regex.Unescape(x)))); } else { errorInfo = "ErrorInfo:" + oinfo.message; return(null); } }
private string errorInfo; //错误信息 public string Translate(string sourceText, string desLang, string srcLang) { if (sourceText == "" || desLang == "" || srcLang == "") { errorInfo = "Param Missing"; return(null); } if (desLang == "kr") { desLang = "kor"; } if (srcLang == "kr") { srcLang = "kor"; } if (desLang == "fr") { desLang = "fra"; } if (srcLang == "fr") { srcLang = "fra"; } // 原文 string q = sourceText; string retString; Random rd = new Random(); string salt = rd.Next(100000).ToString(); string sign = CommonFunction.EncryptString(appId + q + salt + secretKey); var sb = new StringBuilder("https://api.fanyi.baidu.com/api/trans/vip/translate?") .Append("q=").Append(HttpUtility.UrlEncode(q)) .Append("&from=").Append(srcLang) .Append("&to=").Append(desLang) .Append("&appid=").Append(appId) .Append("&salt=").Append(salt) .Append("&sign=").Append(sign); string url = sb.ToString(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.UserAgent = null; request.Timeout = 6000; try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); } catch (WebException ex) { errorInfo = "Request Timeout"; return(null); } BaiduTransOutInfo oinfo = JsonConvert.DeserializeObject <BaiduTransOutInfo>(retString); if (oinfo.error_code == null || oinfo.error_code == "52000") { //得到翻译结果 if (oinfo.trans_result.Count == 1) { return(oinfo.trans_result[0].dst); } else { errorInfo = "UnknownError"; return(null); } } else { errorInfo = "ErrorID:" + oinfo.error_code; return(null); } }
public string Translate(string sourceText, string desLang, string srcLang) { if (sourceText == "" || desLang == "" || srcLang == "") { errorInfo = "Param Missing"; return(null); } // 原文 string q = sourceText; string retString; Random rd = new Random(); string salt = rd.Next(100000).ToString(); string url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_texttranslate?"; string req = ""; req += "app_id=" + appId; req += "&nonce_str=" + salt; req += "&source=" + srcLang; req += "&target=" + desLang; req += "&text=" + HttpUtility.UrlEncode(q).ToUpper(); req += "&time_stamp=" + CommonFunction.GetTimeStamp(); req += "&sign=" + CommonFunction.EncryptString(req + "&app_key=" + appKey).ToUpper(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + req); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.UserAgent = null; request.Timeout = 6000; try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); } catch (WebException ex) { errorInfo = "Request Timeout"; return(null); } TencentTransOutInfo oinfo = JsonConvert.DeserializeObject <TencentTransOutInfo>(retString); if (oinfo.ret == "0") { //得到翻译结果 return(oinfo.data.target_text); } else { errorInfo = "ErrorID:" + oinfo.ret + " ErrorInfo:" + oinfo.msg; return(null); } }