大抵の場合 locales をまともに保守しなくなるのは、開発時に『locale 再読み込みの為に Rails 再起動するのめんどくさいし view にベタ書きでもいいよね』ってなるか、『ja.yml 長すぎて保守したくない』とか言う時なので、.yml
は app/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
こういうコードを仕込むことにしてる。
リロードがちょっと遅くなるけど、まぁ開発中目的の解決法だしおっけーおっけー。