Quelle est la meilleure façon de créer un plugin prêt à être traduit?
Il n'a pas besoin d'être traduit dès le début, mais il doit être facilement traduisible pour que les autres développeurs de différentes cultures puissent participer au processus de localisation du plugin.
N'utilisez pas echo
ou print()
pour générer du 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 __()
fourniront la traduction - dans la langue actuelle - du texte fourni en tant que premier paramètre. _e()
affichera le texte alors que __()
le renverra.
Le second paramètre est le text domain , vous l’utiliserez pour indiquer à WordPress que le texte fourni en tant que premier paramètre appartient à ce plugin. Vous pouvez utiliser le nom de votre choix, mais je préfère utiliser le même nom. comme je l'ai utilisé pour le fichier plugin de répertoire, je le trouve plus intuitif.
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;
Définitions
Ouvrez Poedit et créez un nouveau catalogue (Fichier ›Nouveau Catallog ...) avec ces paramètres:
.
..
, (nous allons stocker le fichier de langue dans un sous-répertoire de plugin appelé languages)__
et _e
Enregistrer le catalogue en tant que /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
et scan vos fichiers de plug-in pour le texte à traduire en appuyant sur le bouton de mise à jour. Lorsque la mise à jour est terminée, fermez ce catalogue. Vous n'aurez plus besoin de mettre à jour ce fichier, sauf si vous ajoutez de nouvelles chaînes traduisibles (insérées dans __()
ou _e()
) dans votre plug-in.
Créons maintenant la première traduction (je vais utiliser fr_FR):
Avec Podeit , créez un catalogue à partir d’un fichier POT (Fichier ›Nouveau catalogue à partir d’un fichier POT ...)}: _:
Enregistrer le catalogue sous la forme /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
. Traduisez une partie ou la totalité des chaînes, save le fichier .po à nouveau, upload les fichiers .po et .mo.
Notez que chaque fois que vous enregistrez un fichier .po, un fichier .mo est généré avec le même nom, le nom du fichier .po est crucial , il est composé de la concaténation du domaine de texte du plugin (my-plugin ) et la langue locale (fr_FR), nommez toujours vos fichiers .po pour des plugins comme ceci: [textdomain] - [locale] .po , voici quelques exemples:
wpcf7-it_IT.po
wpcf7-pt_BR.po
wpcf7-ar.po
... Oui!Chaque fois que le plugin est mis à jour avec un nouveau texte, update le fichier po, translate nouvelles chaînes et relancez les fichiers .po et .mo
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 le nom de votre plugin dans les 1er et 3ème paramètres de la fonction load_plugin_textdomain
.
Quelques raisons pour lesquelles cela peut ne pas fonctionner:
_e('my text')
par _e('my text', 'my-plugin')
)La réponse de Nabil est assez complète, mais il existe une variation simple à condition que:
Votre plugin se trouve sur le référentiel de plugins WordPress.org
Vous souhaitez exiger que votre plug-in 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à le cas, 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, allez à la page de votre plugin sur le référentiel de plugins WordPress. L'URL ressemblera à https://wordpress.org/plugins/your-plugin-slug/ . La dernière partie de l’URL, "your-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 bon domaine de texte de plugin, acquis à l'étape précédente. Voir https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ pour plus d'informations.
Si vous suivez les étapes ci-dessus, WordPress prendra en charge:
(Réponse de mon article de blog ici: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )