Je dois traduire du texte avec le service de traduction de Google. Tout le code que j'ai trouvé ne fonctionne pas. Je pense parce qu'ils ont changé leur service. Si quelqu'un a du code de travail, je serais très heureux.
Voir si cela fonctionne pour vous
google-language-api-for-dotnet
http://code.google.com/p/google-language-api-for-dotnet/
Traducteur Google
http://www.codeproject.com/KB/IP/GoogleTranslator.aspx
Traduisez votre texte avec Google Api
http://blogs.msdn.com/shahpiyush/archive/2007/06/09/3188246.aspx
Appel de l'API de langue Google Ajax pour la traduction et la détection de langue à partir de C #
Service Web de traduction en C #
http://www.codeproject.com/KB/cpp/translation.aspx
Utilisation de l'API de traduction de Google à partir de .NET
La raison pour laquelle le premier exemple de code ne fonctionne pas est que la présentation de la page a été modifiée. Selon l'avertissement sur cette page: "La chaîne traduite est récupérée par le RegEx vers le bas. Cela pourrait bien sûr changer, et vous devez le garder à jour." Je pense que cela devrait fonctionner pour l'instant, au moins jusqu'à ce qu'ils changent à nouveau la page.
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=
\" ". Longueur);
result = result.Sub String (result.IndexOf ("> ") + 1);
result = result.Substring (0, result.IndexOf ("</span
>"));
return result.Trim ();
}
</ code>Google Translate Kit, une bibliothèque open source 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();
J'ai trouvé ce code fonctionne pour moi:
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";
}
}
Quand j’ai utilisé le code ci-dessus, il m’a montré le texte traduit sous forme de point d’interrogation comme (???????). Ensuite, je convertis de WebClient en HttpClient, puis j’ai obtenu un résultat exact.
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();
}
Ensuite, vous appelez une fonction du type.Vous mettez les deux premières lettres d’une paire de langues.
De l'anglais (en) à l'ourdou (ur).
TranslateText(line, "en|ur")
Voici mon code légèrement différent, résolvant également le problème d'encodage:
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.Default;
string result = webClient.DownloadString(url);
result = result.Substring(result.IndexOf("TRANSLATED_TEXT"));
result = result.Substring(result.IndexOf("'")+1);
result = result.Substring(0, result.IndexOf("'"));
return result;
}
Exemple d'appel de fonction:
var input_language = "en";
var output_language = "es";
var result = TranslateText("Hello", input_language + "|" + output_language);
Le résultat sera "Hola"
Si vous souhaitez traduire votre resources, téléchargez simplement MAT (Multilingual App Toolkit) pour Visual Studio. https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308 C’est le moyen de traduire vos projets dans Visual Studio . https: // blogs .msdn.Microsoft.com/matdev/
Google va fermer l'API de traduction d'ici la fin de 2011, vous devriez donc regarder les alternatives!