Build Pot File

Par Administrateur, le 30 juillet 2013

!----------------------
! 
! bpf (Build Pot File) 1.6
! Internationalisation de projet.
! 
!----------------------
Le script Python bpf.py prend en charge l'arborescence de l'endroit ou il est activé avec une reconnaissance des fichiers passés en paramètre avec l'option -t qui seront traités par xgettext, sed, msgcat,msgmerge et msgfmt puis dépose les résultats dans un dossier po/ : [ *.po, *.pot, *.mo ].

Par défaut, les fichiers de langues fr, en et en_GB seront créés dans le dossier po/ si ils n'existent pas et les autres fichiers de langues seront conservés et mis à jour.

La complétion des fichers 'po' pourra ête faite avec les options -f et/ou -c.

Il suffira de compléter les fichiers *.po pour la traduction, de relancer bpf.py -g pour produire le ou les fichiers *.mo puis de copier ces fichiers *.mo vers /usr/share/locale/XX pour obtenir un programme traduit.

L'origine de ce code


Je débute avec la programmation en Python.
Je fais mes classes avec le projet Fricorder écrit initialement en Python-2 que j'ai décidé de porter vers Python-3 avec entre autres choses l'utilisation de gtk_builder.

Je suis arrivé au stade de l'internationalisation et là ! Point de salut si vous ne faites pas vous même toutes les opérations au clavier :/

C'est franchement chiant et rébarbatif et j'ai donc écrit un script en langage Python pour simplifier ce problème récurrant.

Principe du script: bpf.py ( Build Pot File )


Le script s'appuie sur ces programmes pour fonctionner:
  • xgettext
    Lecture des fichiers [ *.sh, *.py, *.ui, *.glade ] et production d'un fichier *.pot
  • sed
    Remplacement dans le fichier *.pot de: 'charset=CHARSET' par 'charset=UTF-8'
  • msgcat
    Ajout des datas du fichier *.pot dans le fichier all.pot
    Notez que msgcat doit être appliqué sur l'ensemble des fichiers *.pot
  • msgmerge
    Ajout des datas du nouveau fichier all.pot vers les fichiers *.po
  • msgfmt
    Production des fichiers *.mo correspondant aux fichiers *.po
Mais je vous invite à lire le contenu du script bpf.py pour les détails ...

Utilisation du script: bpf.py (Build Pot File )


Téléchargement du PKGBUILD
$ wget http://download.tuxfamily.org/xcfaudio/Python/bpf/PKGBUILD
Préparation du binaire
$ makepkg
Installation du binaire
$ sudo pacman -U ./bpf-1.6-1-any.pkg.tar.xz
Première utilisation sans paramètre après vous être placé à la racine d'un projet
$ bpf.py
!----------------------
! 
! bpf (Build Pot File) 1.6
! Internationalisation de projet.
! 
!----------------------

Lecture récursive des dossiers depuis l'endroit ou est activé bpf.py
avec une reconnaissance des fichiers passés en paramètre avec
l'option '-t' qui seront traités par xgettext, sed, msgcat,msgmerge
et msgfmt.
Par défaut, les fichiers de langues fr, en et en_GB seront créés
dans le dossier po/ si ils n'existent pas et les autres fichiers de
langues seront conservés et mis à jour.
Une option permet la traduction automatique des champs de msgstr.
Au final seront créés les fichiers po, pot et mo correspondants
à l'application traitée.

usage: bpf.py [-h] [-a ADDPOTFILE] [-c] [-f] [-g] [-t TYPEPARSE] [-v]

bpf (Build Pot File) 1.5

optional arguments:
  -h, --help            show this help message and exit
  -a ADDPOTFILE, --AddPotFile ADDPOTFILE
                        Add *.po files from country1.po[,country2.po,...]. See
                        the manpage for countries
  -c, --CompletionTranslate
                        Complete the missing translations to "msgstr"
  -f, --ForceTranslate  Force the translation of all fields to "msgstr"
  -g, --generate        Build files *.po, *.mo and *.pot
  -t TYPEPARSE, --TypeParse TYPEPARSE
                        Types of files to scan: py[,c,sh,,...].
  -v, --version         Version is 1.5




Une seconde fois avec le paramètre -g et par exemple pour un script Python soit: -t py
$ bpf.py -g -t py
...
... permettra la création des fichiers nécessaires à la traduction de votre application
po/all.pot
po/en_GB.mo
po/en_GB.po
po/en.mo
po/en.po
po/fr.mo
po/fr.po
Il suffira ensuite de traduire depuis les fichiers *.po puis de réactiver bpf.py -g pour obtenir les fichiers *.mo qu'il vous faudra copier vers le dossier /usr/bin/locale/XX pour enfin obtenir une application valide dans les langues désirées.

Traductions


Le script à été adapté pour les langues suivantes:
  • french
  • english
  • german
  • catalan
  • galician
  • spanish
  • portuguese
  • italian

Adaptation de bpf.py à d'autres langages


bpf.py prends maintenant en charge (normalement) tous les langages utilisant gettext.

Les sources ...


... de bpf.py sont ici.

Si ...


... bpf.py vous est utile, faites le moi savoir par Mail : ça fait plaisir xD
Mots clés : aucun
Classé dans : Programmation