在这两个应用中,config.i18n.fallbacks = true
中都有application.rb
:
Rails.version # "4.2.4"
Globalize.fallbacks # [:de]
I18n.fallbacks # { :de => [:de] }
Rails.application.config.i18n.fallbacks # nil
和
Rails.version # "5.0.0.1"
Globalize # NameError: uninitialized constant Globalize
I18n.fallbacks # {}
Rails.application.config.i18n.fallbacks # nil
与v5.0.0.1不同,在v4.2.4中,Gemfile中有gem "globalize"
。
它已被添加到以下提交消息:
Upgrade to Rails 2.3.8.
In the process, globalize2 is now updated and runs from a gem, not a plug in.
不幸的是rails configuration doc for v2.3.8没有对此说一句话。
在v5.0.0.1中,这个gem永远不存在(用git log -G'globalize' -- Gemfile
检查)。
在v4.2.4中,使用以下上下文明确添加了设置:
+ # https://github.com/svenfuchs/globalize3
+ config.i18n.fallbacks = true
只要你安装了globalize gem,Which就有意义了。
在v5.0.0.1中,rails new
在rails 3.1.0.rc1上添加了设置,因此除非将gem重新实现为rails,否则从一开始就设置为noop。我错过了什么吗?
在这两种情况下,如果我从application.rb
删除设置,I18n会抛出此信息:
# I18n.fallbacks # NoMethodError: undefined method `fallbacks' for I18n:Module
除了在配置文件中设置之外,我不会在应用中的任何地方调用fallbacks
。
我想知道:
fallbacks
是一个死设置,所以我可以安全地删除它吗?Rails.application.config.i18n.fallbacks
会返回nil
,尽管已设置在配置中?我搜索了Rails,I18n和Globalize的文档(包括更改日志),但没有找到任何有趣的内容。