Librería l18n de CodeIgniter mejorada

En las versiones de CodeIgniter 1.x.x disponíamos de una librería de internacionalización que nos daba la oportunidad de crear una aplicación accesible en diferentes idiomas mediante la extensión /es o /en en la barra de direcciones. El problema es que esa misma extensión no se puede utilizar para las versiones 2.x.x y además, no incluye muchas funciones que cabría esperar de una librería de estas características. Por ello, usando como base las modificaciones implementadas en MegaPublik y Md5 Project, voy a publicar una librería adaptable a cualquier proyecto basado en CodeIgniter 2.x.x.

Logo de CodeIgniterCodeIgniter destaca por su flexibilidad y rapidez. Esto último lo limita en cuanto a características, y una de ellas es la posibilidad de internacionalizar el sistema fácilmente desde la barra de direcciones. No obstante, su flexibilidad le permite que haya desarrolladores como Jérôme Jaglale que han creado una librería muy buena que logra añadir una característica sorprendente y en muchos casos necesaria a nuestra aplicación.

El problema es que por alguna razón, no ha sido actualizada para la versión 2 de CodeIgniter. Por ello, voy a poner a disposición de todos los usuarios de Internet la librería que uso yo en mis dos proyectos principales: MegaPublik y Md5 Project. No solo está adaptada para funcionar con la última versión de CodeIgniter, sino que además he incluido novedosas características que hacen uso de la librería de sesiones para que los visitantes que elijan un idioma sigan con el incluso si abandonan la página y vuelven rato después. (Siempre y cuando lo hagan antes del tiempo de espiración de la sesión)

Dicho esto, comienzo la explicación de la instalación de esta librería. Para empezar, deberemos inicializar la librería de sesiones antes de la aplicación, de manera que la añadiremos a la matriz de arranque automático:

/application/config/autoload.php:

$autoload['libraries'] = array('session');

Si ya tenéis alguna librería en el array, simplemente añadir esta al mismo. Una vez hecho esto, podéis descargar el archivo de la librería que podréis encontrar al final del post y descomprimirlo. Deberéis respetar las rutas de los 3 archivos dentro de la aplicación, como ya viene en el paquete; es decir, el archivo Language.php en /application/hooks (o en la carpeta de tu aplicación si le has cambiado el nombre) y los otros dos en la carpeta core dentro de vuestra carpeta de la aplicación. En estos dos últimos, si habéis modificado el prefijo, deberéis cambiárselo tanto al archivo como a la clase que contiene.

Ahora, deberemos configurar el archivo config.php de manera que quede así:

$config['index_page'] = '';
$config['enable_hooks'] = TRUE;

Ahora, cabe aclarar que para hacer uso de las funciones de idioma es recomendable cargar los helpers language y url. Así podréis cargar un lenguaje y mostrar tanto los enlaces como los textos en diferentes idiomas tal y como se explica aquí.

Para finalizar la instalación deberemos modificar dos archivos más. Uno de ellos será el archivo /application/config/hooks.php:

$hook['post_controller_constructor']    = array(
                    'class'     => '',
                    'function'  => 'language',
                    'filename'  => 'Language.php',
                    'filepath'  => 'hooks'
                );

Si ya tenéis otro hook en [‘post_controller_constructor’], deberéis añadir [] justo despues de esa expresión, y quedará así: [‘post_controller_constructor’][]. Para acabar, deberéis editar el archivo /application/config/routes.php:

// URI like '/en/about' -> use controller 'about'
$route['^es/(.+)

De esta manera, tendréis el sistema adaptado para 3 idiomas: español, inglés y euskera, y podréis eliminar editar y añadir cualquiera existente. Aquí tenéis los archivos a descargar en múltiples formatos:

] = "$1";
$route['^en/(.+)

De esta manera, tendréis el sistema adaptado para 3 idiomas: español, inglés y euskera, y podréis eliminar editar y añadir cualquiera existente. Aquí tenéis los archivos a descargar en múltiples formatos:

] = "$1";
$route['^eu/(.+)

De esta manera, tendréis el sistema adaptado para 3 idiomas: español, inglés y euskera, y podréis eliminar editar y añadir cualquiera existente. Aquí tenéis los archivos a descargar en múltiples formatos:

] = "$1";

// '/en' and '/fr' URIs -> use default controller
$route['^es

De esta manera, tendréis el sistema adaptado para 3 idiomas: español, inglés y euskera, y podréis eliminar editar y añadir cualquiera existente. Aquí tenéis los archivos a descargar en múltiples formatos:

] = $route['default_controller'];
$route['^en

De esta manera, tendréis el sistema adaptado para 3 idiomas: español, inglés y euskera, y podréis eliminar editar y añadir cualquiera existente. Aquí tenéis los archivos a descargar en múltiples formatos:

] = $route['default_controller'];
$route['^eu

De esta manera, tendréis el sistema adaptado para 3 idiomas: español, inglés y euskera, y podréis eliminar editar y añadir cualquiera existente. Aquí tenéis los archivos a descargar en múltiples formatos:

] = $route['default_controller'];

De esta manera, tendréis el sistema adaptado para 3 idiomas: español, inglés y euskera, y podréis eliminar editar y añadir cualquiera existente. Aquí tenéis los archivos a descargar en múltiples formatos:

Comentarios (3)

  1. Jose

    Excelente articulo, gracias a él ya he podido completar la i18n jeje, aunque noto que va muy lento pero meteré algo de performance.

  2. Jose

    Al final he comprobado que el bajo rendimiento es de mi xammp, cuando he subido la version al servidor va mucho mas fluido que en local.Un saludo, 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.