Enrutar aplicaciones con Phalcon PHP
Enrutar aplicaciones con Phalcon PHP
¡INSCRÍBETE A CUALQUIER CURSO CON UN 50% DE DESCUENTO PARA NUEVOS CLIENTES!

En este tutorial vamos a ver una de las posibles formas de poder crear una aplicación multi idioma con Phalcon, haremos uso de archivos, cada uno contendrá un array con sus claves y sus valores, y por cada idioma de nuestra aplicación tendremos un archivo, de esta forma será sencillo de mantener y rápido de ejecutar, pensemos que esta información debe estar disponible en cada vista. Digo ésto porque también existe la posibilidad de utilizar la base de datos para este propósito, pero creo que no es lo más óptimo.

Lo primero que podemos hacer es crear nuestro proyecto, una vez lo tengamos podemos crear dentro de app una carpeta llamada messages, aquí será donde guardemos los archivos de traducción, uno por idioma en nuestro ejemplo. Así que crea dos archivos, uno llamado en.php y otro es.php, abre el primero y añade el siguiente código, el cuál simplemente contiene un array.

 
Y haz lo mismo con el archivo es.php.
 

Como podemos ver, tenemos dos tipos de mensajes, dinámicos y estáticos, del estático no hay nada que decir, y del dinámico tampoco, simplemente debe ir entre los símbolos del % para poder reemplazarlos después en nuestros archivos por los datos que necesitemos.

Ya tenemos listo lo más sencillo, ahora debemos crear la lógica que obtendrá un archivo u otro dependiendo de la sesión del usuario, así lo haremos en nuestro ejemplo.

Yo lo he creado en el ControllerBase, pero lo puedes crear donde mejor te parezca, así que ábrelo y añade el siguiente código.

Gracias a este pedazo de código, en cada vista que tengamos tendremos disponible un objeto llamado $t con toda la información de nuestros archivos de traducción, pero para que sea más dinámico, es decir, poder escoger uno u otro, abre el archivo indexController y añade el siguiente código.

Esta función se ejecutará cada vez que el usuario pulse los enlaces de selección de idioma que crearemos a continuación.

Fácil, comprobamos si el segmento pasado por la url es uno de los lenguajes disponibles en nuestra aplicación gracias al array que hemos creado llamado $_avalaibleLangs, si es así, seteamos la sesión de idioma del usuario con ese idioma, en otro caso y por defecto la dejamos en español.

Una vez hecho, obtenemos la variable del array $_SERVER HTTP_REFERER para obtener la url anterior, pero sabiendo y teniendo en cuenta que ésta no siempre está disponible, debemos comprobar si la hemos podido obtener de forma correcta, si es así le mostramos el contenido de la página en la que se encontraba al pulsar el link para seleccionar el lenguaje, en otro caso utilizamos una ruta por defecto para poder dejar al usuario en alguna zona.

Ahora nos queda lo más sencillo, añade la siguiente acción en el controlador index.

Y ahora crea la vista en app/views/index llamada saludo.volt y añade el siguiente código.

Y haz lo mismo con la vista index.volt.

Si ahora accedes a cualquier vista, verás como por defecto el idioma es el español, que es lo que le hemos dicho a Phalcon, si pulsas los enlaces verás como el idioma cambia y todo funciona como debe.

Espero que haya quedado lo más claro posible, aunque realmente no es demasiado complicado, saludos.