不清楚如何在Rails 5中使用“ config.i18n.fallbacks”

时间:2018-07-26 13:44:57

标签: ruby-on-rails ruby ruby-on-rails-5

我希望我的网站上的翻译在找不到翻译时回退为英语。该怎么做?

我知道2种方法,但是尚不清楚哪种方法应该与Rails 5一起使用,哪些已经不推荐使用:

## config/appplication.rb

# 1
config.i18n.fallbacks =[:de, :fr, :en]

# 2
config.i18n.fallbacks = true

文档中也没有任何内容。

2 个答案:

答案 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