Rails i18n:翻译缺失问题,区域设置未定义

时间:2011-01-25 16:52:05

标签: ruby-on-rails internationalization locale

我在使用Rails 2.3.8应用程序时遇到问题。我正在使用rails i18n来制作不同语言的网站。除了一个地方,一切都在完美,无处不在。

成功注册后,我会这样做:

flash[:notice] = t 'path.to.locale.key'

就像我在其他地方一样。

但是这会产生以下结果:

translation missing: 'locale.path.to.locale.key' not found

似乎它没有加载当前的语言环境(否则它会说'en'或'es',或者不是'locale')。

任何可能造成这种情况的想法?

由于

3 个答案:

答案 0 :(得分:8)

也许你在那个yml文件的某处覆盖它。也许你做了太多的筑巢。也许该密钥有子密钥。

从该locale.yml中删除所有内容,并仅放置该消息并查看其是否有效。

你遇到的问题时不时发生在我身上,而且总是我在yml文件中搞砸了。

答案 1 :(得分:1)

尝试在ApplicationController中设置默认语言环境,例如使用before_filter:

I18n.locale = params[:locale] || 'en'

答案 2 :(得分:0)

嗯,在升级到Rails 4.1之后,我在邮件程序中遇到了这种情况。它在Rails 3上运行正常,yml文件没有变化。不知怎的,i18n没有看到默认的语言环境。 所以我在邮件程序类中添加了这一行来修复。

 I18n.locale = I18n.default_locale

class ProviderMailer < ActionMailer::Base
  include Resque::Mailer
  default from: APP_CONFIG.mailer.from

  def registration_email(provider)
    @provider = provider
    I18n.locale = I18n.default_locale
    @provider_url  = "#{APP_CONFIG.base_url}/hizmetsgl/#{provider['_id']}"
    @howto_url  = "#{APP_CONFIG.base_url}/hizmetverenler"
    mail(to: provider["business_email"], subject: t('provider_mailer.registration_email.subject')) 
  end

end