首页 > 解决方案 > 通过谷歌翻译的字符串翻译停止工作

问题描述

前段时间,我使用了一种简单的方法,使用谷歌翻译(没有云翻译 API)将字典从一种语言翻译成另一种语言。它看起来类似于:

private static Dictionary<string, string> StringTranslator(Dictionary<string, string> input)
{
    var output = new Dictionary<string, string>();
    var LanguagePair = "en|fr"; //let's take English to French as an example

    using (var web = new WebClient())
    {
        foreach (var pair in input)
        {
            var url = string.Format(@"http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", pair.Value, LanguagePair);

            var w = web.DownloadString(url);

            w = w.Substring(w.IndexOf(@"<span title="">") + @"<span title="">".Length);
            w = w.Substring(w.IndexOf(">") + 1);
            w = w.Substring(0, w.IndexOf("</span>"));

            output.Add(pair.Key, w.Trim());
        }
    }

    return output;
}

在本例中,字典的键是字符串名称(此处无关),值是要翻译的文本。直到最近,当谷歌改变了翻译器的布局(我认为)时,代码才能正常工作。现在输出始终是完整下载的网页,而不仅仅是翻译的文本。调试表明,

<span title="">

在下载的页面中找不到,翻译后的文本也找不到。有没有办法修复它,或者可能有另一种方法来实现像这样的自动翻译?干杯。

编辑:使用相关方法提供更多上下文:

private static void Main()
{
    var strings = new Dictionary<string, string>()
        {
            {"str1", "one" },
            {"str2", "two" },
            { "strTest", "This is just nothing but a test message that will soon be translated into another language." }
        };

    var test = StringTranslator(strings);
}

字典中的所有输出字符串看起来都类似于:https ://pastebin.com/h4ahMRCb (很长而且格式很差,但是当我得到它时就是这样)

标签: c#google-translatesystem.net

解决方案


推荐阅读