programing

C #에서 Google 번역 사용

javaba 2021. 1. 14. 23:05
반응형

C #에서 Google 번역 사용


구글 번역 서비스로 일부 텍스트를 번역해야합니다. 내가 찾은 모든 코드가 작동하지 않습니다. 나는 그들이 그들의 서비스를 변경했기 때문에 생각합니다. 누군가가 작동하는 코드를 가지고 있다면 매우 기쁠 것입니다.


이것이 당신을 위해 작동하는지 확인하십시오

닷넷 용 google-language-api

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

구글 번역기

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

Google Api를 사용하여 텍스트 번역

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

C #에서 번역 및 언어 감지를 위해 Google Ajax 언어 API 호출

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

C #의 번역 웹 서비스

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


첫 번째 코드 샘플이 작동하지 않는 이유는 페이지 레이아웃이 변경 되었기 때문입니다. 해당 페이지의 경고에 따르면 : "번역 된 문자열은 하단에 가까운 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();
}


이 코드가 저에게 효과적이라는 것을 알았습니다.

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

오픈 소스 라이브러리 인 Google 번역 키트 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();

위의 코드를 사용했을 때 (???????)와 같은 물음표로 번역 된 텍스트를 보여주고 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();
}

그런 다음 다음과 같은 함수를 호출합니다. 언어 쌍의 처음 두 글자를 입력합니다.

From English(en) To Urdu(ur).

TranslateText(line, "en|ur")

Here is my slighly different code, solving also the encoding issue:

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

Example of the function call:

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

The result will be "Hola"


Google is going to shut the translate API down by the end of 2011, so you should be looking at the alternatives!


If you want to translate your resources, just download MAT (Multilingual App Toolkit) for Visual Studio. https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308 This is the way to go to translate your projects in Visual Studio. https://blogs.msdn.microsoft.com/matdev/

ReferenceURL : https://stackoverflow.com/questions/2246017/using-google-translate-in-c-sharp

반응형