模板10切换语言设置

本文关键字:语言 设置 模板 | 更新日期: 2023-09-27 18:04:56

我在settingpage中有以下代码。xaml

<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;

那么我应该在代码中做些什么来让它工作呢?

模板10切换语言设置

只是为了澄清你想看到英语作为语言只有当开关为"true"?根据你展示的代码至少我是这么解释的它显示

//从上面复制代码

_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");
}

那么法语将处于"True"状态…否则"假"状态英语…

至于在运行时更新ui,你需要做一些类似于这个问题的答案c#以编程方式更改应用程序语言UWP实时

作者在回答中也指出,重新启动应用程序是必要的。我还要补充一点,除非你在应用程序中设置了资源文件,否则简单地更改CultureInfo将不会做任何事情,除非你有翻译的资源文件。已经引用了x:Uid以及它如何帮助您实现应用程序的全球化。