2009-05-22 9 views
6

He definido atributos traducidos y nombres de modelo en el archivo de traducción y Modelname.human_attribute_name (...) devuelve el nombre de atributo traducido correctamente, pero los nombres de atributo en los mensajes de error no están traducidos. ¿Qué se necesita para que se traduzcan los nombres de los atributos en los mensajes de error?Atributos traducidos en mensajes de error Rails (Rails 2.3.2, I18N)

+0

Tengo un problema similar. Pero en mi aplicación la traducción no funciona para los nombres de modelo. Lo que probablemente sea un error en el código de Rails. Sin embargo, los nombres de atributos se traducen correctamente. –

Respuesta

13

Desde el Guide sobre el tema, tendrá que configurar el archivo de localización correctamente con sus nombres de modelos y nombres de atributos:

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

Dado que este es YAML, asegúrese de que todas sus "fichas" son en realidad dos espacios blandos Luego puede sacarlos con User.human_name y User.human_attribute_name(:login).

No lo tomé por gospel, podría haber un error. Lo probé y funciona bien. Hice un modelo llamado Model con un atributo title. Aquí hay un fragmento de mi archivo fr.yml en config/locales:

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

Aquí está el código de la vista correspondiente:

<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 %> 
... 

Y una captura de pantalla de la salida correctamente traducido: http://screencast.com/t/et5FhVe1Gp

+0

Muchas gracias por su respuesta detallada. Lo intenté con un nuevo proyecto. Utilicé un archivo de traducción de un proyecto existente y agregué un nuevo modelo para probar la traducción y la traducción funcionó de inmediato. No tengo acceso al archivo de traducción original, donde las cadenas no se usaron para la traducción, porque está en mi lugar de trabajo. Lo veré el lunes para ver qué es diferente. La aplicación con la traducción exitosa se estaba ejecutando en Linux, la aplicación en el trabajo se ejecuta en Windows. –

+0

Mi archivo de traducción fue correcto. Omití la parte "_id" del nombre de la columna porque no se muestran en el mensaje de error de la vista. Utilicé "modelo" en lugar de "modelo_id". –

+0

El enlace a la captura de pantalla está roto. ¿Tiene otro que podría suministrar? Gracias – mkelley33

1

Felicitaciones a Ian, justo quería agregar que para resaltar la etiqueta en caso de una validación fallida debe escribirlo así:

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

Por alguna razón, al igual que escribirlo:

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

no muestra la traducción.

+2

¿Qué versión de Rails estás usando? Este error de etiqueta se corrigió en 2.3.6: https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n – giraff

Cuestiones relacionadas