Gestion traduction » Historique » Version 2
Benjamin Bohard, 02/09/2014 12:21
| 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 | 1 | 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 | 1 | 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 | 2 | Benjamin Bohard | # si nécessaire, mettre à jour tous les fichiers .po déjà créés et écraser le fichier .pot servant à initier les nouvelles traduction (cible du Makefile appelée manuellement), |
| 79 | 2 | Benjamin Bohard | # si nécessaire, éditer les fichiers .po, |
| 80 | 2 | Benjamin Bohard | # compiler les fichiers .mo dans un répertoire installé |