Uitbreiden
UitbreidenExtra Elementor-widgets vertalen

Extra Elementor-widgets vertalen

Gato AI Translations for Polylang kan widgetgebaseerde Elementor-pagina's vertalen.

De plugin wordt geleverd met ondersteuning voor alle Elementor- en Elementor PRO-widgets. Voor aangepaste of externe widgets kun je de vertaalondersteuning uitbreiden via PHP-hooks.

Strings vertalen

Om extra vertaalbare eigenschappen op een Elementor-widget te declareren, gebruik je de gatompl:elementor_widget_type_translatable_properties-filter.

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

  • Platte controlenamen — bijv. 'author_name'
  • Dot-paden — bijv. 'author_avatar.alt' (vertaalt naar settings.author_avatar.alt)
  • Repeater-velden — gedeclareerd als een sub-array [repeaterName => [...subFields]]

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

Dit hook zorgt er bijvoorbeeld voor dat:

  • De platte control author_name en het dot-pad author_avatar.alt vertaalbaar zijn op de blockquote-widget
  • Het repeater-subveld name vertaalbaar is binnen de slides-repeater van de reviews-widget
add_filter(
    'gatompl:elementor_widget_type_translatable_properties',
    static function (array $translatableProperties): array {
        $translatableProperties['blockquote'][] = 'author_name';
        $translatableProperties['blockquote'][] = 'author_avatar.alt';
        $translatableProperties['reviews']['slides'][] = 'name';
        return $translatableProperties;
    }
);

Dezelfde filter werkt voor zowel eenvoudige controls als 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 moet worden gekoppeld aan de overeenkomstige entiteit in de doeltaal. Gebruik de bijbehorende filter:

Soort verwijzingFilter
Custom posts en mediagatompl:elementor_widget_type_custompost_and_media_reference_properties
Taxonomietermengatompl:elementor_widget_type_taxonomy_term_reference_properties
Menu's op IDgatompl:elementor_widget_type_menu_reference_by_id_properties
Menu's op sluggatompl:elementor_widget_type_menu_reference_by_slug_properties

De structuur is hetzelfde als bij de filter voor vertaalbare eigenschappen — platte namen, dot-paden of sub-arrays voor repeaters.

// Custom post / media reference
add_filter(
    'gatompl:elementor_widget_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:elementor_widget_type_taxonomy_term_reference_properties',
    static function (array $properties): array {
        $properties['related-category'][] = 'category_id';
        return $properties;
    }
);
 
// Menu reference by ID
add_filter(
    'gatompl:elementor_widget_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:elementor_widget_type_menu_reference_by_slug_properties',
    static function (array $properties): array {
        $properties['menu-picker'][] = 'menu_slug';
        return $properties;
    }
);

Widgetnamen en eigenschapsnamen ontdekken

Voer de GraphQL-query Translate custom posts uit en bekijk het veld elementorData in de respons. Elke widget toont zijn widgetType en zijn settings-boom — daar vind je de eigenschapsnamen (inclusief geneste dot-paden en repeater-velden) die je aan de bovenstaande hooks moet doorgeven.

elementorData bekijken in de GraphQL-respons van de query Translate custom posts
elementorData bekijken in de GraphQL-respons van de query Translate custom posts

Zie de handleiding Paginabouwer-gegevens ophalen om te vertalen voor meer informatie over het uitvoeren van die query.

Waar je voorbeelden kunt vinden

De eigen integraties van de plugin zijn een nuttige referentie. Bekijk dit bestand in de geinstalleerde plugin:

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