Hoy en día es poco habitual realizar un desarrollo web en un único idioma. Para controlar el idioma a mostrar en nuestra página solemos utilizar parámetros en la url que permitan enlazarnos externamente en el idioma deseado.
Si utilizas Zend Framework, la definición de routers te permitirá manejar este problema sin dificultades. Como ejemplo, trabajaremos con un router que enlaza con la página principal, pero se puede replicar el ejemplo a los routers que desees o a un formato genérico tipo :module/:controller/:action
Nuestro router tendría esta pinta:
1 2 | $route = new Zend_Controller_Router_Route(':language',array('controller' => 'index','action' => 'index')); $router->addRoute('home', $route); |
En el init de nuestro action añadiremos estas líneas:
1 2 3 4 | $language = $this -> _getParam('language'); $adapter = new Zend_Translate('gettext', '../languages/'.$language.'.mo',$language); $adapter -> setLocale($language); Zend_Form::setDefaultTranslator($adapter); |
Y listo. A partir de este momento si el parámetro indicado como language es “es” o “en” cargaremos el fichero de idioma indicado. Controlando el valor de $language podemos confirmar que el parámetro es uno de nuestros idiomas definidos (comprobando que forma parte de un array de idiomas, por ejemplo) o forzar un valor por defecto cuando el valor de $language es vacío.
3 comentarios
¡Muy muy interesante! Tengo que lograr aplicar algo así en mi Framework. ¡Qué grande es ZF!
Hola, me podrías ayudar? Cómo podría aplicarlo en una estructura modular? Cuando la url es midominio.com/fr/admin me da error ‘Invalid controller specified (fr)’! Admin es un modulo. Gracias.
pues depende de como tengas montado el bootstrap y los routers.
si quieres nos lo puedes enviar a iuttu@iuttu.com