我在使用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')。
任何可能造成这种情况的想法?
由于
答案 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