Как настроить локали для Rails 4

у меня есть довольно специфическая установка относительно интернационализации рельсов. Я использую rails-i18n gem, но это не имеет значения. Он отлично работал с Rails 3. Вот мой конфиг от config/application.rb

config.i18n.default_locale = :en
config.i18n.locale = :hr

Позволь мне объяснить:

  • locale установлен на :hr (хорватский), потому что я в основном делаю локализованные приложения на хорватском языке.
  • локаль по умолчанию установлена ​​на :en, потому что я часто использую такие жемчужины, как rails-admin, в которые включены английские переводы. Он хорошо работает в производстве, где отсутствующие (хорватские) переводы возвращаются к английскому языку. Ничего страшного, все админы понимают английский :)

И вопрос: как заставить его работать с Rails 4?

Кажется, что Rails 4 игнорирует config.i18n.locale и всегда использует локаль :en.

До сих пор я использовал before_action для установки I18n.locale = :hr, но это не работает в консоли Rails или промежуточном программном обеспечении Rack...

Заранее спасибо,

Даниэль


person danijel    schedule 20.02.2014    source источник


Ответы (2)


Я нашел простое решение, и я публикую его здесь...

Вставить в config/application.rb

  config.i18n.default_locale = :hr
  config.i18n.available_locales = [:hr, :en]
  config.i18n.fallbacks = [:en]

Удалите или прокомментируйте следующую строку из config/environments/production.rb

  # config.i18n.fallbacks = true

или изменить его на:

  config.i18n.fallbacks = [:en]
person danijel    schedule 06.05.2015

Вы можете добавить код ниже:

class ApplicationController
    ...

    before_filter :set_locale

    ...

    private

    def set_locale
        I18n.locale = :hr
    end 

end 
person Maksim Gladkov    schedule 20.02.2014
comment
Спасибо, я уже делаю это. Но это не работает в консоли Rails или промежуточном программном обеспечении Rack... - person danijel; 20.02.2014
comment
А если переместить I18n.locale = :hr в инициализатор? - person Maksim Gladkov; 20.02.2014