Ale*_*SRG 16 c# windows-10 uwp
在我的应用程序中,每个语言字符串资源都是单独存储的,并根据语言环境的类型显示.我想在应用程序设置中更改语言.如何在语言选择后立即将其应用于用户界面?
Ala*_*SFT 31
我们可以使用ApplicationLanguages.PrimaryLanguageOverride在运行时更改语言而无需重新启动应用程序.
例如:我有两种语言支持"en"和"fr",本地化的消息将显示在textblock中.
使用Windows.Globalization添加;
将默认语言从"en"更改为"fr"
ApplicationLanguages.PrimaryLanguageOverride = "fr";
Run Code Online (Sandbox Code Playgroud)重新导航到当前页面以刷新UI.
Frame.Navigate(this.GetType());
Run Code Online (Sandbox Code Playgroud)请注意,您需要将PrimaryLanguageOverride与系统区域性进行比较,以设置下次应用启动的语言,因为PrimaryLanguageOverride设置是持久的.如果启用了页面缓存,则在运行时应用其他语言时,需要先通过Frame.CacheSize = 0;先设置清除缓存,然后再将其设置为清除缓存.
Pét*_*zsó 10
Alan Yao回答的一些补充.有一个缺失的部分:在Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride重新导航到当前页面之后设置和之前,您必须调用这两个函数:
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset();
Run Code Online (Sandbox Code Playgroud)
这样您就不需要Task.Delay()Michael Woolsey提到的解决方法.
另一个重要的最后一步:创建Store包时,应确保将"Generate app bundle"设置值设置为"Never".本文的原因:
否则,它将创建一个包.这意味着他会将您的应用程序分成不同的部分以优化下载.仅下载与设备相关的部件.例如,如果资产的分辨率不同,则只下载适合该设备的资产.对于语言来说,它只会下载与设备语言相关的资源文件.因此,如果您尝试更改语言,它仍将落在相同的基本语言上,因为其他语言未安装.
| 归档时间: |
|
| 查看次数: |
12608 次 |
| 最近记录: |