Différences entre versions de « Outils de traduction - 2e partie »

De April MediaWiki
Aller à la navigationAller à la recherche
("make VCS=yes" n'a maintenant plus besoin des droits d'écriture sur www-fr)
(→‎Installation de GNUN (optionnelle) : Mise à jour du n° de version de GNUN.)
 
(188 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Travail En Cours}}
+
:'''Cette page sert de référence aux quelques personnes qui s'occupent de mettre à jour les traductions françaises sur www.gnu.org, mais n'est ''absolument pas indispensable'' pour contribuer aux traductions.'''
  
  
''Cette page est une annexe du [[Manuel_du_traducteur_du projet_GNU|Manuel du traducteur du projet GNU]].''
+
'''⇐ [[:Catégorie:Traduction_de_la_philosophie_GNU|Retour au menu de trad-gnu]]'''
  
  
==Utilisation de GNUnited Nations (GNUN)==
+
==Introduction==
  
Ce qui suit est un résumé du manuel qui se trouve sur http://www.gnu.org/software/trans-coord/manual/gnun/ et est destiné aux personnes sachant se servir de cvs.
+
Le site gnu.org contient des centaines de pages dont certaines sont traduites en 25 langues. Beaucoup d'entre elles sont fréquemment remaniées, les traductions doivent donc être mises à jour. Pour faciliter cette opération, les développeurs de gnu.org ont écrit un ensemble de scripts connu sous le nom de  GNUnited Nations (GNUN), qui fait appel à plusieurs autres programmes.
 +
La maintenance des fichiers se fait à l'aide de systèmes de contrôle de version : CVS pour le site lui-même (dépôt www) et Git pour les traductions en français (dépôt www-fr).
 +
 
 +
Le '''circuit de mise à jour des traductions''' est résumé par le schéma suivant, adapté du [http://www.gnu.org/software/trans-coord/manual/gnun/gnun.html#PO-Files-and-Team manuel de GNUN] :
 +
 
 +
<pre>
 +
      +-------------+              +---------------+
 +
      |    Dépôt    |              |    Dépôt    |
 +
      |  officiel  |              |    officiel  |
 +
      |  www (CVS)  |              |  www-fr (Git) |
 +
      +-------------+              +---------------+
 +
          |  ^                        |  ^
 +
        M1 |  | C2                  M3 |  | M5
 +
          V  |                        V  |
 +
      +-------------+              +---------------+
 +
      | Répertoires |      M2      |    Dépôts    |  M4
 +
      |  locaux    |---->---->----|    locaux    |<------.
 +
      |  www (CVS)  |              |  www-fr (Git) |      |
 +
      +-------------+              +---------------+      |
 +
            ^                          |  |            |
 +
            |    C1                    |  |            |
 +
            '---<----<---Coordinateur---'  '---Membres---'
 +
 
 +
      M1 = cvs update ) cvs-sync*        C1 = make publish
 +
      M2 = make sync  )                  C2 = cvs commit
 +
      M3 = git pull
 +
      M4 = git commit        * Script indépendant de GNUN
 +
      M5 = git push            (voir plus loin)
 +
</pre>
 +
 
 +
Le travail se fait dans des copies locales de www et www-fr. Il comporte cinq étapes :
 +
# synchroniser les copies locales de www et www-fr avec les dépôts officiels correspondants [voir schéma : M1 et M3] ;
 +
# synchroniser www-fr avec www localement et déterminer quels fichiers PO ont besoin d'une mise à jour [M2] ;
 +
# mettre à jour ces fichiers ;
 +
# les valider ;
 +
# les enregistrer dans le dépôt www-fr local [M4] et les envoyer dans le dépôt www-fr officiel [M5] (cette dernière étape demande d'avoir un compte sur Savannah - voir la [[Charte_Groupe_Traduction_de_la_philosophie_GNU#D.C3.A9p.C3.B4t_git | Charte de trad-gnu]]).
 +
 
 +
Par la suite, les fichiers mis à jour seront envoyés dans le dépôt www de Savannah par le coordinateur du groupe [C1 et C2], et moins d'une heure plus tard GNUN régénèrera les pages traduites.
 +
 
 +
 
 +
Le circuit des nouvelles traductions et des révisions est le même, à part que la synchronisation des dépôts n'est pas nécessaire puisque l'initiative appartient à l'équipe de traduction.
 +
 
 +
 
 +
'''Sources d'information et de formation'''
 +
 
 +
* Le [http://www.gnu.org/software/trans-coord/manual/gnun/gnun.html manuel de GNUN] décrit le principe de la génération des pages traduites et détaille chaque fonction de GNUN. Ce que GNUN permet de faire, entre autres :
 +
** valider les fichiers PO ;
 +
** transformer les fichiers PO en pages HTML (avec le style par défaut), ce qui facilite grandement la relecture ;
 +
** voir quelles traductions ont besoin d'une mise à jour.
 +
 
 +
* Git est ce qui risque le plus de dérouter les débutants, mais avec l'aide attentionnée et la supervision de notre coordinateur il suffit d'une semaine ou deux pour s'y mettre, foi de Mme Michu. L'essentiel de ce qu'il y a à savoir se trouve dans les trois premiers chapitres du [http://git-scm.com/book/fr Git Book]. S'il y a un problème, quelques mots-clés dans un moteur de recherche ou un appel au secours sur la liste font merveille. Pas de panique, les erreurs sont la plupart du temps rattrapables.
 +
 
 +
Et devinez quoi... Git a des ''interfaces graphiques'' :
 +
* Git GUI (multiplateforme) permet de faire une bonne partie des opérations. Il est couplé avec gitk.
 +
* gitk visualise l'historique des branches, montre les différences entre fichiers et permet de faire des recherches dans l'arborescence.
 +
 
 +
 
 +
:''Il arrive qu'une même opération puisse être faite de différentes manières. Les méthodes qui utilisent des scripts sont les plus efficaces pour un travail de routine, même si leur mise en place semble un peu compliquée (branche Git supplémentaire, configuration).''
  
''Il est recommandé de prendre connaissance des documentations spécifiques de chaque outil avant installation ou utilisation.''
 
  
Ce que GNUN permet de faire, entre autres :
 
* valider les fichiers PO ;
 
* transformer les fichiers PO en pages HTML (avec le style par défaut), ce qui facilite grandement la relecture ;
 
* voir quelles traductions ont besoin d'une mise à jour.
 
  
 +
==Mise en place des outils==
  
===Installation===
 
  
GNUnited Nations est utilisé sur le site de GNU pour générer toutes les pages HTML traduites à partir des fichiers PO. GNUN a été conçu pour le site web de gnu.org et a besoin de l'arborescence de http://www.gnu.org pour fonctionner. Pour l'utiliser en local, il faut donc recréer cette arborescence. Cela se fait avec cvs.
+
===Clonage du dépôt Git www-fr et création d'une branche===
  
GNUN s'installe dans le $HOME. L'ensemble de l'installation occupe un peu moins de 400 Mo.
+
''Prérequis :'' git, avoir un [https://savannah.nongnu.org/account/register.php compte sur Savannah] et appartenir au [https://savannah.nongnu.org/my/groups.php?words=www-fr groupe www-fr].
  
Pré-requis :
+
Le dépôt www-fr comprend 2 branches principales (+ éventuellement des branches perso) :
* cvs
+
* <em>master</em> contient les fichiers .fr.po&nbsp; sur lesquels on travaille. Elle ne peut pas être supprimée.
* Autotools
+
* <em>scripts</em> contient quelques outils :
* gettext
+
** transvalid-po convertit les POs en page HTML, et vérifie que leur format est correct et que le HTML est conforme aux standards du W3C. L'ensemble de ces opérations est désigné par un néologisme, « transvalidation ». Le HTML original est requis, ainsi qu'un autre fichier de la branche scripts, html5.dtd, qui provient du paquet GNUN.
* GNU guile et po4a (pour la conversion HTML <--> PO)
+
** transvalid-batch fait la même chose sur une liste de POs, typiquement l'ensemble d'un commit. Une arborescence contenant les HTML originaux est requise.
* pour la validation des pages HTML, libxml2 et la DTD XHTML 1.0 du W3C
+
** previewpo.pl (écrit par Donatas Klimašauskas) crée un HTML générique à partir d'un PO. Pas besoin de l'original.
 +
** micro-www-checkout crée un répertoire www réduit, ne contenant que les fichiers nécessaires à la régénération de pages traduites en français par transvalid-po ou transvalid-batch.
 +
** cvs-sync synchronise le répertoire www avec le dépôt CVS et le répertoire www-fr avec www, puis établit un rapport sur l'état des POs qui peut éventuellement être envoyé sur la liste de diffusion.
 +
** po2pad et pad2po facilitent le passage du format PO au pad de traduction et inversement (po2pad utilise un autre fichier de la branche scripts, pad-header-gnu).
 +
''Ne pas hésiter à modifier ces scripts, à les critiquer ou à en créer de nouveaux. Ils sont là pour ça. ;-)''
  
Créer un répertoire, GNU par exemple, et se placer dans celui-ci:
+
'''1. Clonage de www-fr'''
 +
 
 +
Créer le répertoire de travail (GNU/ par exemple) qui contiendra aussi www, et s'y placer :
 
<pre>
 
<pre>
$ mkdir GNU
+
mkdir -p ~/GNU && cd ~/GNU
$ cd GNU
 
 
</pre>
 
</pre>
  
Récupérer tous les fichiers du site web de gnu.org dans un sous-repertoire www :
+
Ensuite, on a le choix de cloner le dépôt complet ou seulement certaines branches.
 +
 
 +
* ''Méthode la plus simple : clonage du dépôt complet''
 
<pre>
 
<pre>
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www co www
+
git clone ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
 
</pre>
 
</pre>
  
Récupérer les sources de GNUN :
+
* ''Méthode plus élaborée : clonage séparé des branches master et scripts'' (voir [http://www.kernel.org/pub/software/scm/git/docs/git-remote.html http://www.kernel.org/pub/software/scm/git/docs/git-remote.html]).
 +
 
 +
Cela évite de traîner l'historique de www-fr avec les scripts, et inversement. Mais surtout, cela permet d'utiliser les scripts avec les fichiers PO sans avoir à les copier ailleurs. Il est en effet impossible d'accéder en même temps à deux branches d'un même dépôt local qui n'ont aucun fichier en commun. Les scripts peuvent être n'importe où&nbsp;; en revanche, le répertoire www-fr doit avoir la même racine que www.
 +
 
 +
Pour la branche master (celle qui contient les fichiers PO) :
 
<pre>
 
<pre>
$ cvs -d :pserver:anonymous@cvs.sv.gnu.org:/sources/trans-coord \
+
mkdir -p www-fr && cd www-fr
        checkout trans-coord/gnun/server/gnun
+
git init
 +
git remote add -f -t master -m master origin \
 +
    ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
 +
git merge origin
 
</pre>
 
</pre>
  
Préparer l'installation :
+
Pour la branche scripts, c'est un peu plus compliqué car celle qu'on crée localement s'appelle master par défaut mais ne correspond pas à la branche master du dépôt distant. Si l'on veut pouvoir pousser les modifications locales, il faut la renommer&nbsp;; autrement, on a une erreur assez énigmatique&nbsp;: « error: src refspec scripts does not match any. »
 
<pre>
 
<pre>
$ cd trans-coord/gnun/server/gnun
+
mkdir -p www-fr-scripts && cd www-fr-scripts
$ autoreconf -i
+
git init
$ ./configure
+
git remote add -f -t scripts -m scripts origin \
$ make
+
    ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
 +
git merge origin
 +
git branch -m master scripts
 
</pre>
 
</pre>
  
 +
'''2. Configuration'''
  
Il faut éditer le fichier gnun.conf pour remplacer les adresses de
+
Écrire dans ~/.gitconfig l'identité de celui/celle qui fait les commits. Sans l'option --global, l'information est écrite dans le fichier .git/config (l'adresse de courriel n'a pas besoin d'être valide, il faut seulement qu'elle contienne « @ ») :
courriel, afin que les tests ne soient pas envoyés aux webmasters GNU ;-)
+
<pre>
 +
~/GNU/www-fr
 +
git config --global user.name "Gribouille Tartempion"
 +
git config --global user.email gtartempion@serveur.mail
 +
</pre>
 +
 
 +
La commande ci-dessous va faciliter le travail à plusieurs :
 
<pre>
 
<pre>
$ sed -i -e 's/bug-gnun@gnu.org/adresse@bidon.fr/g' gnun.conf
+
git config branch.autosetuprebase remote
 
</pre>
 
</pre>
  
Maintenant, on peut installer GNUnited Nations dans ~/GNU/www/server/gnun :
+
''Remarque :'' on peut demander à Git d'ignorer certains fichiers en créant un fichier ~/.gitignore_global, ou en utilisant le fichier .git/info/exclude de chacun des dépôts locaux. L'exclusion des fichiers .html est nécessaire si l'on se sert de transvalid-po, qui sauvegarde les pages web traduites dans le répertoire ou se trouve le PO. Par exemple, le fichier exclude de www-fr pourrait contenir :
 
<pre>
 
<pre>
$ sudo make install
+
*~
 +
*.html
 +
*.txt
 +
*.diff
 
</pre>
 
</pre>
  
Mettre des liens vers config.mk et GNUmakefile dans le répertoire www/server/gnun. Par exemple sous Ubuntu :
+
'''3. Création d'une branche perso (optionnelle)'''
  
 +
Créer une branche synchronisée avec la branche master, et l'envoyer sur le serveur (remplacer « gt » par le nom de la branche) :
 
<pre>
 
<pre>
$ cd ~/GNU/www/server/gnun/
+
cd ~/GNU/www-fr
$ ln -s /usr/local/share/gnun/GNUmakefile ./
+
git branch --set-upstream gt origin/master
$ ln -s /usr/local/share/gnun/config.mk ./
+
git config branch.autosetuprebase remote
 +
git push origin gt
 
</pre>
 
</pre>
  
Pour les flemmards, voici un petit script qui fait ça tout seul. Il faut juste rentrer le mot de passe sudo. Le script fonctionne sous Ubuntu et Debian (à condition d'avoir activé sudo pour l'utilisateur) :
+
Synchroniser la branche gt avec origin/master. Les modifs qui sont sur gt mais pas sur master s'ajouteront en tête de branche grâce à l'option « autosetuprebase » :
 +
<pre>
 +
git checkout gt
 +
git pull
 +
</pre>
  
 +
===Installation d'une arborescence www locale===
 +
 +
 +
Le type d'arborescence à créer dépend de ce que l'on veut en faire.
 +
 +
*'''Installation minimum pour utiliser transvalid-batch : micro-www-checkout'''
 +
 +
Ce script télécharge les fichiers strictement nécessaires à transvalid-batch. C'est la méthode recommandée avec un SSD (disque à mémoire flash). Il est en effet très mauvais pour ce type de disque de modifier fréquemment des centaines de fichiers, ce qui arrive si l'on synchronise une arborescence www complète avec le dépôt CVS.
 +
 +
Les fichiers nécessaires à la mise à jour des nouvelles traductions doivent être ajoutés séparément. Le script cvs-sync s'en charge à l'étape de synchronisation (voir plus loin).
 +
 +
''Prérequis :'' cvs, rsync.
 
<pre>
 
<pre>
#/bin/bash
+
cd ~/GNU/www-fr-scripts
 +
./micro-www-checkout -l fr
 +
</pre>
  
# NOUVELLE INSTALLATION DE GNUN
+
*'''Installation complète'''
  
cd
+
Pour avoir une image complète du site web (près de 500&nbsp;Mo), il faut passer par la méthode traditionnelle&nbsp;:
mkdir GNU
+
 
cd GNU
+
''Prérequis :'' cvs.
 +
<pre>
 +
mkdir -p ~/GNU && cd ~/GNU
 
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www co www
 
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www co www
cvs -d :pserver:anonymous@cvs.sv.gnu.org:/sources/trans-coord checkout trans-coord/gnun/server/gnun
+
</pre>
 +
 
 +
===Installation de GNUN (optionnelle)===
 +
 
 +
''Prérequis :''
 +
# une arborescence www complète (voir plus haut) ;
 +
# make, gawk ;
 +
# texinfo, gettext, po4a (pour la conversion HTML <--> PO) ;
 +
# pour la validation des pages HTML : libxml2, libxml2-utils et la DTD XHTML 1.0 du W3C (paquet Debian w3c-sgml-lib).
 +
 
 +
Télécharger le paquet gnun-latest (ou gnun-1.0) par exemple dans $HOME, et l'extraire. On obtient le dossier gnun-1.0 :
 +
<pre>
 +
wget ftp://ftp.gnu.org/gnu/gnun/gnun-latest.tar.gz
 +
tar xzvf gnun-latest.tar.gz
 +
</pre>
  
cd trans-coord/gnun/server/gnun
+
Se placer dans le dossier gnun-1.0 et préparer l'installation :
autoreconf -i
+
<pre>
 +
cd ~/gnun-1.0
 
./configure
 
./configure
 
make
 
make
sed -i -e 's/bug-gnun@gnu.org/adresse@bidon.fr/g' gnun.conf
+
</pre>
 +
 
 +
Il faut éditer le fichier gnun.conf pour remplacer les adresses de
 +
courriel, afin que les tests ne soient pas envoyés aux webmasters GNU. ;-)
 +
<pre>
 +
sed -i 's/bug-gnun@gnu.org/adresse@bidon.fr/' gnun.conf
 +
</pre>
 +
 
 +
Maintenant, on peut installer GNUnited Nations dans ~/GNU/www/server/gnun :
 +
<pre>
 
sudo make install
 
sudo make install
 +
</pre>
  
cd ~/GNU/www/server/gnun/
+
Enfin, il faut copier config.mk et GNUmakefile dans le répertoire www/server/gnun :
ln -s /usr/local/share/gnun/GNUmakefile ./
+
<pre>
ln -s /usr/local/share/gnun/config.mk ./
+
cp GNUmakefile ~/GNU/www/server/gnun/
 +
cp config.mk ~/GNU/www/server/gnun/
 
</pre>
 
</pre>
  
Ne pas oublier de le rendre exécutable. ;-)
+
==Les cinq étapes d'une mise à jour==
 +
 
 +
 
 +
 
 +
===Synchronisation des dépôts locaux avec le dépôt www de Savannah===
  
  
===Valider un PO / Générer une page HTML===
+
*'''À l'aide du script cvs-sync'''
  
On met  le fichier à valider DOCUMENT.fr.po dans le dossier ~/GNU/www/SECTION/po
+
''Prérequis'' : cvs, git.
  
On se place dans le répertoire ~/GNU/www/server/gnun, et on demande à générer la page :
+
Ce script fait l'inventaire des PO à mettre à jour dans la foulée de la synchronisation et établit un rapport sur l'état des POs (nombre de chaînes à traduire ou «&nbsp;fuzzy&nbsp;»), qui peut éventuellement être envoyé sur la liste trad-gnu@april.org .
  
 +
Si cvs-sync est dans le répertoire www-fr-scripts :
 
<pre>
 
<pre>
$ cd ~/GNU/www/server/gnun
+
cd ~/GNU/www-fr-scripts
$ make VALIDATE=yes ../../SECTION/DOCUMENT.fr.html
+
./cvs-sync
 
</pre>
 
</pre>
  
Et voilà, make dit s'il y a une erreur. On peut modifier ../../SECTION/po/DOCUMENT.fr.po et régénérer la page HTML, qu'on récupère dans ~/GNU/www/SECTION/.
+
*'''Manuellement'''
  
 +
''Prérequis'' : cvs, git, GNUN, [http://www.gnu.org/software/trans-coord/manual/gnun/gnun.html#GNUmakefile_002eteam-Targets GNUmakefile des équipes de traduction] à la racine de www-fr.
  
===Faire l'inventaire des traductions obsolètes (1e méthode)===
+
1. Synchroniser l'arborescence www locale avec le dépôt CVS de www :
 
+
<pre>
Enlever (ou renommer) les fichiers DOCUMENT.fr.po qui ont été récemment validés et qui se trouvent dans le dossier ~/GNU/www/SECTION/po.
+
cd ~/GNU/www
 
+
cvs update
Mettre à jour www :
+
</pre>
 +
''Remarque 1''. La connexion au dépôt CVS de Savannah est quelquefois lente et irrégulière. On peut alors utiliser une solution de repli plus rapide : aller voir le [https://www.gnu.org/software/gnun/reports/report-fr.html rapport de GNUN sur l'état des traductions] et synchroniser uniquement les fichiers à mettre à jour :
 +
<pre>
 +
cd ~/GNU/www
 +
cvs update SECTION/po/DOCUMENT.fr.po SECTION/po/DOCUMENT.pot SECTION/DOCUMENT.html
 +
</pre>
 +
''Remarque 2''. La synchronisation ne se fait bien (c'est-à-dire sans « conflit pendant la fusion ») que si les fichiers n'ont pas été modifiés localement. Si pour une raison quelconque ils l'ont été (à l'étape de validation par exemple), on peut supprimer les changements globalement :
 +
<pre>
 +
cd ~/GNU/www
 +
cvs diff | patch -R -p0
 +
</pre>
 +
Ou bien, si la connexion est mauvaise, on peut restreindre l'opération à un dossier particulier :
 
<pre>
 
<pre>
$ cd ~/GNU
+
cd ~/GNU/www/DOSSIER
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www update www
+
cvs diff | patch -R -p0
 
</pre>
 
</pre>
 
+
2. Synchroniser localement www-fr avec www en utilisant GNUN (ne pas oublier de se placer sur la branche adéquate) :
Demander à GNUN de faire l'inventaire, et l'enregistrer avec la date :
 
 
<pre>
 
<pre>
$ cd www/server/gnun/
+
cd ~/GNU/www-fr
$ make report TEAM=fr > ~/CHEMIN/VERS/"inventaire_"`eval date +%Y%m%d`".txt"
+
git checkout master
 +
make sync
 
</pre>
 
</pre>
  
Et voilà pour les flemmards un petit script qui fait ça tout seul :
+
===Inventaire des PO à mettre à jour===
<pre>
+
 
#/bin/bash
+
 
 +
* '''En ligne''' : [https://www.gnu.org/software/gnun/reports/report-fr.html rapport de GNUN sur l'état des traductions]
  
# GNUN - UPDATE et MAKE REPORT
+
*'''À l'aide du script cvs-sync'''
 +
''Prérequis'' : cvs, git.
  
# On part du principe qu'il y a déjà une installation de GNUN dans le dossier ~/GNU,
+
L'inventaire se fait dans la foulée de la synchronisation (voir plus haut).
# et qu'elle n'a pas servi à tester des PO.
 
  
cd GNU
+
* '''À l'aide de GNUN''' (ne pas oublier de se placer sur la branche adéquate)
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www update www
+
''Prérequis'' : cvs, git, GNUN, GNUmakefile à la racine de www-fr.
cd www/server/gnun
+
<pre>
make report TEAM=fr > ~/CHEMIN/VERS/"inventaire_"`eval date +%Y%m%d`".txt"
+
cd ~/GNU/www-fr
 +
git checkout master
 +
make report
 
</pre>
 
</pre>
  
L'inconvénient de cette méthode est qu'elle ne permet pas de savoir si une mise à jour a déjà été effectuée par quelqu'un d'autre et stockée dans le CVS de www-fr en attendant d'être mise en ligne. Il existe une autre méthode qui n'a pas cet inconvénient mais nécessite des droits d'écriture dans www-fr (voir plus loin).
+
===Mise à jour des PO===
  
==Travail dans le CVS de www-fr==
 
  
Ce qui suit suppose connues les grandes lignes du fonctionnement de cvs, mais n'utilise aucune de ses fonctions avancées. La référence en la matière est le [http://ftp.gnu.org/non-gnu/cvs/source/feature/1.12.13 Cederqvist] mais il n'est pas nécessaire de le lire en entier pour s'y mettre !
+
Il est préférable de mettre les fichiers à jour dans www-fr (voir plus loin pourquoi).  
  
Tout ce qui demande des droits d'écriture dans le CVS se fait en accès authentifié avec un compte sur Savannah (voir la page [[Traduction de la philosophie GNU]]).
+
On peut utiliser un éditeur de PO ou un éditeur de texte ordinaire (voir [[Outils_de_traduction_-_1e_partie | Outils de traduction 1e partie]]).
  
 +
Pour faciliter la relecture, on peut convertir le fichier PO en HTML générique avec previewpo.pl. Une page web plus conforme à l'original peut être régénérée avec transvalid-po (voir plus loin).
  
===Récupérer les traductions stockées dans le CVS===
+
===Transvalidation (génération des pages HTML et validation)===
  
1) Cela peut se faire en accès anonyme :
 
  
récupération de l'ensemble du  « module www-fr »
+
*'''À l'aide de transvalid-po ou transvalid-batch'''
<pre>
+
 
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/cvsroot/www-fr co www-fr
+
Le script transvalid-po permet de régénérer une page traduite à partir du PO et de la page originale&nbsp;; de plus, il vérifie que les POs sont formatés correctement et que la page traduite n'a pas d'erreur de validation XHTML. transvalid-batch fait la même chose sur une série de POs, par exemple l'ensemble des fichiers d'un commit. Une fois validés, les POs peuvent être commités dans le dépôt Git local. Les pages traduites sont enregistrées dans www-fr, mais on fait en sorte que Git les ignore (voir plus haut). L'arborescence www n'est pas modifiée.
</pre>
 
  
ou récupération d'un seul fichier
+
''Prérequis :''
 +
# po4a (qui dépend de gettext, perl, etc.), awk,
 +
# xmllint (paquet Debian libxml2-utils),
 +
# DTD XHTML 1.0 du W3C (paquet Debian w3c-dtd-xhtml),
 +
# html5.dtd de gnun (dans le même répertoire que transvalid-po).
 +
Si transvalid-po est dans le répertoire www-fr-scripts :
 
<pre>
 
<pre>
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/cvsroot/www-fr co www-fr/SECTION/DOCUMENT.fr.po
+
cd ~/GNU/www-fr-scripts
 +
./transvalid-po
 
</pre>
 
</pre>
  
Il se crée en local un dossier www-fr qui est organisé de la même façon que le dossier www-fr du CVS.
+
*'''À l'aide d'une installation locale de GNUN'''
  
 +
1. On met le fichier à valider DOCUMENT.fr.po dans le dossier ~/GNU/www/SECTION/po/. C'est faisable avec « make publish », mais alors ''tous'' les PO de www-fr seront reformatés et copiés dans www, même ceux qui ne sont pas encore prêts à être validés.
  
2) Cependant, pour pouvoir (r)envoyer les fichiers PO dans le CVS une fois créés (ou modifiés), la récupération de l'arborescence doit se faire en accès authentifié :
+
2. On se place dans le répertoire ~/GNU/www/server/gnun, et on demande à générer la page :
* on se place dans le dossier ~/GNU qui contient déjà www ;
 
* on dit que la connexion utilisera le protocole rsh (la première fois seulement) ;
 
* on récupère l'ensemble du module www-fr.
 
 
<pre>
 
<pre>
$ cd ~/GNU
+
cd ~/GNU/www/server/gnun
$ export CVS_RSH=ssh
+
make VALIDATE=yes ../../SECTION/DOCUMENT.fr.html
$ cvs -z3 -d:ext:votrecompte@cvs.savannah.gnu.org:/cvsroot/www-fr co www-fr
 
 
</pre>
 
</pre>
  
 +
Et voilà, make dit s'il y a une erreur. On peut modifier ../../SECTION/po/DOCUMENT.fr.po et régénérer la page HTML, qu'on récupère dans ~/GNU/www/SECTION/.
  
===Envoyer une traduction dans le CVS===
+
''Remarque''. Il arrive fréquemment que le fichier POT soit régénéré au cours de la validation (voir le manuel de GNUN). Cela modifie également le fichier PO (ainsi que des fichiers intermédiaires) et perturbe les synchronisations ultérieures. Il est possible de supprimer les changements comme expliqué plus haut, mais il faut évidemment que le PO mis à jour soit sauvegardé ailleurs. Il est donc recommandé de faire les mises à jour dans www-fr et de ne valider qu'une copie. De même, la page DOCUMENT.fr.html régénérée doit être sauvegardée si l'on veut s'en servir pour la relecture.
  
1) S'il s'agit d'une nouvelle traduction SECTION/DOCUMENT.fr.po, on la place dans le dossier de l'arborescence locale auquel elle appartient, puis on crée une nouvelle entrée dans le CVS et on envoie le fichier. Cela donne :
+
===Envoi dans le dépôt www-fr===
 +
 
 +
1. Ajouter des modifications ou de nouveaux fichiers à la branche master (indexation) :
 
<pre>
 
<pre>
$ cd ~/GNU/www-fr
+
cd ~/GNU/www-fr
$ cvs add SECTION/DOCUMENT.fr.po
+
git checkout master
$ cvs commit SECTION/DOCUMENT.fr.po
+
git add fichier1 fichier2 ...
 
</pre>
 
</pre>
Un éditeur de texte s'ouvre et on inscrit un commentaire indiquant le nom du traducteur, qui n'est pas forcément la personne qui envoie le fichier dans le CVS.
 
  
Il est aussi possible d'écrire le commentaire directement dans la ligne de commande :
+
2. Enregistrer (commiter) les modifications dans le dépôt local (branche master) :
 
<pre>
 
<pre>
$ cvs commit -m "Nouvelle traduction, par Tartempion." DOCUMENT.fr.po
+
git commit -m "Message de commit" fichier1 fichier2 [...]
 
</pre>
 
</pre>
 +
Les commits peuvent être regroupés logiquement, par exemple modifications d'un même type sur plusieurs fichiers.
  
On prévient ensuite sur la liste de diffusion qu'une nouvelle traduction a été déposée dans le CVS. Cela simplifie le travail du coordinateur si le message indique le nom exact du fichier : SECTION/DOCUMENT.fr.po.
+
3. Envoyer (pousser) les modifications sur le serveur :
 
 
2) S'il s'agit d'une traduction modifiée, elle est déjà répertoriée dans le CVS, donc la commande « cvs add » n'est pas nécessaire. Le commentaire doit indiquer l'auteur de la modification, et être succinct mais assez détaillé pour faciliter le travail du coordinateur, qui vérifie les changements effectués avant de mettre la traduction en ligne.
 
 
<pre>
 
<pre>
$ cd ~/GNU/www-fr
+
git push
$ cvs commit -m "Relecture, par Ziguépuce : quelques coquilles ; renvois dans les notes de traduction." SECTION/DOCUMENT.fr.po
 
 
</pre>
 
</pre>
On prévient ensuite sur la liste de diffusion.
 
 
 
REMARQUES :
 
* Il n'est pas possible de modifier le commentaire une fois le fichier envoyé.
 
* L'arborescence www-fr locale est une image de celle du CVS. Les fichiers ne doivent donc être ni déplacés, ni renommés.
 
 
 
===Faire l'inventaire des traductions obsolètes (2e méthode) et les mettre à jour===
 
  
La méthode expliquée dans la section [[Outils_de_traduction_-_2e_partie#Faire_l.27inventaire_des_traductions_obsol.C3.A8tes_.281e_m.C3.A9thode.29|Utilisation de GNUN]] ne permet pas de savoir si une mise à jour a déjà été effectuée par quelqu'un d'autre et stockée dans le CVS de www-fr en attendant d'être mise en ligne. Il est donc recommandé de « synchroniser » www-fr avec www avant de faire l'inventaire :
+
4. Éventuellement faire la liste des fichiers modifiés :
 
<pre>
 
<pre>
$ cd ~/GNU/www-fr
+
git diff --name-only master master^
$ make VCS=yes
 
$ make report
 
 
</pre>
 
</pre>
  
« make VCS=yes » récupère les dernières versions des fichiers des dépôts www et www-fr, les copie dans le répertoire de travail adéquat, puis fusionne dans le répertoire de travail www-fr les fichiers PO actuels avec les nouvelles versions des fichiers POT, et enfin enregistre ces fichiers dans le dépôt www-fr.
+
5. Prévenir [mailto:trad-gnu@april.org trad-gnu@april.org] en joignant la liste des fichiers s'il y en a beaucoup.
  
« make report » indique le nom des fichiers et le nombre de chaînes modifiées ou ajoutées/supprimées des fichiers.
 
  
Il suffit alors de mettre à jour les fichiers fr.po concernés et de les renvoyer dans le CVS comme expliqué plus haut, sans oublier de prévenir sur la liste.
 
  
  
 
[[Catégorie:Traduction de la philosophie GNU]]
 
[[Catégorie:Traduction de la philosophie GNU]]

Version actuelle datée du 19 janvier 2021 à 18:26

Cette page sert de référence aux quelques personnes qui s'occupent de mettre à jour les traductions françaises sur www.gnu.org, mais n'est absolument pas indispensable pour contribuer aux traductions.


Retour au menu de trad-gnu


Introduction[modifier]

Le site gnu.org contient des centaines de pages dont certaines sont traduites en 25 langues. Beaucoup d'entre elles sont fréquemment remaniées, les traductions doivent donc être mises à jour. Pour faciliter cette opération, les développeurs de gnu.org ont écrit un ensemble de scripts connu sous le nom de GNUnited Nations (GNUN), qui fait appel à plusieurs autres programmes. La maintenance des fichiers se fait à l'aide de systèmes de contrôle de version : CVS pour le site lui-même (dépôt www) et Git pour les traductions en français (dépôt www-fr).

Le circuit de mise à jour des traductions est résumé par le schéma suivant, adapté du manuel de GNUN :

      +-------------+              +---------------+
      |    Dépôt    |              |     Dépôt     |
      |  officiel   |              |    officiel   |
      |  www (CVS)  |              |  www-fr (Git) |
      +-------------+              +---------------+
           |   ^                         |   ^
        M1 |   | C2                   M3 |   | M5
           V   |                         V   |
      +-------------+              +---------------+
      | Répertoires |      M2      |     Dépôts    |   M4
      |   locaux    |---->---->----|     locaux    |<------.
      |  www (CVS)  |              |  www-fr (Git) |       |
      +-------------+              +---------------+       |
             ^                           |   |             |
             |     C1                    |   |             |
             '---<----<---Coordinateur---'   '---Membres---'

       M1 = cvs update ) cvs-sync*        C1 = make publish
       M2 = make sync  )                  C2 = cvs commit
       M3 = git pull
       M4 = git commit         * Script indépendant de GNUN
       M5 = git push             (voir plus loin)

Le travail se fait dans des copies locales de www et www-fr. Il comporte cinq étapes :

  1. synchroniser les copies locales de www et www-fr avec les dépôts officiels correspondants [voir schéma : M1 et M3] ;
  2. synchroniser www-fr avec www localement et déterminer quels fichiers PO ont besoin d'une mise à jour [M2] ;
  3. mettre à jour ces fichiers ;
  4. les valider ;
  5. les enregistrer dans le dépôt www-fr local [M4] et les envoyer dans le dépôt www-fr officiel [M5] (cette dernière étape demande d'avoir un compte sur Savannah - voir la Charte de trad-gnu).

Par la suite, les fichiers mis à jour seront envoyés dans le dépôt www de Savannah par le coordinateur du groupe [C1 et C2], et moins d'une heure plus tard GNUN régénèrera les pages traduites.


Le circuit des nouvelles traductions et des révisions est le même, à part que la synchronisation des dépôts n'est pas nécessaire puisque l'initiative appartient à l'équipe de traduction.


Sources d'information et de formation

  • Le manuel de GNUN décrit le principe de la génération des pages traduites et détaille chaque fonction de GNUN. Ce que GNUN permet de faire, entre autres :
    • valider les fichiers PO ;
    • transformer les fichiers PO en pages HTML (avec le style par défaut), ce qui facilite grandement la relecture ;
    • voir quelles traductions ont besoin d'une mise à jour.
  • Git est ce qui risque le plus de dérouter les débutants, mais avec l'aide attentionnée et la supervision de notre coordinateur il suffit d'une semaine ou deux pour s'y mettre, foi de Mme Michu. L'essentiel de ce qu'il y a à savoir se trouve dans les trois premiers chapitres du Git Book. S'il y a un problème, quelques mots-clés dans un moteur de recherche ou un appel au secours sur la liste font merveille. Pas de panique, les erreurs sont la plupart du temps rattrapables.

Et devinez quoi... Git a des interfaces graphiques :

  • Git GUI (multiplateforme) permet de faire une bonne partie des opérations. Il est couplé avec gitk.
  • gitk visualise l'historique des branches, montre les différences entre fichiers et permet de faire des recherches dans l'arborescence.


Il arrive qu'une même opération puisse être faite de différentes manières. Les méthodes qui utilisent des scripts sont les plus efficaces pour un travail de routine, même si leur mise en place semble un peu compliquée (branche Git supplémentaire, configuration).


Mise en place des outils[modifier]

Clonage du dépôt Git www-fr et création d'une branche[modifier]

Prérequis : git, avoir un compte sur Savannah et appartenir au groupe www-fr.

Le dépôt www-fr comprend 2 branches principales (+ éventuellement des branches perso) :

  • master contient les fichiers .fr.po  sur lesquels on travaille. Elle ne peut pas être supprimée.
  • scripts contient quelques outils :
    • transvalid-po convertit les POs en page HTML, et vérifie que leur format est correct et que le HTML est conforme aux standards du W3C. L'ensemble de ces opérations est désigné par un néologisme, « transvalidation ». Le HTML original est requis, ainsi qu'un autre fichier de la branche scripts, html5.dtd, qui provient du paquet GNUN.
    • transvalid-batch fait la même chose sur une liste de POs, typiquement l'ensemble d'un commit. Une arborescence contenant les HTML originaux est requise.
    • previewpo.pl (écrit par Donatas Klimašauskas) crée un HTML générique à partir d'un PO. Pas besoin de l'original.
    • micro-www-checkout crée un répertoire www réduit, ne contenant que les fichiers nécessaires à la régénération de pages traduites en français par transvalid-po ou transvalid-batch.
    • cvs-sync synchronise le répertoire www avec le dépôt CVS et le répertoire www-fr avec www, puis établit un rapport sur l'état des POs qui peut éventuellement être envoyé sur la liste de diffusion.
    • po2pad et pad2po facilitent le passage du format PO au pad de traduction et inversement (po2pad utilise un autre fichier de la branche scripts, pad-header-gnu).

Ne pas hésiter à modifier ces scripts, à les critiquer ou à en créer de nouveaux. Ils sont là pour ça. ;-)

1. Clonage de www-fr

Créer le répertoire de travail (GNU/ par exemple) qui contiendra aussi www, et s'y placer :

mkdir -p ~/GNU && cd ~/GNU

Ensuite, on a le choix de cloner le dépôt complet ou seulement certaines branches.

  • Méthode la plus simple : clonage du dépôt complet
git clone ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git

Cela évite de traîner l'historique de www-fr avec les scripts, et inversement. Mais surtout, cela permet d'utiliser les scripts avec les fichiers PO sans avoir à les copier ailleurs. Il est en effet impossible d'accéder en même temps à deux branches d'un même dépôt local qui n'ont aucun fichier en commun. Les scripts peuvent être n'importe où ; en revanche, le répertoire www-fr doit avoir la même racine que www.

Pour la branche master (celle qui contient les fichiers PO) :

mkdir -p www-fr && cd www-fr
git init
git remote add -f -t master -m master origin \
    ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
git merge origin

Pour la branche scripts, c'est un peu plus compliqué car celle qu'on crée localement s'appelle master par défaut mais ne correspond pas à la branche master du dépôt distant. Si l'on veut pouvoir pousser les modifications locales, il faut la renommer ; autrement, on a une erreur assez énigmatique : « error: src refspec scripts does not match any. »

mkdir -p www-fr-scripts && cd www-fr-scripts
git init
git remote add -f -t scripts -m scripts origin \
    ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
git merge origin
git branch -m master scripts

2. Configuration

Écrire dans ~/.gitconfig l'identité de celui/celle qui fait les commits. Sans l'option --global, l'information est écrite dans le fichier .git/config (l'adresse de courriel n'a pas besoin d'être valide, il faut seulement qu'elle contienne « @ ») :

~/GNU/www-fr
git config --global user.name "Gribouille Tartempion"
git config --global user.email gtartempion@serveur.mail

La commande ci-dessous va faciliter le travail à plusieurs :

git config branch.autosetuprebase remote

Remarque : on peut demander à Git d'ignorer certains fichiers en créant un fichier ~/.gitignore_global, ou en utilisant le fichier .git/info/exclude de chacun des dépôts locaux. L'exclusion des fichiers .html est nécessaire si l'on se sert de transvalid-po, qui sauvegarde les pages web traduites dans le répertoire ou se trouve le PO. Par exemple, le fichier exclude de www-fr pourrait contenir :

*~
*.html
*.txt
*.diff

3. Création d'une branche perso (optionnelle)

Créer une branche synchronisée avec la branche master, et l'envoyer sur le serveur (remplacer « gt » par le nom de la branche) :

cd ~/GNU/www-fr
git branch --set-upstream gt origin/master
git config branch.autosetuprebase remote
git push origin gt

Synchroniser la branche gt avec origin/master. Les modifs qui sont sur gt mais pas sur master s'ajouteront en tête de branche grâce à l'option « autosetuprebase » :

git checkout gt
git pull

Installation d'une arborescence www locale[modifier]

Le type d'arborescence à créer dépend de ce que l'on veut en faire.

  • Installation minimum pour utiliser transvalid-batch : micro-www-checkout

Ce script télécharge les fichiers strictement nécessaires à transvalid-batch. C'est la méthode recommandée avec un SSD (disque à mémoire flash). Il est en effet très mauvais pour ce type de disque de modifier fréquemment des centaines de fichiers, ce qui arrive si l'on synchronise une arborescence www complète avec le dépôt CVS.

Les fichiers nécessaires à la mise à jour des nouvelles traductions doivent être ajoutés séparément. Le script cvs-sync s'en charge à l'étape de synchronisation (voir plus loin).

Prérequis : cvs, rsync.

cd ~/GNU/www-fr-scripts
./micro-www-checkout -l fr
  • Installation complète

Pour avoir une image complète du site web (près de 500 Mo), il faut passer par la méthode traditionnelle :

Prérequis : cvs.

 
mkdir -p ~/GNU && cd ~/GNU
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www co www

Installation de GNUN (optionnelle)[modifier]

Prérequis :

  1. une arborescence www complète (voir plus haut) ;
  2. make, gawk ;
  3. texinfo, gettext, po4a (pour la conversion HTML <--> PO) ;
  4. pour la validation des pages HTML : libxml2, libxml2-utils et la DTD XHTML 1.0 du W3C (paquet Debian w3c-sgml-lib).

Télécharger le paquet gnun-latest (ou gnun-1.0) par exemple dans $HOME, et l'extraire. On obtient le dossier gnun-1.0 :

wget ftp://ftp.gnu.org/gnu/gnun/gnun-latest.tar.gz
tar xzvf gnun-latest.tar.gz

Se placer dans le dossier gnun-1.0 et préparer l'installation :

cd ~/gnun-1.0
./configure
make

Il faut éditer le fichier gnun.conf pour remplacer les adresses de courriel, afin que les tests ne soient pas envoyés aux webmasters GNU. ;-)

sed -i 's/bug-gnun@gnu.org/adresse@bidon.fr/' gnun.conf

Maintenant, on peut installer GNUnited Nations dans ~/GNU/www/server/gnun :

sudo make install

Enfin, il faut copier config.mk et GNUmakefile dans le répertoire www/server/gnun :

cp GNUmakefile ~/GNU/www/server/gnun/
cp config.mk ~/GNU/www/server/gnun/

Les cinq étapes d'une mise à jour[modifier]

Synchronisation des dépôts locaux avec le dépôt www de Savannah[modifier]

  • À l'aide du script cvs-sync

Prérequis : cvs, git.

Ce script fait l'inventaire des PO à mettre à jour dans la foulée de la synchronisation et établit un rapport sur l'état des POs (nombre de chaînes à traduire ou « fuzzy »), qui peut éventuellement être envoyé sur la liste trad-gnu@april.org .

Si cvs-sync est dans le répertoire www-fr-scripts :

cd ~/GNU/www-fr-scripts
./cvs-sync
  • Manuellement

Prérequis : cvs, git, GNUN, GNUmakefile des équipes de traduction à la racine de www-fr.

1. Synchroniser l'arborescence www locale avec le dépôt CVS de www :

cd ~/GNU/www
cvs update

Remarque 1. La connexion au dépôt CVS de Savannah est quelquefois lente et irrégulière. On peut alors utiliser une solution de repli plus rapide : aller voir le rapport de GNUN sur l'état des traductions et synchroniser uniquement les fichiers à mettre à jour :

cd ~/GNU/www
cvs update SECTION/po/DOCUMENT.fr.po SECTION/po/DOCUMENT.pot SECTION/DOCUMENT.html

Remarque 2. La synchronisation ne se fait bien (c'est-à-dire sans « conflit pendant la fusion ») que si les fichiers n'ont pas été modifiés localement. Si pour une raison quelconque ils l'ont été (à l'étape de validation par exemple), on peut supprimer les changements globalement :

cd ~/GNU/www
cvs diff | patch -R -p0

Ou bien, si la connexion est mauvaise, on peut restreindre l'opération à un dossier particulier :

cd ~/GNU/www/DOSSIER
cvs diff | patch -R -p0

2. Synchroniser localement www-fr avec www en utilisant GNUN (ne pas oublier de se placer sur la branche adéquate) :

cd ~/GNU/www-fr
git checkout master
make sync

Inventaire des PO à mettre à jour[modifier]

  • À l'aide du script cvs-sync

Prérequis : cvs, git.

L'inventaire se fait dans la foulée de la synchronisation (voir plus haut).

  • À l'aide de GNUN (ne pas oublier de se placer sur la branche adéquate)

Prérequis : cvs, git, GNUN, GNUmakefile à la racine de www-fr.

cd ~/GNU/www-fr
git checkout master
make report

Mise à jour des PO[modifier]

Il est préférable de mettre les fichiers à jour dans www-fr (voir plus loin pourquoi).

On peut utiliser un éditeur de PO ou un éditeur de texte ordinaire (voir Outils de traduction 1e partie).

Pour faciliter la relecture, on peut convertir le fichier PO en HTML générique avec previewpo.pl. Une page web plus conforme à l'original peut être régénérée avec transvalid-po (voir plus loin).

Transvalidation (génération des pages HTML et validation)[modifier]

  • À l'aide de transvalid-po ou transvalid-batch

Le script transvalid-po permet de régénérer une page traduite à partir du PO et de la page originale ; de plus, il vérifie que les POs sont formatés correctement et que la page traduite n'a pas d'erreur de validation XHTML. transvalid-batch fait la même chose sur une série de POs, par exemple l'ensemble des fichiers d'un commit. Une fois validés, les POs peuvent être commités dans le dépôt Git local. Les pages traduites sont enregistrées dans www-fr, mais on fait en sorte que Git les ignore (voir plus haut). L'arborescence www n'est pas modifiée.

Prérequis :

  1. po4a (qui dépend de gettext, perl, etc.), awk,
  2. xmllint (paquet Debian libxml2-utils),
  3. DTD XHTML 1.0 du W3C (paquet Debian w3c-dtd-xhtml),
  4. html5.dtd de gnun (dans le même répertoire que transvalid-po).

Si transvalid-po est dans le répertoire www-fr-scripts :

cd ~/GNU/www-fr-scripts
./transvalid-po
  • À l'aide d'une installation locale de GNUN

1. On met le fichier à valider DOCUMENT.fr.po dans le dossier ~/GNU/www/SECTION/po/. C'est faisable avec « make publish », mais alors tous les PO de www-fr seront reformatés et copiés dans www, même ceux qui ne sont pas encore prêts à être validés.

2. On se place dans le répertoire ~/GNU/www/server/gnun, et on demande à générer la page :

cd ~/GNU/www/server/gnun
make VALIDATE=yes ../../SECTION/DOCUMENT.fr.html

Et voilà, make dit s'il y a une erreur. On peut modifier ../../SECTION/po/DOCUMENT.fr.po et régénérer la page HTML, qu'on récupère dans ~/GNU/www/SECTION/.

Remarque. Il arrive fréquemment que le fichier POT soit régénéré au cours de la validation (voir le manuel de GNUN). Cela modifie également le fichier PO (ainsi que des fichiers intermédiaires) et perturbe les synchronisations ultérieures. Il est possible de supprimer les changements comme expliqué plus haut, mais il faut évidemment que le PO mis à jour soit sauvegardé ailleurs. Il est donc recommandé de faire les mises à jour dans www-fr et de ne valider qu'une copie. De même, la page DOCUMENT.fr.html régénérée doit être sauvegardée si l'on veut s'en servir pour la relecture.

Envoi dans le dépôt www-fr[modifier]

1. Ajouter des modifications ou de nouveaux fichiers à la branche master (indexation) :

cd ~/GNU/www-fr
git checkout master
git add fichier1 fichier2 ...

2. Enregistrer (commiter) les modifications dans le dépôt local (branche master) :

git commit -m "Message de commit" fichier1 fichier2 [...]

Les commits peuvent être regroupés logiquement, par exemple modifications d'un même type sur plusieurs fichiers.

3. Envoyer (pousser) les modifications sur le serveur :

git push

4. Éventuellement faire la liste des fichiers modifiés :

git diff --name-only master master^

5. Prévenir trad-gnu@april.org en joignant la liste des fichiers s'il y en a beaucoup.