2011-01-25 64 views
4

我遇到了Rails 2.3.8应用程序的问题。我使用rails i18n以不同语言制作网站。除了一个地方,任何地方都可以完美运作。Rails i18n:翻译缺失问题,区域设置未定义

成功注册后,我做的:

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

正如我在其他地方。

但呈现如下:

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

看来它不加载当前区域设置(否则它会说“恩”,或“上课”,或什么的,而不是“现场”)。

任何可能导致这种情况的想法?

感谢

回答

7

也许你的地方覆盖下来是阳明文件。也许你做了太多的嵌套。也许这个键有子键。

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

你遇到的问题偶尔会发生在我身上,而这总是我在yml文件中搞砸了的东西。

1

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

I18n.locale = params[:locale] || 'en' 
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