2011-10-27 3 views
1

가장 이상한 것을보고 있습니다. VS 2010 디버거에서 프로그램을 실행하면 다른 문화권의 리소스 문자열을 사용하도록 전환 할 수 있으며 UI에서 제대로로드됩니다. 그러나 독립 실행 형 WPF 응용 프로그램으로 빌드하고 실행할 때 텍스트 상자에 숫자 (0.000 -> 0,000) 만 변경됩니다. 우리는 동적으로 다른 문화를 재설정하는 데 사용하는 코드는 다음과 같습니다WPF 응용 프로그램에서 지역화 된 문자열 리소스가로드되지 않습니다.

private void ResetCulture(string culture) 
    { 
     // Reset the culture and reload the resources 
     var ci = new CultureInfo(culture); 
     Thread.CurrentThread.CurrentCulture = ci; 
     Thread.CurrentThread.CurrentUICulture = ci; 
     Messenger.Default.Send<CultureInfo>(ci); 
    } 

참고 : 메신저가 MVVM 라이트 툴킷 (우리는 WPF와 실버 라이트 모두이 코드를 사용하는)에서 비롯됩니다. 마지막으로이 코드가 Silverlight에서 완벽하게 작동한다고 언급해야합니다.

누구나 WPF가 새로운 문화권의 리소스 문자열을로드하여 협력하지 않는 이유를 알 수 있습니까?

덕분에, 댄

+0

출처는 어디입니까? 디버그의 프로젝트 속성에서 "Visual Studio 호스팅 프로세스 사용"확인란의 선택을 해제하면 VS 내에서 실행할 때 다른 동작이 나타 납니까? 그것이 행동의 차이를 유발하기 때문에 나는 묻는다. 이 옵션을 선택하면 VS가 모든 참조 된 어셈블리를 미리로드합니다. 이 옵션을 선택 해제하면 일반적으로 사용되는 어셈블리 만로드되는 일반 런타임과 비슷합니다. – AndrewS

+0

리소스는 .resx 파일에서 오는 모든 문자열 리소스이며 부모 인 Forms.resx 및 Forms입니다. .resx는 Forms.Designer.cs 파일과 함께 모든 자식입니다. WPF 프로젝트에 대한 디버그 설정을 확인하고 "Visual Studio 호스팅 프로세스 사용"옵션이 이미 선택 취소되었습니다. 다른 생각들? – Lu10ntDan

+0

디버거에서 실행할 때 언급합니다. 디버거가 연결되지 않은 상태에서 VS 내에서 실행하면 작동합니까? 즉 Ctrl + F5입니다. 그러면 VS에서 리소스 어셈블리를 생성합니다. 즉 de-DE \ fooassembly.resources.dll과 같은 하위 폴더가 있습니다. 그것들을 배포하고 동일한 폴더 구조를 유지하고 있습니까? – AndrewS

답변

0

당신은 응용 프로그램을 다시 시작해야합니다. 새로운 리소스를 메모리에로드 할 수 있습니다.

안토니오

관련 문제