我正在使用Rails 3和Globalize3 0.2.0.beta4
理想情况下我需要:fr回退到:en,反之亦然。
有些情况下只有法语翻译可用,即使语言环境是:en。
我也需要显示它。我试过
config.i18n.fallbacks = { :fr => :en, :en => :fr }
但不出所料,它会导致堆栈级错误太多。
答案 0 :(得分:5)
我正在改变我的回答。
要启用回退,请将以下内容添加到environment.rb文件中:
#support for locale fallbacks
require "i18n/backend/fallbacks"
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
然后,您可以像往常一样启用循环回退,例如:
config.i18n.fallbacks = {'en' => 'fr', 'fr' => 'en'}
在这种情况下,如果en语言环境中缺少某些内容,它将检查fr语言环境,然后反过来。我没有遇到任何错误。
来源:http://batsov.com/articles/2012/09/12/setting-up-fallback-locale-s-in-rails-3/
答案 1 :(得分:1)
如果您传递一组区域设置,则会将其设置为所有区域设置的默认回退。
config.i18n.fallbacks = [:en, :fr]
不幸的是,我还没有找到一种方法来设置两个区域设置以相互回落。
答案 2 :(得分:1)
最后,我修补了Globalize3。不太好,因为我必须在网站需要新的语言环境时更新补丁,但是,嘿,它有效。
module Globalize
class << self
def fallbacks(locale = self.locale)
case locale
when :en then [:en, :fr]
when :fr then [:fr, :en]
end
end
end
end
答案 3 :(得分:0)
这似乎已改为:
Globalize.fallbacks = {:en => [:en, :fr], :fr => [:fr, :en]}
来自官方文档: https://github.com/globalize/globalize#fallback-locales-to-each-other
答案 4 :(得分:0)
在最新的i18n gem(0.7.0)中,我发现有必要定义这样的回退语言环境(在config/application.rb
中):
# Custom I18n fallbacks
config.after_initialize do
I18n.fallbacks = I18n::Locale::Fallbacks.new(at: :"de-DE", ch: :"de-DE", gb: :"en-US")
end
您还需要在所有config.i18n.fallbacks = true
个文件中设置config/environments/*.rb
。