Rozszerzanie
RozszerzanieTłumaczenie dodatkowych widgetów Elementor

Tłumaczenie dodatkowych widgetów Elementor

Gato AI Translations for Polylang może tłumaczyć strony Elementor oparte na widgetach.

Plugin zawiera obsługę wszystkich widgetów Elementor i Elementor PRO. W przypadku niestandardowych widgetów lub widgetów firm trzecich możesz rozszerzyć obsługę tłumaczenia za pomocą hooków PHP.

Tłumaczenie ciągów znaków

Aby zadeklarować dodatkowe właściwości możliwe do przetłumaczenia w widgecie Elementor, użyj filtra gatompl:elementor_widget_type_translatable_properties.

Filtr otrzymuje mapę [widgetName => properties]. Wpis properties może zawierać:

  • Płaskie nazwy kontrolek — np. 'author_name'
  • Ścieżki z kropką — np. 'author_avatar.alt' (odpowiada settings.author_avatar.alt)
  • Pola repeater — deklarowane jako pod-tablica [repeaterName => [...subFields]]

Elementy te można swobodnie mieszać, a zagnieżdżanie może sięgać dowolnej głębokości.

Na przykład ten hook sprawia, że:

  • Płaska kontrolka author_name i ścieżka z kropką author_avatar.alt są możliwe do przetłumaczenia w widgecie blockquote
  • Pod-pole name repeatera jest możliwe do przetłumaczenia wewnątrz repeatera slides widgetu reviews
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;
    }
);

Ten sam filtr działa zarówno dla prostych kontrolek, jak i pól repeater — nie istnieje oddzielny hook dla repeaterów.

Tłumaczenie odwołań do encji

Właściwość może przechowywać identyfikator encji (post, termin taksonomii, element multimedialny lub menu), który powinien zostać przemapowany na odpowiadającą encję w języku docelowym w momencie tłumaczenia. Użyj odpowiedniego filtra:

Rodzaj odwołaniaFiltr
Custom posty i multimediagatompl:elementor_widget_type_custompost_and_media_reference_properties
Terminy taksonomiigatompl:elementor_widget_type_taxonomy_term_reference_properties
Menu po IDgatompl:elementor_widget_type_menu_reference_by_id_properties
Menu po sluggatompl:elementor_widget_type_menu_reference_by_slug_properties

Struktura jest taka sama jak w filtrze właściwości możliwych do przetłumaczenia — płaskie nazwy, ścieżki z kropką lub pod-tablice dla repeaterów.

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

Odkrywanie nazw widgetów i właściwości

Uruchom query GraphQL Translate custom posts i przejrzyj pole elementorData w odpowiedzi. Każdy widget udostępnia swój widgetType oraz drzewo settings — tam znajdziesz nazwy właściwości (w tym zagnieżdżone ścieżki z kropką i pola repeater), które należy przekazać do powyższych hooków.

Przeglądanie elementorData w odpowiedzi GraphQL zapytania Translate custom posts
Przeglądanie elementorData w odpowiedzi GraphQL zapytania Translate custom posts

Zapoznaj się z przewodnikiem Pobieranie danych page buildera do tłumaczenia, aby dowiedzieć się, jak uruchomić tę query.

Gdzie znaleźć przykłady

Własne integracje pluginu stanowią przydatny punkt odniesienia. Przejrzyj ten plik wewnątrz zainstalowanego pluginu:

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