【问题标题】:Ember and internationalization: request for best practices and implementation approachEmber 和国际化:要求最佳实践和实施方法
【发布时间】:2013-08-05 08:17:34
【问题描述】:

我正在开发一个需要国际化功能(将所有静态字符串翻译成用户语言并设置日期和货币格式)的单页应用。

我使用的是 Ember.js,因此大多数静态字符串都在 html 块中(在模板或视图中)或在典型的 Javascript 消息中,例如“您确定要删除...”(部分控制器文件)。

我正在寻找有关如何从应用程序中抽象出所有这些字符串和其他特定于语言环境的位的最佳实践和经验。

我看到的主要问题是用户语言仅在登录后才确定。但是此时,完整的应用程序已经加载(英文),因此实际上不可能“重定向”到另一种语言(除非您在应用程序启动时加载所有可能语言的所有字符串 - 但这需要太多数据在开始时加载)。

欢迎任何反馈!

-- 更新--

同时我发现了 ember-i18n 库,我可以使用它来翻译字符串 (https://github.com/jamesarosen/ember-i18n)。

但我的主要问题仍然存在:如何在登录后动态加载与所选语言或用户语言相对应的 translation.js 文件?

有没有办法存储所选语言,以便在下次应用程序启动时,应用程序使用正确的语言(从而在呈现 UI 之前加载正确的翻译文件)。

希望有人能提供帮助。

马克

【问题讨论】:

标签: internationalization ember.js single-page-application


【解决方案1】:

您可以将语言设置存储在 cookie 中,但这不是 100% 的方法。或者,只要您知道该语言,就立即使用 ajax 调用加载翻译 json。

【讨论】:

  • 谢谢。我还考虑过使用 ajax 调用加载翻译文件,但问题是如何更新在应用程序加载期间已经呈现的所有模板。在我使用的模板中,例如 {{t application.statusbar.title}} 并且所有这些都应该被新的语言值替换......
  • 额外说明:我想防止每个字符串都必须绑定值,因为这会带来严重的性能问题(请参阅 stackoverflow 中的各种问题)。
  • 如果您使用正确的语言设置重新加载整个页面会怎样?
  • 重新加载整个页面主要重新加载整个应用程序,包括所有 JS、模板、视图、数据等。这是一个解决方案,但相当“激烈” - 我更喜欢只重新加载字符串和使用它们的模板。与此同时,我在stackoverflow.com/questions/18065266/… 上发布了一个工作示例
猜你喜欢
  • 2010-12-09
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 2012-02-26
  • 1970-01-01
相关资源
最近更新 更多