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'(odpowiadasettings.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_namei ścieżka z kropkąauthor_avatar.altsą możliwe do przetłumaczenia w widgecieblockquote - Pod-pole
namerepeatera jest możliwe do przetłumaczenia wewnątrz repeateraslideswidgetureviews
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łania | Filtr |
|---|---|
| Custom posty i multimedia | gatompl:elementor_widget_type_custompost_and_media_reference_properties |
| Terminy taksonomii | gatompl:elementor_widget_type_taxonomy_term_reference_properties |
| Menu po ID | gatompl:elementor_widget_type_menu_reference_by_id_properties |
| Menu po slug | gatompl: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.

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