2009-09-06 5 views
5

He utilizado las instrucciones especificadas en http://guides.rubyonrails.org/i18n.html para traducir campos de mi modelo, pero las etiquetas no vienen traducidas. Lo que estoy haciendo malMensajes de error de ActiveRecord: traducción de los campos

que tienen un modelo User con el campo name y me gustaría tenerlo traducido al brasileño Portugues (pt_br), por lo que tiene mi pt_br.yml:

pt_br: 
    errors: "Erro!" 
    activerecord: 
     models: 
      user: "Usuário" 
     attributes: 
      name: "Nome" 
      address: "Endereço" 
     errors: 
      template: 
       body: "Por favor, corrija os campos assinalados" 
       header: "Dados inválidos" 
      messages: 
       blank: "é obrigatório" 
       taken: "já existe" 
       too_short: "incompleto" 

cuando llegué a la página con un formulario:

<% form_for(@usuario) do |f| %> 
<%= f.error_messages %> 
<%= f.label :name %> 
<%= f.text_field :name %> 
<% end %> 

Tengo el campo etiquetado como "nombre" y no como "Nome" como me gustaría que fuera. también tengo

config.i18n.default_locale = :pt_br 

en mi environment.rb

Lo que falta?

Respuesta

5

Necesitas namespace sus atributos bajo user, es decir .:

pt_br: 
    activerecord: 
    attributes: 
     user: 
     name: "Nome" 
     address: "Endereço" 

También puede instalar el i18n_label plugin para traducir automáticamente las etiquetas.

+0

Excelente! Funcionó, pero hay algo mal con su enlace (probablemente de subrayado) –

+0

Me alegro de que funcionó, el enlace debe ser reparado ahora. – eremite

0

Puede intentar <%= f.label :name, t('activerecord.attributes.name') %>.

+0

Funciona para el campo, pero aún así obtener los textos sin traducir en el marco de los errores (cuando deje en blanco un campo obligatorio, por ejemplo) –

0

¿Qué hay de human_attribute_name? ¿Existe desde Rails 2.1.0.

creo que es mejor que cualquier otra solución:

<%= f.label :name, User.human_attribute_name(:name) %> 
Cuestiones relacionadas