Uitbreiden
UitbreidenExtra Bricks-elementen vertalen

Extra Bricks-elementen vertalen

Gato AI Translations for Polylang kan op elementen gebaseerde Bricks-pagina's en -templates vertalen.

De plugin wordt geleverd met ondersteuning voor alle elementen die door Bricks worden geleverd. Voor aangepaste of externe Bricks-elementen kun je de vertaalondersteuning uitbreiden via PHP-hooks.

Strings vertalen

Gebruik de filter gatompl:bricks_element_type_translatable_properties om extra vertaalbare eigenschappen op een Bricks-element te declareren.

De filter ontvangt een [elementName => properties]-map. Het properties-item kan het volgende bevatten:

  • Eenvoudige controlenamen — bijv. 'separatorText'
  • Dotpaden — bijv. 'home.text' (vertaalt naar settings.home.text)
  • Repeater-velden — gedeclareerd als een sub-array [repeaterName => [...subFields]]

Deze kunnen vrij worden gecombineerd, en nesting kan tot elke diepte gaan.

Deze hook zorgt er bijvoorbeeld voor dat:

  • De eenvoudige control separatorText en het dotpad home.text vertaalbaar zijn op het breadcrumbs-element
  • Het repeater-subveld title vertaalbaar is binnen de items-repeater van het team-members-element
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
);

Dezelfde filter werkt zowel voor eenvoudige controls als voor repeater-velden — er is geen aparte hook voor repeaters.

Entiteitsverwijzingen vertalen

Een eigenschap kan een entiteits-ID opslaan (een bericht, taxonomieterm, media-item of menu) dat bij het vertalen opnieuw gekoppeld moet worden aan de overeenkomstige entiteit in de doeltaal. Gebruik de bijbehorende filter:

Soort verwijzingFilter
Custom posts en mediagatompl:bricks_element_type_custompost_and_media_reference_properties
Taxonomietermengatompl:bricks_element_type_taxonomy_term_reference_properties
Menu's op IDgatompl:bricks_element_type_menu_reference_by_id_properties
Menu's op sluggatompl:bricks_element_type_menu_reference_by_slug_properties

De structuur is hetzelfde als bij de filter voor vertaalbare eigenschappen — eenvoudige namen, dotpaden of sub-arrays voor 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;
    }
);

Elementnamen en eigenschapsnamen ontdekken

Voer de GraphQL-query Translate custom posts uit en inspecteer het veld bricksData in de respons. Elk element toont zijn name en zijn settings-boom — daar vind je de eigenschapsnamen (inclusief geneste dotpaden en repeater-velden) die je aan de bovenstaande hooks moet doorgeven.

bricksData inspecteren in de GraphQL-respons van de Translate custom posts-query
bricksData inspecteren in de GraphQL-respons van de Translate custom posts-query

Zie de handleiding Paginabouwer-data ophalen om te vertalen voor uitleg over het uitvoeren van die query.

Waar voorbeelden te vinden

De eigen integraties van de plugin zijn een nuttige referentie. Bekijk dit bestand in de plugin die je hebt geĂŻnstalleerd:

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