2011-10-07 40 views
25

Cuando envío un formulario con un error, devuelve un mensaje de error. ¿Cómo puedo traducir estos mensajes de error con i18n? Ya tengo traducción para todos los otros textos en mi opinión, así que sé cómo funciona l18n en Rails. Ahora entiendo esto:Cómo traducir las validaciones del modelo de registro activo

2 errors prohibited this user from being saved: 

Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank 
Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank 

Quiero traducir el título y los errores.

Respuesta

32

La traducción del título sería :

nl: 
    activerecord: 
    errors: 
     template: 
     header: 
      one: "1 error prohibited this %{model} from being saved" 
      other: "%{count} errors prohibited this %{model} from being saved" 
     body: "There were problems with the following fields:" 

Para traducir los mensajes de error, Rails lo hará sí el siguiente orden de traducciones:

activerecord.errors.models.user.attributes.name.blank 
activerecord.errors.models.user.blank 
activerecord.errors.messages.blank 
errors.attributes.name.blank 
errors.messages.blank 

por lo que podría añadir:

nl: 
    activerecord: 
    errors: 
     models: 
     user: 
      attributes: 
      email: 
       blank: "foo blank in nl bar baz" 

Está documentado en la Rails Internationalization (I18n) API Guide, que te pueden servir de una visión más clara.

+0

Correcto, realmente no me di cuenta. Eliminaré la parte de administrador para aclarar. ¡Gracias! – tbuehlmann

10

El rails I18n guide lo cubre bastante bien.

Usted puede poner lo siguiente en config/locales/nl.yml para traducir los atributos:

nl: 
    activerecord: 
    models: 
     user: "User" 
    attributes: 
     email: "Email" 

Para los mensajes de error, ActiveRecord se buscarlas en los siguientes espacios de nombres:

activerecord.errors.models.[model_name].attributes.[attribute_name] 
activerecord.errors.models.[model_name] 
activerecord.errors.messages 
errors.attributes.[attribute_name] 
errors.messages 

model, attribute y value están interpoladas y disponibles en sus traducciones, por ejemplo:

nl: 
    errors: 
    messages: 
     blank: "Please fill the %{model}'s %{attribute}" 
20

Simplemente use el archivo de traducciones holandés que puede find here. Contiene traducciones para la mayoría (si no todos) los mensajes de validación de ActiveRecord.

Copie el archivo a config/locales/ en su proyecto.

método alternativo

Si desea beneficiarse de traducciones actualizadas, añada lo siguiente a su Gemfile en lugar de copiar los archivos de traducción con la mano:

gem 'rails-i18n' 
+1

Normalmente, lo primero que hago al crear una nueva aplicación de rieles, ¿sabe si hay una manera de hacerlo automáticamente? –

+0

¡No tengo idea, de verdad! Comience una nueva pregunta;) – rdvdijk

+0

Este plugin se ve bastante bien: https://github.com/zargony/rails-i18n-updater, aunque no lo probé. –

Cuestiones relacionadas