首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板10切换语言设置

模板10切换语言设置
EN

Stack Overflow用户
提问于 2016-09-01 09:43:57
回答 1查看 174关注 0票数 0

我在SettingsPage.xaml中有以下代码

代码语言:javascript
复制
<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中,下面的代码只是为了测试

代码语言:javascript
复制
public bool IsEnglish
    {
        get { return _helper.Read<bool>(nameof(IsEnglish), true); }
        set
        {
            _helper.Write(nameof(IsEnglish), value);
            Views.Shell.HamburgerMenu.IsFullScreen = value;
        }
    }

并将其添加到SettingsPageViewModel.cs中

代码语言:javascript
复制
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中

代码语言:javascript
复制
var IsEnglish = _settings.IsEnglish;

所以我应该在我的代码中做些改变才能让它工作。

EN

回答 1

Stack Overflow用户

发布于 2016-09-02 01:10:17

只是为了澄清一下,您是否希望仅在切换为"true“时才将英语视为语言?根据您展示的代码,至少我正在解释的代码表明

//从上面复制代码

代码语言:javascript
复制
_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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39261497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档