57

我必须使用 Google 的翻译服务翻译一些文本。我发现的所有代码都不起作用。我想是因为他们改变了他们的服务。如果有人有工作代码,我会很高兴。

4

8 回答 8

23

第一个代码示例不起作用的原因是页面布局发生了变化。根据该页面上的警告:“翻译后的字符串由靠近底部的 RegEx 获取。这当然可以改变,你必须保持最新。” 我认为这现在应该可以工作,至少在他们再次更改页面之前。


public string TranslateText(string input, string languagePair)
{
    string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
    WebClient webClient = new WebClient();
    webClient.Encoding = System.Text.Encoding.UTF8;
    string result = webClient.DownloadString(url);
    result = result.Substring(result.IndexOf("<span title=\"") + "<span title=\"".Length);
    result = result.Substring(result.IndexOf(">") + 1);
    result = result.Substring(0, result.IndexOf("</span>"));
    return result.Trim();
}

于 2010-02-11T16:55:26.993 回答
19

我发现这段代码对我有用:

public String Translate(String word)
{
    var toLanguage = "en";//English
    var fromLanguage = "de";//Deutsch
    var url = $"https://translate.googleapis.com/translate_a/single?client=gtx&sl={fromLanguage}&tl={toLanguage}&dt=t&q={HttpUtility.UrlEncode(word)}";
    var webClient = new WebClient
    {
        Encoding = System.Text.Encoding.UTF8
    };
    var result = webClient.DownloadString(url);
    try
    {
        result = result.Substring(4, result.IndexOf("\"", 4, StringComparison.Ordinal) - 4);
        return result;
    }
    catch
    {
        return "Error";
    }
}
于 2018-10-02T08:47:15.720 回答
4

Google Translate Kit,一个开源库http://ggltranslate.codeplex.com/

Translator gt = new Translator();
/*using cache*/
DemoWriter dw = new DemoWriter();
gt.KeyGen = new SimpleKeyGen();
gt.CacheManager = new SimleCacheManager();
gt.Writer = dw;
Translator.TranslatedPost post = gt.GetTranslatedPost("Hello world", LanguageConst.ENGLISH, LanguageConst.CHINESE);
Translator.TranslatedPost post2 = gt.GetTranslatedPost("I'm Jeff", LanguageConst.ENGLISH, LanguageConst.CHINESE);
this.result.InnerHtml = "<p>" + post.text +post2.text+ "</p>";
dw.WriteToFile();
于 2010-08-25T15:57:36.700 回答
2

当我使用上面的代码时。它显示我翻译的文本为问号,如 (???????)。然后我从 WebClient 转换为 HttpClient,然后我得到了准确的结果。所以你可以使用这样的代码。

public static string TranslateText( string input, string languagePair)       
{
    string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
    HttpClient httpClient = new HttpClient();
    string result = httpClient.GetStringAsync(url).Result;
    result = result.Substring(result.IndexOf("<span title=\"") + "<span title=\"".Length);
    result = result.Substring(result.IndexOf(">") + 1);
    result = result.Substring(0, result.IndexOf("</span>"));
    return result.Trim();
}

然后你调用一个函数。你把任何语言对的前两个字母。

从英语(en)到乌尔都语(ur)。

TranslateText(line, "en|ur")
于 2018-05-08T10:08:33.993 回答
1

这是我略有不同的代码,也解决了编码问题:

public string TranslateText(string input, string languagePair)
{
    string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
    WebClient webClient = new WebClient();
    webClient.Encoding = System.Text.Encoding.Default;
    string result = webClient.DownloadString(url);
    result = result.Substring(result.IndexOf("TRANSLATED_TEXT"));
    result = result.Substring(result.IndexOf("'")+1);
    result = result.Substring(0, result.IndexOf("'"));
    return result;
}

函数调用示例:

var input_language = "en";
var output_language = "es";
var result = TranslateText("Hello", input_language + "|" + output_language);

结果将是“Hola”

于 2018-11-21T06:58:17.867 回答
0

Google 将在 2011 年底关闭翻译 API,所以您应该寻找替代方案!

于 2011-08-07T13:31:20.737 回答
0

如果您想翻译您的资源,只需下载适用于 Visual Studio 的 MAT(多语言应用工具包)。https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308 这是在 Visual Studio 中翻译项目的方法。 https://blogs.msdn.microsoft.com/matdev/

于 2017-07-10T07:45:27.990 回答