2011-03-01 3 views
5

나는 C# 응용 프로그램을 가지고 있으며 리소스 관리자를 사용하여 다른 resx 파일을 참조하여 여러 언어를 지원하도록 노력하고 있습니다.런타임시 언어를 바꾸기 위해 현재 Resource Manager를 어떻게 변경합니까?

 [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 
    public static global::System.Resources.ResourceManager ResourceManager { 
     get { 
      if (object.ReferenceEquals(resourceMan, null)) { 
       global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("project.resources.en-US", typeof(resources.en-US).Assembly); 
       resourceMan = temp; 
      } 
      return resourceMan; 
     } 
    } 

이 어떻게 런타임에 System.Resources.ResourceManager("project.resources.it-IT", typeof(resources.it-IT).Assembly)System.Resources.ResourceManager("project.resources.en-US", typeof(resources.en-US).Assembly)를 전환 할 수 있습니다 내 Designer.cs 코드를 수정하지 않고 :

나는 나의 Designer.cs에서이 코드가? 가능한가?

This question is related

편집 : 나는 내 디자이너의 코드를 변경하기로되어 있지 않다 실현, 명확히하기 위해,하지만 난 다른 RESX 파일에 액세스 할 수 있도록 그것을 만들기 위해 노력하고있어. 제 질문이 잘못 되었다면 사과 드리지만, 제가 말하는 것에 대해 완전히 이해하지 못하고있는 것 같습니다. 나는 현재 위성 어셈블리를 조사 중이다.

+1

Designer.cs 파일의 코드를 편집하지 마십시오. 문화권에 독립적 인 기본 코드입니다. 당신은 어쨌든 이러한 변경 사항을 잃게됩니다. 자원 전환은 시스템 언어에 따라 자동으로 이루어집니다. MSDN 라이브러리에서 "위성 어셈블리"를 찾습니다. –

답변

3

현재 문화 정보를 변경하면 작업을 완료해야합니다. System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

+0

그것은 믿을 수 없을 정도로 단순한 것처럼 보입니다 ... –

+0

그것이 작동하는 마법을 알지 못하지만 작동하는 것 같습니다. 감사합니다. –

+2

아주 간단합니다. CurrentUiCulture는 현재 스레드에 대한 로케일을 보유합니다. ru-RU로 설정하면 전체 스레드가 아닌 현재 스레드의 러시아어 리소스 파일에서 데이터를로드합니다. 또한 소수 구분 문자, 통화 등과 같은 세계화 작업을 담당하는 CurrentCulture 속성이 있습니다. 한번보세요 http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx <- here – Davita

관련 문제