Here With Me

Le blog technique d'Amaury Balmer qui parle de technologies open-source, mais surtout de WordPress !

Explications sur l’internationalisation de WordPress et créer un fichier PO avec Poedit

| 34 Commentaires

Vous avez repéré un thème ou un plugin internationalisé qui vous plait ?
Traduisez-le et partagez-le à la communautée !

( Si le thème ou plugin en question n’est pas internationalisé, consultez la partie 3 de l’excellent article de Marc Charlet. )

 

Télécharger et installer Poedit

Direction le site de l’outil : https://www.poedit.net/

Vous trouverez sur la page de téléchargement une version pour chaque plateforme (Windows, OS et ).

Prenez la bonne version et installez-la ! ( pour windows: Next – I’accept – Next – Next- Next – Next – Install – Finish )

 

Précision sur le fonctionnement de l’internationalisation dans

WordPress permet dans son implémentation de délimiter les traductions dans des « domaines ». On peut faire l’analogie avec le découpage de la France en départements / régions.

Pour cela, les fonctions d’internationalisations disposent de plusieurs paramètres :

function __($text, $domain = ‘default’)

function _e($text, $domain = ‘default’)

Le premier paramètre ($text) correspond à la chaine de texte à traduire. Tandis que le deuxième ($domain) correspond au domaine de . On peut d’ailleurs remarquer que si on n’utilise pas de deuxième paramètre, le domaine prend la valeur « default ». (le cas des chaines originales de WordPress)

Le fichier PO/MO présent dans le pack français traduit l’ensemble du domaine « default » de WordPress.

Exemple: Une chaine de texte du domaine « default » traduit par le pack français.

<?php _e(‘Anonymous’); ?>

Attention: N’étendez pas la traduction par défaut à d’autres ou , au risque d’avoir de nombreux problème lors des mises à jour du pack français…

 

Vous l’aurez compris, il faut que votre thème ou plugin, dispose de son propre domaine de traduction pour toutes les chaines à traduire. Si ça n’est pas le cas, uniformiser le nom du domaine.

Exemple: Une chaine du plugin SimpleTagging, utilisant le domaine « simpletagging ».

<?php _e(‘Simple : Options’, ‘simpletagging’); ?>

Le principe est le même pour les thèmes et les plugins.

 

Nommage des fichiers de traduction (PO/MO)

Selon le cas, plugin ou thème, le nommage des fichiers de traduction est différent, explications !

Les thèmes

C’est le cas le plus simple, votre fichier de traduction doit juste être nommé dans le code de langue utilisé.

Exemple pour un WordPress français, il faudra juste nommé vos fichiers en fr_FR.po et fr_FR.mo et les placer dans le même dossier que votre thème.

Plus généralement, il faudra que vos fichiers soient nommer de la même façon que la constante « WPLANG » fixée dans le fichier -config.php

define (‘WPLANG’, ‘fr_FR’);

Les plugins

Cette fois-çi c’est un tout petit peu plus compliqué, votre fichier doit être nommé de la façon suivante : domaine – code langue .mo

Exemple pour le plugin SimpleTagging (rappel, le domaine de traduction est « simpletagging ») :

simpletagging-fr_FR.po

simpletagging-fr_FR.mo

 

Attention: Tout cela ne vaut que si vos plugins et thèmes sont bien développés… si cela ne fonctionne pas le plus simple est de contacter l’auteur pour savoir quelle est la spécificité. (il n’est pas rare de voir des dossiers « languages » dans les plugins, le cas échant déplacer vos fichiers de traduction dedans)

 

Créer un fichier PO et POT depuis les sources dans Poedit

L’ancienne méthode en ligne de commande est révolue ! (sauf cas spécifique)

Poedit vous permet de créer directement un fichier PO depuis les sources de votre plugin ou thème.
Mon exemple traitera d’un plugin, mais c’est le même principe pour les thèmes !

  1. Lancer Poedit
  2. Cliquer « Fichier – Nouveau catologue »
  3. Une fenêtre configuration apparait
    1. Compléter l’onglet « Info projet »
      Poedit-InfoProjet
    2. Compléter l’onglet « Chemins »
      1. Ajouter un chemin grâce au bouton : Pedit-Ajoutchemin
      2. Copier/coller le chemin de votre projet à l’aide de la barre d’adresse ou saisissez-la manuellement (cliquer pour agrandir)
        Poedit-Adresse
        Peoedit-OngletAdresse
    3. Compléter l’onglet « Mots clé »
      1. Ajouter un mot clé grâce au bouton: Pedit-Ajoutchemin
      2. Ajouter les mots clés : ‘__’, ‘_e’ et ‘_c’
      3. Résultat à obtenir:
        Poedit-Motscles
    4. Appuyer sur Ok
  4. Enregistrer le fichier avec comme nom, le domaine de votre plugin (exemple: exemple.po)
  5. Si tout se déroule bien, Poedit vous affiche une fenêtre avec les chaines ajoutées et éventuellement supprimées.
  6. Ne commencez pas tout de suite la traduction.
  7. Enregistrer le fichier et fermer Poedit.
  8. Dupliquer le fichier exemple.po en exemple.pot
  9. Supprimer le fichier exemple.mo créé automatiquement lors de l’enregistrement
  10. Renommer le fichier exemple.po en exemple-fr_FR.po
  11. Vous pouvez alors éditer ce fichier avec Poedit et réaliser la traduction française
  12. Le fichier POT permettra à d’autres personnes d’éventuellement traduire votre thème/plugin sans s’embêter à générer un fichier PO depuis les sources.

 

Mise à jour de votre traduction (POT)

Si vous effectuez des modifications dans les sources du plugins ou du thème:

  1. Il vous suffit de renommer le fichier exemple.pot en fichier exemple.po
  2. De le mettre à jour, pour cela:
    1. Menu « Catalogue » – « Mise à jour depuis les sources »
    2. Vous aurez un aperçu des ajouts et des suppressions
    3. Valider
    4. Enregistrer et fermer Poedit
  3. Renommer le fichier exemple.po en exemple.pot
  4. Supprimer le fichier exemple.mo créé automatiquement lors de l’enregistrement

Vous disposez alors d’un fichier POT à jour.

 

Mise à jour de votre traduction PO depuis un fichier POT

  1. Ouvrer votre traduction exemple-fr_FR.po avec Poedit
  2. Cliquer sur le sur menu « Catalogue – Mettre à jour depuis fichier POT »
  3. Sélectionner le fichier POT
  4. Valider les modifications
  5. Traduiser les nouvelles chaines
  6. Enregistrer !

Vous disposez d’un fichier de traduction à jour.

 

Bonne traduction ;)