나는 두 리소스 파일을 모두 영어 문자열이 제대로로드 MonodevelopMonotouch System.Resources.ResourceManager가 작동하지
에 리소스로 포함되어
strings.resx 및 strings.fr - CA.resx
있습니다. 문화권을 변경할 때 Resource Manager에서 예외가 발생합니다.
System.Resources.ResourceManager mgr = new System.Resources.ResourceManager("Mobile.Res.strings",System.Reflection.Assembly.GetAssembly(typeof(RC)));
var str = mgr.GetString("PROJECTLIST", Thread.CurrentThread.CurrentCulture);
리소스가로드 될 때 다음 시스템 코드에서 예외가 throw됩니다. 이는 System.Resources.ResourceManager에 있습니다.
string filename = GetResourceFileName (resourceCulture);
if (!resourceCulture.Equals (CultureInfo.InvariantCulture))
{
/* Try a satellite assembly */
Version sat_version = GetSatelliteContractVersion(MainAssembly);
try
{
Assembly a = MainAssembly.GetSatelliteAssemblyNoThrow(
resourceCulture,
sat_version);
if (a != null)
{
stream = a.GetManifestResourceStream (filename);
if (stream == null)
{
stream = GetManifestResourceStreamNoCase (a, filename);
}
}
}
catch (Exception)
{
// Ignored
}
어셈블리는 다른 culture 리소스 파일에 대해서는 항상 null이며 예외를 throw합니다.
프로젝트 설정이 누락 되었습니까?
이 Visual Studio에서 일반 .net 솔루션에서 이렇게 할 때 작동하는 것 같습니다.
테스트 .net Windows 환경에서이 파일을 만들면 fr-CA라는 출력 디렉토리에 폴더가 생성됩니다.
업데이트 :
나는 이것으로 약간의 진전을 이루었습니다. Windows 및 데스크톱 프로젝트를 사용하여 fr-CA 폴더를 만들었습니다. 그런 다음 Visual Studio에서 만든 폴더를 .app 번들로 복사했습니다. 이렇게 한 후 시뮬레이터에서 french 리소스가 올바르게 사용되었습니다. 이 방법이 실제 장치에서 작동하는지 확신 할 수 없습니다.