CodeIgniter 4 – Tratamiento de los idiomas
Veamos cómo configurar y aplicar diversos idiomas en CodeIgniter. En CodeIgniter 4 cambia mucho respecto al anterior versión.
Aquí tenéis todos los ficheros necesarios para poner en marcha los idiomas:
Ficheros de idiomas en CodeIgniter 4
Los ficheros que debemos crear deben estar dentro de:
/app /Language /es app.php error.php [masficheros].php /en app.php error.php [masficheros].php
Lo importante, son las carpetas llamadas es/ en/ … que son las que indican el idioma.
Fichero de configuración
Para configurar los idiomas disponibles y cuál es el idioma por defecto, lo haremos en el fichero:
/app/Config/App.php
Deberemos indicar el idioma por defecto:
public $defaultLocale = 'es';
También indicaremos qué idiomas hay disponibles
public $supportedLocales = ['en', 'es', 'fr-FR'];
Indicaremos que la aplicación detecte el idioma del navegador por defecto. Atentos, que si queréis tener el control del idioma a mostrar, por ejemplo pasándolo por el link, mejor dejarlo en false.
public $negotiateLocale = true;
Y para acabar, si queréis aún más concreto, podemos señalar nuestra TimeZone para el tema de horas:
public $appTimezone = 'Europe/Madrid';
Pasamos idioma por el link
Podemos pasar el idioma por el link de forma visual. Por ejemplo:
https://miweb.com/es/books https://miweb.com/en/books
Si os fijáis, pasamos es o en en la raiz. De este modo, CodeIgniter cogerá automáticamente el idioma que le corresponda. Pero antes, debemos configurarlo en el Routes de la aplicación:
/app/Config/Routes.php
Demos añadir las rutas posibles, indicando que delante se le puede pasar el idioma:
$routes->get('{locale}/books', 'App\Books::index');
Formato ficheros de idiomas
Los ficheros de idiomas, que anteriormente hemos dicho que hay que crear en su carpeta correspondiente es/ en/… deben tener el siguiente formato. Hacemos un return de los literales
/* Castellano */
/* app/Language/es/error.php */
return [
'errorEmailMissing' => 'Debe indicar su email',
'errorURLMissing' => 'Debe idnicar un Link',
'errorUsernameMissing' => 'Debe añadir un nombre',
'nested' => [
'error' => [
'message' => 'Error especídifco',
],
],
];
/* English */
/* app/Language/en/error.php */
return [
'errorEmailMissing' => 'You must submit an email address',
'errorURLMissing' => 'You must submit a URL',
'errorUsernameMissing' => 'You must submit a username',
'nested' => [
'error' => [
'message' => 'A specific error message',
],
],
];
Acceder a los literales
Ya tenemos los literales. Ahora, desde nuestra vista, podemos acceder a ellos de la siguiente manera:
echo lang('Errors.errorEmailMissing');
Con esto, ya os debería funcionar el tratamiento de idiomas en CodeIgniter 4.
Espero que os haya sido de utilidad el artículo y tengáis un esquema de cómo tratar los lenguages en CodeIgniter 4.
Más información