rails 5.2.2をインストールしたら標準出力の最後に以下のメッセージが表示された。
HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.
Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.
For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0
最近i18nがバージョンアップしたから表示されるようになったのかなと思いきや、現在のバージョンは1.5.3だった。今までずっとメッセージが表示されていたのかな・・・ずっと無視してた・・・。まあ、日本オンリーの私には関係なさそうだし。。。
訳してみる。
HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.
「注意してね。i18n 1.1でデフォルトロケールを除外するようにフォールバックを変更したよ。」
「だけどその変更が君のアプリをエラーで落とすかもしれないよ。」
うーん。意味がわからない。「除外する」とか、よくわからない。「But」も逆接で訳すと何かおかしい感じ。
とにかく、危ない問題ということだけはわかった。
Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.
「君のRailsアプリの'config.i18n.fallbacks = true'という設定をチェックしてね。」
「もしI18n (>= 1.1.0) かつ Rails (< 5.2.2) を使っているなら、'config.i18n.fallbacks = [I18n.default_locale]'という設定に変更してね。」
「もし使っていないのなら、君のアプリのフォールバックはI18n 1.1.x(1.1.0以上という意味かな)によってエラーになるよ。」
うーむ。このように訳すと、今回のようにI18n 1.5.3 (>= 1.1.0) かつ Rails 5.2.2 (>= 5.2.2)を使った場合は設定変更するという手段は取れず、エラーを回避できないってことなのかな。それとも5.2.2以上は問題ないのかな。
今まで日本語サイトしか作ってこなかったし、今後も作る予定もないから、個人的にはどうでもいい問題ではある。。。
For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0
「詳細はこのURLを見てね」
実際に見て見ると、タイトルは以下となっていた。
v1.1.0
BREAKING CHANGE: Fallbacks
v1.1.0 のリリースノートなのかな。「フォールバックについて、互換性のない変更がある」ということかな。書いてあることはgemインストール時に表示されたものとほぼ同じっぽい。
結局、意味がわからなかったので、RailsGuide 5.2.2 を見てみる。すると、'config.i18n.fallbacks'の書き方として3つあるようだ。
# You can set the option to true for using default locale as fallback, like so:
config.i18n.fallbacks = true
# Or you can set an array of locales as fallback, like so:
config.i18n.fallbacks = [:tr, :en]
# Or you can set different fallbacks for locales individually. For example, if you want to use :tr for :az and :de, :en for :da as fallbacks, you can do it, like so:
config.i18n.fallbacks = { az: :tr, da: [:de, :en] }
# or
config.i18n.fallbacks.map = { az: :tr, da: [:de, :en] }
なるほど。I18n (>= 1.1.0)からは1つ目の書き方ができないってことかな。だから2つ目の書き方をしろと。あーそういうことか。以下のメッセージの意味がわかった。。。(再掲)
HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
「注意してね。i18n 1.1で、デフォルトロケールを設定するという設定は除外されるようにフォールバックを変更したよ。」
でも、結論として、Rails 5.2.2からは問題なく使えるんだよね? Rails 5.2.2で作成した場合でも、デフォルトで以下のように設定されているから。
72 # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
73 # the I18n.default_locale when a translation cannot be found).
74 config.i18n.fallbacks = true
ということで、あとで実機確認をしなくては。これまでは全て机上です。