2011-08-19 13 views
9

Posso localizzare un messaggio di errore per ogni convalida, ma come posso creare un errore per un modello particolare.i18n: localizzazione dei messaggi di errore per il modello particolare

locale ordinaria si presenta così:

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

Ma io voglio cambiare il messaggio per user il modello:

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

risposta

28

Prova questo:

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

Riferimento:

ActiveRecord code comments

PS: La stringa localizzazione deve utilizzare variabile interpolazione per sostituzione dinamica.

es: Aggiungi un errore sul login campo di user oggetto:

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

Ci può spiegare come si fa a saperlo? Come posso capire il percorso verso ciò di cui ho bisogno nelle localizzazioni? PS: come collegamento uso solo brutale HTML grezzo – fl00r

+0

È menzionato nei commenti del codice ActiveRecord. Ho pensato che il mangoid potesse seguire la stessa convenzione. –

+0

Ho provato questo per aggiungere un collegamento al mio modulo di reimpostazione della password, ma continuo a ricevere questo errore: "l'argomento di interpolazione mancante in" non è valido. Fare clic su% {link} per inviare nuovamente la password. Conferma "({: model =>" Utente ",: attribute =>" Password token ",: value => nil} dato)'. Qualcosa è cambiato in Rails 3.1? – David

Problemi correlati