马来西亚华语的语言环境代码是zh-MY.
我想保留一组基本的zh-CN(简体中文)语言环境文件和zh-MY来回退到zh-CN.
因为zh-TW(繁体中文)是台湾使用的,所以只有一个zh是不正确的,并且它与zh-CN之间存在很大的差异.
所以这是我的config / application.rb文件as per the Rails Guide.
require file.expand_path('../boot',__file__)require 'rails/all'require "i18n/backend/fallbacks"module MyAwesomeApp class Application < Rails::Application I18n::Backend::Simple.send(:include,I18n::Backend::Fallbacks) # all translations from config/locales/**/*.rb,yml are auto loaded. config.i18n.load_path += Dir[Rails.root.join('config','locales','**','*.{rb,yml}')] # The default locale is :en config.i18n.default_locale = :en # See http://guIDes.rubyonrails.org/i18n.HTML#localized-vIEws for a discussion of # how language codes fall-back. config.i18n.available_locales = [:en,:'zh-CN',:'zh-TW',:'en-SG',:'en-MY',:'zh-MY'] I18n.fallbacks.map(:'zh-MY' => :'zh-CN') endend
但这根本行不通.
当我实际将语言环境设置为:zh-MY时,它不会回退到:zh-CN而是:en
我错过了什么?
更新:
如果我把“I18n.fallbacks#{I18n.fallbacks}”改为I18n.fallbacks {}.显然I18n.fallbacks.map失败了.
更新
根据评论中的建议,在我检查了I18n.fallbacks之后,我在下一行查看了I18n.fallbacks [:’zh-MY’]并返回[:“zh-MY”,:zh,:“zh- CN“,:en]
更新
使用我的应用程序控制器中的binding.pry,我检查了语言环境等,并观察:
[1] pry(#<ServicesController>)> I18n.locale=> :"zh-MY"[2] pry(#<ServicesController>)> I18n.fallbacks=> {:en=>[:en],:"zh-MY"=>[:"zh-MY",:zh,:en]}
因此,在启动Rails应用程序和调用控制器的set_locale方法之间,I18n.fallbacks将重置为默认值.
解决方法 不要问我为什么,但这是有效的,尽管官方文件说.require file.expand_path('../boot',__file__)require 'rails/all'require "i18n/backend/fallbacks"Bundler.require(*Rails.groups)module MyAwesomeApp class Application < Rails::Application # all translations from config/locales/**/*.rb,yml}')] # The default locale is :en config.i18n.default_locale = :en # See http://guIDes.rubyonrails.org/i18n.HTML#localized-vIEws for a # mostly correct discussion of how language codes fall-back. config.i18n.available_locales = [:en,:'zh-MY'] config.i18n.fallbacks = {:'zh-MY' => :'zh-CN'} endend
删除I18n :: Backend :: Simple.send(:include,I18n :: Backend :: Fallbacks)并通过config.i18n.fallbacks设置回退= {:’zh-MY’=> :’zh-CN’}而不是I18n.fallbacks.map(:’zh-MY’=>:’zh-CN’)使一切都完美无缺.
现在在我的控制器中,与第3个问题更新中讨论的断点相同:
[1] pry(#<ServicesController>)> I18n.fallbacks=> {:en=>[:en],:"zh-CN",:en]}
我希望这对其他人有帮助.
总结以上是内存溢出为你收集整理的ruby-on-rails – Rails 4中的Locale后备无法正常工作全部内容,希望文章能够帮你解决ruby-on-rails – Rails 4中的Locale后备无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)