Traducciones en modulos — guia completa
Actualizado: 2024-12-01
PrestaShop tiene dos sistemas de traduccion. Los modulos modernos (PS 8+) usan trans() con archivos XLIFF. Los modulos legacy usan l() con archivos PHP. Es posible soportar ambos simultaneamente detectando el sistema activo.
#Detectar el sistema de traducciones
Usar el sistema correcto segun la version de PS
php
<?php
// isUsingNewTranslationSystem() devuelve true si:
// - PS version >= 1.7.6
// - Existe el directorio translations/ con archivos .xlf
if ($this->isUsingNewTranslationSystem()) {
$text = $this->trans('Guardar', [], 'Admin.Actions');
} else {
$text = $this->l('Guardar');
}
// Para forzar el sistema moderno (PS 8+):
// Crear directorio translations/ con al menos un .xlf vacio
// (PS detecta la presencia del directorio)
#Sistema moderno: trans() + XLIFF
Usar trans() con dominios en el modulo
php
<?php
// En PHP (modulo, controlador, servicio)
$text = $this->trans('Guardar configuracion', [], 'Modules.Mymodule.Admin');
$text = $this->trans('Añadir al carrito', [], 'Modules.Mymodule.Shop');
$text = $this->trans('Error al conectar', [], 'Modules.Mymodule.Error');
// Con parametros
$text = $this->trans(
'Hola %name%, tienes %count% pedidos.',
['%name%' => $firstname, '%count%' => $count],
'Modules.Mymodule.Shop'
);
// En Twig (BO)
// {{ 'Guardar'|trans({}, 'Admin.Actions') }}
// En Smarty (FO, sistema legacy aun dominante)
// {l s='Guardar' mod='mymodule'}
#Sistema legacy: l() + archivos .php
Crear archivo de traduccion legacy
php
<?php
// Archivo: modules/mymodule/translations/es.php
global $_MODULE;
$_MODULE = [];
$_MODULE['<{mymodule}prestashop>mymodule_abc123'] = 'Guardar configuracion';
$_MODULE['<{mymodule}prestashop>mymodule_def456'] = 'Error al guardar';
// En el modulo:
$text = $this->l('Save configuration'); // Busca la clave en el archivo de idioma
// La clave es el hash MD5 de 'Save configuration' en el contexto del modulo
#Checklist para soporte multilingue
| Punto | Verificacion |
|---|---|
| PHP strings | Todas las strings en trans() o l() |
| Templates Smarty | Todas las strings en {l s='' mod=''} |
| Templates Twig | Todas las strings con |trans({}, 'Dominio') |
| Emails | Plantillas HTML+TXT en mails/{iso}/ |
| Formularios | Labels y hints en trans() |
| Mensajes de error | En trans() con dominio Error |
| Nombres en BO | getTabNames() por idioma |
| Archivos .xlf | Creados con bin/console extract o manualmente |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.