Некоторое время назад я использовал простой метод перевода словаря с одного языка на другой с помощью 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;
}
В этом примере ключом словаря будет имя строки (здесь не имеет значения), а значением - текст для перевода.Код работал отлично до самого недавнего времени, когда 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 (довольно длинный иплохо отформатирован, но вот как это выглядит, когда я его получаю)