Пример #1
0
            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);
            }
Пример #2
0
            /// <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);
            }