LoginSignup
27
27

More than 5 years have passed since last update.

Rails で Locale をちゃんと使うぞって時に仕込む initializer

Last updated at Posted at 2016-01-23

大抵の場合 locales をまともに保守しなくなるのは、開発時に『locale 再読み込みの為に Rails 再起動するのめんどくさいし view にベタ書きでもいいよね』ってなるか、『ja.yml 長すぎて保守したくない』とか言う時なので、.ymlapp/locales 以下に置く、と決めて

config/application.rb
  config.i18n.load_path += Dir[Rails.root.join('app', 'locales', '**', '*.{rb,yml}').to_s]
  config.i18n.default_locale = :ja
  config.i18n.fallbacks = [:ja, :en, :default]

こういうコードと

config/initializers/locale_reloader.rb
if Rails.env.development?
  class LocaleReloader
    def initialize(app)
      @app = app
    end

    def call(env)
      I18n.load_path += Dir[Rails.root.join('app', 'locales', '**', '*.{rb,yml}').to_s]
      I18n.load_path.uniq!
      I18n.backend.reload!

      @app.call(env)
    end
  end

  Rails.application.config.middleware.use(LocaleReloader)
end

こういうコードを仕込むことにしてる。

リロードがちょっと遅くなるけど、まぁ開発中目的の解決法だしおっけーおっけー。

27
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
27