it-swarm.com.de

Verwenden von Google Translate in C #

Ich muss etwas Text mit dem Übersetzungsdienst von Google übersetzen. Der gesamte Code, den ich gefunden habe, funktioniert nicht. Ich denke, weil sie ihren Dienst geändert haben. Wenn jemand einen Arbeitscode hat, würde ich mich sehr freuen.

47
Max Frai
55
James Campbell

Das erste Codebeispiel funktioniert nicht, weil das Layout der Seite geändert wurde. Die Warnung auf dieser Seite lautet: "Die übersetzte Zeichenfolge wird vom RegEx am unteren Rand abgerufen. Dies kann sich natürlich ändern, und Sie müssen es auf dem neuesten Stand halten." Ich denke, das sollte jetzt funktionieren. zumindest bis sie die Seite erneut wechseln.


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= \" ". Länge); 
 result = result.Substring (result.IndexOf ("> ") + 1); 
 result = result.Substring (0, result.IndexOf ("</span>")); 
 return result.Trim (); 
} 
</ code>

21
Shane Fulmer

Google Translate Kit, eine Open Source-Bibliothek 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

Ich habe festgestellt, dass dieser Code für mich funktioniert:

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

Wenn ich den obigen Code verwendet habe, zeigt er mir den übersetzten Text als Fragezeichen (???????) an. Dann konvertiere ich von WebClient zu HttpClient, dann habe ich ein genaues Ergebnis. So können Sie Code wie folgt verwenden. 

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();
}

Dann rufen Sie eine Funktion auf wie: Sie setzen den ersten zwei Buchstaben eines beliebigen Sprachpaares. 

Von Englisch (en) nach Urdu (ur).

TranslateText(line, "en|ur")
2
Muhammad Mehdi

Hier ist mein etwas anderer Code, der auch das Codierungsproblem löst:

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;
}

Beispiel für den Funktionsaufruf:

var input_language = "en";
var output_language = "es";
var result = TranslateText("Hello", input_language + "|" + output_language);

Das Ergebnis wird "Hola" sein

1
Victor

Wenn Sie Ihre resources übersetzen möchten, laden Sie einfach MAT (Multilingual App Toolkit) für Visual Studio herunter. https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308 .__: So können Sie Ihre Projekte in Visual Studio . https: // Blogs übersetzen .msdn.Microsoft.com/matdev/

0
juFo

Google wird die Übersetzungs-API bis Ende 2011 herunterfahren. Sie sollten sich also die Alternativen ansehen!

0
Ash Eldritch