2010-09-14 17 views
5

Estoy tratando de anular la cadena utilizada para describir el atributo 'inicio de sesión' de mi modelo de Usuario para que sea "Nombre de usuario". Pensé que esto se estableció en vendor/rails/activerecord/lib/active_record/locale/en.yml. He intentado cambiarlo aquí y en mi archivo config/locales/en.yml, y en ninguno de los casos funciona (reinicio el servidor después de cada cambio).Reemplazando los nombres de los atributos del modelo usando I18n - no puedo hacer que esto funcione

En ambos casos se hace así:

en: 
... 
    activerecord: 
    attributes: 
     user: 
      login: User Name 

Cuando la prueba a cabo, por ejemplo, tener f.label: Inicio de sesión en mi nuevo formulario de usuario, que sale como "Login" no "Nombre de usuario" . ¿Estoy trabajando bajo algún error fundamental acerca de cómo funciona esto o realmente no funciona? De cualquier manera, ¿alguien me puede decir cómo solucionarlo? gracias, máx

Respuesta

0

Usted puede almacenar su "Nombre de usuario" cadena bajo cualquier nombre de su archivo en.yml:

en: 
user: 
    user_name: User Name 

y en su opinión

<%= f.label :login, t('user.user_name') %> 
+1

Hola yannis. Sé que puedo hacer mis propias traducciones personalizadas, pero tengo entendido que puedo anular las generadas por los raíles para no tener que hacer ninguna referencia a ninguna traducción personalizada: se usan automáticamente. Podría estar equivocado acerca de eso. –

+0

Eso sería realmente interesante ... publique un comentario aquí si encuentra una solución en otro lugar. – Yannis

1

En caso de que alguno de ustedes tenga problemas, la traducción no está cargada, depuré de esta manera:

Primero uso la secuencia de comandos en https://stackoverflow.com/a/10211540/474597 para configurar el registro. Luego, cuando ejecuto el servidor y renderizo las páginas, puedo ver en ese registro las claves utilizadas para obtener las traducciones. Entonces puedo verificar si las claves que uso son correctas o no.


Una trampa es que, la primera clave no es necesariamente la clave que usarán. He visto casos en los que se carga la clave correcta y luego busco otra clave que no tenga traducción, lo que da como resultado la traducción al inglés. Tuve que poner la traducción en esas dos llaves.

Por ejemplo: my Foo has_many Bar, y Bar has_many Duu, y Duu tiene una columna de precios. Para traducir esa columna precio, tengo que tener lo siguiente para que funcione:

activerecord: 
    attributes: 
     'foo/bar/duu': 
     price: "price" 

A pesar de que el registro tiene esta:

:duu 
:"activerecord.attributes.duu.text" 
:"activerecord.errors.models.duu.attributes.text.blank" 
:"activerecord.errors.models.duu.blank" 
:"activerecord.errors.messages.blank" 
:"errors.attributes.text.blank" 
:"errors.messages.blank" 
:"activerecord.attributes.foo/bars/duus.text" 
2

estoy aquí en respuesta a esta petición de alguien ... Lo solucioné y no actualicé mi pregunta, lo siento. Estaba en la línea correcta en mi pregunta, pero no tenía el "camino" correcto hacia las teclas: los nombres de los campos, tal como se muestran, se llaman "etiquetas" y tienen su propia sección fuera de: activerecord parte del árbol yaml.

La forma correcta de hacerlo es

en: 
    user: 
    labels: 
     login: "User Name" 
     email: "Email Address" 

donde "usuario" es el nombre del modelo en minúsculas y de inicio de sesión y correo electrónico son campos.

Cuestiones relacionadas