【问题标题】:Multiple language support in Universal App通用应用程序中的多语言支持
【发布时间】:2015-06-11 05:40:39
【问题描述】:

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

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

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

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

【问题讨论】:

  • Package.appxmanifest 中将 Generate app bundle 设置为 Never 怎么样?或者你需要捆绑一些东西而不是其他东西?我不确定这是否可以做到(但我没有研究太多)。
  • @yasen 发布捆绑包后,必须使用捆绑包(AFAIK)完成下一次更新。所以它不会工作:(

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


【解决方案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。我在商店中有应用程序,无需重新安装即可更改语言,因此所有资源都必须在那里

【讨论】:

  • 抱歉回复晚了 - 我刚刚放假了。一旦我测试它,我会给你一个标志。谢谢
  • 它并没有真正回答这个问题。我也有同样的问题。我在应用程序中有 9 种语言。在开发时,所有 9 种语言都可用,但是当从 Windows 应用商店安装应用程序时,它只有一部分语言可以安装到系统中。
【解决方案2】:

看看这个:UWP: Resource file for languages is not deployed correctly 你需要摆脱 bundle 才能让我上面的代码工作。或者您可以检查所选语言是否安装在操作系统中,如果没有,您不能允许用户选择它:

Windows.System.UserProfile.GlobalizationPreferences.Languages

【讨论】:

  • 据我记得,当应用程序已经作为捆绑发布时,摆脱捆绑存在问题 - 然后只能使用捆绑进行更新。这种方式有什么变化吗?
  • 是的......不幸的是你的权利 - 我最终告诉用户在操作系统中安装其他语言
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多