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.