使用C#从Google翻译中获取错误的翻译

时间:2018-11-29 16:59:34

标签: c# google-translate translate

我一直使用这种方法使用Google翻译来翻译程序中的某些文本,直到本周为止,它运行良好:

public string TranslateText(string input, string languagePair)
        {
            string r = WebUtility.HtmlDecode(input);
            r = WebUtility.UrlEncode(r);
            string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", r, languagePair);
            WebClient webClient = new WebClient();
            webClient.Encoding = Encoding.GetEncoding("Windows-1252");
            byte[] resultbyte = webClient.DownloadData(url);
            string result = Encoding.Default.GetString(resultbyte);
            result = result.Substring(result.IndexOf("TRANSLATED_TEXT=") + 16);
            result = result.Replace("\\x26", "&");
            result = result.Replace("\\x3d", "=");
            result = WebUtility.HtmlDecode(result);
            result = result.Remove(result.IndexOf(";"));
            result = result.Replace("'", string.Empty);

            return result;

        }

但是现在我像往常一样运行该程序,并且总是得到这种翻译:

<html lang="en"> <head> <style>@import url(https://fonts.googleapis.com/css?lang=en&family=Product+Sans|Roboto:400,700)

我不知道会发生什么。有人知道出什么问题吗?

1 个答案:

答案 0 :(得分:1)

一个快速的Google暗示,一段时间以来,Google Translate API的设计并未像以前那样工作,它持续了这么长时间对您来说可能真是幸运。

根据其条款,您无法使用Google翻译工具(实质上是通过屏幕抓取其免费的网络工具)。您应该apply for an account和他们在一起,并期望pay,尽管如果您只翻译一点点文本也可以。您可能可以通过修改URL和网页抓取代码来解决该问题(如果尚未被阻止),但是您不能在此处寻求帮助来规避法律协议。

如果您决定采用合法途径,一旦使用帐户启动并运行,就可以使用API​​密钥/令牌直接访问API。有关详细信息,请参见quickstart guide