Nuevo en Symfony 3.4: Añadido soporte para las notas de XLIFF 2.0

El componente Translation soporta un montón de formatos para los archivos que traducen aplicaciones (YAML, JSON, Qt, CSV, PO/MO, etc.) pero recomienda oficialmente el uso del formato XLIFF. Symfony implementa solo una parte del estándar XLIFF, pero en Symfony 3.4 lo hemos mejorado añadiendo soporte para las notas XLIFF.

Según la especificación XLIFF 2.0, las notas son "una colección de comentarios que almacenan información y anotaciones para los usuarios". Son útiles por ejemplo para guardar metadatos que indiquen el estado de una traducción:

<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0"
       srcLang="es-ES" trgLang="en-US">
  <file id="messages.en_US">
    <unit id="LCa0a2j">
      <notes>
        <note category="state">new</note>
        <note category="approved">true</note>
        <note category="section" priority="1">user login</note>
      </notes>
      <segment>
        <source>original-content</source>
        <target>translated-content</target>
      </segment>
    </unit>
  </file>
</xliff>

A partir de Symfony 3.4, estas notas se cargan automáticamente desde los archivos XLIFF y se vuelven a guardar cuando se escriben los archivos XLIFF. Esto asegura una mayor compatibilidad con las herramientas de traducción profesionales que utilices para manejar esos archivos XLIFF.

Si utilizas el componente Translation de manera independiente al framework, entonces debes llamar al método setMetadata() del catálogo de traducción y pasar las notas como arrays. Este es por ejemplo el código PHP necesario para crear el archivo XLIFF mostrado anteriomente:

$catalogue = new MessageCatalogue('en_US');
$catalogue->add([
    'original-content' => 'translated-content',
]);
$catalogue->setMetadata('original-content', ['notes' => [
    ['category' => 'state', 'content' => 'new'],
    ['category' => 'approved', 'content' => 'true'],
    ['category' => 'section', 'content' => 'user login', 'priority' => '1'],
]]);
 
$dumper = new XliffFileDumper();
$dumper->formatCatalogue($catalogue, 'messages', [
    'default_locale' => 'es-ES',
    'xliff_version' => '2.0'
]);

Esta funcionalidad fue añadida por Tobias Nyholm en los Pull Requests #23890 y #23947.

Fuente: New in Symfony 3.4: Added support for XLIFF 2.0 notes

Comentarios

Publicada el

8 de septiembre de 2017

Etiquetas

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.