Ruby on Rails のセキュリティアップデートがあって、 4.0.2 にあげたら i18n gem も 0.6.5 から 0.6.9 にあがって locale
の設定変更をしているところで [deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
という警告が出るようになりました。
警告の出るタイミング
deprecated - Rails 4.0.2 I18n validation deprecation warning - Stack Overflow 経由で Add I18n.locale_available? and enforce available locales のコミットから入った変更ということで、 コミットログをみてみると、
I18n.config.default_locale=
I18n.config.locale=
I18n.translate
I18n.localize
I18n.transliterate
を呼んだときに影響するようです。 つまり rails new
で作っただけだと config/application.rb
の config.i18n.default_locale = :de
がコメントアウトされていて、 警告は出ません。
日本語のみで使う場合
日本語のみで使うのなら、 将来のデフォルトの I18n.enforce_available_locales = true
にしてしまってから、 普通に日本語をデフォルトにする config.i18n.default_locale = :ja
を呼べば良いと思います。
# config/application.rb
I18n.enforce_available_locales = true
config.i18n.default_locale = :ja
ただし、先にちゃんと日本語の locale ファイルを作っておかないと I18n::InvalidLocale
という例外が発生して、 rake
などで :ja is not a valid locale
と言われてしまいます。
今まで通りの挙動にする場合
I18n.enforce_available_locales = false
にすれば今まで通りの挙動になり、 存在しない locale
を設定しても例外は発生しません。
今のデフォルト
今は I18n.enforce_available_locales = nil
がデフォルトになっていて、 nil
だと警告がでる、 ということのようです。