我希望我的网站上的翻译在找不到翻译时回退为英语。该怎么做?
我知道2种方法,但是尚不清楚哪种方法应该与Rails 5一起使用,哪些已经不推荐使用:
## config/appplication.rb
# 1
config.i18n.fallbacks =[:de, :fr, :en]
# 2
config.i18n.fallbacks = true
文档中也没有任何内容。
答案 0 :(得分:3)
config.i18n.default_locale = :de
config.i18n.available_locales = [:de, :en, :fr]
config.i18n.fallbacks = [:en, :de]
这意味着。如果有人使用法语,并且缺少翻译,则后备语言是英语,而英语翻译也为空白时,则i18n返回德语。
答案 1 :(得分:1)
如果您不确定,我总是建议您查看源代码。
def self.init_fallbacks(fallbacks)
include_fallbacks_module
args = \
case fallbacks
when ActiveSupport::OrderedOptions
[*(fallbacks[:defaults] || []) << fallbacks[:map]].compact
when Hash, Array
Array.wrap(fallbacks)
else # TrueClass
[I18n.default_locale]
end
I18n.fallbacks = I18n::Locale::Fallbacks.new(*args)
end
考虑到这一点,我们现在知道
# sets the fallback to the default local
config.i18n.fallbacks = true
# sets several fallbacks
config.i18n.fallbacks = [:en, :de]
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/i18n_railtie.rb#L92-L106 https://github.com/ruby-i18n/i18n/blob/master/lib/i18n/locale/fallbacks.rb#L27-L51