2011-08-19 14 views
9

検証ごとにエラーメッセージをローカライズできますが、特定のモデルに対してエラーを作成するにはどうすればよいですか。i18n:特定のモデルのエラーメッセージのローカライゼーション

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 

しかし、私はuserモデルのためのメッセージを変更したい:

普通のロケールは、次のようになり、これを試してみてください

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 
     user: 
      taken: "It is already taken. %{link_to 'Remember password', reset_password_path'}" 

答えて

28

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 
     models: 
     user: 
      attributes: 
      login: 
       taken: "It is already taken. %{link}" 

参考:

ActiveRecord code comments

PS: ローカライズ文字列が動的置換のための補間変数を使用する必要があります。

例えば: userオブジェクトのloginフィールドにエラーを追加します:あなたはそれを知っていますかどのように説明することができ

user.errors.add(:login, :taken, :link => "foo") 
+0

?ローカリゼーションで必要なものへのパスをどのように理解できますか? PS:リンクとして私はちょうど残酷な生のHTMLを使用します – fl00r

+0

これは、ActiveRecordのコードのコメントに記載されています。私はマンゴーイドが同じ慣習に従うと思った。 –

+0

パスワードリセットフォームへのリンクを追加しようとしましたが、このエラーが発生しています: '補間引数がありません。 'は無効です。パスワードを再送信するには%{link}属性=> "パスワードトークン"、:値=> nil}) '。 Rails 3.1で何か変更されましたか? – David

関連する問題