【问题标题】:Rails 4.2 - how to turn off I18n error `translation missing` on viewsRails 4.2 - 如何关闭视图上的 I18n 错误“翻译缺失”
【发布时间】:2015-07-04 15:07:54
【问题描述】:

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

 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 也不能解决问题。

【问题讨论】:

  • 对于快速解决方案,在该文件上添加默认(EN)文本。
  • Emu,问题是错误出现并污染了网页。如果我们知道缺少哪个翻译,那么就没有问题。

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


【解决方案1】:

您必须同时添加备用语言环境和备用语言。

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

这应该强制I18n 回退到英语。我在 Rails 4.1 应用程序上广泛使用它,但我不确定是否对 4.2 进行了更改。

【讨论】:

  • @Fire-Dragon-DoL,将两个配置放入environment/production.rb,网页上仍然显示缺少的翻译错误。刚刚用 local.rb 中的配置更新了帖子
  • 请注意,你为什么在local.rb 中做I18n.default_locale = 'zh-CN' if Rails.env.production? || Rails.env.development??你不应该在 development.rb production.rb 中默认为I18n.default_locale = :zh 吗?此外,我 100% 确定 :zh 作为默认值会在翻译 rails 内容时造成很多麻烦。我建议你默认为 en,并在配置(和应用程序控制器)中设置 I18n.locale = :zh(或 zh-CN,但测试它,不确定它是否有效)。到目前为止,这是您最好的选择,与此同时,我正在寻找不同的解决方案。
  • @Fire-Dragon-DoL,再次尝试删除 'zh-CN' 或在 local.rb 中将其设置为 EN 并将 zh-CN 移动到 production.rb。然后根本没有翻译,全部回到EN。
  • 有没有办法关闭no translation 错误?只需让 I18n 不显示错误即可。
  • 只有我认为“hacky”的东西(你可以google一下,我发现只有hacky方式)
【解决方案2】:

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

config/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

config/initializers/i18n.rb

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

参考文档:

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

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 2012-01-22
    • 2012-06-03
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多