Módulo de traducción

Nota

El módulo Translation utiliza la clase estática TranslatorManager para gestionar las traducciones.

Estructura del módulo

Las traducciones se agrupan por dominio, dentro de una localidad :

En el directorio raíz de la traducción (por defecto app/translations):

  • Cada configuración regional corresponde a una subcarpeta.

  • Para cada configuración regional, en una subcarpeta, un dominio corresponde a un archivo php

translations
      en_EN
           messages.php
           blog.php
      fr_FR
            messages.php
            blog.php
  • cada archivo de dominio contiene una matriz asociativa de traducciones clave->valor de traducción

  • Cada clave puede asociarse a
    • una traducción

    • una traducción que contenga variables (entre % y %)

    • una matriz de traducciones para manejar la pluralización

app/translations/en_EN/messages.php
return [
     'okayBtn'=>'Okay',
     'cancelBtn'=>'Cancel',
     'deleteMessage'=>['No message to delete!','1 message to delete.','%count% messages to delete.']
];

Inicio del módulo

El arranque del módulo se realiza lógicamente en el archivo services.php.

app/config/services.php
1Ubiquity\cache\CacheManager::startProd($config);
2Ubiquity\translation\TranslatorManager::start();

Sin parámetros, la llamada al método start utiliza la configuración regional en_EN, sin configuración regional alternativa.

Importante

El módulo de traducciones debe iniciarse después de que se haya iniciado la caché.

Configuración regional

Cambiar la configuración regional cuando se inicia el administrador

app/config/services.php
1Ubiquity\cache\CacheManager::startProd($config);
2Ubiquity\translation\TranslatorManager::start('fr_FR');

Cambiar la configuración regional después de cargar el administrador:

TranslatorManager::setLocale('fr_FR');

Configuración regional alternativa

Se utilizará la configuración regional en_EN si no se encuentra es_ES:

app/config/services.php
1Ubiquity\cache\CacheManager::startProd($config);
2Ubiquity\translation\TranslatorManager::start('fr_FR','en_EN');

Definición del directorio raíz de las traducciones

Si falta el parámetro rootDir, el directorio utilizado por defecto es app/translations.

app/config/services.php
1Ubiquity\cache\CacheManager::startProd($config);
2Ubiquity\translation\TranslatorManager::start('fr_FR','en_EN','myTranslations');

Hacer una traducción

Con php

Traducción de la tecla okayBtn a la configuración regional por defecto (especificada al iniciar el gestor):

$okBtnCaption=TranslatorManager::trans('okayBtn');

Sin parámetros, la llamada al método trans utiliza la configuración regional por defecto, el dominio messages.

Traducción de la clave message mediante una variable:

$okBtnCaption=TranslatorManager::trans('message',['user'=>$user]);

En este caso, el archivo de traducción debe contener una referencia a la variable user para la clave message:

app/translations/en_EN/messages.php
['message'=>'Hello %user%!',...];

En vistas de twig:

Traducción de la tecla okayBtn a la configuración regional por defecto (especificada al iniciar el gestor):

{{ t('okayBtn') }}

Traducción de la clave message mediante una variable:

{{ t('message',parameters) }}