Мне нужно перевести текст с помощью сервиса Google translate. Весь код, который я нашел, не работает. Я думаю, потому что они изменили свое служение. Если у кого-то есть рабочий код, я был бы очень рад.
Использование Google Translate в С#
Ответ 1
Посмотрите, работает ли это для вас
google-language-api-for-dotnet
http://code.google.com/p/google-language-api-for-dotnet/
Google Translator
http://www.codeproject.com/KB/IP/GoogleTranslator.aspx
Перевести текст с помощью Google Api
http://blogs.msdn.com/shahpiyush/archive/2007/06/09/3188246.aspx
Вызов API API Ajax для перевода и определения языка с С#
Веб-служба перевода в С#
http://www.codeproject.com/KB/cpp/translation.aspx
Использование API перевода Google из .NET.
Ответ 2
Причина, по которой первый пример кода не работает, заключается в том, что макет страницы изменился. В соответствии с предупреждением на этой странице: "Переведенная строка извлекается 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();
}
код > Ответ 3
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();
Ответ 4
Когда я использовал выше code.It показать мне переведенный текст как знак вопроса, как (???????). Затем я конвертирую из 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) Урду (ур).
TranslateText(line, "en|ur")
Ответ 5
Google собирается закрыть API перевода до конца 2011 года, поэтому вы должны смотреть на альтернативы!
Ответ 6
Если вы хотите перевести свои ресурсы, просто загрузите MAT (многоязычный набор инструментов приложений) для Visual Studio. https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308 Это способ перевести ваши проекты в Visual Studio. https://blogs.msdn.microsoft.com/matdev/
Ответ 7
Я нашел, что этот код работает для меня:
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";
}
}