Internacionalización en Symfony: ¿cómo implementarlo en tu proyecto?

Despliegue en servidores web

Introducción

Symfony es uno de los frameworks de PHP más populares entre los desarrolladores. Una de las ventajas de trabajar con Symfony es su capacidad para trabajar con aplicaciones internacionales. Lo que significa que el framework te permite desarrollar una aplicación en múltiples idiomas. En este artículo, vamos a profundizar en el concepto de internacionalización y cómo implementarlo en tu proyecto Symfony.

¿Qué es Internacionalización?

La internacionalización, también conocida como i18n, es el proceso de adaptar una aplicación a diferentes idiomas o regiones sin necesidad de cambiar el código fuente. Este proceso se logra a través de la traducción del contenido a diferentes idiomas, el cambio de formatos de tiempo y fechas, etc. En el desarrollo web moderno, la internacionalización se ha vuelto más importante debido a la naturaleza global del mundo empresarial actual. Una aplicación que admite varios idiomas es vital para la mayoría de los negocios.

Implementación de la internacionalización en Symfony

La internacionalización en Symfony se logra mediante el uso de la biblioteca Translation. Translation proporciona herramientas para traducir cadenas de caracteres en diferentes idiomas. Antes de comenzar la implementación, debes digitar los siguientes comandos de Symfony para establecer la configuración:
  • composer require symfony/translation

  • php bin/console cache:clear

Una vez que estés listo, lo siguiente es habilitar la biblioteca Translation en tu archivo config/services.yaml:

services:

translation.loader.yml:

  • class: SymfonyComponentTranslationLoaderYamlFileLoader

  • tags: [{ name: translation.loader, alias: yaml }]

Luego, configura el idioma predeterminado de la aplicación y los idiomas admitidos en config/packages/translation.yaml:

default_locale: 'en'

fallbacks:

'en'

'fr'

A continuación, debes crear un directorio llamado translations en la raíz de tu proyecto y agregar los archivos de traducción. En el archivo app/Resources/translations/messages.en.yaml, se definen las cadenas de caracteres que se deben traducir en inglés:

site.name: 'My symfony site'

message: 'Hello, World!'

En el archivo app/Resources/translations/messages.fr.yaml, se definen las mismas cadenas de caracteres en francés:

site.name: 'Mon site symfony'

message: 'Bonjour le monde!'

Cuando necesites utilizar una cadena de caracteres traducida en tu aplicación, utiliza el siguiente código para buscar la traducción en la tabla de traducción:

$translator->trans('site.name')

Esto producirá la salida 'My symfony site' en inglés o 'Mon site symfony' en francés según el idioma predeterminado de la aplicación.

Implementando la traducción en Twig

Twig, el motor de plantillas utilizado en Symfony, es compatible con Translation. Puedes utilizar la etiqueta trans para traducir cadenas de caracteres en tus plantillas. En el siguiente ejemplo, se utiliza la etiqueta trans para imprimir la cadena de caracteres traducida 'site.name' en la plantilla:

{% trans %}site.name{% endtrans %}

Cambios de formato de fecha y hora

La biblioteca Translation también admite la traducción de fecha y hora, lo que resulta muy útil al ofrecer soporte para diferentes zonas horarias. Para cambiar el formato de fecha y hora, debes crear un archivo denominado app/Resources/translations/validators.en.yaml y, a continuación, adicionar lo siguiente:

time.after: 'This time should be {{ compared_value }} or later.'

Debes remplazar compared_value por lo que quieras comparar. Después de guardarlo, puedes start Traducción para el formateador de fecha y hora de Symfony:

translator:

  • class: SymfonyBundleFrameworkBundleTranslationTranslator

  • arguments:

  • [-'%default_locale%', -'@translation.loader']

Conclusión

En resumen, la internacionalización en Symfony es fácil de implementar gracias a la biblioteca Translation. La configuración de la traducción en Symfony puede llevar algo de tiempo, pero la capacidad de llegar a una audiencia global es vital para la mayoría de los negocios. Esperamos que este artículo te haya ayudado a comprender mejor cómo implementar la internacionalización en Symfony.