{"id":81704,"date":"2025-08-25T07:29:56","date_gmt":"2025-08-25T06:29:56","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=81704&#038;preview=true&#038;preview_id=81704"},"modified":"2025-10-08T12:48:20","modified_gmt":"2025-10-08T11:48:20","slug":"internazionalizzazione-temi-a-blocchi","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/","title":{"rendered":"Guida per sviluppatori: Rendere multilingue i temi a blocchi di WordPress"},"content":{"rendered":"<p>Nei temi a blocchi la traduzione di WordPress avviene in modo diverso. I tradizionali template file PHP con funzioni di traduzione non funzionano con i template <a href=\"https:\/\/kinsta.com\/it\/blog\/html\/\">HTML<\/a>, i blocchi JavaScript e l&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/full-site-editing-wordpress\/\">editor del sito<\/a>. I temi a blocchi richiedono un sistema diverso di internazionalizzazione dei blocchi di WordPress.<\/p>\n<p>Questa guida fornisce soluzioni tecniche per rendere multilingue i temi a blocchi. Scopriremo come affrontare le sfide della traduzione dei temi a blocchi, come implementare le soluzioni e come integrare i propri siti con i plugin di traduzione.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Perch\u00e9 i temi a blocchi non funzionano con i metodi di traduzione tradizionali<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppo-tema-blocchi-wordpress\/\">I temi a blocchi<\/a> sostituiscono molti dei file PHP di WordPress con template HTML che contengono il markup dei blocchi. Tuttavia, questo crea delle difficolt\u00e0 perch\u00e9 i template HTML non possono eseguire le funzioni di traduzione PHP come <code>_()<\/code> o <code>_e()<\/code>. Di conseguenza, le stringhe di traduzione gi\u00e0 esistenti rimangono inutilizzate nei file statici.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-6-8\/\">WordPress 6.8<\/a> apporta alcuni miglioramenti che semplificano l&#8217;internazionalizzazione dei temi a blocchi. In primo luogo, i temi con le <a href=\"https:\/\/docs.sevalla.com\/applications\/reference\/http-headers\">intestazioni<\/a> <strong>Text Domain<\/strong> e <strong>Domain Path<\/strong> corrette non necessitano pi\u00f9 delle chiamate manuali a <code>load_theme_textdomain()<\/code>.<\/p>\n<p>Al contrario, per garantire le prestazioni, WordPress carica automaticamente i file di traduzione e d\u00e0 priorit\u00e0 a <code>wp-content\/languages\/themes\/<\/code> rispetto alle directory dei temi.<\/p>\n<p>Per iniziare, configuriamo il tema seguendo un approccio classico, aggiungendo i metadati al file <code>style.css<\/code>.<\/p>\n<pre><code class=\"language-css\">\/*\nTheme Name: My Block Theme\nText Domain: my-block-theme\nDomain Path: \/languages\n*\/\n<\/code><\/pre>\n<p>Si tenga presente che l&#8217;intestazione del <strong>Text Domain<\/strong> deve corrispondere al nome della cartella del tema (solitamente in <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/Kebab_case\" target=\"_blank\" rel=\"noopener noreferrer\">kebab case<\/a>) per garantire il caricamento automatico dei file di traduzione nelle versioni recenti di WordPress.<\/p>\n<p>Come il file <code>style.css<\/code>, il file <code>functions.php<\/code> richiede una configurazione minima:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/\/ Optional in WordPress 6.8+ but included for backward compatibility\nfunction my_block_theme_setup() {\n    load_theme_textdomain( 'my-block-theme', get_template_directory() . '\/languages' );\n}\n\nadd_action( 'after_setup_theme', 'my_block_theme_setup' );\n\n\/\/ Register block scripts with translation support\nfunction my_block_theme_scripts() {\n    wp_enqueue_script(\n        'my-block-theme-scripts',\n        get_template_directory_uri() . '\/assets\/js\/theme.js',\n        array( 'wp-i18n' ),\n        '1.0.0',\n        true\n    );\n\n    wp_set_script_translations( \n        'my-block-theme-scripts', \n        'my-block-theme', \n        get_template_directory() . '\/languages' \n    );\n}\n\nadd_action( 'wp_enqueue_scripts', 'my_block_theme_scripts' );\n<\/code><\/pre>\n<p>La differenza fondamentale tra i temi classici e quelli a blocchi \u00e8 che questi ultimi dividono la responsabilit\u00e0 della traduzione tra PHP lato server e JavaScript lato client. Al contrario, i temi classici devono affidarsi a PHP per gestire la maggior parte delle traduzioni.<\/p>\n<h2>Come creare le traduzioni nel file block.json<\/h2>\n<p>Il file <a href=\"https:\/\/kinsta.com\/courses\/gutenberg-block-development\/plugin-file-block-json-file\/\">block.json<\/a> \u00e8 una sorta di &#8220;hub di configurazione&#8221; per il blocco da tradurre. L&#8217;impostazione di una corretta internazionalizzazione fa s\u00ec che i blocchi vengano tradotti correttamente sia nell&#8217;editor che sul front-end.<\/p>\n<p>Il <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-metadata\/\" target=\"_blank\" rel=\"noopener noreferrer\">modo canonico per registrare un blocco<\/a> \u00e8 tramite il <code>block.json<\/code>. Iniziare con la configurazione <code>textdomain<\/code> significa che WordPress pu\u00f2 tradurre i campi <strong>title<\/strong>, <strong>description<\/strong> e <strong>keywords<\/strong> quando <code>textdomain<\/code> \u00e8 stato impostato:<\/p>\n<pre><code class=\"language-json\">{\n\t\"$schema\": \"https:\/\/schemas.wp.org\/trunk\/block.json\",\n\t\"apiVersion\": 3,\n\t\"name\": \"my-theme\/testimonial\",\n\t\"title\": \"Testimonial\",\n\t\"category\": \"text\",\n\t\"description\": \"Display customer testimonials\",\n\t\"keywords\": [\"quote\", \"review\", \"testimonial\"],\n\t\"textdomain\": \"my-block-theme\",\n\t\"attributes\": {\n\t\t\"content\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"source\": \"html\",\n\t\t\t\"selector\": \"blockquote\"\n\t\t}\n\t}\n}\n<\/code><\/pre>\n<p>Tuttavia, nei casi in cui \u00e8 richiesto un &#8220;contesto&#8221;, \u00e8 necessaria una registrazione lato server. Il contesto, in questo caso, \u00e8 importante perch\u00e9 la stessa parola pu\u00f2 essere tradotta in modo diverso a seconda del suo utilizzo. Ad esempio, &#8220;post&#8221; come sostantivo o come verbo richiede traduzioni diverse in molte lingue:<\/p>\n<pre><code class=\"language-php\">function my_theme_register_testimonial_block() {\n\tregister_block_type_from_metadata(\n\t\tget_template_directory() . '\/blocks\/testimonial',\n\t\tarray(\n\t\t\t'title' =&gt; _x( 'Testimonial', 'block title', 'my-block-theme' ),\n\t\t\t'description' =&gt; _x(\n\t\t\t\t'Display customer testimonials', \n\t\t\t\t'block description', \n\t\t\t\t'my-block-theme'\n\t\t\t),\n\n\t\t\t'keywords' =&gt; array(\n\t\t\t\t_x( 'quote', 'block keyword', 'my-block-theme' ),\n\t\t\t\t_x( 'review', 'block keyword', 'my-block-theme' )\n\t\t\t)\n\t\t)\n\t);\n}\n\nadd_action( 'init', 'my_theme_register_testimonial_block' );\n<\/code><\/pre>\n<p>Anche le <a href=\"https:\/\/kinsta.com\/it\/blog\/estendere-blocchi-core-wp\/#registering-block-variations\">variazioni di blocco<\/a> hanno bisogno di una denominazione strutturata, perch\u00e9 quando carica le traduzioni WordPress cerca degli schemi specifici. Il nome di ogni variante diventa parte della chiave di traduzione:<\/p>\n<pre><code class=\"language-json\">{\n\t\"name\": \"my-theme\/button\",\n\t\"title\": \"Button\",\n\t\"textdomain\": \"my-block-theme\",\n\t\"variations\": [{\n\t\t\t\"name\": \"primary\",\n\t\t\t\"title\": \"Primary Button\",\n\t\t\t\"attributes\": {\n\t\t\t\t\"className\": \"is-style-primary\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"secondary\",\n\t\t\t\"title\": \"Secondary Button\",\n\t\t\t\"attributes\": {\n\t\t\t\t\"className\": \"is-style-secondary\"\n\t\t\t}\n\t\t}\n\t]\n}\n<\/code><\/pre>\n<p>L&#8217;internazionalizzazione di JavaScript richiede l&#8217;importazione delle <a href=\"https:\/\/developer.wordpress.org\/apis\/internationalization\/internationalization-functions\/\" target=\"_blank\" rel=\"noopener noreferrer\">funzioni i18n di WordPress<\/a> e la configurazione delle traduzioni degli script. Questo perch\u00e9 l&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/full-site-editing-wordpress\/\">Editor del sito<\/a> viene eseguito nel browser e non sul server. Dato che le funzioni di traduzione PHP non esistono in JavaScript, WordPress fornisce funzioni equivalenti attraverso il pacchetto <code>@wordpress\/i18n<\/code>:<\/p>\n<pre><code class=\"language-js\">import {\n\tregisterBlockType\n} from '@wordpress\/blocks';\nimport {\n\t__\n} from '@wordpress\/i18n';\nimport {\n\tuseBlockProps,\n\tRichText\n} from '@wordpress\/block-editor';\n\nregisterBlockType('my-theme\/testimonial', {\n\tedit: ({\n\t\tattributes,\n\t\tsetAttributes\n\t}) =&gt; {\n\t\tconst blockProps = useBlockProps();\n\n\t\treturn ( &lt; div { ...blockProps } &gt;\n\t\t\t&lt; RichText tagName = \"blockquote\" value = { attributes.content } onChange = { (content) =&gt; setAttributes({\n\t\t\t\t\tcontent\n\t\t\t\t})\n\t\t\t}\n\t\t\tplaceholder = {\n\t\t\t\t__('Add testimonial text...', 'my-block-theme')\n\t\t\t}\n\t\t\t\/&gt; &lt; cite &gt;\n\t\t\t&lt; RichText tagName = \"span\" value = { attributes.author } onChange = { (author) =&gt; setAttributes({\n\t\t\t\t\tauthor\n\t\t\t\t})\n\t\t\t}\n\t\t\tplaceholder = {\n\t\t\t\t__('Author name', 'my-block-theme')\n\t\t\t}\n\t\t\t\/&gt; &lt; \/cite&gt; &lt; \/div&gt;\n\t\t);\n\t}\n});\n<\/code><\/pre>\n<p>Inoltre, \u00e8 una buona idea generare <a href=\"https:\/\/kinsta.com\/it\/blog\/come-tradurre-un-sito-web\/\">file di traduzione<\/a> JSON per JavaScript perch\u00e9 WordPress utilizza un formato diverso per le traduzioni lato client. PHP utilizza i file <code>.mo<\/code>, mentre JavaScript ha bisogno dei file <code>.json<\/code> con specifiche convenzioni di denominazione. \u00c8 possibile automatizzare questa operazione utilizzando i comandi di <a href=\"https:\/\/kinsta.com\/it\/blog\/wp-cli\/\">WP-CLI<\/a>:<\/p>\n<pre><code class=\"language-bash\"># Extract strings from JavaScript files into POT\nwp i18n make-pot . languages\/my-block-theme.pot\n\n# Convert PO files to JSON for JavaScript\nwp i18n make-json languages\/ --no-purge --pretty-print\n<\/code><\/pre>\n<p>I file JSON risultanti seguono uno schema coerente: <code>{textdomain}-{locale}-{handle}.json<\/code>. Cos\u00ec, quando si invoca <code>wp_set_script_translations()<\/code>, WordPress pu\u00f2 caricarli.<\/p>\n<h2>Convertire i template HTML statici in componenti PHP pronti per la traduzione<\/h2>\n<p>Dato che i template HTML sono statici, non \u00e8 semplice lavorarci per l&#8217;internazionalizzazione di un tema a blocchi, in quanto le funzioni e le tecniche di traduzione esistenti non funzionano.<\/p>\n<p>Le parti di template basate su PHP possono risolvere questo problema perch\u00e9 WordPress le elabora come file PHP nonostante siano referenziate nei template HTML. Questo approccio ibrido consente di mantenere la struttura del tema a blocchi e al contempo di creare contenuti dinamici:<\/p>\n<pre><code class=\"language-js\">&lt;!-- templates\/page.html --&gt;\n&lt;!-- wp:template-part {\"slug\":\"header\",\"tagName\":\"header\"} \/--&gt;\n&lt;!-- wp:group {\"tagName\":\"main\",\"layout\":{\"type\":\"constrained\"}} --&gt;\n\n&lt;main class=\"wp-block-group\"&gt;\n&lt;!-- wp:post-title {\"level\":1} \/--&gt;\n     &lt;!-- wp:post-content \/--&gt;\n     &lt;!-- wp:template-part {\"slug\":\"post-meta\"} \/--&gt;\n&lt;\/main&gt;\n&lt;!-- \/wp:group \u2192\n&lt;!-- wp:template-part {\"slug\":\"footer\",\"tagName\":\"footer\"} \/--&gt;\n<\/code><\/pre>\n<p>Nota che il template part pu\u00f2 contenere PHP:<\/p>\n<pre><code class=\"language-js\">&lt;!-- parts\/post-meta.html --&gt;\n&lt;!-- wp:group {\"className\":\"post-meta\"} --&gt;\n&lt;div class=\"wp-block-group post-meta\"&gt;\n&lt;?php\n    echo sprintf(\n      \/* translators: 1: Post date, 2: Post author *\/\n      __( 'Published on %1$s by %2$s', 'my-block-theme' ),\n      get_the_date(),\n     get_the_author()\n     );\n     ?&gt;\n&lt;\/div&gt;\n&lt;!-- \/wp:group --&gt;\n<\/code><\/pre>\n<p>I blocchi complessi necessitano del file <code>render.php<\/code> perch\u00e9 alcuni contenuti richiedono un&#8217;elaborazione lato server che gli attributi del blocco da soli non possono gestire. Le <a href=\"https:\/\/kinsta.com\/it\/blog\/indicizzazione-in-mysql-mariadb\/\">query sul database<\/a>, la <a href=\"https:\/\/kinsta.com\/it\/blog\/visibilita-blocchi\/\">logica condizionale<\/a> e la generazione di contenuti dinamici richiedono l&#8217;esecuzione di PHP:<\/p>\n<pre><code class=\"language-php\">\/\/ blocks\/recent-posts\/render.php\n&lt;?php\n$recent_posts = get_posts( array( \n'numberposts' =&gt; $attributes['count'] ?? 5 \n) );\n?&gt;\n&lt;div &lt;?php echo get_block_wrapper_attributes(); ?&gt;&gt;\n&lt;h3&gt;&lt;?php echo esc_html__( 'Recent Posts', 'my-block-theme' ); ?&gt;&lt;\/h3&gt;\n     &lt;?php if ( $recent_posts ) : ?&gt;\n      &lt;ul&gt;\n      &lt;?php foreach ( $recent_posts as $post ) : ?&gt;\n           &lt;li&gt;\n           &lt;a href=\"&lt;?php echo get_permalink( $post ); ?&gt;\"&gt;\n            &lt;?php echo get_the_title( $post ); ?&gt;\n           &lt;\/a&gt;\n\n           &lt;span class=\"post-date\"&gt;\n            &lt;?php echo get_the_date( '', $post ); ?&gt;\n           &lt;\/span&gt;\n           &lt;\/li&gt;\n         &lt;?php endforeach; ?&gt;\n         &lt;\/ul&gt;\n     &lt;?php else : ?&gt;\n         &lt;p&gt;&lt;?php esc_html_e( 'No posts found.', 'my-block-theme' ); ?&gt;&lt;\/p&gt;\n     &lt;?php endif; ?&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>Questo significa configurare il blocco in modo che utilizzi il file di rendering in <code>block.json<\/code>:<\/p>\n<pre><code class=\"language-js\">{\n\t\"name\": \"my-theme\/recent-posts\",\n\t\"render\": \"file:.\/render.php\",\n\t\"attributes\": {\n\t\t\"count\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"default\": 5\n\t\t}\n\t}\n}\n<\/code><\/pre>\n<h2>Come implementare la traduzione dei contenuti dinamici per i campi personalizzati e gli input degli utenti<\/h2>\n<p>Nonostante la notevole presenza nei siti WordPress, i contenuti dinamici possono causare problemi di traduzione perch\u00e9 esistono nel database e non nei file del tema. Per questo motivo, i <a href=\"https:\/\/kinsta.com\/it\/partner\/weglot\/\">plugin di traduzione di terze parti<\/a> devono individuare e gestire questi contenuti separatamente dalle stringhe statiche del tema.<\/p>\n<p>\u00c8 qui che \u00e8 preziosa <a href=\"https:\/\/kinsta.com\/it\/blog\/advanced-custom-fields\/\">la registrazione dei campi personalizzati<\/a> con una corretta configurazione dei meta, perch\u00e9 i plugin di traduzione si agganciano al sistema dei meta di WordPress per rilevare qualsiasi contenuto traducibile. Il parametro <code>show_in_rest<\/code> consente la compatibilit\u00e0 con l&#8217;Editor del sito:<\/p>\n<pre><code class=\"language-php\">function my_theme_register_meta_fields() {\n    register_post_meta( 'page', 'custom_subtitle', array(\n        'type' =&gt; 'string',\n        'description' =&gt; __( 'Page subtitle', 'my-block-theme' ),\n        'single' =&gt; true,\n        'show_in_rest' =&gt; true,\n        'auth_callback' =&gt; function() {\n            return current_user_can( 'edit_posts' );\n        }\n    ));\n}\n\nadd_action( 'init', 'my_theme_register_meta_fields' );\n\n\/\/ Display with plugin compatibility\nfunction my_theme_display_subtitle( $post_id ) {\n    $subtitle = get_post_meta( $post_id, 'custom_subtitle', true );\n\n    if ( ! $subtitle ) {\n        return;\n    }\n\n    \/\/ WPML compatibility\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n    if ( function_exists( 'icl_t' ) ) {\n        $subtitle = icl_t( \n            'my-block-theme', \n            'subtitle_' . $post_id, \n            $subtitle \n        );\n    }\n\n    \/\/ Polylang compatibility\n    \/\/ (documented at polylang.pro\/doc\/function-reference\/)\n    if ( function_exists( 'pll_translate_string' ) ) {\n        $subtitle = pll_translate_string( $subtitle, 'my-block-theme' );\n    }\n\n    echo '&lt;h2 class=\"page-subtitle\"&gt;' . esc_html( $subtitle ) . '&lt;\/h2&gt;';\n}\n<\/code><\/pre>\n<p>Anche le query del database necessitano di un filtro per la lingua perch\u00e9 WordPress non filtra automaticamente i contenuti in base alla lingua. I plugin di traduzione aggiungono modifiche alle query di cui bisogna tenere conto:<\/p>\n<pre><code class=\"language-php\">function my_theme_get_localized_posts( $args = array() ) {\n    $defaults = array(\n        'post_type' =&gt; 'post',\n        'posts_per_page' =&gt; 10\n    );\n\n    $args = wp_parse_args( $args, $defaults );\n\n    \/\/ Polylang adds language taxonomy\n    \/\/ (documented at polylang.pro\/doc\/developpers-how-to\/)\n    if ( function_exists( 'pll_current_language' ) ) {\n        $args['lang'] = pll_current_language();\n    }\n\n    \/\/ WPML filters queries automatically when suppress_filters is false\n    \/\/ (wpml.org\/documentation\/getting-started-guide\/translating-custom-posts\/)\n\n    if ( defined( 'ICL_LANGUAGE_CODE' ) ) {\n        $args['suppress_filters'] = false;\n    }\n\n    return get_posts( $args );\n}\n<\/code><\/pre>\n<p>L&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/moduli-di-registrazione-wordpress\/\">elaborazione dei moduli<\/a> mescola contenuti dinamici e statici, ma le etichette dei moduli, i messaggi di errore e le notifiche di amministrazione necessitano di una traduzione consapevole della lingua. Anche i destinatari delle e-mail potrebbero variare in base alla lingua:<\/p>\n<pre><code class=\"language-php\">function my_theme_process_contact_form() {\n\tif ( ! isset( $_POST['contact_nonce'] ) || \n\t! wp_verify_nonce( $_POST['contact_nonce'], 'contact_form' ) ) {\n\treturn;\n\t}\n\n\t$name = sanitize_text_field( $_POST['name'] );\n\t$email = sanitize_email( $_POST['email'] );\n\t$message = sanitize_textarea_field( $_POST['message'] );\n\n\t\/\/ Get admin email in current language\n\t$admin_email = get_option( 'admin_email' );\n\n\t\/\/ For language-specific admin emails, use WPML's string translation\n\t\/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n\n\tif ( function_exists( 'icl_t' ) ) {\n\t\t\/\/ First register the string if not already registered\n\t\tif ( function_exists( 'icl_register_string' ) ) {\n\t\t\ticl_register_string( 'my-block-theme', 'contact_email', $admin_email );\n\t\t}\n\n\t\t$admin_email = icl_t(\n\t\t\t'my-block-theme',\n\t\t\t'contact_email',\n\t\t\t$admin_email\n\t\t);\n\t}\n\n\t$subject = sprintf(\n\t\/* translators: %s: Sender name *\/\n\t__( 'Contact form submission from %s', 'my-block-theme' ),\n\t$name\n\t);\n\n\twp_mail( $admin_email, $subject, $message );\n}\n\nadd_action( 'init', 'my_theme_process_contact_form' );\n<\/code><\/pre>\n<p>\u00c8 anche importante valutare la consapevolezza della lingua di navigazione perch\u00e9 le voci di menu, gli URL e la struttura potrebbero differire da una lingua all&#8217;altra. Il plugin di traduzione probabilmente dispone di un&#8217;API per la creazione di pulsanti per il cambio di lingua:<\/p>\n<pre><code class=\"language-php\">function my_theme_language_switcher_block() {\n    if ( ! function_exists( 'pll_the_languages' ) && \n         ! function_exists( 'icl_get_languages' ) ) {\n        return;\n    }\n\n    $output = '&lt;div class=\"language-switcher\"&gt;';\n\n    \/\/ Polylang language switcher \n    \/\/ (documented at polylang.pro\/doc\/function-reference\/)\n\n    if ( function_exists( 'pll_the_languages' ) ) {\n        $languages = pll_the_languages( array( 'raw' =&gt; 1 ) );\n        foreach ( $languages as $lang ) {\n            $output .= sprintf(\n                '&lt;a href=\"%s\" class=\"%s\"&gt;%s&lt;\/a&gt;',\n                esc_url( $lang['url'] ),\n                $lang['current_lang'] ? 'current-lang' : '',\n                esc_html( $lang['name'] )\n            );\n        }\n    }\n\n    \/\/ WPML language switcher\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/multi-language-api\/)\n    elseif ( function_exists( 'icl_get_languages' ) ) {\n        $languages = icl_get_languages();\n        foreach ( $languages as $lang ) {\n            $output .= sprintf(\n                '&lt;a href=\"%s\" class=\"%s\"&gt;%s&lt;\/a&gt;',\n                esc_url( $lang['url'] ),\n                $lang['active'] ? 'current-lang' : '',\n                esc_html( $lang['native_name'] )\n            );\n        }\n    }\n\n    $output .= '&lt;\/div&gt;';\n    return $output;\n}\n<\/code><\/pre>\n<p>Lavorare con i plugin di traduzione sar\u00e0 probabilmente una parte importante del lavoro, quindi analizziamo questo aspetto.<\/p>\n<h2>Lavorare con i plugin di traduzione: compatibilit\u00e0 e ottimizzazione<\/h2>\n<p>Ogni plugin di traduzione di WordPress gestisce i temi dei blocchi in modo diverso. Comprendere gli approcci adottati dalle diverse soluzioni aiuta nella compatibilit\u00e0 e flessibilit\u00e0 fin dall&#8217;inizio.<\/p>\n<p>La documentazione di WPML sul <a href=\"https:\/\/kinsta.com\/it\/blog\/full-site-editing-wordpress\/\">full site editing<\/a> illustra la necessit\u00e0 di una configurazione specifica per i temi a blocchi:<\/p>\n<pre><code class=\"language-php\">\/\/ WPML FSE compatibility based on official documentation\nadd_action( 'init', function() {\n    if ( ! defined( 'WPML_VERSION' ) ) {\n    return;\n    }\n\n    \/\/ FSE themes are automatically detected in WPML 4.5.3+ \/\/ Enable FSE support\n    add_filter( 'wpml_is_fse_theme', '__return_true' );\n\n    \/\/ Register custom strings per WPML String Translation documentation\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n\n    if ( function_exists( 'icl_register_string' ) ) {\n        icl_register_string(\n        'my-block-theme',\n        'footer-copyright',\n        '\u00a9 My Company.'\n        );\n    }\n});\n<\/code><\/pre>\n<p>Polylang Pro supporta l&#8217;Editor del Sito dalla versione 3.2. Il plugin gestisce i <a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppo-tema-blocchi-wordpress\/\">temi a blocchi<\/a> attraverso la sua interfaccia standard di traduzione delle stringhe:<\/p>\n<pre><code class=\"language-php\">\/\/ Polylang string registration per official documentation\nif ( function_exists( 'pll_register_string' ) ) {\n\tpll_register_string( \n\t\t'Footer Copyright',\n\t\t'\u00a9 My Company.',\n\t\t'my-block-theme',\n\t\ttrue \/\/ Multiline support\n\t);\n}\n<\/code><\/pre>\n<p><a href=\"https:\/\/translatepress.com\/docs\/developers\/exclude-certain-text-or-element-from-being-translated\/\" target=\"_blank\" rel=\"noopener noreferrer\">La documentazione di TranslatePress<\/a> indica che alcuni elementi dinamici devono essere esclusi per ottenere prestazioni ottimali:<\/p>\n<pre><code class=\"language-php\">\/\/ TranslatePress optimization based on official recommendations\n\/\/ (documented at translatepress.com\/docs\/developers\/)\nadd_filter( 'trp_stop_translating_page', function( $stop, $url ) {\n\t\/\/ Skip admin and API requests per TranslatePress documentation\n\tif ( is_admin() || wp_is_json_request() ) {\n\treturn true;\n\t}\n\n\t\/\/ Skip pattern preview URLs that can cause rendering issues\n    if ( strpos( $url, 'pattern-preview' ) !== false ) {\n    \treturn true;\n\t}\n\n\treturn $stop;\n}, 10, 2 );\n<\/code><\/pre>\n<p>Si pu\u00f2 anche prendere in considerazione <a href=\"https:\/\/multilingualpress.org\/\">MultilingualPress<\/a>, che funziona in modo diverso con WordPress Multisite. Ogni lingua funziona come un sito a s\u00e9 stante con il proprio tema a blocchi, quindi non \u00e8 necessario un livello di traduzione aggiuntivo n\u00e9 una configurazione particolare. Questa soluzione garantisce velocit\u00e0 ed evita il lock-in dei plugin, perch\u00e9 tutto si basa sull&#8217;internazionalizzazione di WordPress.<\/p>\n<p>Infine, ci sono alcuni consigli di carattere generale da trasmettere quando si lavora con codebase di terze parti (come i plugin). Innanzitutto, bisogna seguire un <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-debug\/\">approccio sistematico al debug<\/a> della traduzione.<\/p>\n<pre><code class=\"language-php\">\/\/ Debug helper for translation issues\nfunction my_theme_debug_translations() {\n    if ( ! WP_DEBUG || ! current_user_can( 'manage_options' ) ) {\n    return;\n\t}\n\n\terror_log( 'Text domain loaded: ' . is_textdomain_loaded(\n    \t'my-block-theme' ) );\n         error_log( 'Current locale: ' . get_locale() );\n         error_log( 'Translation test: ' . __(\n\t\t\t'Hello World',\n            'my-block-theme'\n         )\n\t);\n\n\t\/\/ Check JSON translations for blocks\n    $json_file = WP_LANG_DIR . '\/themes\/my-block-theme-' . get_locale() . '-script-handle.json';\n\terror_log( 'JSON translation exists: ' . file_exists( $json_file ) );\n}\n\nadd_action( 'init', 'my_theme_debug_translations' );\n<\/code><\/pre>\n<p>La <a href=\"https:\/\/kinsta.com\/it\/blog\/edge-caching\/\">cache del sito<\/a> pu\u00f2 interferire con gli aggiornamenti delle traduzioni, quindi \u00e8 meglio cancellare la cache quando i file di traduzione vengono modificati:<\/p>\n<pre><code class=\"language-bash\"># Clear WordPress transients\nwp transient delete --all\n\n# Generate fresh translation files\nwp i18n make-pot . languages\/my-block-theme.pot\nwp i18n make-json languages\/ --no-purge\n<\/code><\/pre>\n<p>L&#8217;ottimizzazione delle prestazioni diventa fondamentale con i plugin di traduzione. Ogni plugin aggiunge query al database e costi di elaborazione, e anche in questo caso la cache delle traduzioni utilizzate pi\u00f9 di frequente ne trae vantaggio:<\/p>\n<pre><code class=\"language-php\">function my_theme_cached_translation( $text, $domain = 'my-block-theme' ) {\n    $cache_key = 'translation_' . md5( $text . get_locale() );\n    $cached = wp_cache_get( $cache_key, 'my_theme_translations' );\n\n    if ( false === $cached ) {\n        $cached = __( $text, $domain );\n        wp_cache_set( $cache_key, $cached, 'my_theme_translations', HOUR_IN_SECONDS );\n    }\n\n    return $cached;\n}\n<\/code><\/pre>\n<p>In alternativa, potrebbe essere utile saltare la cache fino a quando non si \u00e8 pronti per la distribuzione. Un <a href=\"https:\/\/kinsta.com\/it\/docs\/hosting-wordpress\/ambienti-di-staging\/\">ambiente di staging<\/a> \u00e8 l&#8217;ideale per questo scopo e in genere non si avr\u00e0 bisogno dell&#8217;aumento delle prestazioni fornito dalla cache.<\/p>\n<h2>Riepilogo<\/h2>\n<p>L&#8217;internazionalizzazione dei temi a blocchi richiede di lavorare seguedo i metodi di traduzione di WordPress e al contempo di seguire i nuovi approcci dell&#8217;Editor del sito.<\/p>\n<p>Configurando i metadati del tema, implementando strategie d&#8217;uso dei template e comprendendo i requisiti dei plugin di traduzione, possiamo creare temi a blocchi multilingue che funzionano bene e offrono un&#8217;esperienza utente di alta qualit\u00e0.<\/p>\n<p>Quando siamo pronti per il lancio, l&#8217;<a href=\"https:\/\/kinsta.com\/it\/hosting-wordpress\/\">hosting gestito per WordPress<\/a> di Kinsta offre le prestazioni e la portata globale di cui ogni sito ha bisogno, grazie alla cache integrata, a un <a href=\"https:\/\/kinsta.com\/it\/docs\/informazioni-sul-servizio\/sedi-data-center\/\">CDN con 37 location<\/a> e a strumenti come l&#8217;integrazione Git e gli ambienti di <a href=\"https:\/\/kinsta.com\/it\/docs\/hosting-wordpress\/ambienti-di-staging\/\">staging<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nei temi a blocchi la traduzione di WordPress avviene in modo diverso. I tradizionali template file PHP con funzioni di traduzione non funzionano con i template &#8230;<\/p>\n","protected":false},"author":199,"featured_media":81705,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25873],"class_list":["post-81704","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-sviluppo-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Rendere multilingue i temi a blocchi di WordPress (guida per sviluppatori)<\/title>\n<meta name=\"description\" content=\"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all&#039;internazionalizzazione. Questo post illustra nuove strategie multilingue!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guida per sviluppatori: Rendere multilingue i temi a blocchi di WordPress\" \/>\n<meta property=\"og:description\" content=\"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all&#039;internazionalizzazione. Questo post illustra nuove strategie multilingue!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-25T06:29:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-08T11:48:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all&#039;internazionalizzazione. Questo post illustra nuove strategie multilingue!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Guida per sviluppatori: Rendere multilingue i temi a blocchi di WordPress\",\"datePublished\":\"2025-08-25T06:29:56+00:00\",\"dateModified\":\"2025-10-08T11:48:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/\"},\"wordCount\":1380,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/\",\"name\":\"Rendere multilingue i temi a blocchi di WordPress (guida per sviluppatori)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"datePublished\":\"2025-08-25T06:29:56+00:00\",\"dateModified\":\"2025-10-08T11:48:20+00:00\",\"description\":\"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all'internazionalizzazione. Questo post illustra nuove strategie multilingue!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sviluppo di WordPress\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/sviluppo-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Guida per sviluppatori: Rendere multilingue i temi a blocchi di WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rendere multilingue i temi a blocchi di WordPress (guida per sviluppatori)","description":"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all'internazionalizzazione. Questo post illustra nuove strategie multilingue!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/","og_locale":"it_IT","og_type":"article","og_title":"Guida per sviluppatori: Rendere multilingue i temi a blocchi di WordPress","og_description":"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all'internazionalizzazione. Questo post illustra nuove strategie multilingue!","og_url":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2025-08-25T06:29:56+00:00","article_modified_time":"2025-10-08T11:48:20+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","type":"image\/png"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all'internazionalizzazione. Questo post illustra nuove strategie multilingue!","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Jeremy Holcombe","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Guida per sviluppatori: Rendere multilingue i temi a blocchi di WordPress","datePublished":"2025-08-25T06:29:56+00:00","dateModified":"2025-10-08T11:48:20+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/"},"wordCount":1380,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/","url":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/","name":"Rendere multilingue i temi a blocchi di WordPress (guida per sviluppatori)","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","datePublished":"2025-08-25T06:29:56+00:00","dateModified":"2025-10-08T11:48:20+00:00","description":"Con i temi a blocchi di WordPress, \u00e8 necessario un diverso approccio all'internazionalizzazione. Questo post illustra nuove strategie multilingue!","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/internazionalizzazione-temi-a-blocchi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Sviluppo di WordPress","item":"https:\/\/kinsta.com\/it\/argomenti\/sviluppo-wordpress\/"},{"@type":"ListItem","position":3,"name":"Guida per sviluppatori: Rendere multilingue i temi a blocchi di WordPress"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/81704","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=81704"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/81704\/revisions"}],"predecessor-version":[{"id":82121,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/81704\/revisions\/82121"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/es"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/translations\/jp"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/81704\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/81705"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=81704"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=81704"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=81704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}