Kreatory stron
Kreatory stronGutenberg

Gutenberg

Obsługa Gutenberg jest wbudowana, aby tłumaczyć wszystkie bloki w treści Gutenberg.

Gato AI Translations for Polylang wyodrębnia ciągi znaków z bloków w treści Gutenberg i tłumaczy tylko te ciągi, gwarantując, że zawartość nie zostanie w żaden sposób uszkodzona.

Domyślnie automatycznie obsługiwane są następujące typy bloków:

  • Bloki rdzenia WordPress
  • Bloki tylko PHP
  • Bloki Advanced Custom Fields (ACF)
  • Wszystkie bloki zawierające plik wpml-config.xml
  • Bloki firm trzecich:
    • Kadence Blocks
    • Greenshift blocks
    • GenerateBlocks blocks
    • Yoast SEO blocks

Obsługiwane bloki rdzenia WordPress

Następujące bloki rdzenia WordPress są obsługiwane domyślnie:

  • core/audio
  • core/block (tj. zsynchronizowane wzorce)
  • core/button
  • core/cover
  • core/embed
  • core/heading
  • core/html
  • core/image
  • core/list
  • core/list-item
  • core/media-text
  • core/paragraph
  • core/preformatted
  • core/pullquote
  • core/quote
  • core/table
  • core/verse
  • core/video

Bloki tylko PHP

Od WordPress 7.0 bloki można rejestrować jako tylko PHP (bez pakietu JavaScript). Gato AI Translations for Polylang traktuje je jak każdy inny blok: są obsługiwane domyślnie, bez żadnej dodatkowej konfiguracji.

Wszystkie atrybuty typu string (z wyjątkiem enumów i innych typów skalarnych) są automatycznie rejestrowane do tłumaczenia.

Jeśli konkretne pole nie powinno być tłumaczone, możesz je wykluczyć za pomocą hooka gatompl:gutenberg_block_type_translatable_attribute_regexes, ustawiając je na false (lub stosując unset):

add_filter(
    'gatompl:gutenberg_block_type_translatable_attribute_regexes',
    static function (array $regexes): array {
        // Either of these works:
        unset($regexes['my-plugin/alert']['header']);
        $regexes['my-plugin/alert']['implications'] = false;
        return $regexes;
    }
);

Bloki Advanced Custom Fields (ACF)

Bloki zarejestrowane przez Advanced Custom Fields są również obsługiwane domyślnie. Istnieją 3 sposoby rejestrowania pola ACF do tłumaczenia:

1. Automatycznie dla wszystkich pól (via Settings)

Przejdź do strony Settings, w sekcji Plugin Integration Configuration > Advanced Custom Fields, i włącz opcję Translate ACF blocks automatically?:

Włączanie automatycznego tłumaczenia bloków ACF
Włączanie automatycznego tłumaczenia bloków ACF

Po włączeniu każde pole tekstowe możliwe do tłumaczenia w każdym bloku ACF jest wysyłane do tłumaczenia. Jeśli konkretne pole nie powinno być tłumaczone, wyklucz je za pomocą standardowego hooka ACF acf/load_field, ustawiając gatompl na 'skip':

// Disable translation for a single field by key
add_filter(
    'acf/load_field/key=product_card_sku',
    static function (array|false $field): array|false {
        if (is_array($field)) {
            $field['gatompl'] = 'skip';
        }
        return $field;
    }
);
 
// Or disable several fields at once
add_filter(
    'acf/load_field',
    static function (array|false $field): array|false {
        if (
            is_array($field) && in_array($field['key'] ?? null, [
                'product_card_feature_title',
                'product_card_specs_dimensions',
                'product_card_section_text_heading',
            ])
        ) {
            $field['gatompl'] = 'skip';
        }
        return $field;
    }
);

2. Pole po polu (via konfiguracja grupy pól ACF)

Definiując grupę pól za pomocą acf_add_local_field_group(), dodaj 'gatompl' => 'translate' bezpośrednio do każdego pola, które chcesz tłumaczyć:

acf_add_local_field_group([
    'key'    => 'group_testimonial',
    'title'  => 'Testimonial Block',
    'fields' => [
        [
            'key'     => 'testimonial_text',
            'label'   => 'Testimonial',
            'name'    => 'testimonial',
            'type'    => 'textarea',
            'gatompl' => 'translate',
        ],
        [
            'key'     => 'testimonial_role',
            'label'   => 'Role',
            'name'    => 'role',
            'type'    => 'text',
            // Option-array form — equivalent to `'gatompl' => 'translate'`,
            // but leaves room for future plugin-side options on the same field
            'gatompl' => [
                'translation_configuration' => 'translate',
            ],
        ],
        [
            'key'           => 'testimonial_featured_post',
            'label'         => 'Featured post',
            'name'          => 'featured_post',
            'type'          => 'post_object',
            'post_type'     => ['post'],
            'return_format' => 'object',
            'gatompl'       => 'translate', // The referenced post ID is remapped to the target-language post
        ],
    ],
    'location' => [
        [
            [
                'param'    => 'block',
                'operator' => '==',
                'value'    => 'acf/testimonial',
            ],
        ],
    ],
]);

Działa to również dla pól post_object, relationship, taxonomy, image, gallery i repeater: wtyczka będzie podążać zagnieżdżonymi ścieżkami repeaterów na dowolną głębokość i przemapowuje referencje do encji (posty, terminy, media) na ich odpowiedniki w docelowym języku.

3. Pole po polu (via hook acf/load_field)

Jeśli nie możesz edytować rejestracji grupy pól, dołącz pola za pomocą tych samych hooków ACF, które służą do ich wykluczania:

add_filter(
    'acf/load_field/key=testimonial_text',
    static function (array|false $field): array|false {
        if (is_array($field)) {
            $field['gatompl'] = 'translate';
        }
        return $field;
    }
);

Rejestrowanie bloku ACF

Dla odniesienia, poniżej znajduje się minimalna rejestracja bloku pasująca do powyższej grupy pól (przy użyciu acf_register_block_type z ACF PRO):

add_action('acf/init', function (): void {
    if (!function_exists('acf_register_block_type')) {
        return;
    }
    acf_register_block_type([
        'name'            => 'testimonial',
        'title'           => 'Testimonial',
        'description'     => 'A testimonial block.',
        'render_template' => plugin_dir_path(__FILE__) . 'acf-blocks/testimonial/template.php',
        'category'        => 'widgets',
        'icon'            => 'format-quote',
        'keywords'        => ['testimonial', 'quote'],
        'mode'            => 'preview',
    ]);
});

WPML Config

Gato AI Translations for Polylang automatycznie odczytuje plik wpml-config.xml dostarczony przez dowolną wtyczkę i używa go do określenia, które atrybuty bloków są możliwe do tłumaczenia.

Powiadomienia Attempt Recovery

Niektóre bloki mogą wyświetlać powiadomienie Attempt Recovery w edytorze po tłumaczeniu:

Przetłumaczony blok zakładek Kadence wyświetlający powiadomienie Attempt Recovery
Przetłumaczony blok zakładek Kadence wyświetlający powiadomienie Attempt Recovery

Zobacz Dlaczego niektóre bloki wymagają 'Attempt Recovery' po tłumaczeniu? aby uzyskać więcej szczegółów.

Wyłączanie tłumaczenia konkretnej właściwości

Aby wyłączyć tłumaczenie konkretnej właściwości (lub wszystkich właściwości bloku) zdefiniowanej przez wpml-config.xml, zwróć false z filtra gatompl:use_wpml_config_for_block_type:

add_filter(
    'gatompl:use_wpml_config_for_block_type',
    static function (bool $enabled, string $blockTypeName, string $ruleKind): bool {
        // Stop reading wpml-config.xml rules for greenshift-blocks/button
        if ($blockTypeName === 'greenshift-blocks/button') {
            return false;
        }
        return $enabled;
    },
    10,
    3
);

Kadence Blocks

Wszystkie bloki z wtyczki Kadence Blocks są automatycznie obsługiwane (poprzez ich wpml-config.xml).

Następujące bloki mogą być poprawnie renderowane na froncie po tłumaczeniu, ale wyświetlają powiadomienie Attempt Recovery po otwarciu w edytorze:

  • kadence/single-icon
  • kadence/tabs
  • kadence/form

Kliknięcie Attempt Recovery odbudowuje HTML bloku, ale jest opcjonalne — wynik na froncie jest już poprawny (przeczytaj szczegóły).

Greenshift Blocks

Wszystkie bloki z Greenshift są automatycznie obsługiwane (poprzez ich wpml-config.xml).

Przetłumaczone bloki Greenshift zazwyczaj wymagają kliknięcia Attempt Recovery w edytorze na każdym bloku, aby wygenerować jego HTML na nowo (przeczytaj szczegóły).

GenerateBlocks

Bloki z GenerateBlocks i GenerateBlocks PRO:

  • Container
  • Grid
  • Text
  • Button
  • Headline
  • Image
  • Query
  • Shape
  • Site Header
  • Accordion
  • Tabs
  • Navigation

Yoast SEO

Te bloki są obsługiwane tylko dla prostych ciągów znaków. Ciągi zawierające tagi HTML (w tym linki, obrazy, style HTML jak strong lub italic, nowe linie itp.) nie są obsługiwane.

Przeczytaj przewodnik Czy wszystkie bloki Gutenberg można tłumaczyć? aby uzyskać więcej informacji.

Bloki z Yoast SEO:

  • Yoast How-to
  • Yoast FAQ

Obsługa dodatkowych bloków

Możesz tłumaczyć niestandardowe bloki z Twojej aplikacji lub bloki z wtyczek firm trzecich.

Zapoznaj się z przewodnikiem Tłumaczenie dodatkowych bloków Gutenberg aby uzyskać więcej informacji.

Tłumaczenie zsynchronizowanych wzorców

Domyślna strona Wygląd > Wzorce WordPress nie obsługuje tłumaczenia zsynchronizowanych wzorców (znanych również jako bloki wielokrotnego użytku), ponieważ:

  • Polylang nie dodaje widgetu do wyboru języka (robi to tylko Polylang PRO)
  • Nie oferuje Bulk Actions, więc nie można tłumaczyć istniejących wzorców

Z tego powodu Gato AI Translations for Polylang oferuje standardową stronę Patterns CPT, pod pozycją menu Patterns (Gutenberg), udostępniając te funkcje.

Niestandardowa strona Wzorce
Niestandardowa strona Wzorce

Możesz tłumaczyć wzorce z tego ekranu (podobnie jak każdy inny CPT):

  • Automatycznie tłumacz nowe wzorce po ich opublikowaniu (z ekranu Add Pattern)
  • Ręcznie tłumacz istniejące wzorce używając Bulk Actions
Tłumaczenie wzorców za pomocą Bulk Actions
Tłumaczenie wzorców za pomocą Bulk Actions

Ekran będzie również wyświetlać przetłumaczone wzorce:

Niestandardowa strona Wzorce
Niestandardowa strona Wzorce

Wyłączanie niestandardowej strony Wzorce

Możesz wyłączyć wyświetlanie strony Patterns (Gutenberg) w menu.

Aby to zrobić, przejdź do Settings w sekcji Plugin Integration Configuration > Gutenberg i odznacz pole wyboru Enable the Custom Patterns page.

Włączanie niestandardowej strony Wzorce w Settings
Włączanie niestandardowej strony Wzorce w Settings