root/_dev_/salvatore/documentation.txt

Revision 19686, 6.7 kB (checked in by patfr@…, 8 months ago)

Prise en compte des modifications concernant le Couteau Suisse

Line 
1
2Les outils fournis :
3
4* tireur :
5        - va chercher les fichiers de langue (décrits dans traduction.txt)
6        et les dépose dans sa copie locale
7* lecteur :
8        - prend les fichiers de référence dans sa copie locale (des SVN),
9        et met à jour la base de données (table trad_lang)
10* écriveur :
11        - exporte les traductions (à partir de la table trad_lang) sous
12        forme de fichiers traduits, dans une copie locale (idem export SVN)
13* pousseur :
14        - commit SVN les différents fichiers de langue
15
16== librairie commune inc_tradlang.php
17
18--
19-- Structure de la table `trad_lang`
20--
21
22CREATE TABLE IF NOT EXISTS `trad_lang` (
23  `id` varchar(128) NOT NULL default '',
24  `module` varchar(128) NOT NULL default '',
25  `lang` varchar(16) NOT NULL default '',
26  `str` text NOT NULL,
27  `comm` text NOT NULL,
28  `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
29  `status` varchar(16) default NULL,
30  `traducteur` varchar(32) default NULL,
31  `md5` varchar(32) default NULL,
32  `orig` tinyint(4) NOT NULL default '0',
33  `date_modif` datetime default NULL,
34  KEY `idx_tl` (`id`),
35  KEY `idx_t2` (`module`),
36  KEY `idx_t3` (`id`,`module`,`lang`),
37  KEY `idx_t4` (`module`,`lang`)
38) ENGINE=MyISAM DEFAULT CHARSET=latin1;
39
40
41Description des champs :
42id :
43        identifiant de la chaine (commun à toutes les langues)
44        exemple 'accueil_site'
45module :
46        nom du module
47        exemple : cfg
48lang :
49        code ISO de la langue
50        exemple : fr
51str :
52        contenu de la chaine (id) dans la langue donnée (lang) pour le
53        module concerne
54comm :
55        champ de commentaires
56ts :
57        timestamp mis à jour lors des modifications
58status :
59        ?
60traducteur :
61        login du traducteur dans l'interface de traduction
62md5 :
63        md5(str_lang_reference) champ renseigné uniquement pour les
64        langues qui ne sont pas la langue de référence du module,
65        calculé à partir la valeur de str pour le meme id dans la langue
66        de référence
67orig :
68        0/1 : 1 si c'est la langue de référence, 0 sinon
69date_modif :
70        ?
71
72
73
74En rediscutant un peu (sur irc) de notre problématique de traduction
75des plugins, il semble qu'une des difficultés, c'est que ce sont les
76codeurs qui sont à l'origine des chaines de langue, mais que ce sont
77les admins de spip.net (en l'occurrence moi pour SPIP et George pour
78les plugins) qui doivent (c'est-à-dire, sont autorisés à) ajouter des
79éléments dans la base de données des traductions.
80
81Ce système crée un goulot d'étranglement (il faut passer par un tiers,
82qui n'est pas forcément disponible immédiatement), et par conséquent
83un décalage frustrant, qui fait que le passage en traduction est
84souvent pesant, alors que ça devrait être une fête.
85
86
87Une solution envisageable serait de programmer un système
88d'aller-retour entièrement automatique entre le SVN et trad-lang :
89
901) Chaque "module" prêt à traduire serait défini par un fichier de
91référence ; par exemple :
92'ecrire' => svn://trac.rezo.net/spip/spip/ecrire/lang/ecrire_fr.php
93on note la liste de ces fichiers dans un fichier texte
94traductions.txt, un peu comme archivelist.txt décrit les zip à
95produire
96
972) Pour ajouter, modifier ou supprimer une chaîne dans le module
98'ecrire', il suffirait de modifier ce fichier dans le SVN. (A noter :
99il faudra dès lors supprimer de l'interface trad-lang la possibilité
100d'administrer le fichier de langue "source").
101
1023) périodiquement, trad-lang irait récupérer la liste des modules
103décrits dans traductions.txt, puis récupérerait chacun des fichiers de
104référence et insèrerait les chaines en question dans sa base de
105données.
106
1074) les traducteurs traduiraient, comme d'habitude, dans l'interface
108web de trad-lang (mais elle aurait beaucoup plus de modules)
109
1105) trad-lang exporterait les fichiers traduits à côté des fichiers de
111référence, et les commiterait directement dans SVN.
112
113
114La seule conséquence négative que je vois à ce système, c'est au
115niveau du contrôle de "ce qui entre en traduction" ; notamment, on
116avait l'idée d'essayer d'éviter les doublons, de surtout éviter de
117faire entrer des fautes d'orthographe, etc. Mais ce contrôle peut se
118faire à postériori, sans être bloquant : il faudra collectivement
119qu'on surveille les fichiers de langue commités par les uns et par les
120autres, comme on le fait déjà pour les autres trucs (plugin.xml etc).
121
122A priori, ça me paraît jouable comme ça. Mais si vous avez
123l'expérience de traduction d'autres logiciels, notamment avec un site
124comme translation project ou les outils de gestion de .po, ça serait
125intéressant de voir comment on pourrait améliorer ce qu'on fait.
126
127http://translationproject.org/html/software.html
128
129-- Fil
130
131
132Je viens de faire un script pour exporter automatiquement les chaines
133de langues traduites dans le module "contrib", en direction de
134SPIP-Zone.
135
136Il y a plusieurs conséquences :
137
1381) Pour les plugins concernés, il devient INTERDIT de créer des
139chaines de langue autrement qu'en passant par l'interface de spip.net
140; c'est ennuyeux, mais indispensable. Il faut qu'on améliore cette
141interface pour assouplir sa gestion.
142
143Pour l'instant on a mis dans ce système les plugins suivants :
144
145        'cfg' => 'svn://zone.spip.org/spip-zone/_plugins_/_stable_/cfg/lang/',
146        'couteau' => 'svn://zone.spip.org/spip-zone/_plugins_/_stable_/couteau_suisse/lang/',
147        'crayons' => 'svn://zone.spip.org/spip-zone/_plugins_/_stable_/crayons/lang/',
148        'listes' => 'svn://zone.spip.org/spip-zone/_plugins_/_dev_/mailman_popup/lang/',
149        'sedna' => 'svn://zone.spip.org/spip-zone/_plugins_/_test_/sedna/lang/',
150        'spipbb' => 'svn://zone.spip.org/spip-zone/_plugins_/_dev_/spipBB/lang/',
151
152A noter : on considère qu'un plugin est "traduit" dans une langue x si
153cette langue comporte plus de 50% de chaines qui ne sont pas marquées
154"<NEW>"
155
1562)  Il faudrait s'il vous plait vérifier que les envois que j'ai faits
157ne comportent pas d'oubli (chaine ajoutée ou traduction améliorée sur
158la zone, mais pas dans le module sur spip.net). J'ai regardé autant
159que j'ai pu mais il y a tellement de lignes, j'ai pu laisser passer
160une coquille.
161
1623) Dernier point, ça reste un script assez complexe qu'on ne peut pas
163facilement jouer de chez soi (puisqu'il faut l'accès à la base de
164données des traductions de spip.net) ; là aussi la solution passerait
165plutôt par un travail d'amélioration/réécriture de trad-lang. En
166attendant ça en restreint l'usage à une seule personne (moi), donc ça
167fait goulet d'étranglement... On peut cependant partager cet accès à
168deux ou trois personnes, pour faciliter les mises à jour.
169
170-- Fil
171
172
173En fait il faudrait plusieurs scripts :
174
175* tireur : il va chercher les fichiers dans le svn
176* lecteur : il prend les fichiers de référence dans sa copie locale
177des SVN, et met à jour la base de données
178* écriveur : il exporte les traductions sous forme de fichiers
179traduits, dans sa version locale
180* pousseur : il commit svn
181
182
Note: See TracBrowser for help on using the browser.