2012-10-12 7 views
1

저는 C#과 Xaml이 포함 된 Windows 8 App을 작성하고 있습니다.어떻게 Resources.resw를 변경할 수 있습니까?

현재 두 개의 리소스 파일이 있습니다.

--local

---- 드 드

------ Resources.resw

---- KO-EN

- ---- Resources.resw

다음과 같이 Textparts를로드합니다 :

private ResourceLoader _resources = new ResourceLoader(); 

_resources.GetString("Menu_Contacts") 

이제 내 질문은 어떻게 런타임에 자원을 변경할 수 있습니까?

답변

1

가장 쉬운 방법은 PrimaryLanguageOverride 속성을 설정하는 것입니다 :

ApplicationLanguages.PrimaryLanguageOverride = "de-DE"; 

참고이 그 응용 프로그램의 언어가 변경되지만 이미로드 된 현재 화면 에드는 새로 고침되지 않습니다. 현재 화면의 텍스트를 새로 고치려면 다음 이벤트 처리기를 구현할 수 있습니다.

core.ResourceManager.Current.DefaultContext.QualifierValues.MapChanged 
     += async (s, m) => 
     { 
      await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
      { 
       settingsLanguageLabel.Text = core.ResourceManager.Current.MainResourceMap.GetValue("Resources/SettingsLanguageLabel/Text").ValueAsString; 
       settingsRestartLabel.Text = core.ResourceManager.Current.MainResourceMap.GetValue("Resources/SettingsRestartLabel/Text").ValueAsString; 
      }); 
     }; 
0

직접 액세스 할 수있는 리소스 키 :

Properties.Resources.myResourceKey = "new value"; 

또는 키를 다시 작성할 수 있습니다 :

resourceWriter = new ResXResourceWriter(Server.MapPath("/App_GlobalResources/Resource.resx")); 
foreach (var cnes_ in _ResList) 
{ 
    resourceWriter.AddResource(cnes_.Key, cnes_.Value); 
} 
resourceWriter.Close(); 
+0

감사합니다.하지만 슬프게도이 승인은 유용하지 않았습니다. 나는 Change the Default Resource를 원하지만, 어떻게하는지 모른다. _resources.GetString ("Menu_Contacts")을 계속 사용하려면 명령에서 사용하는 Resources.resw 파일 만 변경해야합니다. – user1572130

관련 문제