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
- Desactivar la traducción automática: Primero, asegúrese de que la traducción automática esté desactivada.
- Crear un modelo de traducción: use el comando sonata:extra:translation-create-template para generar archivos de traducción.
- Traducir el contenido: Envíe el contenido de
payloadArray.txtal servicio de traducción seleccionado o a un traductor profesional. Rellene el contenido traducido en payloadArray_translated.json. - 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.
- 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 :
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.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.field_content_translation.txt: Después de haber traducido el contenido enfield_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:
- 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.
- 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.
- Reinsertar el texto traducido: Una vez traducido, el nuevo texto se inserta en field_content_translation.txt.
- 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.
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.