Usar Google Translate en C #

Tengo que traducir algunos textos con el servicio de traducción de Google. Todo el código que he encontrado no funciona. Creo que porque han cambiado su servicio. Si alguien tiene código de trabajo, estaría muy contento.

El motivo por el que la primera muestra de código no funciona es porque el diseño de la página ha cambiado. Según la advertencia en esa página: “La cadena traducida es captada por el RegEx cerca de la parte inferior. Esto, por supuesto, podría cambiar, y debes mantenerlo actualizado”. Creo que esto debería funcionar por ahora, al menos hasta que cambien la página nuevamente.

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( " \"") + "  \"".Length); result = result.Substring(result.IndexOf(">") + 1); result = result.Substring(0, result.IndexOf("  >")); return result.Trim(); } 

Google Translate Kit, una biblioteca de código abierto 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 = "

" + post.text +post2.text+ "

"; dw.WriteToFile();

Cuando utilicé el código anterior. Me muestra el texto traducido como un signo de interrogación como (???????). Luego convierto de WebClient a HttpClient y luego obtuve un resultado preciso. Así puede usar código como este.

 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("") + 1); result = result.Substring(0, result.IndexOf("")); return result.Trim(); } 

Luego llamas a una función como. Pones las primeras dos letras de cualquier par de idiomas.

Del inglés (en) al urdu (ur).

 TranslateText(line, "en|ur") 

Google cerrará la API de traducción para fines de 2011, por lo que debería considerar las alternativas.

Si quiere traducir sus recursos , simplemente descargue MAT (Multilingual App Toolkit) para Visual Studio. https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308 Este es el camino a seguir para traducir sus proyectos en Visual Studio. https://blogs.msdn.microsoft.com/matdev/