Se alcune parti del tuo plugin o tema appaiono non tradotte dopo aver utilizzato PTC, usa questa guida per verificare se la stringa fa parte del tuo progetto e se WordPress sta caricando il file corretto.
Verifica se la stringa è disponibile in PTC
Dalla dashboard di PTC, vai alla scheda Traduzioni e cerca la stringa originale. Se non la vedi, PTC non l’ha ricevuta. Questo di solito significa una delle seguenti cose:
- La stringa manca dal tuo file POT
Se il tuo file POT non include tutte le stringhe traducibili, ricrealo usando WP-CLI. Quindi, segui i passaggi nella nostra guida all’internazionalizzazione di temi e plugin WordPress dall’inizio.
- Il testo non è racchiuso in una funzione GetText
Assicurati che tutto il testo traducibile sia racchiuso in __()
o _e()
e utilizzi il text domain corretto.
Esempio:
__('Hello, world!', 'your-plugin');
Per maggiori dettagli, consulta il Passaggio 2 della nostra guida alla traduzione di temi e plugin WordPress.
- Le stringhe JavaScript non sono state contrassegnate come traducibili
Se il tuo plugin include testo traducibile in JavaScript:
- Vai su PTC → Impostazioni e clicca su File monitorati. Modifica il file di risorse pertinente e abilita “Questo è un progetto WordPress con JavaScript localizzabile?”

Questo indica a PTC di scansionare i file JavaScript alla ricerca di stringhe traducibili. Rigenererà le traduzioni e creerà una nuova merge request con i file aggiornati.
- Assicurati che WordPress sappia dove caricare i file di traduzione
.json
creati da PTC.
Se i file .json
sono posizionati all’interno della directory /languages/
del tuo plugin o tema, chiama wp_set_script_translations()
con il percorso corretto.
Per i plugin:
wp_set_script_translations( 'script-handle', 'text-domain', plugin_dir_path( __FILE__ ) . 'languages' );
Per i temi:
wp_set_script_translations( 'script-handle', 'text-domain', get_template_directory() . '/languages' );
Questo indica esplicitamente a WordPress di caricare i file .json
dalla cartella del tuo plugin o tema.
Conferma che WordPress stia caricando i tuoi file di traduzione
Se la stringa tradotta appare in PTC ma non viene ancora visualizzata nel tuo plugin, è possibile che WordPress non stia caricando il file di traduzione corretto. Controlla quanto segue:
- Il text domain viene caricato correttamente
Se stai utilizzando plugin incorporati o domini multipli, assicurati che ognuno sia caricato utilizzando load_plugin_textdomain()
o load_theme_textdomain()
.
- Le traduzioni da PTC non vengono sovrascritte
Per impostazione predefinita, WordPress dà la priorità ai file di traduzione in /wp-content/languages/
. Se il tuo plugin o tema ha traduzioni create dalla community di WordPress, queste possono sovrascrivere i tuoi file .mo in bundle.
Per assicurarti che WordPress carichi invece i tuoi file .mo, applica il filtro load_textdomain_mofile
.
Esempio di utilizzo per i plugin
Aggiungi la funzione di filtro al file PHP principale del tuo plugin (ad esempio, my-plugin.php):
function my_plugin_load_embedded_translation_file( $mofile, $domain ) {
// Replace 'my-domain' with your actual plugin's text domain
if ( 'my-domain' === $domain && false !== strpos( $mofile, WP_LANG_DIR . '/plugins/' ) ) {
$locale = apply_filters( 'plugin_locale', determine_locale(), $domain );
$local_mofile = WP_PLUGIN_DIR . '/' . dirname( plugin_basename( __FILE__ ) ) . '/languages/' . $domain . '-' . $locale . '.mo';
if ( file_exists( $local_mofile ) ) {
return $local_mofile; // Use bundled translation if available
}
}
return $mofile;
}
add_filter( 'load_textdomain_mofile', 'my_plugin_load_embedded_translation_file', 10, 2 );
Esempio di utilizzo per i temi
Aggiungi la funzione di filtro nel file functions.php del tuo tema:
function my_theme_load_embedded_translation_file( $mofile, $domain ) {
// Replace 'my-domain' with your actual theme's text domain
if ( 'my-domain' === $domain && false !== strpos( $mofile, WP_LANG_DIR . '/themes/' ) ) {
$locale = apply_filters( 'theme_locale', determine_locale(), $domain );
$local_mofile = get_template_directory() . '/languages/' . $locale . '.mo';
if ( file_exists( $local_mofile ) ) {
return $local_mofile; // Use bundled translation if available
}
}
return $mofile;
}
add_filter( 'load_textdomain_mofile', 'my_theme_load_embedded_translation_file', 10, 2 );
Assicurati che la denominazione dei file MO corrisponda alle aspettative di WordPress
WordPress si aspetta diverse convenzioni di denominazione per i file .mo a seconda di dove li memorizzi.
- Se i tuoi file di traduzione si trovano all’interno della cartella del tema, usa:
{locale}.mo
Esempio: de_DE.mo (abbinato a de_DE.po)
- Se hai posizionato i file nella directory globale della lingua di WordPress (wp-content/languages/themes/), usa:
{text-domain}-{locale}.mo
Esempio: my-theme-de_DE.mo (abbinato a my-theme-de_DE.po)