Personalizar mensajes de error al idioma del usuario en CodeIgniter


Nota: Ver un ejemplo práctico desarrollado con el framework CodeIgniter. Se trata de un script para login de usuarios con validaciones de datos, presentación de mensajes de error al usuario, consultas a base de datos Mysql, etc. Ver demo !

Problema | Introducción | Solución

Problema:

Los mensajes de error por defecto salen en inglés:

Pero nosotros queremos que los mensajes de error se presenten en el idioma del usuario, por ejemplo en idioma español:

Introducción:

La librería “form_validation” de CodeIgniter, que ya hemos utilizado previamente en nuestro script de login de usuarios,  nos facilita muchísimo las validaciones de datos provenientes de un formulario. Algo muy cómodo de la librería es que tiene mensajes de error pre-definidos para las validaciones más comunes…,

  • The mail field is required
  • The mail field must contain a valid email address.
  • The mail field must be at least %s characters in length.

…, y por lo tanto nos ahorra tiempo a tener que escribir estos mensajes de error nosotros mismos.

Supongamos que nuestro sitio apunta a un público de habla-hispana… Recordemos que el idioma se configura en el archivo /application/config/config.php

y también recordemos que CodeIgniter trabaja las traducciones mediante archivos de lenguaje.

Entonces, para mostrar los errores de validación en idioma español, simplemente debemos ir a carpeta /system/language/, tomar la carpeta “english“, copiar y pegarla con el nombre “spanish“.

Luego abrir el archivo spanish/form_validation_lang.php y allí podremos traducir todos los mensaje de error, por ejemplo:

Esta configuración funciona bien mientras que nuestro sitio apunte a un único idioma…
¿Pero cuando queremos personalizar los mensajes de error al idioma del usuario?

Solución

CodeIgniter nos permite modificar (en tiempo de ejecución) el idioma definido por defecto en el archivo config.php. Esto se efectúa mediante la siguiente sentencia, la cual podemos ejecutar al inicio de nuestro controlador:

Por lo tanto, supongamos que en la variable de SESSION “idioma” tenemos almacenado el idioma seleccionado por el usuario… Entonces, podemos personalizar los mensaje de error de las validaciones de la siguiente manera:

Luego de esto, los mensajes de error de validaciones (así como también otros mensajes propios de CodeIgniter) se comenzarán a presentar en el idioma de nuestro usuario :-).

(por supuesto, siempre y cuando hayamos subido los archivos de lenguaje correspondiente dentro de la carpeta /system/language/ del ftp de nuestro Web Hosting)


Nota del autor: Busco programadores y diseñadores freelance para colaborarme con proyectos. Mostrame tus trabajos desarrollados, escribime!


Te agradaría derivar tu proyecto a un programador con años de experiencia?

Ing. Diego Angelini.
Autor de BlogdePHP.com
Programador Web Freelance






Porfolio de proyectos