Rails 4.2 - 如何在视图上关闭I18n错误`translation missing`

时间:2015-07-04 15:07:55

标签: ruby-on-rails ruby-on-rails-4

在我们的Rails 4.2应用视图中,只要I18n文件中找不到密钥,就会出现zh-CN错误:

 translation missing: zh-CN.no key 

这是在config / initializers /:

下的local.rb中
I18n.default_locale = 'zh-CN' if Rails.env.production? || Rails.env.development?

我们希望关闭此错误并阻止它在视图上显示。有关Rails 3错误的post。但是解决方案不适用于Rails 4.2。 config.i18n.fallbacks = false/true也没有做到这一点。

2 个答案:

答案 0 :(得分:3)

您必须添加 后备区域设置和后备语言。

config.i18n.default_locale = :en
config.i18n.fallbacks = true

这会迫使I18n回归英语。我在Rails 4.1应用程序上广泛使用它,但我不确定它是否因为4.2而改变了它。

答案 1 :(得分:0)

我们可以在Rails应用程序中配置I18n回调。例如,当zh-CN翻译丢失时,I18n将回退到en。在我的Rails 4.2.2应用程序中配置如下:

配置/ application.rb中

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
config.i18n.default_locale = :"zh-CN"
config.i18n.fallbacks = true

配置/初始化/ i18n.rb

Rails.configuration.after_initialize do
  I18n.fallbacks.map(:"zh-CN" => :en)
end

参考文档:

  1. https://github.com/svenfuchs/i18n/wiki/Fallbacks
  2. http://paulgoscicki.com/archives/2015/02/enabling-i18n-locale-fallbacks-in-rails/