私はI18n-jsを使用していますが、クライアント側のI18n.t呼び出しはすべて、本番環境で実行しているときに変換がないというメッセージを返します。
開発とテストはすべて問題ありません。
この問題の根本は、アセットパイプラインにあるようです。
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"]
これらは、gemからのデフォルトのactivesupport、activemodel、activerecord、およびactionpackの翻訳のように見えます...
ただし、開発および本番環境でbin / railsコンソールを実行すると、翻訳パスが期待どおりに設定されます。
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:precompileを実行しているときにのみI18n.load_pathが設定されない原因となる可能性があることを知っていますか?
アイデアをありがとう