Traduire un site web ou un logiciel avec PoEdit

Logo PoeditIl arrive fréquemment que l’on tombe sur un plugin ou un logiciel qui ne soit disponible que dans le langue de Shakespeare, ou du moins, qui ne soit pas disponible dans le franc gaulois que nous connaissons bien.

La méthode la plus répandue (et heu… la plus efficace ?) pour rendre un site ou une application multilingue consiste à se servir de GNU Gettext. Cet outil se sert de fichiers de traduction ayant une extension *.mo (le fichier traduit compilé). Vous les trouverez généralement dans un dossier lang, ln, lng, etc.

A partir de là, il y a 2 solutions, soit vous trouvez dans le même dossier ou dans le dossier des sources, un fichier avec une extension *.po (le projet de traduction), soit il va falloir aller farfouiller dans les sources du logiciel pour trouver les textes à traduire. Dans un cas comme dans l’autre, rien de dramatique.

Si vous n’avez pas de fichier *.po disponible, en ouvrant l’un des fichier source du logiciel (ou du site), vous devriez trouver quelque chose qui ressemble à ça :

__( 'english version of the text', 'nomDuSite' )

Il s’agit en fait d’une fonction __() qui appelle la traduction du « english version of the text » pour l’application « nomDuSite ». Le nom de l’application « nomDuSite » est facultatif (ou pas, selon les applis).

Une fois que nous avons nos fichiers sources et le (ou les) noms des fonctions qui appellent les traductions, il ne nous reste plus qu’à installer PoEdit pour nous lancer dans la traduction à proprement parler.

Une fois installé, il faut créer un nouveau catalogue dans PoEdit. Si votre fichier *.mo est déjà présent dans votre projet à traduire, il suffira de l’ouvrir puis d’aller dans Catalogue => Configuration.

Catalogue Poedit

Dans cet onglet, il faudra remplir les formes plurielles :

nplurals=2; plural n>1;

Dans l’onglet chemin, bien penser à remplir le chemin complet vers le répertoire racine du projet.

Chemins Poedit

Enfin, dans l’onglet mots clefs, saisir le plus important : le nom de la fonction de traduction (sans les parenthèses), c’est cet élément là qui servira à PoEdit pour repérer automatiquement tous les textes à traduire.

Poedit Mots clefs

Maintenant, PoEdit est prêt pour aller repérer les chaînes à traduire dans les fichiers sources, il suffira d’aller dans Catalogue => Mettre à jour à partir des sources pour que l’ensemble des termes à traduire apparaissent dans une liste.

Traductions Poedit

Il ne reste plus que le plus long : traduire chaque ligne (dans l’espace blanc en dessous de la version native). Pour les formes plurielles, 2 solutions sont proposées directement par Poedit, il suffit alors de remplir les deux cas possibles. Si une valeur est passée à la traduction, elle le sera sous la forme habituelle « %s ».

Les formes plurielles de Poedit

Un simple clic sur Enregistrer sauvegardera automatiquement le fichier de projet (PO) et le fichier de traduction compilé (MO).

Bonnes traductions 😉
Et si vous avez d’autres astuces, je suis preneur !

6 commentaires

  • Bonjour,

    Si vous êtes intéressés de traduire logiciels pour Internet, pour PC, pour mobiles ou tout autre type de logiciels, je vous recommandons chaleureusement le nouvel instrument numérique ”l10n” que mon équipe a récemment créé – et qui a toutes les chances de rendre vos activités de bureau bien plus faciles et rapides.

    http://poeditor.com/

    POEditor est intuitif, basé sur travail en collaboration. Il comprend de nombreuses fonctions qui puissent vous soutenir lors du processus de gestion de traductions, que vous pourriez découvrir sur notre page Internet.Vous pouvez importer depuis multiples types de fichiers de localisation (traduction) (pot, po, xls, xlsx, strings, xml, resx, properties) ou se servir directement de notre REST API.
    N’hésitez pas de l’essayer et/ou le proposer aux développeurs ou, en général, a ceux qui en seraient intéressés.

  • Par Laurent_C 

    Petite question sur les pluriels de POEDIT
    La forme originale présente deux lignes et la traduction une seule. Comment se fait-il qu’une seule ligne soit présente alors que deux sont techniquement utilisées ?
    Pour être plus clair comment faire pour avoir les deux formes : singulier et pluriel dans la traduction ?
    Merci !

    • En re-survolant mon billet, je m’aperçois en effet qu’il est très lacunaire. Notamment sur la partie concernant les pluriels.
      Je n’ai pas remis la main sur le fichier utilisé pour ce billet, je n’aurai donc pas la ligne de code correspondant, mais le principe est simple : dans le code, la fonction appelée pour la traduction gère le pluriel (généralement « _n() ») via 2 possibilités citées l’une après l’autre dans la fonction.
      Dans le fichier de traduction en revanche, seule la première est mentionnée en référence dans la partie haute.
      Dans la partie basse, dédiée à la traduction pure, Poedit propose les 2 versions dans la langue d’origine et une version après l’autre dans la nouvelle langue via le bouton juste au dessus du champ de traduction : la forme 0 et la forme 1 correspondent à la forme singulier puis à la forme plurielle.
      Ergonomiquement, j’en conviens, ce n’est pas limpide de prime abord 😉

  • Bonjour,

    Pour les formes plurielles, il manque un point virgule à la fin de la ligne de code pour ne pas avoir d’erreur.

    Voici le bon code.

    nplurals=2; plural n>1;

    En tout cas merci pour ce petit soft sympa…

    L’information est gratuite partageons-là

    • Bonjour Olivier,

      J’étais totalement passé à côté du commentaire en regardant la copie d’écran correspondante… qui elle était juste. Je viens de modifier le texte dans le billet ! Bien vu !
      Merci pour la correction 😉

Ajouter un commentaire