前一段时间,我使用一种简单的方法使用Google Translate(没有云翻译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;
}
在此示例中,词典的键将是字符串名称(此处不相关),而value是要翻译的文本。 直到最近Google更改了Translator的布局(我认为)后,该代码才能正常工作。现在,输出始终是完整下载的网页,而不仅仅是翻译的文本。调试显示
<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(相当长且格式不正确,但这就是我得到它时的样子)