web-dev-qa-db-ja.com

C#でのGoogle翻訳の使用

Googleの翻訳サービスでテキストを翻訳する必要があります。私が見つけたすべてのコードは機能しません。彼らがサービスを変えたからだと思います。誰かが動作するコードを持っているなら、私はとてもうれしいです。

52
Max Frai

これがあなたのために働くかどうかを見てください

google-language-api-for-dotnet

http://code.google.com/p/google-language-api-for-dotnet/

Google Translator

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

Google Apiを使用してテキストを翻訳します

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

C#からの翻訳と言語検出のためのGoogle Ajax Language APIの呼び出し

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

C#の翻訳Webサービス

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

.NETからGoogleの翻訳APIを使用する

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

59
James Campbell

最初のコードサンプルが機能しないのは、ページのレイアウトが変更されたためです。そのページの警告に従って:「翻訳された文字列は、下部近くのRegExによって取得されます。これはもちろん変更される可能性があるため、最新の状態に保つ必要があります。」少なくとも再びページを変更するまで、これは今のところ機能するはずです。


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

私はこのコードが私のために働くことを発見しました:

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

Google Translate Kit、オープンソースライブラリ 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

上記のコードを使用すると、翻訳されたテキストが(???????)のような疑問符として表示されます。その後、WebClientからHttpClientに変換すると、正確な結果が得られます。このようなコードを使用できます。

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

次に、次のような関数を呼び出します。言語ペアの最初の2文字を入力します。

英語(en)からウルドゥー語(ur)へ。

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

エンコードの問題も解決する、少し異なるコードを次に示します。

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

関数呼び出しの例:

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

結果は「Hola」になります

1
Victor

リソースを翻訳したい場合は、Visual Studio用のMAT(Multilingual App Toolkit)をダウンロードしてください。 https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308 これは、Visual Studioでプロジェクトを翻訳する方法です。 https://blogs.msdn.Microsoft.com/matdev/

0
juFo

Googleは2011年末までにtranslate APIをシャットダウンする予定ですので、代替案を検討する必要があります。

0
Ash Eldritch