Internacionalización Yii2

Crear una aplicación en la que podamos manejar múltiples lenguajes es fundamental en la época actual, y con esta variante que les explico como vamos a lograr este objetivo.

Pasos para configurar el idioma de nuestro proyecto de Yii2: 

  • Colocar en el frontend/config/main.php:

                'language' => 'es', 

        'sourceLanguage' => 'en',

    Esto se define por aplicación, o sea si estamos trabajando en el backend debemos colocarlo también en el main del backend. 

El primer elemento se refiere al lenguaje en el que vas a estar mostrando la aplicación, y el segundo es el lenguaje en el que se encuentra escrito el código, es recomendable mantenerlo en inglés pues es un lenguaje que maneja la mayoría, por lo tanto a futuro si otra persona tiene que darle mantenimiento a nuestro código lo pueda entender incluso si no es de nuestro país.

  • Colocar en el frontend/config/main.php en components:

     'i18n' => [

    'translations' => [

                   'app' => [

                            'class' => 'yii\i18n\PhpMessageSource',

                                                                                               'basePath' => '@common/messages',

                                                                                               'sourceLanguage' => 'en-US',

                               ],                

                       ],

            ],

Este array nos permite definir donde vamos a colocar el archivo de traducción, esto al igual que lo anterior debemos definirlo por aplicación. En basePath estamos definiendo donde se debe colocar, preferentemente en el common para poder utilizarlo en todos los lugares, es aconsejable crear una carpeta (en este caso messages) para guardar todos los archivos de traducción en los idiomas que estimemos conveniente.

  • Crear archivo de traducción en common/messages/es/app.php

   return [

            'Congratulations!' => 'Felicidades',

            'Get started with Yii' => 'Comencemos con Yii'

        ];

En función de lo que coloquemos en basePath vamos a crear una carpeta en esa dirección y le vamos a colocar el nombre del idioma que queremos según la notación internacional. Ejemplo: es para Español, fr para francés, etc. Dentro de este vamos a crear un archivo app.php donde ahí es que vamos a colocar las traducciones correspondientes tal cual vemos arriba.

  • Colocar el mensaje <?= Yii::t('app', 'Congratulations!') ?>
Siempre debemos encerrar los mensajes de esta forma para que el sistema busque la traducción correspondiente, donde app es el nombre del archivo y de lo que configuramos en el main local.
  • Crear archivo de traducción en common/messages/es/yii.php
Con esto lo que estamos haciendo es crear un segundo archivo de traducción, para los mensajes específicos de Yii2, cuando queremos modificar directamente la traducción porque no nos gusta o el cliente nos pide un cambio directamente. Siempre está la variante de cambiarle en el mensaje del modelo pero de esta forma me parece más rápido.

  • Copiar los archivos del vendor/yiisoft/yii2/messages/es
  • Colocar en el main del frontend en components:

 'i18n' => [

      'translations' => [

                    'app' => [

                                                                                            'class' => 'yii\i18n\PhpMessageSource',

                                                                                            'basePath' => '@common/messages',

                                                                                            'sourceLanguage' => 'en-US',

                             ],

                    'yii' => [

                                                                                            'class' => 'yii\i18n\PhpMessageSource',

                                                                                            'basePath' => '@common/messages',

                                                                                             'sourceLanguage' => 'en-US',

                               ],

                     ],

           ],


Puedes ver el proceso completo en mi canal de YouTube (https://www.youtube.com/watch?v=JwUTXHd468w)





Comentarios

Entradas populares de este blog

AdminLTE3 integración Yii2

RBAC Yii2 utilizando la extensión "yii2mod/yii2-rbac": "*"

Integración AdminLTE2 Yii2