La traduzione delle stringhe del vostro sito web Worpress è basata su un formato noto come gettext, il codice dichiara una stringa e un text domain; a runtime WordPress cerca la versione tradotta nei file .mo per la locale attiva (es. it_IT).
Ciclo di vita di una stringa
- Marcatura nel codice → usi le funzioni gettext.
- Estrazione → generi un file .pot (template) con tutte le stringhe.
- Traduzione → crei i .po per ogni lingua a partire dal .pot.
- Compilazione → i .po diventano .mo (binari veloci).
- Caricamento → WordPress carica i .mo del tuo text domain.
Queste stringhe vengono tradotte tramite delle funzioni php.
Marcatura nel codice (PHP)
Le funzioni principali:
__( 'Testo', 'mio-dominio' ); // restituisce la stringa_e( 'Testo', 'mio-dominio' ); // echo diretto_x( 'Testo', 'contesto', 'mio-dominio' ); // con contesto_n( '1 articolo', '%s articoli', $n, 'mio-dominio' ); // plurali_nx( 'file', 'file', $n, 'contesto', 'mio-dominio' ); // plurali + contesto// Sempre con escaping adeguato:esc_html__( 'Testo', 'mio-dominio' );esc_attr__( 'Testo', 'mio-dominio' );
Come generare i file
Poedit
Per generare/gestire questi file è necessario utilizzare dei software appositi, uno di questi è Poedit, questo software ha una interfaccia visuale tramite cui gestire
Loco Translate
Esiste anche un utile plugin, Loco Translate (per tradurre le stringhe, non i contenuti)
Loco Translate non è un plugin multilingua: serve a tradurre le stringhe di tema e plugin (menu, etichette, messaggi, email) tramite file .po/.mo e .json per gli script. È ideale per coprire testi dell’interfaccia non gestiti dai plugin i18n o per rifinire la terminologia.
La mia scelta: WP-CLI e un po' di BASH
Personalmente preferisco un approccio programmatico tramite WP-CLI e bash scripting.
Ecco un esempio di uno script che sto usando in questi giorni per un tema personalizzato:
#!/usr/bin/env bash
set -e # interrompe lo script se un comando fallisce
source ~/.bashrc
LANG_PATH="$MYTHEME_THEME_PATH/languages" #cartella con i file delle traduzioni
POT_FILE="$LANG_PATH/mytheme.pot" # file del template generato
PO_FILE="$LANG_PATH/it_IT.po" #file con le traduzioni da inserire
# 1. Genera il template .pot dal tema
wp i18n make-pot "$MYTHEME_THEME_PATH" "$POT_FILE" --exclude=node_modules,vendor,tests --domain=mytheme
# 2. Se non esiste già il .po, inizializzalo
if [ ! -f "$PO_FILE" ]; then
msginit --no-translator --locale=it_IT --input="$POT_FILE" --output-file="$PO_FILE"
fi
# 3. Aggiorna il .po con le nuove stringhe dal .pot
msgmerge --update "$PO_FILE" "$POT_FILE"
# 4. Compila i .mo
wp i18n make-mo "$LANG_PATH"
Lo script scansionerà quindi la vostra cartella verificando la presenza di stringhe relative al vostro tema e genererà i file dove potrete inserire le traduzioni.
Lanciandolo nuovamnete sarà anche generato il file mo. (quello che viene effettivamente letto da Wordpress per la traduzione) basato sulle traduzioni inserite nel .po.
Soluzioni Multilingua
In questa pagina ho scritto un articolo sui possibili approcci di un sito multilingua e dei relativi problemi di performance. Se vi dovessero capitare vi consiglio di rivedere il codice del Vs. sito ed i plugin che state usando. Se proprio non potete cambiare nulla potete appoggiarvi ad un hosting che supporti efficaci servizi di hosting, io uso questo:
![]() |
Nessun commento:
Posta un commento