Hablemos de su proyecto
Partitech Sonata Extra Bundle

Sonata Extra Bundle: crear un modelo de traducción en línea de comandos

Vista previa PartitechSonataExtraBundle proporciona una manera práctica de gestionar las traducciones en Sonata Admin. Este bundle incluye dos comandos principales: sonata:extra:translation-create-template y sonata:extra:translation-import-template. Estos ...

Contrôles de compatibilité Symfony et Sonata

Vista previa

PartitechSonataExtraBundle proporciona una manera práctica de gestionar las traducciones en Sonata Admin. Este bundle incluye dos comandos principales: sonata:extra:translation-create-template y sonata:extra:translation-import-template. Estos comandos facilitan la creación e importación de traducciones, optimizando el proceso e integrándose con un servicio de traducción externo.

Pedidos

Pedido sonata:extra:translation-create-template

Descripción

Este comando prepara su contenido para la traducción. Crea una estructura de directorios con archivos que contienen el texto a traducir.

Uso

bin/console sonata:extra:translation-create-template --site=[SITE_ID] --reference-site=[REFERENCE_SITE_ID] --service="[ADMIN_SERVICE]"

  • --site: El ID del sitio para el cual se deben crear las traducciones.
  • --reference-site: El identificador del sitio de referencia.
  • --service: El servicio de administración para el cual se necesitan traducciones.

salida

El comando genera un conjunto de directorios y archivos en var/cache/translation/YourService/. Para cada identificador de artículo, encontrará archivos como:

  • payloadArray.txt: Contiene frases para traducir.
  • payloadArray_translated.json: Para almacenar el contenido traducido.
  • Otros archivos para manejar el contenido estructurado como HTML.

Pedido sonata:extra:translation-import-template

Descripción

Este comando importa el contenido traducido en su base de datos, reconstruyendo la estructura HTML.

Uso

Después de haber traducido el contenido, ejecute:

bin/console sonata:extra:translation-import-template --service="[ADMIN_SERVICE]"

Resumen del proceso

  1. Desactivar la traducción automática: Primero, asegúrese de que la traducción automática esté desactivada.
  2. Crear un modelo de traducción: use el comando sonata:extra:translation-create-template para generar archivos de traducción.
  3. Traducir el contenido: Envíe el contenido de payloadArray.txt al servicio de traducción seleccionado o a un traductor profesional. Rellene el contenido traducido en payloadArray_translated.json.
  4. Gestionar el contenido estructurado: para los campos HTML, use field_content_payload.txt para la traducción y actualice field_content_translation.txt en consecuencia.
  5. Importar traducciones: Ejecute el comando sonata:extra:translation-import-template para actualizar su contenido con las nuevas traducciones.

Ejemplo

# Creating translation templates
bin/console sonata:extra:translation-create-template --site=5 --reference-site=2 --service="Partitech\SonataExtra\Admin\ArticleAdmin"

# Importing translated content
bin/console sonata:extra:translation-import-template --service="Partitech\SonataExtra\Admin\ArticleAdmin"

Gestionar el contenido estructurado como el HTML

Cuando se trata de traducciones para campos de texto que contienen contenido estructurado (por ejemplo, HTML), el PartitechSonataExtraBundle proporciona un método sofisticado para asegurarse de que se conserve la estructura y el formato. Esto es particularmente importante para contenido que incluye etiquetas HTML, fragmentos de código, imágenes y otros medios integrados.

Comprender la estructura de los archivos

El comando sonata:extra:translation-create-template genera varios archivos para ayudar en este proceso :

  1. field_content_code_blocks.json: Este archivo contiene «bloques de código» o secciones del contenido HTML que no deben ser traducidas. Esto puede incluir fragmentos de código reales, medios integrados u otros elementos no textuales en su contenido HTML.
  2. field_content_payload.txt: Este archivo incluye el texto de su contenido HTML que necesita traducción. Antes de crear este archivo, el paquete extrae los elementos no traducibles (como los que están en field_content_code_blocks.json) y los reemplaza por marcadores de posición. Esta extracción garantiza que solo se traduzca el texto necesario, optimizando tanto la calidad como el costo de la traducción.
  3. field_content_translation.txt: Después de haber traducido el contenido en field_content_payload.txt, el texto traducido debe colocarse en este archivo.

El proceso de traducción

Aquí hay una vista detallada de cómo funciona el proceso de traducción para el contenido estructurado:

  1. Extraer los elementos no traducibles: El paquete identifica y extrae las partes del contenido HTML que no necesitan ser traducidas (por ejemplo, los bloques de código, las imágenes) y las almacena en field_content_code_blocks.json. Estos elementos se reemplazan por marcadores de posición en el texto HTML.
  2. El contenido textual a traducir, ahora libre de elementos no textuales, se encuentra en field_content_payload.txt. Este texto debe ser sometido a traducción.
  3. Reinsertar el texto traducido: Una vez traducido, el nuevo texto se inserta en field_content_translation.txt.
  4. Reconstruir el contenido HTML: Durante el proceso de importación (sonata:extra:translation-import-template), el paquete vuelve a ensamblar el contenido HTML. Combina el texto traducido de field_content_translation.txt con los elementos no traducibles de field_content_code_blocks.json, reemplazando los marcadores de posición por su contenido original.

Conclusión

Esta funcionalidad simplifica el proceso de traducción en Sonata Admin, integrándose perfectamente con las herramientas de traducción externas y garantizando una gestión eficiente del contenido.

Controles de compatibilidad de Symfony y Sonata

Adaptar el ejemplo a la versión instalada

Los ejemplos de Symfony y Sonata permanecen ligados a las versiones indicadas en el artículo. Symfony 4.x y Symfony 6.2 ya no se mantienen: para un proyecto actual, utilice una rama mantenida y la documentación que corresponda exactamente a sus dependencias.

php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle

Antes de retomar el código, controle las firmas, los servicios, las rutas y las plantillas correspondientes. Después, agregue una prueba funcional que cubra los permisos, el código HTTP y el resultado visible.

Referencia: versiones de Symfony mantenidas.

Compartir este artículo