как использовать рельсы i18n функции возврата - PullRequest
28 голосов
/ 19 ноября 2010

У меня проблема с i18n

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. Я использую Rails 3

Ответы [ 5 ]

96 голосов
/ 30 августа 2011

Я устанавливаю в config / application.rb обычно

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

Таким образом, вы можете замедлить порядок резервирования.

Но обратите внимание на некоторые среды / *. Rb конфигурация перезаписывается.

29 голосов
/ 22 ноября 2010

Если задана опция : по умолчанию , ее значение будет возвращено, если перевод отсутствует:

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

Подробнее здесь

18 голосов
/ 26 ноября 2010

Включили ли вы резервные копии для своего бэкэнда?Предполагая, что это просто (на основе yml в примере):

поместите это в инициализатор:

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

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

16 голосов
/ 01 октября 2011

В рельсах 3+ это устанавливается в файлах config / environment:

  # 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
9 голосов
/ 12 октября 2014

Я считаю, что лучший способ обработать пропущенную строку - это отобразить локаль по умолчанию, а не сообщение об ошибке.

Добавьте эту строку в application.rb для возврата к английской локали.

config.i18n.fallbacks = [:en]

Если вы хотите указать откат для конкретной локали, вы можете использовать следующее:

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

Также обратите внимание, что вы можете включать и отключать откаты в зависимости от вашей среды.Таким образом, в то время как в процессе разработки может иметь смысл отображать ошибку, вы можете вместо этого включить запасные варианты в вашем environments/production.rb с помощью следующего:

config.i18n.fallbacks = true
...