private static readonly string key = "2gH17Xp3c1L4jkBp8bQl"; // 密钥 /// <summary> /// 百度翻译 /// </summary> /// <param name="text">要翻译的文本</param> /// <param name="from">源语言 例如 en 更多简写参考 http://api.fanyi.baidu.com/api/trans/product/apidoc </param> /// <param name="to">目标语言 例如 zh</param> /// <returns></returns> public static string Translate(string text, string from, string to) { string result = text; if (string.IsNullOrWhiteSpace(text) || string.IsNullOrWhiteSpace(from) || string.IsNullOrWhiteSpace(to)) { return(result); } string body = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(text)); string salt = "1"; // 随机数 string sign = MD5Util.Md5(string.Concat(appid, body, salt, key)); // 签名 body = HttpUtility.UrlEncode(body); // 生成签名之后,发送HTTP请求之前 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}", body, from.ToLower(), to.ToLower(), appid, salt, sign.ToLower()); ReqeustResult reqeustResult = HttpRequestHelper.Request(url, new RequestData() { Method = RequestMethods.Get }); //根据API返回的Json格式 构建匿名对象 var obj = new { from = "", to = "", trans_result = new[] { new { src = "", dst = "" } } }; var baiduTransResult = JsonConvert.DeserializeAnonymousType(reqeustResult.Html, obj); //判断是否正确的返回翻译结果 if (baiduTransResult.trans_result != null) { result = baiduTransResult.trans_result[0].dst; } return(result); }
/// <summary> /// 最新Google翻译 /// add by Yang 2016年12月23日13:19:05 /// https://cloud.google.com/translate/docs/reference/rest#query_parameters /// </summary> /// <param name="sourceText">需要翻译的文本</param> /// <param name="sourceLanguageCode">输入语言 选填,https://cloud.google.com/translate/docs/languages </param> /// <param name="targetLanguageCode">输出语言 必填,https://cloud.google.com/translate/docs/languages </param> /// <returns></returns> private static string GoogleTranslate(string sourceText, string sourceLanguageCode, string targetLanguageCode) { StringBuilder sb = new StringBuilder(); string targetText = string.Empty; if (string.IsNullOrEmpty(sourceText)) { return(targetText); } const string URL = "https://translation.googleapis.com/language/translate/v2?key={0}&source={1}&target={2}&q="; //sourceLanguageCode 暂时固定写死为en modify by Yang 2017年9月4日10:52:08 string url = string.Format(URL, GoogleApiKey, "en", targetLanguageCode); string parameter = null; List <string> list = sourceText.Length > 800 ? SplitStatement(sourceText) : new List <string> { sourceText }; foreach (string item in list) { if (string.IsNullOrEmpty(item)) { continue; } parameter = HttpUtility.UrlEncode(item); try { ReqeustResult request = HttpRequestHelper.Request(string.Concat(url, parameter)); if (!string.IsNullOrWhiteSpace(request.Html)) { var obj = new { data = new { translations = new[] { new { translatedText = "", } } } }; var googleTransResult = JsonConvert.DeserializeAnonymousType(request.Html, obj); if (googleTransResult.data != null) { if (googleTransResult.data.translations != null) { //targetText = googleTransResult.data.translations[0].translatedText; sb.Append(googleTransResult.data.translations[0].translatedText); } } } } catch (Exception ex) { throw ex; } System.Threading.Thread.Sleep(TranslatorHelper._TranslatorSleepTime); } list.Clear(); list = null; targetText = sb.ToString(); sb.Clear(); sb = null; return(targetText); }