2017-12-26 51 views
0

을 갖는 자원 파일을 만듭니다C 번호 : 값이 프랑스어 문자 구글 I 프로그래밍 MyResources.resx 여기</p> <p>코드입니다 MyResources.fr - CA.resx로 파일을 변환하려고 번역 서비스를 사용하여 내 C# 콘솔 응용 프로그램에서

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

static void Main(string[] args) 
{ 
    var resWriter = new ResourceWriter("Translations.resources"); 

    ResourceSet resourceSet = MyResources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true); 
    foreach (DictionaryEntry entry in resourceSet) 
    { 
     string resKey = entry.Key.ToString(); 
     string resValue = entry.Value.ToString(); 

     var result = TranslateText(resValue, "en|fr-CA"); 

     if (result != null) 
     { 
      resWriter.AddResource(resKey, System.Web.HttpUtility.HtmlDecode(result)); 
     } 
    } 

    resWriter.Close(); 
} 

일부 프랑스어 문자는 "?"로 표시됩니다. "& # 39"와 같은 문자가 표시됩니다.

그래서 프로그래밍 방식으로 프로그래밍 방식으로 리소스에 프랑스어 기반 값을 삽입 할 수 있습니까? 파일이 올바르게 있습니까?

+0

글쎄,이 번역 유형에 대해 https://code.google.com/archive/p/google-language-api-for-dotnet/ Google Language API를 사용 하시겠습니까? 이 API를 사용하면 한 언어에서 다른 언어로 인코딩 작업을 모두이 API로 처리 할 수 ​​있습니다. 그것은 단지 대안 일 뿐이므로 해답 인 HtmlDecode 문자도 검색 할 것입니다. 그러나 제 생각에는 시도해보십시오. –

+0

나는 그것을 사용하고 그것은 다음과 같은 오류가 발생합니다 :'GoogleAPIException : [오류 코드 : 403] 번역 v2를 사용하십시오' –

+0

어떤 버전을 사용하셨습니까? 다음은 Google .NET API 목록입니다. https://code.google.com/archive/p/google-api-for-dotnet/downloads .NET 용 Google 번역 API 0.3.1을 사용하는 것이 좋습니다. –

답변

0

프랑스어 문자를 올바르게 디코딩하려면 webClient 인코딩 유형을 변경해야합니다.

그래서이 라인 :

webClient.Encoding = System.Text.Encoding.UTF8; 

는 다음과 같이되어야한다 :

webClient.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1"); 

과 (TranslateText 메소드를 호출 후) 당신의 "결과"변수는 프랑스어로 제대로 읽을 수 있어야합니다.

이 방법을 사용해보고 알려주세요. 저에게 효과적이었습니다. 감사합니다.

+0

알겠습니다. 확인하겠습니다. –