Extender
ExtenderTraducir elementos de Bricks adicionales

Traducir elementos de Bricks adicionales

Gato AI Translations for Polylang puede traducir páginas y plantillas de Bricks basadas en elementos.

El plugin trae soporte para todos los elementos proporcionados por Bricks. Para elementos de Bricks personalizados o de terceros, puedes ampliar el soporte de traducción mediante hooks de PHP.

Traducir cadenas

Para declarar propiedades traducibles adicionales en un elemento de Bricks, utiliza el filtro gatompl:bricks_element_type_translatable_properties.

El filtro recibe un mapa [elementName => properties]. La entrada properties puede contener:

  • Nombres de controles planos: p. ej., 'separatorText'
  • Rutas con puntos: p. ej., 'home.text' (que se traduce como settings.home.text)
  • Campos de repetidor: declarados como un subarray [repeaterName => [...subFields]]

Estos se mezclan libremente, y el anidamiento puede llegar a cualquier profundidad.

Por ejemplo, este hook hace que:

  • El control plano separatorText y la ruta home.text sean traducibles en el elemento breadcrumbs
  • El subcampo title del repetidor sea traducible dentro del repetidor items del elemento team-members
add_filter(
    'gatompl:bricks_element_type_translatable_properties',
    static function (array $translatableProperties): array {
        $translatableProperties['breadcrumbs'][] = 'separatorText';
        $translatableProperties['breadcrumbs'][] = 'home.text';
        $translatableProperties['team-members']['items'][] = 'title';
        return $translatableProperties;
    },
    10,
    1
);

El mismo filtro funciona tanto para controles simples como para campos de repetidor: no hay un hook independiente para los repetidores.

Traducir referencias a entidades

Una propiedad puede almacenar un ID de entidad (una entrada, término de taxonomía, elemento multimedia o menú) que debe reasignarse a la entidad correspondiente en el idioma de destino en el momento de la traducción. Utiliza el filtro adecuado:

Tipo de referenciaFiltro
Custom posts y multimediagatompl:bricks_element_type_custompost_and_media_reference_properties
Términos de taxonomíagatompl:bricks_element_type_taxonomy_term_reference_properties
Menús por IDgatompl:bricks_element_type_menu_reference_by_id_properties
Menús por sluggatompl:bricks_element_type_menu_reference_by_slug_properties

La forma es la misma que la del filtro de propiedades traducibles: nombres planos, rutas con puntos o subarrays para repetidores.

// Custom post / media reference
add_filter(
    'gatompl:bricks_element_type_custompost_and_media_reference_properties',
    static function (array $properties): array {
        $properties['featured-post'][] = 'post_id';
        $properties['gallery']['items'][] = 'image_id';
        return $properties;
    }
);
 
// Taxonomy term reference
add_filter(
    'gatompl:bricks_element_type_taxonomy_term_reference_properties',
    static function (array $properties): array {
        $properties['related-category'][] = 'category_id';
        return $properties;
    }
);
 
// Menu reference by ID
add_filter(
    'gatompl:bricks_element_type_menu_reference_by_id_properties',
    static function (array $properties): array {
        $properties['menu-picker'][] = 'menu_id';
        return $properties;
    }
);
 
// Menu reference by slug
add_filter(
    'gatompl:bricks_element_type_menu_reference_by_slug_properties',
    static function (array $properties): array {
        $properties['menu-picker'][] = 'menu_slug';
        return $properties;
    }
);

Descubrir nombres de elementos y de propiedades

Ejecuta la consulta GraphQL Translate custom posts e inspecciona el campo bricksData en la respuesta. Cada elemento expone su name y su árbol de settings: ahí encontrarás los nombres de propiedad (incluidas las rutas anidadas con puntos y los campos de repetidor) que necesitas pasar a los hooks anteriores.

Inspeccionando bricksData en la respuesta GraphQL de Translate custom posts
Inspeccionando bricksData en la respuesta GraphQL de Translate custom posts

Consulta la guía Obtener datos del page builder a traducir para saber cómo ejecutar esa consulta.

Dónde encontrar ejemplos

Las propias integraciones del plugin son una referencia útil. Explora este fichero dentro del plugin que has instalado:

  • wp-content/plugins/gato-ai-translations-for-polylang/src/ConditionalOnContext/LicenseIsActive/ConditionalOnModule/Bricks/Constants/ElementTypes.php