是否有可能使轨道i18n locales相互回落?

mar*_*arc 8 globalization ruby-on-rails internationalization globalize2 ruby-on-rails-3

我正在使用Rails 3和Globalize3 0.2.0.beta4

理想情况下我需要:fr回退到:en,反之亦然.

有些情况下只有法语翻译可用,我需要显示它,即使语言环境是:en.

我试过了

config.i18n.fallbacks = { :fr => :en, :en => :fr }
Run Code Online (Sandbox Code Playgroud)

但有点不出所料,它导致堆栈级别太深的错误.

jay*_*jay 5

我正在改变我的答案.

要启用回退,请将以下内容添加到environment.rb文件中:

 #support for locale fallbacks
 require "i18n/backend/fallbacks"
 I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
Run Code Online (Sandbox Code Playgroud)

然后,您可以像尝试一样启用循环回退,例如:

   config.i18n.fallbacks = {'en' => 'fr', 'fr' => 'en'}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果en语言环境中缺少某些内容,它将检查fr语言环境,然后相反.我没有遇到任何错误.

资料来源:http://batsov.com/articles/2012/09/12/setting-up-fallback-locale-s-in-rails-3/


Sim*_*tsa 1

如果您传递一组区域设置,它们将被设置为所有区域设置的默认后备。

config.i18n.fallbacks = [:en, :fr]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我还没有找到一种方法来设置两个区域设置以相互回退。