문제

클래스 라이브러리가 있습니다 - IT 프레임 워크를 호출합니다. AssemblyInfo.cs에서는 다음과 같습니다.

[assembly: NeutralResourcesLanguage("en-US")]
.

\ Resources \ Directory에서, 나는 frameworkresources.resx frameworkresources.fr-fresx

도우미 클래스에서는 이것을 내 리소스 관리자로 사용하고 있습니다.

private static ResourceManager manager = new ResourceManager("Framework.Resources.FrameworkResources", Assembly.GetExecutingAssembly());
.

코드에서, 이렇게하면 다음과 같이하십시오 :

String message = manager.GetString("ArgumentNullExceptionMessage", CultureInfo.CurrentCulture);
.

디버깅 및 전환을 통해 전환 할 수 있으며 (및 UFICUTURE)는 FR-FR로 설정되어 있지만 FR-FR 리소스 파일에서 프랑스어 메시지가 아닌 내 기본, 영어 메시지를 항상 가져옵니다.

resourceManager가 자동으로 위로 전선해야합니다. 또는 현재 문화를 쿼리하는 코드를 작성한 다음 올바른 파일을 엽니 다. 현재 문화가 있기 때문에 자원 관리자가 FR-FR 문자열을 알아야 할 것으로 알려줍니다.

왜 이것이 작동하지 않는지 모르겠습니다.

업데이트 : 나는 위성 어셈블리가 있으므로 편집 부분이 괜찮을 것으로 믿습니다. 나는 문제가 내 자원 관리자에 있다고 생각한다. 나는 리소스를 사용하고 resourceManager를 이와 같이 명시 적으로 사용해 보았습니다.

ResourceManager manager =
    new ResourceManager("Framework.Resources.FrameworkResources",
        Assembly.GetExecutingAssembly());

Debug.WriteLine("de-DE : " + manager.GetString(resourceName, new CultureInfo("de-DE")));
Debug.WriteLine("el    : " + manager.GetString(resourceName, new CultureInfo("el")));
Debug.WriteLine("es-MX : " + manager.GetString(resourceName, new CultureInfo("es-MX")));
Debug.WriteLine("fr-FR : " + manager.GetString(resourceName, new CultureInfo("fr-FR")));
Debug.WriteLine("hi    : " + manager.GetString(resourceName, new CultureInfo("hi")));
Debug.WriteLine("zh-CN : " + manager.GetString(resourceName, new CultureInfo("zh-CN")));
.

이 기능이 생성됩니다 :

de-DE : Argument '%ArgumentName%' cannot be null or empty.
el    : Argument '%ArgumentName%' cannot be null or empty.
es-MX : Argument '%ArgumentName%' cannot be null or empty.
fr-FR : Argument '%ArgumentName%' cannot be null or empty.
hi    : Argument '%ArgumentName%' cannot be null or empty.
zh-CN : Argument '%ArgumentName%' cannot be null or empty.
.

모든 것이 제자리에 있지만, 자원 관리자는 단순히 그 위성 어셈블리를 보려고하지 않습니다. 그리고 해당 어셈블리에서는 위의 문자열의 번역 된 버전을 가지고 있으므로 문화 별 frameworkresources.resx 파일에서 문화 별 FrameworkResources.resx 파일에서 읽는 것이 분명히 읽습니다.

도움이 되었습니까?

해결책

나는 그것을 알아 냈습니다 (interweb에서 더 정련해서 덕분에).나는 단위 테스트에서 코드를 실행했으며, 적절하게 mstest는 위성 어셈블리를 "배포"하지 않습니다.테스트 설정에 들어가서 "배포"를 해제하면 모든 것이 예상대로 작동합니다.ugh!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top