这不是关于标准本地化的问题 - 我知道如何本地化应用程序,使用资源,Uid
等等 - 这非常有效。
问题是该应用程序位于软件包中,因此当用户安装应用程序时,它仅涵盖在设备/电话设置中选择的语言。但我想在设置中提供一个选项,允许选择有关设置的语言。为此,我可以使用ApplicationLanguages.PrimaryLanguageOverride,这在通过VS部署时效果非常好,但正如我所提到的 - 商店中的版本缺少资源,因为并非所有版本都安装了。
有人知道如何绕过这种捆绑行为吗?
问题还在于我正在使用MAT(多语言应用工具包),我的翻译附带 xliff 文件。我花了很多时间找到将它们转换为 resw 文件的方法,但没有成功。有没有办法(或者我要自己编写转换器)?
答案 0 :(得分:1)
您需要使用ResourceContext:
var context = new ResourceContext(); // deliberately not using getForCurrentView()
context.Languages = new string() {"fr-fr"};
ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree("Resources");
String str = resourceMap.GetValue("string1", context).ValueAsString;
更多信息: 'How to load string resources'和 'ResourceContext class'ResourceContext class'
PS。我有应用程序存储,没有重新安装更改语言没有问题所以所有资源必须在那里
答案 1 :(得分:1)
看看这个:UWP: Resource file for languages is not deployed correctly你需要摆脱捆绑,以便我的代码从上面开始工作。或者您可以检查操作系统中是否安装了所选语言,如果没有,则无法允许用户使用以下选项进行选择:
Windows.System.UserProfile.GlobalizationPreferences.Languages