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
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.
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
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:
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
.
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:
['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) }}