2009-05-22 14 views
6

Ho definito gli attributi tradotti e i nomi dei modelli nel file di traduzione e Modelname.human_attribute_name (...) restituisce il nome dell'attributo tradotto correttamente, ma i nomi degli attributi in i messaggi di errore non sono tradotti. Cosa è necessario che i nomi degli attributi nei messaggi di errore siano tradotti?Attributi tradotti nei messaggi di errore Rails (Rails 2.3.2, I18N)

+0

Ho un problema simile. Ma nella mia traduzione app non funziona per i nomi dei modelli. Quello che probabilmente è un bug nel codice Rails. Tuttavia i nomi degli attributi sono tradotti correttamente. –

risposta

13

Dal Guide in materia, sarà necessario configurare il file di localizzazione correttamente con i vostri nomi di modello e nomi degli attributi:

en: 
    activerecord: 
    models: 
     user: Dude 
    attributes: 
     user: 
     login: "Handle" 

Poiché questo è YAML, assicurarsi che tutti i "schede" sono in realtà due spazi morbidi. Quindi puoi ottenerli con User.human_name e User.human_attribute_name(:login).

Non l'ho preso per il vangelo: poteva esserci un errore. L'ho provato e funziona perfettamente. Ho creato un modello chiamato Model con un attributo title. Ecco un frammento del mio file fr.yml in config/locales:

fr: 
    activerecord: 
    models: 
     model: "Sumfink" 
    attributes: 
     model: 
     title: "Tiltile" 

Ecco il codice della vista rilevanti:

<h1>New <%= Model.human_name %></h1> 
<% form_for(@model) do |f| %> 
    <%= f.error_messages %> 
    <%= Model.human_attribute_name("title") %><br /> 
    <%= f.text_field :title %> 
    <%= f.error_message_on :title %> 
... 

e uno screenshot dell'uscita correttamente tradotto: http://screencast.com/t/et5FhVe1Gp

+0

Grazie mille per la tua risposta dettagliata. L'ho provato con un nuovo progetto. Ho usato un file di traduzione da un progetto esistente e aggiunto un nuovo modello per testare la traduzione e la traduzione ha funzionato immediatamente. Non ho accesso al file di traduzione originale, in cui le stringhe non sono state utilizzate per la traduzione, perché è sul mio posto di lavoro. Lo guarderò lunedì per vedere cosa è diverso. L'applicazione con la traduzione di successo era in esecuzione su Linux, l'applicazione al lavoro viene eseguita in Windows. –

+0

Il mio file di traduzione era corretto. Ho omesso la parte "_id" del nome della colonna perché non è stata mostrata nel messaggio di errore della vista. Ho usato "model" invece di "model_id". –

+0

Il link allo screenshot è rotto. Ne hai un altro che potresti fornire? Grazie – mkelley33

1

Complimenti a Ian, basta volevo aggiungere che per evidenziare l'etichetta in caso di convalida fallita è necessario scriverlo in questo modo:

<%= f.label "title", Model.human_attribute_name("title") %><br /> 

Per qualche ragione, la scrittura è proprio come:

<%= f.label "title" %><br /> 

non visualizza le traduzioni.

+2

Quale versione di Rails stai usando? Questo bug dell'etichetta è stato risolto in 2.3.6: https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n – giraff

Problemi correlati