Je construis un plug-in qui va très bien jusqu'à présent. Je veux commencer à préparer la localisation. Je ne sais pas ce qui ne va pas, mais ça me dérange lorsque j'essaie de le charger dans Poedit.
Faisons donc cela étape par étape comme plusieurs tutoriels me le montrent.
Donc, dans myplugin.php, je charge ce qui suit pour dire à WP où sont mes fichiers de langue (après la création du dossier).
function ap_action_init()
{
// Localization
load_plugin_textdomain( 'myplugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action('init', 'ap_action_init');
Ensuite, j'ajuste toutes les chaînes nécessitant une traduction dans mon fichier (qui se trouve dans le dossier admin).
<h2><?php _e('MyPlugin Settings', 'myplugin'); ?></h2>
<?php _e('Element Width', 'myplugin'); ?>
<?php _e('This defines the default width of your Elements', 'myplugin'); ?>
Jusqu'ici tout va bien, je pense. Mais ensuite j'ouvre Poedit.
Je dis à poedit de sauvegarder le myplugin-nl_NL.po
dans le dossier des langues de mon plugin.
Je dis le chemin de base pour être ../
Et je dis à mes chemins d'être soit ./admin
ou admin
(si je lui donne /admin
, ou quelque chose d'autre, cela me donne une erreur le dossier n'existe pas. Je suppose donc qu'il trouve mes dossiers).
Je dis à poedit de rechercher les mots-clés __()
et _e()
.
Et puis j'appuie ok! À chaque fois (peu importe ce que je semble essayer), il ne me montre aucune chaîne à traduire, alors que lorsque j'importe un fichier .po normal, il me montre beaucoup.
Alors. Est-ce que quelqu'un voit où ça va mal ici?
P.S: Peut-être un avis important. Si j'essaie de créer manuellement mon propre fichier .po, il me montre les chaînes dans POedit. Mais si je mets ceci sur mon site web et que je change WordPress, c’est un langage qui ne change rien. Donc, je suppose que je fais quelque chose de mal dans mes fichiers WP.
J'espère que tout le monde peut aider :)
D'accord. J'ai trouvé le problème. Plusieurs tutoriels m'ont dit de mettre __()
et _e()
dans mon poedit. Qui, maintenant j'ai trouvé la réponse est assez stupide. Parce qu'il n'existe tout simplement aucune chaîne avec ces valeurs de recherche. Comme il y a toujours quelque chose entre ces crochets.
La solution est donc très simple (et assez stupide). Placez les valeurs de recherche sur __
et _e
Au lieu d'utiliser poedit pour générer vos chaînes de traduction à partir de votre code, utilisez les outils WordPress i18n pour générer un fichier POT à votre place.
Cela présente les avantages suivants: a) vous n'avez pas besoin de faire quoi que ce soit de spécial dans poedit et b) obtenez tout ce qui est possible pour la traduction, y compris les en-têtes et les appels de chaînes de traduction non standard (tout n'est pas __
et _e
).
Faire cela est relativement simple, vraiment.
Première étape
Procurez-vous un client SVN et procédez comme suit:
svn checkout http://develop.svn.wordpress.org/trunk/ develop
Vous obtiendrez une copie du répertoire de la corbeille WordPress et des outils spéciaux dont les développeurs ont besoin. Vous n’avez peut-être pas besoin de tous ces outils, mais il y en a un dont vous avez besoin.
(Remarque: si vous êtes un utilisateur git, vous pouvez créer un clone de git://develop.git.wordpress.org/
à la place.)
Deuxième étape
Allez dans ce répertoire, puis dans le répertoire tools, puis dans le répertoire i18n. Ici vous trouverez un fichier appelé makepot.php
. C'est celui dont vous avez besoin.
Pour l'utiliser c'est très simple. Obtenez une invite de commande et tapez ceci:
php makepot.php wp-plugin /path/to/your/plugin/folder plugin-slug.pot
Le drapeau "wp-plugin" indique au code d'examiner un plugin. Vous pouvez également utiliser wp-theme
ici pour générer un fichier POT pour un thème.
Remplacez le chemin du dossier de votre plugin par la copie locale appropriée du plugin et utilisez le slug de votre propre plugin pour le nom du fichier pot. Le code PHP analysera le répertoire de votre plugin et construira un fichier POT à votre place.
Un fichier POT est un "modèle de commande", que poedit peut gérer assez bien, je crois. Vous voudrez peut-être modifier son en-tête (dans n’importe quel éditeur de texte) pour y inclure votre auteur et les informations de plug-in, etc.
Pourquoi c'est mieux:
Comparez les résultats vous-même. Notez que les en-têtes du plug-in sont également inclus dans le fichier POT. Si vous avez utilisé des méthodes de traduction spéciales telles que _x
ou _ex
ou _n_noop
, elles figureront également dans le fichier.
Notez que le code makepot.php n'est pas autonome, il nécessite que le code source de WordPress soit disponible. Vous avez donc besoin de la caisse entière, pas seulement du répertoire des outils. Il utilise le code de traduction WordPress pour effectuer une partie du travail.