Zend Framework 9: Traducir mensajes de error
Esta es la novena parte de mi tutorial de Zend Framework. La parte anterior la puedes ver acá.Si has seguido el tutorial, te habrás dado cuenta de que la validación de datos en los formularios funciona bien, pero que los mensajes de error aparecen siempre en inglés. ¿y qué pasa si quiero verlos en español? ¿O si soy zulú, y quiero los mensajes en mi lengua? Pues ZF viene con archivos de traducción. Sólo hay que agregarlos a nuestro sistema.
Para buscar el archivo de traducción que necesitamos, vamos a donde descomprimimos ZF cuando recién lo bajamos.
Veremos un listado de carpetas:
- bin
- demos
- externals
- extras
- resources
- ....etc
La que nos interesa es resources. Abrámosla, y entremos a la subcarpeta languajes.
Ahí tenemos, separado por carpetas, todos los idiomas a los que han sido traducidos los mensajes de ZF. Entremos a la carpeta ES, y veremos el archivo Zend_Validate.php
para incluirlo en nuestro proyecto, crearemos una carpeta especial para las traducciones.
En el archivo raíz de nuestro proyecto, creemos esta ruta de carpetas:
/resources/languages/es
y dentro de ella copiemos el archivo Zend_Validate.php
la estructura nos quedará así:
Ahora, en nuestro archivo /public/index.php debemos decirle a nuestro sistema que usaremos la traducción de el archivo que acabamos de copiar, agregando estas líneas:
$translator = new Zend_Translate(
'array',
'../resources/languages',
'es',
array('scan' => Zend_Translate::LOCALE_DIRECTORY)
);
Zend_Validate_Abstract::setDefaultTranslator($translator);
Nuestro archivo public/index.php deberia verse así:
<?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; //agrego esto require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance (); $translator = new Zend_Translate( 'array', '../resources/languages', 'es', array('scan' => Zend_Translate::LOCALE_DIRECTORY) ); Zend_Validate_Abstract::setDefaultTranslator($translator); // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
Ahora, entremos al sistema, vamonos a Agregar Album, y sin llenar ningún dato en el formulario, presionemos Enviar.
Veremos algo como esto:
Como vemos, los mensajes de error aparecen es español.
Personalizando los mensajes de error de ZF
Pero tal vez nos pueda parecer que los mensajes de ZF son algo confusos para el usuario. Para cambiarlos, simplemente tenemos que editar el archivo /resources/languages/es/Zend_Validate.php
Si lo abrimos, nos daremos cuenta de que no es nada más que un arreglo de la forma
array {
"mensaje en ingles" => "mensaje en español"
}
entonces, si queremos cambiar el texto de uno de los mensajes en español, solo basta buscarlo y reemplazarlo por el que deseemos.
Nota: no debes cambiar el mensaje en inglés, pues esta es la clave por la cual ZF busca el mensaje en español para mostrar.
También podríamos crear nuestro propio archivo de traducción para cualquier idioma, solo traduciendo los mensajes.
Este ha sido el tutorial más corto de la serie.
En el siguiente hablaremos de cómo usar ZF con Ajax.
Suscribirse a:
Enviar comentarios
(
Atom
)
7 comentarios :
Angelorum, excelente aporte!!!. He estado siguiendo tu tutorial y me ha ayudado mucho para poder estructurar mis proyectos, haciendo uso de ZendFramework.
Gracias ^^
mañana espero subir el proximo
:)
gracias por la nota,
resolvio mi problema de traduccion.
puedes compartir el proyecto...mi correo es : logica_razon@hotmail.com
Porfis , necesito un ejemplo ya que necesito emperzar un proyecto..con ajax...junto con este framework..
Hola, Wilfo. Al final del tutorial hay un enlace a mediafire con el proyecto completo
Perfecto Ángel eres un excelente maestro contigo he aprendido ZendFramwork Básico he intermedio en 3 días muchas gracias sigue así queremos mas de tus tutos de Zend ñ_ñ
Publicar un comentario