2016-09-01 2 views
0

나는이 SettingsPage.xaml템플릿 (10) 스위치 언어

에 다음 코드
<ToggleSwitch x:Name="LanguageSwitch" x:Uid="LanguageSwiich" 
            Header="Switch language" 
            Margin="2,130,0,0" 
            IsOn="{Binding IsFullScreen, Mode=TwoWay}" 
            OffContent="English" 
            OnContent="Franche" 
            RelativePanel.AlignLeftWithPanel="True" 
            RelativePanel.AlignTopWithPanel="True" /> 

그리고 SettingsService.cs 그냥 테스트

public bool IsEnglish 
    { 
     get { return _helper.Read<bool>(nameof(IsEnglish), true); } 
     set 
     { 
      _helper.Write(nameof(IsEnglish), value); 
      Views.Shell.HamburgerMenu.IsFullScreen = value; 
     } 
    } 

에 대한 코드를 다음에 이것을 추가 SettingsPageViewModel.cs에 이것을 추가

public bool IsEnglish 
    { 
     get { return _settings.IsEnglish; } 
     set 
     { 
      _settings.IsEnglish = value; 
      base.RaisePropertyChanged(); 
      if (value) 
      { 
       var culture = new CultureInfo("fr"); 
       Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name; 
       CultureInfo.DefaultThreadCurrentCulture = culture; 
       CultureInfo.DefaultThreadCurrentUICulture = culture; 
      } 
      else 
      { 
       var culture = new CultureInfo("en-US"); 
      } 
     } 
    } 

IsFullScreen에서 작동하지만 언어를 변경하려고합니다. 대신 전체 화면. App.xaml.cs를

var IsEnglish = _settings.IsEnglish; 

추가 된 마지막 코드는 그래서 만들어 내 코드에 여기 변경해야 어떤 일했다.

답변

0

토글이 "참"인 경우에만 영어를 언어로보고 싶습니까? 당신이 최소한의 코드를 기반으로 내가 그것을 해석하고하는 것은

// 위

_settings.IsEnglish = value; 
base.RaisePropertyChanged(); 
if (value) // if true then do this... 
{ 
    var culture = new CultureInfo("fr-FR"); 
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name; 
    CultureInfo.DefaultThreadCurrentCulture = culture; 
    CultureInfo.DefaultThreadCurrentUICulture = culture; 
} 
else //not true aka FALSE 
{ 
    var culture = new CultureInfo("en-US"); 
} 

다음 프랑스어 ...을 "참"상태로, 그렇지 않으면 "거짓"이 될 것입니다 상태에서 코드를 복사했는지 보여줍니다 영어 ..

런타임에 UI를 업데이트로서 당신은 그 대답 C# change app language programmatically UWP realtime

작가는 또한 응용 프로그램의 다시 시작해야 할 것이라고 언급이 질문에 대답 같은 것을 할 필요가있다. 또한 리소스 파일을 설치하지 않는 한 CultureInfo를 변경하기 만하면됩니다. 이미 번역이있는 리소스 파일이 없으면 ... 이미 참조 된 x : Uid와 어떻게하면 세계화에 도움이 될 수 있습니까? 응용 프로그램의

+0

감사합니다. 사용자가 2 언어간에 변경할 수있는 SettingsPage.xaml에서 설정을 만들고 싶습니다. 나는 언어를 바꾸기 위해 일할 수있는 선택권을 생각할 수 없다. 그것은 내 문제이다. 어쩌면 영어로 2 개, 프랑스어로 2 개를 선택하는 드롭 다운을하는 것이 더 좋습니다. 사용자가 영어로 변경 한 영어를 선택하거나 프랑스어를 선택한 다음 프랑스어로 변경하면이 드롭 다운을 이해할 수 없습니다. 그럼 어떻게 남자가 그 일을 할 수 있는지 생각 해봐? – Alex

+0

저는 var culture = new CultureInfo ("fr-FR")에서 var culture = new CultureInfo ("en-US")로 코드를 변경하면 Resources 파일을 가지고 잘 작동합니다. – Alex

+0

위의 코드는 의심 스럽습니다 ... 코드는 'true'와 'false'의 경우 대칭이 아닙니다. 또한 속성이 동일한 값으로 설정된 경우 코드가 실제 변경 사항을 확인하지 않으므로 시간이 낭비됩니다. – Phil1970

관련 문제