5

有没有办法在运行时将当前语言更改为另一种语言?

例如:能够在点击按钮或启动应用程序时切换,获取用户语言并切换。

如何告诉插件在启动时检查用户语言?

在此先感谢您的帮助。

4

1 回答 1

2

有没有办法在运行时将当前语言更改为另一种语言?

是的,调用builder.LoadResources(whichLanguage)你的MvxTextProviderBuilder.cs

例如:能够在点击按钮时进行切换

UI 框架并没有真正设置为执行实时切换。当您在语言之间切换时,新的 JSON 资源文件将全部加载,但不会更新现有显示的文本。这有点像大多数移动操作系统 - 如果您想切换语言,您通常需要重新启动!

如果您想添加动态切换,那么您必须找到一种方法来告诉 UI 完全刷新所有文本 - 我怀疑这并不难做到,但它可能需要在每个页面/视图上进行一些手动编码已经创建并显示:/

或者在启动应用程序时,获取用户语言并切换。

这是做 i18n 的一种更直接的方法。这通常没问题,因为 MvvmCross 主要针对手机 - 手机通常是不经常切换语言的单用户设备。

  • 例如,您可以使用一些变量(例如System.Globalization.CultureInfo.CurrentUICulture)来确定要显示的最佳语言。

  • 或者你在加载时检测用户是否已经选择了一种语言——如果他们有,那么显示HomeViewModel——如果他们还没有那么显示LanguagePickerViewModel——这就是我们在 StarWarsKinect 中所做的——这是StartNavigationObject这种逻辑的完美场所!

SWK 语言选择

如何告诉插件在启动时检查用户语言?

目前,您必须将此逻辑编码为应用启动的一部分。

我肯定愿意为此提供改进的插件 - 也许有一个演示!


如果您正在查看 i18n,那么要考虑的另一种实现是 Vernacular - Rdio 的团队为 Mono 和 MS 平台提供了非常好的产品 - https://github.com/rdio/vernacular

于 2012-11-19T15:41:37.253 回答