33

Rails 3 から「翻訳がありません」というエラー メッセージが表示されます。

activerecord:
  notices:
    messages:
      success: 
        create: "Something was created"
    models:
      user:
        success:
          create: "Thanks for registration"

I18n.t("activerecord.notices.models.user.success.create")
# => "Thanks for registration"


I18n.t("activerecord.notices.models.book.success.create") 
# => "translation missing: de, activerecord, notices, models, book, success, create"

本モデルがフォールバック メッセージを受け取らない理由がわかりません。を設定しconfig.i18n.fallbacks = trueました。

4

6 に答える 6

103

config/application.rb普通に入れました

    config.i18n.fallbacks = [:de, :fr, :en]

したがって、フォールバックの順序を宣言できます。

ただし、一部の環境では注意してください/*.rb 構成が上書きされます。

于 2011-08-30T15:33:33.143 に答える
41

:defaultオプションが指定されている場合、翻訳が欠落している場合はその値が返されます。

I18n.t :missing, :default => 'Not here'
# => 'Not here'

詳細はこちら

于 2010-11-22T09:56:24.023 に答える
18

[回答はRails2用です]

バックエンドのフォールバックを有効にしましたか?シンプルだとすると(例ではymlに基づく):

これをイニシャライザーに入れます。

require "i18n/backend/fallbacks" 
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

https://github.com/svenfuchs/i18n/wiki/Fallbacks

于 2010-11-26T05:53:08.880 に答える
18

Rails 3 以降では、これは config/environments ファイルで設定されます。

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation can not be found)
  config.i18n.fallbacks = true
于 2011-10-01T17:38:12.330 に答える
13

不足している文字列を処理する最善の方法は、エラー メッセージではなく、既定のロケールを表示することだと思います。

この行を application.rb に追加して、英語ロケールにフォールバックします。

config.i18n.fallbacks = [:en]

ロケール固有のフォールバックを指定する場合は、次を使用できます。

config.i18n.fallbacks = {:de => [:de,:en], :en => [:en,:de]}

また、環境に基づいてフォールバックを有効または無効にできることに注意してください。したがって、開発中にエラーを表示することは理にかなっているかもしれませんが、代わりに次のようにenvironments/production.rbしてフォールバックを有効にすることができます:

config.i18n.fallbacks = true
于 2014-10-12T12:12:06.013 に答える