Uncategorized

Rendere multilingue i temi a blocchi di WordPress (guida per sviluppatori)


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 HTML, i blocchi JavaScript e l’editor del sito. I temi a blocchi richiedono un sistema diverso di internazionalizzazione dei blocchi di WordPress.

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.

Perché i temi a blocchi non funzionano con i metodi di traduzione tradizionali

I temi a blocchi sostituiscono molti dei file PHP di WordPress con template HTML che contengono il markup dei blocchi. Tuttavia, questo crea delle difficoltà perché i template HTML non possono eseguire le funzioni di traduzione PHP come _() o _e(). Di conseguenza, le stringhe di traduzione già esistenti rimangono inutilizzate nei file statici.

WordPress 6.8 apporta alcuni miglioramenti che semplificano l’internazionalizzazione dei temi a blocchi. In primo luogo, i temi con le intestazioni Text Domain e Domain Path corrette non necessitano più delle chiamate manuali a load_theme_textdomain().

Al contrario, per garantire le prestazioni, WordPress carica automaticamente i file di traduzione e dà priorità a wp-content/languages/themes/ rispetto alle directory dei temi.

Per iniziare, configuriamo il tema seguendo un approccio classico, aggiungendo i metadati al file style.css.

/*
Theme Name: My Block Theme
Text Domain: my-block-theme
Domain Path: /languages
*/

Si tenga presente che l’intestazione del Text Domain deve corrispondere al nome della cartella del tema (solitamente in kebab case) per garantire il caricamento automatico dei file di traduzione nelle versioni recenti di WordPress.

Come il file style.css, il file functions.php richiede una configurazione minima:

<?php
// Optional in WordPress 6.8+ but included for backward compatibility
function my_block_theme_setup() {
    load_theme_textdomain( 'my-block-theme', get_template_directory() . '/languages' );
}

add_action( 'after_setup_theme', 'my_block_theme_setup' );

// Register block scripts with translation support
function my_block_theme_scripts() {
    wp_enqueue_script(
        'my-block-theme-scripts',
        get_template_directory_uri() . '/assets/js/theme.js',
        array( 'wp-i18n' ),
        '1.0.0',
        true
    );

    wp_set_script_translations( 
        'my-block-theme-scripts', 
        'my-block-theme', 
        get_template_directory() . '/languages' 
    );
}

add_action( 'wp_enqueue_scripts', 'my_block_theme_scripts' );

La differenza fondamentale tra i temi classici e quelli a blocchi è che questi ultimi dividono la responsabilità 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.


News
Berita
News Flash
Blog
Technology
Sports
Sport
Football
Tips
Finance
Berita Terkini
Berita Terbaru
Berita Kekinian
News
Berita Terkini
Olahraga
Pasang Internet Myrepublic
Jasa Import China
Jasa Import Door to Door

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top