15

Android, iOS 및 Windows Phone을 대상으로하는 Xamarin 프로젝트가 있습니다. 나는 다른 플랫폼간에 공통 코드를 공유하기 위해 코어 (PCL 라이브러리)를 사용했다. "LoginLabel는"내 자원 키와 값 xamarin을 사용하고 iOS에만 문제가있는 모바일 크로스 플랫폼 현지화

public string GetString() 
{ 
    // CommonResources is the name of my resource file 
    ResourceManager resManager = new ResourceManager(typeof(CommonResources)); 
    return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture); 
} 

입니다

: 내 핵심 라이브러리와 난 내 뷰 모델 중 하나에 코드 다음 사용 문화 특정 문자열을 읽는 자원 파일 (.NET 자원)의 .resx 추가 "로그인"(영어) 및 "inloggen"(네덜란드어)입니다.

필자는 PCL 프로젝트에서 English와 Dutch 용으로 두 개의 리소스 파일 CommonResources를 만들었습니다. CommonResources.resx
CommonResources.nl-NL.resx 안드로이드에서

는 iOS 및 윈도우 폰, 나는 다음과 같이 문화를 설정합니다

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL"); 
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL"); 

이 안드로이드와 윈도우 폰에 대해 잘 작동합니다.

iOS의 경우 작동하지 않습니다. 영어 파일에서 항상 리소스 문자열을 반환합니다. 문화권이 올바르게 설정되고 디버그 모드로 표시됩니다. 하지만 어쨌든 네덜란드 리소스에서 리소스 문자열을로드 할 수 없습니다.

그래서 모든 플랫폼에서 PCL을 사용하여 문자열 (.Net 방식)을 현지화 할 수 있습니까? 누구나 아이디어가 있습니까? 미리 감사드립니다.

+0

네덜란드어가 유일한 다른 언어입니까? 그렇지 않은 경우 다른 언어가 예상대로 작동합니까? 그렇다면 다른 언어를 테스트로 추가 할 수 있습니까? – chad

+0

아니요, 힌디어는 네덜란드어와 다른 언어입니다. 영어 만 지원하는 언어는 지원하지 않습니다. – SoftSan

답변

2

Google Xamarin 프로젝트의 현지화를 위해 Microsoft 및 T4 템플릿의 Multilingual App Toolkit (detailed here)을 사용하여 툴킷의 출력을 Android 및 iOS 용 유용한 형식으로 변환했습니다.

This 튜토리얼에는 프로세스의 환상적인 개요가 있으며 this 코드 프로젝트를 기반으로합니다.

0

다음 중 하나를

  • 당신은 실제로 iOS의 CurrentCulture을 설정하지 않는 것입니다.
  • CurrentCulture를 스레드 A에 설정하고 스레드 B에서 검색 중입니다.

이 시도 :

public string GetString() 
{ 
    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL"); 
    Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL"); 

    // CommonResources is the name of my resource file 
    ResourceManager resManager = new ResourceManager(typeof(CommonResources)); 
    return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture); 
} 
0

당신이 실제 장치에서 테스트합니까? 시뮬레이터에서는 문화를 변경할 수 없습니다. 제 언어 파일과 비슷한 문제가있었습니다.

관련 문제