Per anni le procedure di internazionalizzazione (i18n) sono state ben supportate da WordPress, lato PHP. In questo ambiente infatti, WordPress fornisce tutti gli strumenti necessari per localizzare il suo Core, i plug-in ed i temi. Nella versione 5.0 del CMS abbiamo ora a disposizione la stessa funzionalità anche nell'ambiente Javascript.
Quando si registrano gli script, è possibile aggiungere il pacchetto wp-i18n come dipendenza per permette l'aggiunta di stringhe "traducibili" come accade normalmente in ambiente PHP:
wp_register_script( 'my-handle', plugins_url( '/js/my-file.js', MY_PLUGIN ), array( 'wp-i18n' ) );
Mentre all'interno degli script sarà possibile utilizzare wp-18n come segue:
const { __, _x, _n, _nx } = wp.i18n;
__( '__', 'my-domain' );
_x( '_x', '_x_context', 'my-domain' );
_n( '_n_single', '_n_plural', number, 'my-domain' );
_nx( '_nx_single', '_nx_plural', number, '_nx_context', 'my-domain' );
Queste funzioni riflettono le loro controparti PHP e possono essere utilizzate nella stessa maniera. Lo step finale sarà quello di notificare a WordPress che gli script JavaScript contengono le traduzioni, e a quale tipo di dominio appartengono, per permettere allo stesso CMS di selezionare e caricare solo traduzioni necessarie al contento corrente. Questo con lo scopo di rendere l'applicazione il più performante possibile:
wp_set_script_translations( 'my-handle', 'my-domain' );
Al momento è possibile veicolare le proprie traduzioni utilizzando la funzione load_textdomain
e passando l'apposito file MO. Questo è possibile anche utilizzando wp_set_script_translations
il quale accetta un terzo parametro opzionale che rappresenta la path della traduzione e permette a WordPress di ricercare l'apposita traduzione:
wp_set_script_translations( 'my-handle', 'my-domain', plugins_url( '/languages', MY_PLUGIN ) );
WordPress si accerta prima di tutto che il file ${domain}-${locale}-${handle}.json
esista nella path indicata e, in caso positivo, lo utilizzerà come fonte delle traduzioni. In alternativa, controllerà la path per il file md5 prima di virare, nell'ultimo step, nella directory di default dedicata alle lingue.
E' possibile veicolare i file delle proprie traduzioni nel formato JED 1.x (.json
). GlotPress sarà in grado di produrre questo tipo di file in collaborazione con strumenti come po2json.