empz
empz

Reputation: 11828

Rails i18n: Translation missing problem, locale not defined

I have a problem with a Rails 2.3.8 application. I'm using rails i18n to make the site in different languages. Everything works perfect, everywhere, except one place.

After successful signup, I do:

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

Just as I do everywhere else.

But that renders the following:

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

It seems it's not loading the current locale (or else it will say 'en', or 'es', or whatever instead of 'locale').

Any idea that could be causing this?

Thanks

Upvotes: 5

Views: 9704

Answers (3)

Caner
Caner

Reputation: 1498

Well, this happened to me in mailer classes after I upgraded to Rails 4.1. It was working correctly on Rails 3 and there was no change on yml files. Somehow i18n did not see the default locale. So I've added this line on mailer class to fix out.

 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

Upvotes: 0

Mirko
Mirko

Reputation: 5286

Maybe you overwrite it somewhere down that yml file. Maybe you did too many nesting. Maybe that key has subkeys.

Delete everything from that locale.yml and place only that message and see if it works.

The problem you are having happens to me every now and then, and it's always something I messed up in yml file.

Upvotes: 8

Thilo
Thilo

Reputation: 17735

Try setting a default locale in your ApplicationController, for example with a before_filter:

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

Upvotes: 1

Related Questions