Compter le nombre de mots d’un fichier .po

Réalisant des traductions très régulièrement pour des extensions ou thèmes WordPress, je me pose régulièrement la question de savoir le nombre de mots contenu dans un fichier .po. Si cette information est présente dans certaines plates-formes de traductions de manière plus ou moins intuitive, Poedit ne le permet que depuis peu de temps mais uniquement avec la version Pro. Étant sous Linux, les dépôts proposent une version un peu ancienne (1.5.4 datant d’octobre 2012 alors que la dernière version est 1.8.2 datant de fin juin). Comme je préfère rester avec les logiciels contenus dans les dépôts plutôt de que compiler le logiciel à chaque mise à jour, je reste dans cette version qui fonctionne très bien ce qui me prive d’une version Pro récente.

Après me direz-vous quel intérêt de connaître ne nombre de mots d’un fichier .po, d’autant que Poedit indique déjà le nombre de phrases à traduire ? Cela permet surtout de connaître le temps que l’on va passer sur une traduction, le nombre de phrases étant une donnée peu fiable et surtout très variable d’un développeur à l’autre et même au sein d’une même application comme WordPress. Un exemple ? Le fichier  admin-fr_FR.po contenant la traduction de l’interface d’administration de WordPress contient 2 412 phrases pour 21 419 mots (8,88 mots / phrase) alors que le fichier fr_FR.po contenant le reste des traductions compte 1 617 phrases pour 7 559 mots (4,67 mots / phrase). Vous comprenez mieux le problème.

Sous Linux, la solution est très simple, puisqu’il suffit d’utiliser le petit utilitaire pocount contenu dans le paquet translate-toolkit qui fera le travail. Lancez la commande suivante pour ajouter le paquet nécessaire :

sudo apt-get install translate-toolkit

Il ne reste plus qu’à lancer la commande pocount sur le fichier .po de votre choix pour récupérer les statistiques du fichier :

pocount admin-fr_FR.po
admin-fr_FR.po
type              strings      words (source)    words (translation)
translated:    2412 (100%)      21419 (100%)           25144
fuzzy:            0 (  0%)          0 (  0%)             n/a
untranslated:     0 (  0%)          0 (  0%)             n/a
Total:         2412             21419                  25144
unreviewed:     2412 (100%)      21419 (100%)           25144

On ne peut guère faire plus simple.

Poedit : Générer un fichier po à partir d’un fichier mo

Il peut arriver, qu’un développeur ne fournissent pas le fichier source (.po) de la traduction, le plus souvent dans un soucis de ne pas augmenter inutilement, la taille de l’archive à télécharger. Si Poedit permet d’éditer un fichier .po en générant automatiquement le fichier .mo à la sauvegarde, il est impossible d’éditer le fichier exécutable (.mo).

Dans ce cas, il est nécessaire de faire de la rétro-engineering afin de générer le fichier .po pour cela il suffit de lancer la commande suivante :

msgunfmt fichier.mo > fichier.po

Vous obtenez alors un fichier .po, éditable par poedit et qui vous permettra de créer un nouveau fichier .mo avec les traductions modifiées. Cette commande est accessible sous Windows ou Linux, à partir du moment où poedit a été installé.

Générer un fichier de traduction pour WordPress avec PoEdit.

La plupart du temps, on utilise Poedit pour générer les fichiers .mo à partir d’un fichier .po existant. Si votre thème ou plugin, ne possède pas de fichier .po pour effectuer la traduction, il vous faudra le générer. Deux solutions s’offrent à vous ; la génération du fichier à partir des commandes gettext en mode manuel ou Poedit en mode graphique. C’est cette solution qui nous intéresse ici.

Travaillons donc à réaliser un nouveau fichier de traduction du thème Twenty-Eleven. Cela peut paraître inutile, voir même stupide, mais détrompez-vous ; si vous avez effectué des changements dans le thème, il peut être intéressant de régénérer un fichier de traduction tenant compte des ajouts ou retraits que vous avez pu faire dans les fichiers du thème.

Création du catalogue

Dans le menu Fichier, il faut cliquer sur Nouveau catalogue.

Copie d'écran de la commande Nouveau catalogue

Nouveau catalogue dans le menu fichier

Configuration

La fenêtre de configuration avec 3 onglets va s’ouvrir.

Informations

Copie d'écran de l'onglet Informations de la page de configuration

Onglet Informations de la page de configuration

Voici donc les paramètres à renseigner pour l’onglet Informations. Bien entendu, il est indispensable de remplir les différents champs, avec un soin particulier pour la langue, le pays, les jeux de caractères (par défaut WordPress utilise l’UTF-8) et les formes plurielles. Attention, ces informations sont importantes pour le fonctionnement du fichier de traduction par la suite.

Chemins

Copie d'écran de l'onglet Chemins de la page de configuration

Onglet Chemins de la page de configuration

L’onglet Chemins permet de définir les chemins pour accéder aux fichiers à analyser. Il faut laisser le point dans le chemin de base et ajouter le chemin absolu vers les fichiers à analyser (le chemin du thème dans notre cas). Attention, la copie d’écran est faite avec une norme Unix, parce que Poedit était utilisé sous Linux. Si vous êtes sous Windows, il faudra logiquement utiliser la convention de nommage Windows du genre : C:\wamp\www\wordpress\wp-content\themes\twentyeleven.

Toute erreur à ce niveau, entraînera un échec systématique de la génération du catalogue. C’est à ce niveau que l’erreur est la plus facile et fréquente, alors relisez le chemin avec attention.

Mots-clés

Copie d'écran de l'onglet Mots-clés de la page de configuration

Onglet Mots-clés de la page de configuration

Cet onglet est indispensable, WordPress utilisant par défaut deux fonctions qui ne sont pas présentes dans la configuration par défaut de Poedit. Il vous faut donc ajouter dans la liste les fonctions __ et _e. Si vous ne le faîtes pas, Poedit ne trouvera pas de chaînes à traduire (ou pas toutes) lorsqu’il analysera les fichiers.

La configuration est enfin terminée, il ne reste plus qu’à valider pour sauvegarder votre fichier. Ce n’était donc pas si compliquée que cela. Reste maintenant, l’instant de vérité : la configuration est-elle bonne ?

Mettre à jour le catalogue

Pour l’instant, le catalogue (.po) généré ne contient aucune chaîne, il est donc nécessaire de le mettre à jour en passant par le menu Catalogue, puis Mise à jour depuis les sources.

Copie d'écran de la mise à jour du catalogue depuis les sources

Mise à jour du catalogue depuis les sources

Si vous n’avez pas fait d’erreur dans la configuration, alors, vous aurez la satisfaction de voir apparaître une barre d’avancement. Si vous avez un message d’erreur, il faut revérifier pas à pas les point précédents de la démarche de configuration.

Copie d'écran de la mise à jour du catalogue

Mise à jour du catalogue

Viendra alors l’écran de résumé des actions faites par Poedit. Dans, mon cas, il s’agit d’une création d’un fichier à partir de rien. Donc il a détecté 108 nouvelles chaînes et aucune désuète. Tout est donc parfaitement normal.

Copie d'écran du résumé suite à la génération du fichier po

Résumé suite à la génération du fichier po

Bien entendu, cela fonctionne également, pour mettre à jour, un fichier po. Si je modifie le thème en changeant des phrases et supprimant quelques mentions inutiles (je plaisante, il n’y a rien d’inutile), j’obtiens ceci :

Copie d'écran du résumé suite à la modification du fichier po

Résumé suite à la modification du fichier po

Une fois validé, vous vous retrouvez avec votre fichier po près à être utilisé pour une traduction.

Copie d'écran du fichier po après génération

Le fichier po généré contenant les chaînes à traduire

Il ne vous reste plus maintenant qu’à traduire les chaînes du fichier pour générer le ficher mo, que vous pourrez utiliser sur votre site.