首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MvvmCross本地化:运行时切换

MvvmCross本地化:运行时切换
EN

Stack Overflow用户
提问于 2012-11-19 22:17:28
回答 1查看 1.9K关注 0票数 5

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

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

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

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-19 23:41:37

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

是,在您的MvxTextProviderBuilder.cs上调用builder.LoadResources(whichLanguage)

举例:当一个按钮被点击时能够切换

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

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

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

这是一种更直接的i18n方式。这通常是可以的,因为MvvmCross主要针对手机-而手机通常是单用户设备,不会经常切换语言。

  • 例如,您可以使用某些变量(例如System.Globalization.CultureInfo.CurrentUICulture)来确定要显示的最佳语言。
  • 或您在加载时检测用户是否已选择语言-如果他们已经选择,则显示HomeViewModel -如果他们尚未选择,则显示LanguagePickerViewModel -这就是我们在StarWarsKinect中所做的- StartNavigationObject是这种逻辑的完美位置!

<LanguagePickerViewModel>F217

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

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

我绝对愿意在这方面提供一个改进的插件--也许是一个演示!

如果您正在考虑i18n,那么另一个要考虑的实现是本土化的-- Rdio的团队为单声道和MS平台提供了一个非常好的产品-- https://github.com/rdio/vernacular

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13455635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档