Layout Builder Asymmetric Translation

Permite anulaciones de diseño asimétricas (diferentes) para cada traducción de entidades de contenido utilizando Layout Builder.

layout_builder_at
5,572 sites
41
drupal.org

Instalar

Drupal 11, 10 v3.0.1
composer require 'drupal/layout_builder_at:^3.0'
Drupal 9 v8.x-2.15
composer require 'drupal/layout_builder_at:8.x-2.15'

Overview

Layout Builder Asymmetric Translation permite configurar diferentes diseños y bloques para distintas traducciones de idioma en elementos de contenido que utilizan anulaciones de Layout Builder. Esto resuelve el desafío multilingüe común donde diferentes idiomas necesitan diferentes disposiciones de diseño.

Por ejemplo, si un nodo de Artículo necesita mostrar dos bloques adicionales que no están presentes en otros nodos de Artículo, la traducción en inglés puede mostrar el Bloque A a la izquierda y el Bloque B a la derecha, mientras que la traducción en alemán puede mostrarlos en orden inverso: el Bloque A a la derecha y el Bloque B a la izquierda.

El módulo funciona haciendo traducible el campo de sección de diseño. Cuando Layout Builder está habilitado en una visualización de entidad, el módulo automáticamente hace traducible el campo layout_builder__layout. Esto permite que cada traducción mantenga su propio conjunto independiente de secciones y bloques.

El módulo también proporciona un widget de campo que opcionalmente puede copiar bloques desde la traducción de origen al crear una nueva traducción, permitiendo a los editores comenzar con el mismo diseño y luego modificarlo según sea necesario para el idioma de destino.

Features

  • Permite diferentes diseños y disposiciones de bloques de Layout Builder para cada traducción de idioma de una entidad de contenido
  • Hace automáticamente traducible el campo layout_builder__layout cuando Layout Builder está habilitado en un tipo de entidad
  • Hace traducibles los campos de sección de diseño existentes al instalar el módulo
  • Proporciona una casilla de verificación 'Copiar bloques a la traducción' que aparece al crear nuevas traducciones
  • Tres modos de apariencia del widget: desmarcado (predeterminado), marcado, o marcado y oculto para copia automática
  • Los bloques inline agregados a los diseños heredan automáticamente el idioma de la entidad a la que están adjuntos
  • Maneja correctamente las dependencias de bloques inline con el contexto de traducción apropiado
  • Limpia los datos de tempstore específicos de la traducción cuando se elimina una traducción
  • Soporta campos Entity Reference Revisions dentro de bloques inline durante la replicación
  • Elimina la advertencia de campo no traducible de Layout Builder de la tabla de configuración de idioma de contenido

Use Cases

Diferentes bloques promocionales por idioma

Un sitio web de marketing necesita mostrar diferentes banners promocionales y bloques de llamada a la acción para audiencias en inglés y alemán. Con este módulo, la versión en inglés puede mostrar un banner de 'Ofertas de Verano' en la barra lateral derecha mientras la versión en alemán muestra un banner de 'Sommerschlussverkauf' en la barra lateral izquierda con diferentes imágenes.

Ordenamiento de contenido específico por idioma

Un sitio de noticias muestra artículos relacionados de manera diferente según la dirección de lectura. El diseño en inglés muestra artículos relacionados en el lado derecho, mientras que la traducción al árabe los muestra en el lado izquierdo para acomodar los patrones de lectura de derecha a izquierda.

Bloques específicos por región

Un sitio de comercio electrónico necesita mostrar bloques de proveedores de pago que varían por región/idioma. La versión en inglés de EE.UU. muestra bloques de PayPal y tarjeta de crédito, mientras que la versión en alemán muestra bloques de Klarna y débito directo SEPA en diferentes posiciones.

Iniciar traducciones desde diseños existentes

Al crear una traducción al francés de una página con un diseño complejo, los editores pueden marcar 'Copiar bloques a la traducción' para duplicar todos los bloques existentes y sus posiciones, luego modificar solo lo necesario para la audiencia francesa en lugar de reconstruir desde cero.

Flujo de trabajo de copia automática de bloques

Configure el widget como 'Marcado y oculto' para tipos de contenido donde las traducciones siempre deben comenzar con el mismo diseño que el idioma de origen, agilizando el flujo de trabajo de traducción al copiar automáticamente todos los bloques.

Tips

  • Use la configuración de widget 'Marcado y oculto' para tipos de contenido donde siempre quiera que los bloques se copien automáticamente a nuevas traducciones
  • Al copiar bloques, el contenido de bloques inline se duplica completamente, creando copias independientes que pueden editarse por separado por traducción
  • El módulo hace automáticamente traducibles los campos de diseño existentes al instalarse, por lo que no necesita recrear campos
  • Los campos Entity Reference Revisions (como Paragraphs) dentro de bloques inline también se duplican correctamente al copiar bloques
  • Después de instalar el módulo, recuerde habilitar la traducción para el campo Layout en la configuración de Idioma del contenido para cada tipo de entidad

Technical Details

Admin Pages 1
Idioma del contenido y traducción /admin/config/regional/content-language

Habilite la traducción para el campo de diseño de Layout Builder en sus tipos de entidad. Esta es una página de Drupal core donde configura qué campos deben ser traducibles por tipo de entidad.

Hooks 9
hook_module_implements_alter

Elimina la implementación form_entity_form_display_edit_form_alter de Layout Builder para reemplazarla con la propia implementación del módulo que permite configurar el campo de diseño en la visualización del formulario cuando es traducible.

hook_theme_registry_alter

Elimina la función de preproceso de Layout Builder para language_content_settings_table para eliminar el mensaje de advertencia 'No traducible' ya que este módulo hace traducibles los campos de diseño.

hook_form_entity_form_display_edit_form_alter

Modifica el formulario de edición de visualización de formulario de entidad para mostrar la configuración del campo de diseño cuando es traducible, y agrega validación para evitar seleccionar el Widget de Layout Builder predeterminado.

hook_form_alter

Modifica los formularios de entidad para mostrar la casilla 'Copiar bloques a la traducción' con la etiqueta apropiada cuando la bandera layout_builder_at_access está establecida en el widget.

hook_layout_builder_section_storage_alter

Reemplaza la clase OverridesSectionStorage del core con TranslatableOverridesSectionStorage para permitir el acceso a la pestaña Layout en traducciones.

hook_field_storage_config_presave

Hace traducibles los campos layout_section cuando se guardan. Esto habilita traducciones asimétricas para anulaciones de Layout Builder.

hook_form_layout_builder_add_block_alter

Establece el idioma predeterminado de los bloques inline para que coincida con el idioma de la entidad al agregar bloques vía Layout Builder. Este comportamiento puede deshabilitarse vía settings.php.

hook_entity_translation_delete

Limpia el tempstore de Layout Builder cuando se elimina una traducción de entidad, eliminando cualquier cambio de diseño no guardado para esa traducción.

hook_install

Hace traducibles todos los campos layout_section existentes cuando se instala el módulo (excepto durante la sincronización de configuración).

Troubleshooting 5
La pestaña Layout no es accesible en contenido traducido

Asegúrese de que el campo layout_builder__layout esté habilitado para traducción en Administración > Configuración > Regional e idioma > Idioma del contenido. Marque la casilla para el campo Layout bajo su tipo de entidad.

La casilla 'Copiar bloques a la traducción' no aparece

Configure la Gestión de visualización del formulario para su tipo de entidad y establezca el campo layout_builder__layout para usar el widget 'Layout Builder Asymmetric Translation' en lugar del widget oculto o predeterminado.

Los bloques inline no obtienen el idioma correcto

Por defecto, los bloques inline heredan el idioma de la entidad. Si no desea este comportamiento, agregue $settings['layout_builder_at_set_content_block_language_to_entity'] = FALSE; a su archivo settings.php.

Error: 'No puede seleccionar el Widget de Layout Builder'

Este error de validación ocurre porque el widget original de Layout Builder no soporta traducciones asimétricas. Seleccione el widget 'Layout Builder Asymmetric Translation' u oculte el campo en la visualización del formulario.

Conflicto del módulo con Layout Builder Symmetric Translations

Estos dos módulos son mutuamente excluyentes y no pueden usarse juntos en el mismo sitio. Elija un enfoque: asimétrico (diferentes diseños por idioma) o simétrico (mismos diseños en todos los idiomas).

Security Notes 2
  • El módulo usa la cobertura de seguridad del core de Drupal y sigue los patrones de acceso de entidades de Drupal
  • La copia de bloques respeta los permisos de acceso de entidades - los usuarios necesitan los permisos apropiados para crear y editar bloques personalizados