Estender
EstenderTraduzir elementos Bricks adicionais

Traduzir elementos Bricks adicionais

Gato AI Translations for Polylang pode traduzir páginas e templates Bricks baseados em elementos.

O plugin já inclui suporte para todos os elementos fornecidos pelo Bricks. Para elementos Bricks personalizados ou de terceiros, você pode estender o suporte à tradução via hooks PHP.

Traduzindo strings

Para declarar propriedades traduzíveis adicionais em um elemento Bricks, use o filtro gatompl:bricks_element_type_translatable_properties.

O filtro recebe um mapa [elementName => properties]. A entrada properties pode conter:

  • Nomes de controles simples — ex.: 'separatorText'
  • Caminhos com ponto — ex.: 'home.text' (corresponde a settings.home.text)
  • Campos de repeater — declarados como um sub-array [repeaterName => [...subFields]]

Esses elementos podem ser combinados livremente e o aninhamento pode ter qualquer profundidade.

Por exemplo, este hook torna:

  • O controle simples separatorText e o caminho home.text traduzíveis no elemento breadcrumbs
  • O subcampo title do repeater traduzível dentro do repeater items do 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
);

O mesmo filtro funciona tanto para controles simples quanto para campos de repeater — não existe um hook separado para repeaters.

Traduzindo referências a entidades

Uma propriedade pode armazenar o ID de uma entidade (um post, termo de taxonomia, item de mídia ou menu) que deve ser remapeado para a entidade correspondente no idioma de destino no momento da tradução. Use o filtro adequado:

Tipo de referênciaFiltro
Custom posts e mídiagatompl:bricks_element_type_custompost_and_media_reference_properties
Termos de taxonomiagatompl:bricks_element_type_taxonomy_term_reference_properties
Menus por IDgatompl:bricks_element_type_menu_reference_by_id_properties
Menus por sluggatompl:bricks_element_type_menu_reference_by_slug_properties

A estrutura é a mesma do filtro de propriedades traduzíveis — nomes simples, caminhos com ponto ou sub-arrays para repeaters.

// 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;
    }
);

Descobrindo nomes de elementos e propriedades

Execute a query GraphQL Translate custom posts e inspecione o campo bricksData na resposta. Cada elemento expõe seu name e sua árvore de settings — é lá que você encontrará os nomes das propriedades (incluindo caminhos aninhados com ponto e campos de repeater) que precisam ser passados aos hooks acima.

Inspecionando bricksData na resposta GraphQL do Translate custom posts
Inspecionando bricksData na resposta GraphQL do Translate custom posts

Consulte o guia Recuperando dados do page builder para traduzir para saber como executar essa query.

Onde encontrar exemplos

As próprias integrações do plugin são uma referência útil. Explore este arquivo dentro do plugin instalado:

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