【发布时间】:2019-12-18 22:10:07
【问题描述】:
我有一个带有以下本地化资源文件的 UWP 应用
zh
es-ES
法国-加拿大
fr-LU
我已在 Windows 10 的设置中按优先顺序设置首选语言以用于测试目的
意大利语
法语(法国)
英语(英国)
因此我的操作系统目前是意大利语。
应用显示TextBlock 和x:Uid="Test",其中Test.Text
在每个资源文件中设置为键,值的形式为
"This is a test coming from es-ES"为资源文件es-ES等
运行应用表明已选择 fr-LU。
通过阅读文档,我了解到 CurrentUICulture 为此设置为 fr-FR
app,可能是因为找不到意大利资源文件,所以选择了第二个,fr-FR,
但随后fr-FR 未找到,因此选择了一个兄弟姐妹,以
fr-LU。系统似乎选择了这个而不是fr-CA,因为它是ManifestLanguages 列表中的最后一个。我什至添加了一个不存在的文化资源文件fr-ZZ,它被选中了!这很奇怪,但这不是我的问题,因为我只打算放有效的文化。
问题:如何在代码中确定最终选择了哪个资源或文化标签 (fr-LU)?
我可以通过将Test.Text 设置为完全等于文化来以愚蠢的方式回答这个问题,
使用资源加载器并读取值,然后将其转换为文化或覆盖主要语言。但这是逆向工程,仅出于该目的将强烈依赖于我的资源文件中的字符串。
我正在尝试解决这个问题,因为我提出了一个Listview
ManifestLanguages 允许用户更改语言,并希望该语言
(这里是fr-LU)成为ListView 的SelectedItem,因为这是系统决定在启动时显示的内容。
谢谢
【问题讨论】:
标签: uwp localization cultureinfo culture