Google Translate gebruiken in C#

Ik moet wat tekst vertalen met de vertaalservice van Google. Alle code die ik heb gevonden werkt niet. Ik denk omdat ze hun service hebben veranderd. Als iemand werkende code heeft, zou ik heel blij zijn.


Antwoord 1, autoriteit 100%

Kijk of dit voor u werkt

google-language-api-for-dotnet

http://code.google.com/p/google -taal-api-voor-dotnet/

Google Translator

http://www.codeproject.com/KB/IP/GoogleTranslator.aspx

Vertaal uw tekst met Google API’s

http://blogs.msdn.com/shahpiyush/ archief/2007/06/09/3188246.aspx

Google Ajax Language API aanroepen voor vertaling en taaldetectie vanuit C#

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

Vertaalwebservice in C#

http://www.codeproject.com/KB/cpp/translation.aspx

De vertaal-API van Google van .NET gebruiken

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


Antwoord 2, autoriteit 35%

De reden dat het eerste codevoorbeeld niet werkt, is omdat de lay-out van de pagina is gewijzigd. Volgens de waarschuwing op die pagina: “De vertaalde string wordt bijna onderaan opgehaald door de RegEx. Dit kan natuurlijk veranderen en u moet het up-to-date houden.”
Ik denk dat dit voorlopig zou moeten werken, in ieder geval totdat ze de pagina weer veranderen.


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


Antwoord 3, autoriteit 29%

Ik ontdekte dat deze code voor mij werkt:

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

Antwoord 4, autoriteit 6%

Google Translate Kit, een open source bibliotheek 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();

Antwoord 5, autoriteit 3%

Toen ik bovenstaande code gebruikte. Het laat me vertaalde tekst zien als een vraagteken zoals (???????). Daarna converteer ik van WebClient naar HttpClient en kreeg ik een nauwkeurig resultaat. Dus je kunt code zoals deze gebruiken.

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

Dan roep je een functie aan zoals.Je plaatst de eerste twee letters van een talenpaar.

Van Engels(en) naar Urdu(ur).

TranslateText(line, "en|ur")

Antwoord 6, autoriteit 2%

Hier is mijn iets andere code, waarmee ook het coderingsprobleem is opgelost:

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

Voorbeeld van de functie-aanroep:

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

Het resultaat is “Hola”


Antwoord 7

Google gaat de vertaal-API tegen eind 2011 afsluiten, dus u zou naar de alternatieven moeten kijken!


Antwoord 8

Als je je bronnenwilt vertalen, download dan MAT (Multilingual App Toolkit) voor Visual Studio. https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit- 18308
Dit is de manier om uw projecten in Visual Studio te vertalen.
https://blogs.msdn.microsoft.com/matdev/

Other episodes