Nuevo en Symfony 5.1: Mejoras relacionadas con la traducción
Configurar los idiomas disponibles
La mayoría de aplicaciones Symfony solamente está dispone en un idioma o en una lista muy reducida de idiomas. Sin embargo, Symfony genera los archivos de traducción de los mensajes de validación y seguridad en todos los idiomas.
En otras palabras, Symfony genera decenas de (pequeños) archivos de traducción que tu aplicación no usará jamás. En Symfony 5.1 hemos añadido una opción llamada enabled_locales para controlar este comportamiento:
# config/packages/translation.yaml framework: translator: enabled_locales: ['en', 'fr']
En este ejemplo, la aplicación solo está disponible en inglés y francés, por lo que Symfony solo generará esos archivos. Esto hace que el rendimiento mejore un poco.
Esta opción está permitiendo activar otras optimizaciones, como la añadida en
el pull request #35590 (contribuida por Nicolas Grekas) que restringe
los posible valores del parámetro _locale
de las rutas.
Esta funcionalidad fue contribuida por Javier Eguiluz en el pull request #32433.
Mejorado el comando debug:translation
El comando debug:translation permite encontrar las traducciones que faltan o que no se usan en tu aplicación. En Symfony 5.1 hemos mejorado el comando para que devuelva un código de salida diferente en función de los errores.
En las versiones anteriores de Symfony, el comando devolvía por ejemplo 1
cuando había cualquier error. En Symfony 5.1, si faltan traducciones, el código
devuelto es el valor almacenado en TranslationDebugCommand::EXIT_CODE_MISSING
,
si hay traducciones sin usar, se devuelve el valor TranslationDebugCommand::EXIT_CODE_UNUSED
, etc.
También puedes combinar estos valores para comprobar varios errores a la vez:
use Symfony\Bundle\FrameworkBundle\Command\TranslationDebugCommand; if (TranslationDebugCommand::EXIT_CODE_MISSING | TranslationDebugCommand::EXIT_CODE_UNUSED) { // ... hay traducciones que faltan y otras que no se usan }
Esta funcionalidad fue contribuida por Arun Philip en el pull request #29139.
Añadido soporte para el atributo name
en Xliff2
Cuando se usa XLIFF2 para traducir la aplicación, es habitual utilizar el
contenido original como la clave de la traducción. En Symfony 5.1 hemos añadido
soporte para usar en su lugar el atributo name
, si está definido:
<?xml version="1.0" encoding="utf-8"?> <xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en-US"> <file id="f1" original="Graphic Example.psd"> <unit id="1" name="la_clave_de_traduccion"> <segment> <source>El contenido original</source> <target>El contenido traducido</target> </segment> </unit> <!-- ... --> </file> </xliff>
Esta funcionalidad fue contribuida por Baptiste Clavié en el pull request #35373.
Permitir traducir los nombres de los idiomas
En las aplicaciones multiidioma, normalmente la lista de idiomas disponibles se muestra en el idioma actualmente seleccionado. Por ejemplo, si navegas la aplicación en inglés, verás "English, Spanish, Japanse, etc." y si la navegas en francés, verás "anglais, espagnol, japonais, etc."
No obstante, algunas aplicaciones multiidioma prefieren mostrar cada idioma
traducido en su propio idioma. En otras palabras, no importa el idioma actual de
la aplicación, porque siempre verás la misma lista: "English, Español, 日本語, etc."
En Symfony 5.1 hemos añadido la opción choice_self_translation en el campo
de formulario LanguageType
para permitir este comportamiento.
Esta funcionalidad fue contribuida por Javier Eguiluz en el pull request #32388.
Fuente: New in Symfony 5.1: Translation improvements
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.