Page Builder
Page BuilderGutenberg

Gutenberg

Il supporto per Gutenberg è integrato, per tradurre tutti i blocchi del tuo contenuto Gutenberg.

Gato AI Translations for Polylang estrae le stringhe dai blocchi del contenuto Gutenberg e traduce solo quelle stringhe, garantendo che il contenuto non venga in alcun modo alterato.

Nativamente, i seguenti tipi di blocchi sono supportati automaticamente:

  • Blocchi del core di WordPress
  • Blocchi solo PHP
  • Blocchi Advanced Custom Fields (ACF)
  • Tutti i blocchi che includono un wpml-config.xml
  • Blocchi di terze parti:
    • Kadence Blocks
    • Greenshift blocks
    • GenerateBlocks blocks
    • Yoast SEO blocks

Blocchi del core di WordPress supportati

I seguenti blocchi del core di WordPress sono supportati nativamente:

  • core/audio
  • core/block (ossia i pattern sincronizzati)
  • 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

Blocchi solo PHP

A partire da WordPress 7.0, i blocchi possono essere registrati come solo PHP (senza bundle JavaScript). Gato AI Translations for Polylang li tratta come qualsiasi altro blocco: sono supportati nativamente, senza configurazione aggiuntiva.

Tutti gli attributi di tipo string (diversi dalle enumerazioni e da altri tipi scalari) vengono registrati automaticamente per la traduzione.

Se un campo specifico non deve essere tradotto, puoi escluderlo tramite l'hook gatompl:gutenberg_block_type_translatable_attribute_regexes impostandolo su false (oppure applicando 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;
    }
);

Blocchi Advanced Custom Fields (ACF)

Anche i blocchi registrati tramite Advanced Custom Fields sono supportati nativamente. Esistono 3 modi per registrare un campo ACF per la traduzione:

1. Automaticamente per tutti i campi (tramite la pagina di Settings)

Vai alla pagina di Settings, sotto Plugin Integration Configuration > Advanced Custom Fields, e abilita l'opzione Translate ACF blocks automatically?:

Abilitazione della traduzione automatica per i blocchi ACF
Abilitazione della traduzione automatica per i blocchi ACF

Quando è abilitata, ogni campo stringa traducibile in ogni blocco ACF viene inviato per la traduzione. Se un campo specifico non deve essere tradotto, escludilo tramite l'hook ACF standard acf/load_field, impostando gatompl su '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. Campo per campo (tramite la configurazione del gruppo di campi ACF)

Quando definisci il tuo gruppo di campi con acf_add_local_field_group(), aggiungi 'gatompl' => 'translate' direttamente a ogni campo che desideri tradurre:

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',
            ],
        ],
    ],
]);

Questo funziona anche per i campi post_object, relationship, taxonomy, image, gallery e repeater: il plugin seguirà i percorsi dei repeater annidati a qualsiasi profondità e rimapperà i riferimenti delle entità (articoli, termini, media) ai loro equivalenti nella lingua di destinazione.

3. Campo per campo (tramite l'hook acf/load_field)

Se non puoi modificare la registrazione del gruppo di campi, includi i campi tramite gli stessi hook ACF utilizzati per escluderli:

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

Registrare un blocco ACF

A titolo di riferimento, ecco una registrazione minima di un blocco che si abbina al gruppo di campi sopra (utilizzando acf_register_block_type di 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 legge automaticamente il wpml-config.xml incluso in qualsiasi plugin e lo utilizza per determinare quali attributi dei blocchi sono traducibili.

Avvisi Attempt Recovery

Alcuni blocchi possono mostrare un avviso Attempt Recovery nell'editor dopo la traduzione:

Blocco a schede Kadence tradotto che mostra l'avviso Attempt Recovery
Blocco a schede Kadence tradotto che mostra l'avviso Attempt Recovery

Consulta Perché alcuni blocchi necessitano di «Attempt Recovery» dopo la traduzione? per maggiori dettagli.

Disabilitare la traduzione di una proprietà specifica

Per disabilitare la traduzione di una proprietà specifica (o di tutte le proprietà di un blocco) definita tramite wpml-config.xml, restituisci false dal filtro 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

Tutti i blocchi del plugin Kadence Blocks sono supportati automaticamente (tramite il loro wpml-config.xml).

I seguenti blocchi possono essere visualizzati correttamente sul frontend dopo la traduzione, ma mostrare un avviso Attempt Recovery quando vengono aperti nell'editor:

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

Fare clic su Attempt Recovery ricostruisce l'HTML del blocco, ma è facoltativo — l'output frontend è già corretto (leggi i dettagli).

Greenshift Blocks

Tutti i blocchi di Greenshift sono supportati automaticamente (tramite il loro wpml-config.xml).

I blocchi tradotti di Greenshift in genere richiedono di fare clic su Attempt Recovery nell'editor su ciascun blocco per rigenerarne l'HTML (leggi i dettagli).

GenerateBlocks

Blocchi di GenerateBlocks e GenerateBlocks PRO:

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

Yoast SEO

Questi blocchi sono supportati solo per le stringhe semplici. Le stringhe contenenti tag HTML (inclusi link, immagini, stili HTML come strong o italic, ritorni a capo, ecc.) non sono supportate.

Leggi la guida Tutti i blocchi Gutenberg possono essere tradotti? per maggiori informazioni.

Blocchi di Yoast SEO:

  • Yoast How-to
  • Yoast FAQ

Supporto per blocchi aggiuntivi

Puoi tradurre blocchi personalizzati della tua applicazione, oppure blocchi di plugin di terze parti.

Consulta la guida Tradurre blocchi Gutenberg aggiuntivi per maggiori informazioni.

Traduzione dei pattern sincronizzati

La pagina predefinita Aspetto > Pattern di WordPress non supporta la traduzione dei pattern sincronizzati (noti anche come blocchi riutilizzabili), perché:

  • Polylang non aggiunge il widget per selezionare la lingua (solo Polylang PRO lo fa)
  • Non offre le Bulk Actions, quindi non è possibile tradurre i pattern esistenti

Per questo motivo, Gato AI Translations for Polylang offre la pagina standard Patterns CPT, sotto la voce di menu Patterns (Gutenberg), abilitando queste funzionalità.

La pagina personalizzata dei Patterns
La pagina personalizzata dei Patterns

Puoi tradurre i pattern da questa schermata (allo stesso modo di qualsiasi altro CPT):

  • Tradurre automaticamente i nuovi pattern al momento della pubblicazione (dalla schermata Add Pattern)
  • Tradurre manualmente i pattern esistenti tramite le Bulk Actions
Traduzione dei pattern tramite le Bulk Actions
Traduzione dei pattern tramite le Bulk Actions

La schermata mostrerà anche i pattern tradotti:

La pagina personalizzata dei Patterns
La pagina personalizzata dei Patterns

Disabilitare la pagina personalizzata dei Patterns

Puoi disabilitare la visualizzazione della pagina Patterns (Gutenberg) nel menu.

Per farlo, vai nei Settings sotto Plugin Integration Configuration > Gutenberg, e deseleziona la casella Enable the Custom Patterns page.

Abilitare la pagina personalizzata dei Patterns nei Settings
Abilitare la pagina personalizzata dei Patterns nei Settings