我正在使用BackboneJS和RoR 3.2(从3.1升级而来)后端构建单页ajax应用程序。我使用一个客户端I18n JavaScript翻译库,该库将其数据保存在JSON对象中。我使用yml文件和默认的i18n gem在后端管理翻译。 每种语言有一个翻译资源文件,例如英语:
//FILE: <project_root>/app/assets/javascripts/translations/en.js.erb:
I18n || (I18n = {});
I18n.translations || (I18n.translations= {});
I18n.translations["en"] = <%= I18n.with_locale(:en) { I18n.t(".") }.to_json %>;
我的翻译文件位于 config/locales/ 及其子目录下。我将加载路径配置如下:
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
目前为止,一切顺利,然而,在“dev mode”下重新加载页面后,yaml文件中添加的新翻译无法自动在客户端上使用。如果我重新启动服务器并更改相应的翻译资源(例如添加空行),则可以使用新翻译。这个例程相当繁琐...
- 如何明确地告诉资产管道/ sprockets每个请求重新处理我的翻译资产?或者更好的是,是否有(简单的)解决方案来监视yaml文件并告诉sprockets重新处理翻译资产?
- 当新的翻译添加到新的或现有的yaml文件中时,Rails似乎不会自动更新i18n翻译哈希表。我不知道为什么,但通常应该起作用。任何线索?