Traduire son plugin
Avec la version gratuite de Poedit
1 Créer un nouveau catalogue avec poedit
. 1 Tout d'abord installer Poedit Site officiel de Poedit, en suivant les instructions
. 2 Choisir un nom de Text Domain
, par exemple myplugin
, il est important pour déterminer les bons fichiers de traduction.
. 3 Dans le dossier de votre plugin, ajouter un dossier languages
wp-content |--- plugins | |--- my-plugin | | |--- languages
. 4 Lancer Poedit et faire fichier > nouveau catalogue
et entrer le plus précisément possible les paramètres pour les 3 onglets
- Préférez le UTF-8 biensûr.
- Pour le pluriel utilisez
nplurals=2; plural=(n > 1);
(voir I18n for WordPress Developers - Plurals) - Indiquez bien le chemin du répertoire/fichier à traduire. Si Poedit ne le trouve pas, le bouton mettre à jour reste désactivé.
- Indiquez l'ensemble des fonctions de traduction que vous utilisez.I18n for WordPress Developers )
Les paramètres peuvent être modifier à tout moment avec Catalogue > Préférences
(Alt + Enter
)
. 5 Enregistrez votre catalogue dans le dossier languages
sous le nom myplugin-default.po
. Un fichier myplugin-default.mo
est automatiquement créé. Vous pouvez aussi le sauvegarder tout de suite sous le nom myplugin-fr_FR.po
où myplugin
est mon nom de “text Domain”.
2 Insérer les fonctions de traductions dans les fichiers php
Dans vos fichiers php, remplacez les textes à traduire par exemple à la place de “Custom Menu Title”
,
on écrira _( 'Custom Menu Title', 'myplugin' )
où myplugin
est le nom de mon “text domain”.
add_menu_page( __( 'Custom Menu Title', 'myplugin' ), __( 'Custom Menu Title', 'myplugin' ), 'manage_options' ,'myplugin-menu', 'a_function', '' , 50);
3 Traduire avec poedit
Dans Poedit, faire “Mettre à jour”, Poedit charge alors tous les textes à traduire. Il ne reste plus qu'à traduire chaque ligne.
(ici text domain == maposm):
4 Charger la traduction de votre plugin
Indiquer au chargement du plugin, l'adresse des fichiers de traduction
add_action( 'init', 'myplugin_load_textdomain' ); function myplugin_load_textdomain(){ load_plugin_textdomain( 'myplugin', false, basename(dirname(__FILE__)) . '/languages' ); }
— Elisabeth Pointal 22/04/2016 18:04