1. Écrivez en tenant compte de la localisation
N'utilisez pas echo
ou print()
pour produire une sortie texte, utilisez plutôt les fonctions WordPress __()
et _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()
et __()
fournira la traduction - dans la langue actuelle - du texte fourni comme premier paramètre. _e()
affichera le texte alors __()
qu'il le renverra.
Le deuxième paramètre est le domaine de texte , vous l'utiliserez pour dire à WordPress que le texte fourni comme premier paramètre appartient à ce plugin, vous pouvez utiliser n'importe quel nom que vous voulez mais je préfère utiliser le même nom que celui que j'ai utilisé pour le plugin fichier de répertoire, je le trouve plus intuitif.
Comment sortir du texte dynamique comme: "Bonjour <nomutilisateur>"?
Avec __()
et 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. Préparez les fichiers .pot / .po / .mo
Définitions
- Le fichier .pot : est mis à votre disposition par le développeur du plugin et est utilisé comme point de départ pour créer de nouvelles traductions, WordPress ne l'utilise pas.
- Un fichier .po : est un fichier de traduction que vous ou quelqu'un d'autre avez commencé et peut-être terminé, WordPress ne l'utilise pas.
- Fichier A.mo : est créé automatiquement par Poedit chaque fois que vous enregistrez un fichier .po, tout ce que vous pouvez faire avec ces fichiers est de les télécharger ou de les télécharger à nouveau chaque fois que vous créez ou mettez à jour un fichier .po. WordPress obtient les traductions des fichiers .mo .
Ouvrez Poedit et créez un nouveau catalogue (Fichier ›Nouveau Catallog ...) avec ces paramètres:
- Informations sur le projet: utilisez vos informations (ou celles de votre équipe), la langue et le pays doivent correspondre à la langue par défaut de votre plugin
- Chemins:
- Chemin de base:
.
- Chemins: supprimez tout et ajoutez
..
, (nous allons stocker le fichier de langue dans un sous-répertoire de plugin appelé langues)
- Mots-clés: supprimer tout et ajouter
__
et_e
Enregistrez le catalogue sous et scannez vos fichiers de plugin pour le texte traduisible en appuyant sur le bouton de mise à jour. Lorsque la mise à jour est terminée, fermez ce catalogue, vous n'aurez pas besoin de mettre à jour ce fichier à moins que vous ajoutiez de nouvelles chaînes traduisibles (c'est-à-dire incluses dans ou ) à votre plugin./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
__()
_e()
Créons maintenant la première traduction (j'utiliserai fr_FR):
A l'aide de Podeit , créez un catalogue à partir d'un fichier POT
(Fichier ›Nouveau catalogue à partir d'un fichier POT ...) :
- Informations sur le projet: utilisez vos informations (ou celles de votre équipe), changez la langue et le pays , j'utiliserai le français et la France
- Chemins: ne changez pas
- Mots-clés: ne pas chage
Enregistrez le catalogue sous . Traduisez une partie ou la totalité des chaînes, enregistrez à nouveau le fichier .po, téléchargez les fichiers .po et .mo./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
Notez que chaque fois que vous enregistrez un fichier .po, un fichier .mo est généré avec le même nom, le nom de fichier du fichier .po est crucial , il est composé de la concaténation du domaine de texte du plug-in (my-plugin) et de la langue locale ( fr_FR), nommez toujours vos fichiers .po pour des plugins comme celui-ci: [textdomain] - [locale] .po , voici quelques exemples:
- Italien / Italie:
wpcf7-it_IT.po
- Portugais / Brésil:
wpcf7-pt_BR.po
- Arabe:
wpcf7-ar.po
... Oui!
Chaque fois que le plugin est mis à jour avec un nouveau texte, mettez à jour le fichier po, traduisez de nouvelles chaînes et téléchargez à nouveau les fichiers .po et .mo
3. Demandez au plugin de charger le texte traduit pour la langue actuelle
Quelque part dans votre plugin, vous devez dire à WordPress d'utiliser votre fichier .mo, vous pouvez le faire en utilisant ce code au début de votre fichier de plugin:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
Remplacez my-plugin
par votre nom de plugin dans les 1er et 3e paramètres de la load_plugin_textdomain
fonction.
4. Testez et dépannez
Certaines raisons peuvent ne pas fonctionner:
- Les chaînes ne sont pas importées dans le fichier .pot ou .po
- → Paramètres de catalogue incorrects (chemin d'accès ou mots clés ou les deux)
- Le texte n'est pas traduit sur le site WordPress
- → Le fichier .mo pour cette langue est manquant ou a un nom de fichier incorrect
- → Domaine de texte non utilisé (remplacer
_e('my text')
par _e('my text', 'my-plugin')
)
- → Domaine de texte non chargé (utilisez l'exemple ci-dessus avec les bons paramètres, WP ne vous avertira pas des erreurs)
La réponse de Nabil est assez complète mais il existe une variation facile à condition:
Votre plugin est sur le référentiel de plugins WordPress.org
Vous êtes prêt à exiger que votre plugin ne fonctionne qu'avec WordPress 4.6 ou supérieur.
Les étapes sont les suivantes:
Dans le fichier readme.txt de votre plugin, ajoutez
Requires at least: 4.6
. Voir https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/si ce n'est pas déjà fait, téléchargez votre plugin dans le référentiel de plugins WordPress. Voir https://wordpress.org/plugins/developers/add/ .
Trouvez le domaine slug / text de votre plugin. Pour ce faire, accédez à la page de votre plugin dans le référentiel de plugins WordPress. L'URL sera comme https://wordpress.org/plugins/your-plugin-slug/ . Cette dernière partie de l'URL, «votre-plugin-slug», est le slug de votre plugin. C'est ce que vous utilisez pour le domaine de texte des fonctions de traduction.
Utilisez les fonctions de traduction de WordPress dans votre plugin (comme
__e(‘hello’, ‘my-plugin-domain’);
). Assurez-vous simplement d'utiliser le domaine de texte du plug-in correct, acquis à l'étape précédente. Voir https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ pour plus d'informations.Si vous effectuez les étapes ci-dessus, WordPress se chargera de:
(Réponse de mon article de blog ici: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )
la source