Projet

Général

Profil

Gestion traduction » Historique » Version 1

Benjamin Bohard, 02/09/2014 11:44

1 1 Benjamin Bohard
h1. Gestion traduction
2 1 Benjamin Bohard
3 1 Benjamin Bohard
h2. Besoins
4 1 Benjamin Bohard
5 1 Benjamin Bohard
Pouvoir mettre à jour les fichiers de traduction distribués dans les paquets.
6 1 Benjamin Bohard
7 1 Benjamin Bohard
h2. Procédures
8 1 Benjamin Bohard
9 1 Benjamin Bohard
Les fichiers de traduction sont installés sous forme compilée (*.mo).
10 1 Benjamin Bohard
Ces fichiers compilés ne sont pas éditables directement.
11 1 Benjamin Bohard
Ils sont générés à partir de fichiers texte (*.po).
12 1 Benjamin Bohard
13 1 Benjamin Bohard
La mise à jour des fichiers de traduction est faite en trois étapes :
14 1 Benjamin Bohard
# extraction des chaînes de caractères à traduire dans un ensemble de fichiers (création ou mise à jour des fichiers .po),
15 1 Benjamin Bohard
# édition des fichiers .po,
16 1 Benjamin Bohard
# compilation des fichiers .mo à partir des fichiers .po.
17 1 Benjamin Bohard
18 1 Benjamin Bohard
L'extraction des chaînes de caractères à traduire est possible par l'emploi de la commande xgettext (également conseillée par l'auteur de pygettext depuis qu'elle gère le code python).
19 1 Benjamin Bohard
Le passage des .po aux .mo et inversement est possible par l'emploi des commandes msgfmt et msgunfmt réciproquement.
20 1 Benjamin Bohard
21 1 Benjamin Bohard
Les fichiers .po et .mo sont redondants et il n'est pas nécessaire de conservés les deux dans les dépôts.
22 1 Benjamin Bohard
Les fichiers .mo ne sont utiles que pour l'exécution des programmes traduits et les fichiers .po sont plus facilement exploitables dans un contexte de dépôt git.
23 1 Benjamin Bohard
24 1 Benjamin Bohard
h2. Implémentation
25 1 Benjamin Bohard
26 1 Benjamin Bohard
Les dépôts mettant actuellement en place une gestion de la traduction sont :
27 1 Benjamin Bohard
* eole-sso ;
28 1 Benjamin Bohard
* eoleflask-aaa ;
29 1 Benjamin Bohard
* eole-bacula ;
30 1 Benjamin Bohard
* zephir-client ;
31 1 Benjamin Bohard
* python-pyeole ;
32 1 Benjamin Bohard
* ead ;
33 1 Benjamin Bohard
* creole ;
34 1 Benjamin Bohard
* tiramisu.
35 1 Benjamin Bohard
36 1 Benjamin Bohard
L'idée retenue dans l'ead, eole-sso, est l'inclusion du fichier .po dans le dépôt avec un script permettant de générer le .mo.
37 1 Benjamin Bohard
Dans le cas de l'ead, le .po et le script sont installés (ils sont placés dans le répertoire i18n qui est installé de manière globale).
38 1 Benjamin Bohard
Dans le cas de eole-sso, le .po et le script ne sont pas installés ; seul le .mo est dans un répertoire installé.
39 1 Benjamin Bohard
Dans les deux cas, le script générant les .mo n'est pas lancé automatiquement.
40 1 Benjamin Bohard
41 1 Benjamin Bohard
Dans eoleflask-aaa, le fichier .po (et un fichier .pot) est dans un répertoire translations mais aucun dispositif ne semble en place pour compiler le .mo.
42 1 Benjamin Bohard
43 1 Benjamin Bohard
Dans eole-bacula, le .po est celui de bacula recompilé.
44 1 Benjamin Bohard
L'ensemble du dossier lang est installé (.po, script pour compilé le .mo et .mo).
45 1 Benjamin Bohard
Le script ne gère pas la mise à jour des fichiers .po et doit être lancé manuellement. 
46 1 Benjamin Bohard
47 1 Benjamin Bohard
Zephir-client dispose d'une cible dans le Makefile situé dans data/monitor pour générer le .mo à partir du .po et d'une cible pour extraire les chaînes de caractères.
48 1 Benjamin Bohard
49 1 Benjamin Bohard
Python-pyeole lance la commande msgfmt dans le setup.py qui assure la compilation des .mo.
50 1 Benjamin Bohard
51 1 Benjamin Bohard
Tiramisu dispose de trois cibles (utilisées dans le .PHONY) dans le Makefile pour extraire les chaînes de caractères, compiler les .mo et les installer.