2011-01-25 2 views
4

Rails 2.3.8アプリケーションに問題があります。私は異なる言語でサイトを作るためにレールi18nを使用しています。すべてが完璧に、どこでも、1つの場所を除いて動作します。Rails i18n:翻訳に問題があり、ロケールが定義されていません

は成功し、サインアップした後、私が行います

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

を私は他のどこでも同じように。

しかし、それは次のようにレンダリング:

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

(「ES」、または任意の代わりに「ロケール」のか、そうでなければ「en」と言うだろうか)それは現在のロケールをロードしていないようです。

これを引き起こしている可能性のあるアイデアはありますか?

おかげ

答えて

7

たぶん、あなたはそのYMLファイルの下のどこかでそれを上書きします。たぶんあなたはあまりにもたくさんの巣を作ったでしょう。おそらくそのキーにはサブキーがあります。

そのlocale.ymlからすべてを削除し、そのメッセージのみを配置し、それが動作するかどうかを確認します。

あなたは今いつでも私に起こっている問題は、それは常にymlファイルでうんざりしています。

1

はbefore_filterで、たとえば、あなたのApplicationControllerにしてデフォルトのロケールを設定してみてください:

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

これは、私がRails 4.1にアップグレードした後、メーラーのクラスで起こったことです。 Rails 3では正しく動作していて、ymlファイルに変更はありませんでした。何とかi18nにデフォルトのロケールが表示されませんでした。 これを修正するために、この行をmailerクラスに追加しました。

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 
関連する問題