ExtensionWordPress

Problème de traduction dans WordPress

J’ai dernièrement été confronté à un problème de traduction dans WordPress et plus particulièrement dans une extension : booked

Mon problème était le suivant : le bouton « BOOK APPOINTMENT » restait en anglais peu importe les modifications.

Avant de vous donner ma solution qui en soit ne me satisfait pas pleinement, je vais vous exposer toutes mes tentatives. Peut-être qu’une âme charitable pointera l’erreur que j’ai commise.

Utilisation de l’extension loco translate

L’extension Loco Translate m’a permis de traduite l’intégralité du fichier booked.po en langue Française. Pour 98% des cas, la traduction était effective sur le site. Par contre j’avais 2 / 3 expressions non traduite dont ce fameux bouton.

D’un point de vue pratique, je stocke mes traductions dans wp-content/languages/plugins. J’évite d’utiliser les répertoire languages du plugin car je ne modifie jamais les fichiers présents dans un plugin.

Utilisation de POEdit

La seconde étape dans ma galère a été d’utiliser l’application Poedit. D’un point de vue ergonomie je le trouve plus sympa que loco translate. Notamment sur la distinction entre les expressions au singulier et au pluriel.

Concernant la manipulation pour récupérer et mettre à jour le fichier de traduction

  1. Récupération du fichier booked-fr_FR.po et booked-fr_FR.mo en ftp (utilisation de fileZila)
  2. Ouverturedu fichier po à l’aide de Poedit
  3. Recherche de la chaine « book apointment »
  4. Contrôle et modification de la traduction
  5. Enregistrement du fichier
  6. Mise à jour de la version du serveur par ftp

Là encore, mon bouton restait en anglais.

Modification du code source du plugin

Il me fallait maintenant savoir si le plugin avait dans son développement donné la possibilité de traduire ce texte. J’ai donc mis les mains dans le code php.

J’ai donc chercher l’emplacement de cette chaine de caractère et je l’ai modifié. La modification était temporaire, elle m’a juste permis de contrôler que c’était celle que je cherchais.

Pour rappel, une modification directe d’un plugin est très dangereuse pour plusieurs raisons. La principale est que votre modification risque d’être perdue lors d’une mise à jour de celui-ci.

Pour ceux qui se demande comment j’ai trouvé ma chaine de caractères, j’ai juste téléchargé mon site en ftp et j’ai utilisé Visual studio code pour faire une recherche.

Code trouvé

Après avoir trouvé mon expression, celle-ci est dans une fonction de traduction prenant plusieurs paramètres dont le contexte et le domaine. Le domaine est assez simple à comprendre, ça indique à WordPress dans quel fichier de traduction il doit récupérer la chaine. Quand au contexte, il permet de faire une discrimination lorsque la chaine à traduire est identique mais que la traduction peut être différente.

Mon problème est donc lié au contexte car dans mes fichiers po, je n’ai pas encore trouvé la possibilité de lui indiquer le contexte.

Fonction esc_html_x

Utilisation de l’extension Say what? ma solution pour ce problème de traduction dans wordpress

J’ai solutionné mon problème à l’aide de l’extension Say what?. Ce plugin permet d’ajouter des règles ayant pour paramètres :

  1. L’expression à traduire
  2. le domaine
  3. le contexte
  4. l’expression traduite

Les 3 premiers paramètres sont ceux de la fonction esc_html_x.

Ajout d'une traduction

Pour le résultat suivant

Résultat de la traduction

Cliquez pour évaluer cet article !
[Total: 0 Moyenne : 0]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *