我有这样的问题I18N

activerecord:
  notices:
    messages:
      success: 
        create: "Something was created"
    models:
      user:
        success:
            create: "Thanks for registration"

I18n.t("activerecord.notices.models.user.success.create")
# => "Thanks for registration"


I18n.t("activerecord.notices.models.book.success.create") 
# => "translation missing: de, activerecord, notices, models, book, success, create"

我不知道为什么这本书的模型没有得到后备按摩。我有一组config.i18n.fallbacks = true。我使用的Rails 3

有帮助吗?

解决方案

当一个的:默认选项给出,其值将如该翻译是缺少返回:

I18n.t :missing, :default => 'Not here'
# => 'Not here'

更多信息此处

其他提示

我在配置/ application.rb中通常

设置
    config.i18n.fallbacks =[:de, :fr, :en]

所以,你可以减速回退的顺序。

但是要注意在某些环境/ *。RB的配置将被覆盖。

你有没有启用后端回退?假设它的Simple(基于示例中YML):

把这个在一个初始化:

require "i18n/backend/fallbacks" 
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

https://github.com/svenfuchs/i18n/wiki/Fallbacks

在导轨3+,这是设置在配置/环境文件:

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation can not be found)
  config.i18n.fallbacks = true

我相信,以处理丢失的字符串的最佳方式,是显示一个默认区域,而不是一个错误消息。

...添加这一行application.rb中回退到英文语言环境。

config.i18n.fallbacks = [:en]

在的情况下要指定区域设置的特定回退,则可以使用以下内容:

config.i18n.fallbacks = {:de => [:de,:en], :en => [:en,:de]}

此外,请注意您可以启用,并根据您的环境禁用回退。 因此,尽管在发展它可能是有意义的有显示错误,则可以选中与下面的environments/production.rb回退:

config.i18n.fallbacks = true
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top