Comment préparer une traduction de plugin WordPress?

16

Quel est le meilleur moyen de créer un plugin prêt à être traduit?

Il n’est pas nécessaire de le traduire dès le début, mais il doit être facile à traduire pour que les autres développeurs de différentes cultures puissent participer au processus de localisation du plug-in.

    
posée Nabil Kadimi 13.01.2013 - 00:03

1 réponse

35

1. Écrivez en pensant à la localisation

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 deuxième paramètre est le domaine de texte . 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 le faire. utilise le même nom que celui que j'ai utilisé pour le fichier plugin de répertoire, je le trouve plus intuitif.

Comment afficher du texte dynamique du type "Bonjour < nom d'utilisateur >"?

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 sert de 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 une autre personne avez commencé. WordPress ne l'utilise pas. Il est peut-être terminé.
  • Fichier A.mo : créé automatiquement par Poedit chaque fois que vous enregistrez un fichier .po. Tout ce que vous pouvez faire avec ces fichiers consiste à les télécharger ou à les télécharger chaque fois que vous créez ou mettez à jour un fichier .po. WordPress obtient les traductions à partir de 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 & add .. , (nous allons stocker le fichier de langue dans un sous-répertoire de plugin appelé languages)
  • Mots-clés: supprimer tout & ajouter __ et _e

Enregistrez le catalogue sous /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot et analysez vos fichiers de plug-in à la recherche de texte traduisible 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 (j'utiliserai fr_FR):

Utilisation de Podeit , créer un catalogue à partir d'un fichier POT   (Fichier ›Nouveau catalogue à partir du 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 vous découragez pas

Enregistrez le catalogue en tant que /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po . Traduisez tout ou partie des chaînes, enregistrez le fichier .po à nouveau, importez 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 les paramètres régionaux (fr_FR), nommez toujours vos fichiers .po comme suit: [textdomain] - [locale] .po , en 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 plug-in est mis à jour avec un nouveau texte, mettez à jour le fichier po, traduisez les nouvelles chaînes et remettez en ligne les fichiers .po et .mo .

3. Demandez au plug-in de charger le texte traduit pour la langue en cours

Quelque part dans votre plug-in, vous devez indiquer à WordPress d'utiliser votre fichier .mo. Vous pouvez le faire en utilisant ce code au début de votre fichier de plug-in:

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 premier et troisième paramètres de la fonction load_plugin_textdomain .

4. Tester et dépanner

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, mots clés ou les deux)
  • Le texte n'est pas traduit sur le site WordPress
    • → Le fichier .mo de cette langue est manquant ou porte un nom de fichier incorrect
    • → Domaine de texte non utilisé (remplacez _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)
réponse donnée Nabil Kadimi 13.01.2013 - 00:03

Lire d'autres questions sur les étiquettes