63
46

More than 5 years have passed since last update.

config.i18n.fallbacksのメッセージについて

Last updated at Posted at 2019-02-10

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

ということで、あとで実機確認をしなくては。これまでは全て机上です。

63
46
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
63
46