1. Scrivi pensando alla localizzazione
Non usare echo
o print()
per produrre output di testo, invece usa le funzioni di WordPress __()
e _e()
:
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
e __()
fornirà la traduzione - nella lingua corrente - del testo fornito come primo parametro. _e()
produrrà il testo mentre __()
lo restituirà.
Il secondo parametro è il dominio di testo , lo userai per dire a WordPress che il testo fornito come primo parametro appartiene a questo plugin, puoi usare qualsiasi nome tu voglia ma preferisco usare lo stesso nome che ho usato per il plugin file di directory, lo trovo più intuitivo.
Come generare un testo dinamico come: "Ciao <nomeutente>"?
Con __()
e sprintf()
:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
2. Preparare i file .pot / .po / .mo
definizioni
- Il file .pot : è messo a tua disposizione dallo sviluppatore del plug-in e viene utilizzato come punto di partenza per creare nuove traduzioni, WordPress non lo utilizza.
- Un file .po : è un file di traduzione che tu o qualcun altro hai iniziato e forse completato, WordPress non lo utilizza.
- File A.mo : viene creato automaticamente da Poedit ogni volta che salvi un file .po, tutto ciò che puoi fare con questi file è caricarli o ricaricarli ogni volta che crei o aggiorni un file .po. WordPress ottiene traduzioni dai file .mo .
Apri Poedit e crea un nuovo catalogo (File ›New Catallog ...) con queste impostazioni:
- Informazioni sul progetto: utilizza le tue informazioni (o il tuo team), la lingua e il paese devono corrispondere alla lingua predefinita del plug-in
- percorsi:
- Percorso di base:
.
- Percorsi: rimuovi tutto e aggiungi
..
, (memorizzeremo il file della lingua in una sottodirectory del plugin chiamata lingue)
- Parole chiave: rimuovi tutto e aggiungi
__
e_e
Salvare il catalogo come ed eseguire la scansione dei file del plugin per il testo traducibile premendo il pulsante di aggiornamento. Al termine dell'aggiornamento vicino a quel catalogo, non sarà necessario aggiornare quel file a meno che non si aggiungano nuove stringhe traducibili (ovvero racchiuse tra o ) al plug-in./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
__()
_e()
Ora creiamo la prima traduzione (userò fr_FR):
Usando Podeit , crea un catalogo da un file POT
(File ›Nuovo catalogo da file POT ...) :
- Informazioni sul progetto: usa le tue informazioni (o il tuo team), cambia la lingua e il paese , userò il francese e la Francia
- Percorsi: non cambiare
- Parole chiave: non chage
Salva il catalogo come . Traduci alcune o tutte le stringhe, salva nuovamente il file .po, carica sia i file .po che i file .mo./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
Si noti che ogni volta che si salva un file .po viene generato un file .mo con lo stesso nome, il nome file del file .po è cruciale , è composto dalla concatenazione del dominio di testo del plugin (my-plugin) e dalle impostazioni locali della lingua ( fr_FR), dai sempre il nome ai tuoi file .po per plugin come questo: [textdomain] - [locale] .po , ecco alcuni esempi:
- Italiano / Italia:
wpcf7-it_IT.po
- Portoghese / Brasile:
wpcf7-pt_BR.po
- Arabo:
wpcf7-ar.po
... Sì!
Ogni volta che il plug-in viene aggiornato con nuovo testo, aggiorna il file po, traduci nuove stringhe e riavvia i file .po e .mo
3. Indicare al plug-in di caricare il testo tradotto per la lingua corrente
Da qualche parte nel tuo plugin, devi dire a WordPress di usare il tuo file .mo, puoi farlo usando questo codice all'inizio del tuo file plugin:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
Sostituisci my-plugin
con il nome del tuo plugin nel 1 ° e 3 ° parametro della load_plugin_textdomain
funzione.
4. Test e risoluzione dei problemi
Alcuni motivi potrebbero non funzionare:
- Le stringhe non vengono importate nel file .pot o .po
- → Impostazioni del catalogo errate (percorso o parole chiave o entrambi)
- Il testo non è tradotto sul sito WordPress
- → File .mo per quella lingua mancante o con un nome file errato
- → Dominio di testo non utilizzato (sostituire
_e('my text')
con _e('my text', 'my-plugin')
)
- → Dominio di testo non caricato (utilizzare l'esempio sopra con i parametri giusti, WP non ti avviserà degli errori)