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