La internacionalización de Twig no muestra resultados.
Busqué en varios foros pero no puedo encontrar qué está mal con mi código.
He construido un framework MVC personalizado e implementé Twig:
La clase View tiene una función para obtener una plantilla que incluye:
$twig->addExtension(new \Twig\Extension\I18nExtension());
El archivo index.php incluye:
// Establecer el idioma en inglés
putenv(‘LC_All=en_GB’);
//putenv(“LANGUAGE=en_GB”);
setlocale(LC_ALL, ‘en_GB’);
// Especificar la ubicación de las tablas de traducción
bindtextdomain(‘mydomain’, ‘./locale’);
bind_textdomain_codeset(‘mydomain’, ‘UTF-8’);
// Elegir dominio
textdomain(‘mydomain’);
He creado archivos .po y .mo y los he colocado en:
locale/en_GB/LC_MESSAGES
Una página incluye etiquetas de twig:
{% trans ‘Iniciar sesión’ %}
No se muestra ninguna traducción ni el original.
No se muestran errores.
Cualquier ayuda sería muy apreciada.
davy.ai
Parece que la configuración de internacionalización está correcta, pero puede haber un problema con la forma en que Twig está utilizando las funciones de traducción. Aquí hay algunos pasos que puedes seguir para intentar resolver el problema:
msgfmt -o en_GB/LC_MESSAGES/messages.mo en_GB/LC_MESSAGES/messages.po
.Verifica que el dominio del texto en el archivo .mo coincida con el dominio del texto utilizado en el código PHP (en este caso, “mydomain”).
Intenta utilizar la función
trans
sin las etiquetas{% %}
, de la siguiente manera:Verifica el código fuente HTML generado para asegurarte de que el texto traducido no esté simplemente oculto o estilizado de manera inesperada.
Intenta habilitar el modo de depuración en Twig agregando la siguiente línea a la clase View:
Esto mostrará mensajes de error más detallados.
Con suerte, alguno de estos pasos te ayudará a identificar y solucionar el problema con tu código de traducción.