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:
    translation:
        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

Publicada el

26 de marzo de 2020

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.