Rozszerzanie
RozszerzanieTłumaczenie dodatkowych elementów Bricks

Tłumaczenie dodatkowych elementów Bricks

Gato AI Translations for Polylang może tłumaczyć strony i szablony Bricks oparte na elementach.

Plugin zawiera obsługę wszystkich elementów dostarczanych przez Bricks. Dla niestandardowych elementów Bricks lub elementó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 do tłumaczenia na elemencie Bricks, użyj filtra gatompl:bricks_element_type_translatable_properties.

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

  • Proste nazwy kontrolek — np. 'separatorText'
  • Ścieżki z kropką — np. 'home.text' (odpowiada settings.home.text)
  • Pola repeatera — zadeklarowane jako pod-tablica [repeaterName => [...subFields]]

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

Na przykład ten hook sprawia, że:

  • Prosta kontrolka separatorText oraz ścieżka home.text stają się tłumaczalne w elemencie breadcrumbs
  • Podpole title repeatera staje się tłumaczalne wewnątrz repeatera items elementu 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
);

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

Tłumaczenie odwołań do encji

Właściwość może przechowywać ID encji (wpisu, terminu taksonomii, elementu multimedialnego lub menu), które powinno zostać przemapowane na odpowiadającą encję w języku docelowym podczas tłumaczenia. Użyj odpowiedniego filtra:

Rodzaj odwołaniaFiltr
Custom posts i mediagatompl:bricks_element_type_custompost_and_media_reference_properties
Terminy taksonomiigatompl:bricks_element_type_taxonomy_term_reference_properties
Menu według IDgatompl:bricks_element_type_menu_reference_by_id_properties
Menu według slugagatompl:bricks_element_type_menu_reference_by_slug_properties

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

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

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

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

Inspekcja bricksData w odpowiedzi GraphQL zapytania Translate custom posts
Inspekcja bricksData w odpowiedzi GraphQL zapytania Translate custom posts

Zapoznaj się z przewodnikiem Pobieranie danych page buildera do tłumaczenia, aby dowiedzieć się, jak uruchomić to 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/Bricks/Constants/ElementTypes.php