通用应用程序中的多语言支持

时间:2015-06-11 05:40:39

标签: c# windows localization windows-phone win-universal-app

这不是关于标准本地化的问题 - 我知道如何本地化应用程序,使用资源,Uid等等 - 这非常有效。

问题是该应用程序位于软件包中,因此当用户安装应用程序时,它仅涵盖在设备/电话设置中选择的语言。但我想在设置中提供一个选项,允许选择有关设置的语言。为此,我可以使用ApplicationLanguages.PrimaryLanguageOverride,这在通过VS部署时效果非常好,但正如我所提到的 - 商店中的版本缺少资源,因为并非所有版本都安装了。

有人知道如何绕过这种捆绑行为吗?

问题还在于我正在使用MAT(多语言应用工具包),我的翻译附带 xliff 文件。我花了很多时间找到将它们转换为 resw 文件的方法,但没有成功。有没有办法(或者我要自己编写转换器)?

2 个答案:

答案 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