search
LoginSignup
19

More than 3 years have passed since last update.

posted at

updated at

HEADS UP! i18n 1.1 changed fallbacks to exclude default locale. But that may break your application.

Ruby on Rails での新規プロジェクト立ち上げ時に

$ bundle install --path vendor/bundle --jobs=4

を実行すると、次のような注意がでたので調査。

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

Ruby の i18n gem とは

Rubyの多言語化API
(Internationalizationを略して、i18n。)

アプリケーションの文言を英語以外の 別の1つの言語に翻訳 する機能や 多言語サポート 機能を簡単かつ拡張可能な方式で導入するためのフレームワークを提供します。

config.i18n.fallbacks とは?

RAILSGUIDS / Railアプリを設定する/3 Railsコンポーネントを構成する/3.5 i18nを設定する
によると、

config.i18n.fallbacksは訳文がない場合のfallback動作を設定します。

として、具体的な3つの設定パターンが紹介されています。

1. defaultのlocaleをfallback先として使う場合、trueを設定。

/config/environments/production.rb
config.i18n.fallbacks = true

2. localeの配列をfallback先に使う場合。

/config/environments/production.rb
config.i18n.fallbacks = [:tr, :en]

3. localeごとに個別のfallbackを設定する場合。 例:azと:deに:trを、:daに:enをそれぞれfallback先として指定する場合は、次のようにします。

/config/environments/production.rb
config.i18n.fallbacks = { az: :tr, da: [:de, :en] }
#or
config.i18n.fallbacks.map = { az: :tr, da: [:de, :en] }

結局どうすれば良いか

警告文の第2段落によると、

I18n(>= 1.1.0) かつ Rails (< 5.2.2) において fallback 機能を有効にしたい場合、

または、

警告文の第3段落で紹介されているgithubのページによると、

I18n 1.1.x 系において fallback 機能を有効にしたい場合、

/config/environments/production.rb
config.i18n.fallbacks = [I18n.default_locale]

fallbackとは

フォールバックとは、システムに障害が発生したときに性能を落としたり機能を制限したりして限定的ながら稼動を続行すること。あるいは、利用したい機能が条件が悪く使えない場合に、代替となる機能に切り替えること。また、そのような機能や構成。

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
What you can do with signing up
19