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)
risposta
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
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. –
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". –
Il link allo screenshot è rotto. Ne hai un altro che potresti fornire? Grazie – mkelley33
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.
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
- 1. Ruby on Rails i18n - Desidera tradurre messaggi personalizzati nei modelli
- 2. Utilizzo di HTML nei messaggi flash Rails
- 3. Rails I18n set_locale
- 4. Rails I18n accepts_nested_attributes_for e error_messages_for
- 5. "Touch" nella colonna updated_at in Rails 2.3.2
- 6. Rails I18n di file CSS
- 7. Rails I18n-js: traduzione mancante
- 8. Ruby on Rails Interpolazione I18n
- 9. Rails I18n più file aliasing
- 10. Rails i18n formati di convalida di errore specifico
- 11. Rails i18n e route in javascript
- 12. Rails 4 + Attributi personalizzati Devise - ParameterSanitizer Errore
- 13. Rails 2.3.5 I18n mese/giorno di traduzione dei nomi problema
- 14. Rails 3 i18n come * not * escape newlines
- 15. MySQL Indice fulltext con Rails 2.3.2 (problema di migrazione)
- 16. Rails: Unicità di due attributi Registrazione tavolo causando 500 errore
- 17. Clean modello per la localizzazione di frasi in Rails i18n
- 18. Rails I18n, controllare se la traduzione esiste?
- 19. Come utilizzare I18n dal controller in Rails
- 20. Rails 3, Imposta locale i18n non funziona
- 21. Mese flessione nomi in Rails I18n
- 22. form_for messaggi di errore in Ruby on Rails
- 23. come testare i18n in Rails con RSpec
- 24. RAILS 3 - Transazioni nei controller
- 25. ruby on rails messaggi flash -: avviso: errore: avviso e: successo?
- 26. i18n: localizzazione dei messaggi di errore per il modello particolare
- 27. Rails non generano convalida non riescono messaggi
- 28. errore "rescue in const_missing" con Ruby 1.9.1, Rails 2.3.2 e jrails 0.4
- 29. Rails i18n Gestione file di configurazione Best practice
- 30. Rails i18n elenco di elementi e looping in vista
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. –