!---------------------- ! ! bpf (Build Pot File) 1.5 ! 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:Mais je vous invite à lire le contenu du script bpf.py pour les détails ...
- 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
Utilisation du script: bpf.py (Build Pot File )
Téléchargement du PKGBUILD$ wget http://download.tuxfamily.org/xcfaudio/Python/bpf/PKGBUILDPréparation du binaire$ makepkgInstallation du binaire$ sudo pacman -U ./bpf-1.6-1-any.pkg.tar.xzPremière utilisation sans paramètre après vous être placé à la racine d'un projet$ bpf.py !---------------------- ! ! bpf (Build Pot File) 1.5 ! 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.5Une 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 applicationpo/all.pot po/en_GB.mo po/en_GB.po po/en.mo po/en.po po/fr.mo po/fr.poIl 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