ruby-on-rails - 运行 "bin/rake assets:precompile"时未设置 I18n 加载路径!

标签 ruby-on-rails ruby ruby-on-rails-3 asset-pipeline i18n-gem

我正在使用 I18n-js,我的客户端 I18n.t 调用在生产环境中运行时都会返回翻译缺失消息。

开发测试一切正常。

这个问题的根源似乎在于 Assets 管道。

I18n.load_path 不包含我的任何翻译(当运行 bin/rake assets:precompile 时)它只包含以下路径:

["/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activesupport-3.2.3/lib/active_support/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activemodel-3.2.3/lib/active_model/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activerecord-3.2.3/lib/active_record/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/actionpack-3.2.3/lib/action_view/locale/en.yml"]

这些看起来像是来自 gems 的默认 activesupport、activemodel、activerecord 和 actionpack 翻译...

然而,在开发和生产中运行 bin/rails console 时,我的翻译路径确实按预期设置:

1.9.3p125 :002 > I18n.load_path
=> ["/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activesupport-3.2.3/lib/active_support/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activemodel-3.2.3/lib/active_model/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activerecord-3.2.3/lib/active_record/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/actionpack-3.2.3/lib/action_view/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/carrierwave-0.6.1/lib/carrierwave/validations/../locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/devise-2.0.4/config/locales/en.yml",
"/media/sf_code/Project/config/locales/active_record.en.yml",
"/media/sf_code/Project/config/locales/project.en.yml"]

事实上,I18n 文档指出:“默认语言环境是 :en,所有来自 config/locales/*.rb,yml 的翻译都是自动加载的。”

我也试过在 application.rb 中指定

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]

但还是不开心。

任何人都知道什么会导致仅在运行 Assets 时不设置 I18n.load_path:预编译?

感谢任何想法

最佳答案

这实际上是由于您可能已在 config/application.rb 中设置的 Assets 配置标志。

config.assets.initialize_on_precompile = false

rake assets:precompile rake 任务会检查此标志,如果发现为 false,则仅加载 Assets 组而不完全初始化应用程序。反过来,应用程序语言环境不会添加到 I18n.load_path。

关于ruby-on-rails - 运行 "bin/rake assets:precompile"时未设置 I18n 加载路径!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10102669/

相关文章:

ruby-on-rails - 链接数据方法设置为删除但错误引用 get 没有路由匹配 [GET]

ruby-on-rails - 截断 link_to Rails 上的助手

ruby-on-rails - 有什么可以解释 Rails 的 API 文档吗?

ruby-on-rails - Mechanize 错误 "too many bad responses"

ruby-on-rails - 带空格的mongoid数组

javascript - Rails 4 ajax 处理为 html

ruby - 如何更改 Textmate 使用的 Ruby 版本?

ruby - Ruby 中来自 Highrise API 的自定义字段/主题字段

ruby-on-rails - rails 在 View 中使用路由/命名助手

jquery - Rails3 应用程序使用 jquery 但未将其包含在 Gemfile 中,应该吗?