Exemplo n.º 1
0
        protected override string Translate(string value, string fromLanguage, string toLanguage, string fromApiLanguage, string toApiLanguage)
        {
            TranslateRequest request = new TranslateRequest()
            {
                dirCode       = fromApiLanguage + "-" + toApiLanguage,
                template      = "General",
                text          = WebUtils.FormatJson(value),
                lang          = fromApiLanguage,
                limit         = 3000,
                useAutoDetect = false,
                key           = string.Empty,
                ts            = "MainSite",
                tid           = string.Empty,
                IsMobile      = true
            };
            string requestJson = JSONSerializer <TranslateRequest> .Serialize(request);

            string url = "http://www.online-translator.com/services/TranslationService.asmx/GetTranslateNew";

            using (WebClient webClient = new WebClient())
            {
                webClient.Proxy    = null;
                webClient.Encoding = Encoding.UTF8;
                webClient.Headers[HttpRequestHeader.ContentType] = "application/json; charset=UTF-8";

                string json = webClient.UploadString(url, requestJson);

                // Lazy hack, find the correct way to handle "__type"
                json = json.Replace("__type", "__nype__");

                TranslateResponse response = JSONSerializer <TranslateResponse> .DeSerialize(json);

                string result = response.d.result;
                if (!string.IsNullOrEmpty(result) && result.StartsWith("<style"))
                {
                    result = HttpUtility.HtmlDecode(result);

                    string resultHeader = "ref_result";
                    int    resultOffset = result.IndexOf(resultHeader) + resultHeader.Length;
                    result = result.Substring(resultOffset);
                    result = result.Substring(result.IndexOf('>') + 1);
                    result = result.Substring(0, result.IndexOf('<')).Trim();
                    return(result);
                }
                else
                {
                    return(result);
                }
            }
        }