web-dev-qa-db-fra.com

Utiliser Google Translate en C #

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.

47
Max Frai

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 #

http://www.esotericdelights.com/post/2008/11/Calling-Google-Ajax-Language-API-for-Translation-and-Language-Detection-from-C.aspx

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

http://www.reimers.dk/blogs/jacob_reimers_weblog/archive/2008/06/18/using-google-s-translation-api-from-net.aspx

55
James Campbell

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>

21
Shane Fulmer

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();
4
jebberwocky

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";
    }
}
2
Yashar Aliabasi

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")
2
Muhammad Mehdi

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"

1
Victor

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/

0
juFo

Google va fermer l'API de traduction d'ici la fin de 2011, vous devriez donc regarder les alternatives!

0
Ash Eldritch