Gestion traduction » Historique » Version 4
Benjamin Bohard, 02/09/2014 12:27
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 | 2 | Benjamin Bohard | Idéalement, il faut : |
8 | 2 | Benjamin Bohard | * un mécanisme permettant de mettre à jour les fichiers .po pour chaque langue déjà traduite et le fichier .pot pouvant servir de point de départ à la traduction dans une nouvelle langue ; |
9 | 2 | Benjamin Bohard | * un mécanisme permettant d'être sûr que la version compilée installée est bien à jour. |
10 | 2 | Benjamin Bohard | |
11 | 1 | Benjamin Bohard | h2. Procédures |
12 | 1 | Benjamin Bohard | |
13 | 3 | Benjamin Bohard | Les fichiers de traduction sont installés sous forme compilée (.mo). |
14 | 1 | Benjamin Bohard | Ces fichiers compilés ne sont pas éditables directement. |
15 | 3 | Benjamin Bohard | Ils sont générés à partir de fichiers texte (.po). |
16 | 1 | Benjamin Bohard | |
17 | 1 | Benjamin Bohard | La mise à jour des fichiers de traduction est faite en trois étapes : |
18 | 1 | Benjamin Bohard | # extraction des chaînes de caractères à traduire dans un ensemble de fichiers (création ou mise à jour des fichiers .po), |
19 | 1 | Benjamin Bohard | # édition des fichiers .po, |
20 | 1 | Benjamin Bohard | # compilation des fichiers .mo à partir des fichiers .po. |
21 | 1 | Benjamin Bohard | |
22 | 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). |
23 | 1 | Benjamin Bohard | Le passage des .po aux .mo et inversement est possible par l'emploi des commandes msgfmt et msgunfmt réciproquement. |
24 | 1 | Benjamin Bohard | |
25 | 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. |
26 | 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. |
27 | 1 | Benjamin Bohard | |
28 | 1 | Benjamin Bohard | h2. Implémentation |
29 | 1 | Benjamin Bohard | |
30 | 2 | Benjamin Bohard | h3. À ce jour, dans les dépôts eole |
31 | 2 | Benjamin Bohard | |
32 | 1 | Benjamin Bohard | Les dépôts mettant actuellement en place une gestion de la traduction sont : |
33 | 1 | Benjamin Bohard | * eole-sso ; |
34 | 1 | Benjamin Bohard | * eoleflask-aaa ; |
35 | 1 | Benjamin Bohard | * eole-bacula ; |
36 | 1 | Benjamin Bohard | * zephir-client ; |
37 | 1 | Benjamin Bohard | * python-pyeole ; |
38 | 1 | Benjamin Bohard | * ead ; |
39 | 1 | Benjamin Bohard | * creole ; |
40 | 1 | Benjamin Bohard | * tiramisu. |
41 | 1 | Benjamin Bohard | |
42 | 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. |
43 | 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). |
44 | 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é. |
45 | 1 | Benjamin Bohard | Dans les deux cas, le script générant les .mo n'est pas lancé automatiquement. |
46 | 1 | Benjamin Bohard | |
47 | 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. |
48 | 1 | Benjamin Bohard | |
49 | 1 | Benjamin Bohard | Dans eole-bacula, le .po est celui de bacula recompilé. |
50 | 1 | Benjamin Bohard | L'ensemble du dossier lang est installé (.po, script pour compilé le .mo et .mo). |
51 | 1 | Benjamin Bohard | Le script ne gère pas la mise à jour des fichiers .po et doit être lancé manuellement. |
52 | 1 | Benjamin Bohard | |
53 | 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. |
54 | 1 | Benjamin Bohard | |
55 | 1 | Benjamin Bohard | Python-pyeole lance la commande msgfmt dans le setup.py qui assure la compilation des .mo. |
56 | 1 | Benjamin Bohard | |
57 | 2 | Benjamin Bohard | Creole ne met à disposition que le fichier .mo. |
58 | 2 | Benjamin Bohard | |
59 | 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. |
60 | 2 | Benjamin Bohard | |
61 | 2 | Benjamin Bohard | h3. bilan |
62 | 2 | Benjamin Bohard | |
63 | 2 | Benjamin Bohard | Seul les dépôts tiramisu et zéphir-client prennent en charge les trois étapes : extraction des chaînes de caractères, compilation et installation des .mo. |
64 | 2 | Benjamin Bohard | Aucun n'assure, a priori, la mise à jour des fichiers .po déjà existant. |
65 | 2 | Benjamin Bohard | |
66 | 2 | Benjamin Bohard | Tiramisu déclenche automatiquement l'extraction des chaînes de caractères et la compilation directement après. |
67 | 2 | Benjamin Bohard | |
68 | 2 | Benjamin Bohard | Les projets python utilisent soit les mécanismes du Makefile, soit ceux du setup.py. |
69 | 2 | Benjamin Bohard | |
70 | 2 | Benjamin Bohard | Les .po et les scripts se retrouvent parfois installés. |
71 | 2 | Benjamin Bohard | |
72 | 2 | Benjamin Bohard | Deux trois questions : |
73 | 2 | Benjamin Bohard | * est-ce que les fichiers .mo doivent tous être installés dans /usr/share/locale/ ? |
74 | 2 | Benjamin Bohard | * est-ce que la procédure est suffisamment générique pour l'intégrer dans le Makefile de eole-skeletor ? |
75 | 2 | Benjamin Bohard | |
76 | 2 | Benjamin Bohard | h2. Proposition |
77 | 2 | Benjamin Bohard | |
78 | 3 | Benjamin Bohard | # si nécessaire, mettre à jour tous les fichiers .po déjà créés et écraser le fichier .pot servant à initier les nouvelles traductions (cible du Makefile appelée manuellement), |
79 | 4 | Benjamin Bohard | # si les fichiers .po ont été mis à jour, les éditer, |
80 | 4 | Benjamin Bohard | # compiler les fichiers .mo dans un répertoire installé à chaque construction de paquet (cible Makefile lancée automatiquement). |