我得到一个I18n::InvalidLocale: "zh-CN" is not a valid locale
异常,我想避免。
要解决,我听说过两个hack:
# meh
config.i18n.enforce_available_locales = false
# Ever heard of convention over configuration?
config.i18n.available_locales = [:fr, :en, "zh-CN", "zh-TW"]
它们对我来说似乎都不干净,因为在不接触这些配置变量的情况下,我已经有了一堆自动预填充的可用区域设置:
我当前的available_locales是:
> I18n.available_locales
=> [:en, :fr] (misses zh-CN and zh-TW)
在我的config/locales
文件夹中,我有:
en.yml
fr.yml
zh-CH.yml (newly added, and unavailable)
zh-TW.yml (newly added, and unavailable)
在我的config/application.rb
中,我有:
config.i18n.default_locale = :fr
我不明白fr
是如何自动进入I18n.available_locales
的,而zh-CN
和zh-TW
却没有。
然而,让fr
输入它 * 而不 * 我设置config.i18n.available_locales
告诉我,触摸这个配置变量 * 并不是一个干净的方法 *。
你有没有在正确的级别上避免I18n::InvalidLocale
异常的提示?
2条答案
按热度按时间b1uwtaje1#
i18 n库对locale键采取了务实的方法,包括只使用locale语言部分,如:en,:pl,而不使用region部分,如:en-US或:en-GB。如果您想要这种类型的定义,请检查一些gem,如globalize。
还请检查以下链接:
并删除
config.i18n.default_locale = :fr
因为使用默认的语言环境,它将经历你提到的相同的错误,所以在删除默认的语言环境之后,用途:
config.i18n.available_locales = [:fr, :en, "zh-CN", "zh-TW"]
4dc9hkyq2#
不要将区域设置设置为无效值。
进行测试以确保区域设置存在,然后再进行设置。