最近 Rails 4.1.0 release,在升級的時候發生了一個錯誤:
1
|
|
application.rb 的 code 佷簡單:
1 2 3 4 5 |
|
以前不會出錯,為什麼現在會呢?於是 Google 了一下,發現 Rails 4.1.0 會將 I18n.config.enforce_available_locales
預設為 true
在 enforce_available_locales
為 true
的情況下,只要將 locale
設為不包含在 available_locales
內的值,就會報錯。
解法佷簡單就直接在 application.rb
裡面把 enforce_available_locales 改為 false:
1 2 3 4 5 6 7 |
|
如果想用 enforce_available_locales 但又不希望報錯呢?試著加入 available_locales 看看:
1 2 3 4 5 6 7 |
|
依然還是會出現一樣的錯誤 :zh is not a valid locale
,奇怪,我設定的是 :"zh-TW"
,怎麼會報 :zh
不允許呢?
找了很久,發現在 production.rb
裡面有一行 i18n fallback:
1 2 3 |
|
把 i18n fallbacks 設為 true
,在找不到 :"zh-TW"
的 locale 的時候,會接著尋找 :zh
,:zh
找不到才會接著找 :en
。
於是解決方法就很清楚了,只要連 :zh
一起 available 就可以了:
1 2 3 4 5 6 7 |
|