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

De April MediaWiki
Aller à la navigationAller à la recherche
(Refonte complète de la page car le dépôt www-fr est maintenant géré par Git)
Ligne 1 : Ligne 1 :
''Cette page est une annexe du [[Manuel_du_traducteur_du projet_GNU|Manuel du traducteur du projet GNU]].''
+
==Introduction==
  
'''⇒ [[:Catégorie:Traduction_de_la_philosophie_GNU|Retour au menu de trad-gnu]]'''
+
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).
  
{{Travail En Cours|contenu=un texte }}
+
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] :
  
==Utilisation de GNUnited Nations (GNUN)==
+
<pre>
 +
      +-------------+                  +---------------+
 +
      |    Dépôt    |                  |    Dépôt    |
 +
      |  officiel  |                  |    officiel  |
 +
      |  www (CVS)  |                  |  www-fr (Git) |
 +
      +-------------+                  +---------------+
 +
          |  ^                              |  ^
 +
        M1 |  | C2                        M3 |  | M5
 +
          V  |                              V  |
 +
      +-------------+                  +---------------+
 +
      |  Dépôts    |        M2        |    Dépôts    |  M4
 +
      |  locaux    |------>---->-------|    locaux    |<------.
 +
      |  www (CVS)  |                  |  www-fr (Git) |      |
 +
      +-------------+                  +---------------+      |
 +
            ^                                |  |            |
 +
            |      C1                        |  |            |
 +
            '----<----<---Coordinateur-------'  '---Membres---'
 +
 
 +
      M1 = cvs update                  C1 = make publish
 +
      M2 = make sync                    C2 = cvs commit
 +
      M3 = git pull
 +
      M4 = git commit
 +
      M5 = git push
 +
</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.
  
Ce qui suit est un résumé du [http://www.gnu.org/software/trans-coord/manual/gnun/ manuel de GNUN].
+
* 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.
  
''Il est recommandé de prendre connaissance des documentations spécifiques de chaque outil avant installation ou utilisation.''
+
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.
  
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===
+
===Installation de GNUN dans une arborescence www locale===
  
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.
+
GNUN a été conçu pour le site web de gnu.org et a besoin de l'arborescence de [http://www.gnu.org www.gnu.org] pour fonctionner. Pour l'utiliser en local, il faut donc recréer cette arborescence. Cela se fait avec cvs.  
  
GNUN s'installe dans le $HOME. L'ensemble de l'installation occupe un peu moins de 400 Mo.
+
GNUN s'installe dans le dossier utilisateur. L'ensemble de l'installation occupe un peu moins de 400 Mo.
  
Pré-requis :
+
Pré-requis :
 
* cvs
 
* cvs
 
* autoconf, autotools, texinfo
 
* autoconf, autotools, texinfo
Ligne 37 : Ligne 80 :
 
</pre>
 
</pre>
  
Récupérer tous les fichiers du site web de gnu.org dans un sous-repertoire www :
+
Récupérer tous les fichiers du site web de gnu.org dans un sous-repertoire www :
 
<pre>
 
<pre>
 
  $ 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
 
</pre>
 
</pre>
  
Récupérer les sources de GNUN :
+
Récupérer les sources de GNUN :
 
<pre>
 
<pre>
  $ cvs -d :pserver:anonymous@cvs.sv.gnu.org:/sources/trans-coord \
+
  $ cvs -:pserver:anonymous@cvs.sv.gnu.org:/sources/trans-coord \
 
         checkout trans-coord/gnun/server/gnun
 
         checkout trans-coord/gnun/server/gnun
 
</pre>
 
</pre>
  
Préparer l'installation :
+
Préparer l'installation :
 
<pre>
 
<pre>
 
  $ cd trans-coord/gnun/server/gnun
 
  $ cd trans-coord/gnun/server/gnun
Ligne 55 : Ligne 98 :
 
  $ make
 
  $ make
 
</pre>
 
</pre>
 
  
 
Il faut éditer le fichier gnun.conf pour remplacer les adresses de
 
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 ;-)
+
courriel, afin que les tests ne soient pas envoyés aux webmasters GNU ;-)
 
<pre>
 
<pre>
 
  $ sed -i -e 's/bug-gnun@gnu.org/adresse@bidon.fr/g' gnun.conf
 
  $ sed -i -e 's/bug-gnun@gnu.org/adresse@bidon.fr/g' gnun.conf
 
</pre>
 
</pre>
  
Maintenant, on peut installer GNUnited Nations dans ~/GNU/www/server/gnun :
+
Maintenant, on peut installer GNUnited Nations dans ~/GNU/www/server/gnun :
 
<pre>
 
<pre>
 
  $ sudo make install
 
  $ sudo make install
 
</pre>
 
</pre>
  
Mettre des liens vers config.mk et GNUmakefile dans le répertoire www/server/gnun. Par exemple sous Ubuntu :
+
Et enfin, copier config.mk et GNUmakefile dans le répertoire www/server/gnun :
  
 
<pre>
 
<pre>
  $ cd ~/GNU/www/server/gnun/
+
  $ cp GNUmakefile ~/GNU/www/server/gnun/
  $ ln -s /usr/local/share/gnun/GNUmakefile ./
+
  $ cp config.mk ~/GNU/www/server/gnun/
$ ln -s /usr/local/share/gnun/config.mk ./
 
 
</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) :
 
  
 +
===Clonage du dépôt Git www-fr et création d'une branche===
 +
 +
Créer le répertoire www-fr dans le répertoire courant :
 
<pre>
 
<pre>
#/bin/bash
+
$ cd ~/GNU
 +
$ git clone ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
 +
</pre>
  
# NOUVELLE INSTALLATION DE GNUN
+
É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 « @ ») :
 +
<pre>
 +
$ cd www-fr
 +
$ git config --global user.name "Gribouille Tartempion"
 +
$ git config --global user.email gtartempion@serveur.mail
 +
</pre>
  
cd
+
La commande ci-dessous va faciliter le travail à plusieurs :
mkdir GNU
+
<pre>
cd GNU
+
$ git config branch.autosetuprebase remote
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www co www
+
</pre>
cvs -d :pserver:anonymous@cvs.sv.gnu.org:/sources/trans-coord checkout trans-coord/gnun/server/gnun
 
  
cd trans-coord/gnun/server/gnun
+
Créer une branche « gt » synchronisée avec la branche master, et l'envoyer sur le serveur :
autoreconf -i
+
<pre>
./configure
+
$ cd ~/GNU/www-fr
make
+
$ git branch --set-upstream gt origin/master
sed -i -e 's/bug-gnun@gnu.org/adresse@bidon.fr/g' gnun.conf
+
$ git push origin gt
sudo make install
+
</pre>
  
cd ~/GNU/www/server/gnun/
+
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 » :
ln -s /usr/local/share/gnun/GNUmakefile ./
+
<pre>
ln -s /usr/local/share/gnun/config.mk ./
+
$ git checkout gt
 +
$ git pull
 
</pre>
 
</pre>
  
Ne pas oublier de le rendre exécutable. ;-)
 
  
 +
==Les cinq étapes d'une mise à jour==
  
===Valider un PO / Générer une page HTML===
+
===Synchronisation des dépôts locaux avec le dépôt www de Savannah===
  
On met le fichier à valider DOCUMENT.fr.po dans le dossier ~/GNU/www/SECTION/po
+
1. ''Synchroniser l'arborescence www locale avec le dépôt CVS de www :''
 +
<pre>
 +
$ cd ~/GNU/www
 +
$ cvs update -d
 +
</pre>
 +
*''Remarque 1''. La connexion au dépôt CVS de Savannah est quelquefois très lente et très irrégulière ; il est arrivé que la synchronisation de www prenne une demi-heure au lieu de moins d'une minute normalement. On peut alors utiliser une solution de repli plus rapide : s'abonner à la liste de diffusion [https://lists.gnu.org/mailman/listinfo/www-commits www.commits@gnu.org] pour être informé en temps réel des modifications des pages web et synchroniser uniquement les fichiers correspondants :
 +
<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>
 +
$ cd ~/GNU/www/DOSSIER
 +
$ cvs diff | patch -R -p0
 +
</pre>
  
On se place dans le répertoire ~/GNU/www/server/gnun, et on demande à générer la page :
 
  
 +
2. ''Synchroniser localement www-fr avec www en utilisant GNUN :''
 
<pre>
 
<pre>
  $ cd ~/GNU/www/server/gnun
+
  $ cd ~/GNU/www-fr
  $ make VALIDATE=yes ../../SECTION/DOCUMENT.fr.html
+
  $ make 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/.
 
  
 +
===Inventaire des PO à mettre à jour===
  
===Faire l'inventaire des traductions obsolètes (1e méthode)===
+
2 méthodes :
  
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.
+
* À partir de l'arborescence www
 
 
Mettre à jour www :
 
 
<pre>
 
<pre>
  $ cd ~/GNU
+
  $ cd ~/GNU/www/server/gnun
  $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www update www
+
  $ make report TEAM=fr
 
</pre>
 
</pre>
  
Demander à GNUN de faire l'inventaire, et l'enregistrer avec la date :
+
* À partir du dépôt local www-fr
 
<pre>
 
<pre>
  $ cd www/server/gnun/
+
  $ cd ~/GNU/www-fr
  $ make report TEAM=fr > ~/CHEMIN/VERS/"inventaire_"`eval date +%Y%m%d`".txt"
+
  $ make report
 
</pre>
 
</pre>
  
Et voilà pour les flemmards un petit script qui fait ça tout seul :
 
<pre>
 
#/bin/bash
 
  
# GNUN - UPDATE et MAKE REPORT
+
===Mise à jour des PO===
 +
 
 +
Il est préférable de mettre les fichiers à jour dans www-fr, et de faire ensuite la validation sur une copie dans www (voir plus loin pourquoi).
 +
 
 +
La mise à jour peut se faire dans un éditeur de PO ou un éditeur de texte ordinaire (voir [[Outils_de_traduction_-_1e_partie | Outils de traduction 1e partie]]).
 +
 
 +
 
 +
===Validation des PO / Génération des pages HTML===
  
# On part du principe qu'il y a déjà une installation de GNUN dans le dossier ~/GNU,
+
* On met le fichier à valider DOCUMENT.fr.po dans le dossier ~/GNU/www/SECTION/po/. C'est faisable avec <code>make publish</code>, 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.
# et qu'elle n'a pas servi à tester des PO.
 
  
cd GNU
+
* On se place dans le répertoire ~/GNU/www/server/gnun, et on demande à générer la page :
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www update www
+
<pre>
cd www/server/gnun
+
$ cd ~/GNU/www/server/gnun
make report TEAM=fr > ~/CHEMIN/VERS/"inventaire_"`eval date +%Y%m%d`".txt"
+
$ make VALIDATE=yes ../../SECTION/DOCUMENT.fr.html
 
</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/.
  
===Faire l'inventaire des traductions obsolètes (2e méthode)===
+
''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 les fichiers PO et POT (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.
  
Si la connexion au dépôt CVS est trop lente, il existe une solution de repli plus rapide : s'abonner à la liste de diffusion [https://lists.gnu.org/mailman/listinfo/www-commits www.commits@gnu.org] pour être informé en temps réel des modifications des pages web, et télécharger les fichiers PO modifiés à partir du dossier http://www.gnu.org/SECTION/po/.
 
  
 +
===Envoi dans le dépôt www-fr===
  
==Travail dans le dépôt Git de www-fr==
+
* Ajouter des modifications (ou de nouveaux fichiers) à la branche gt (indexation) :
 +
<pre>
 +
$ git checkout gt
 +
$ git add fichier1 fichier2 ...
 +
</pre>
  
À compléter.
+
* Enregistrer (commiter) les modifications dans le dépôt local (branche gt) :
 +
<pre>
 +
$ git commit fichier1 fichier2 ...
 +
</pre>
 +
Les commits peuvent être regroupés logiquement, par exemple modifications d'un même type sur plusieurs fichiers.
 +
 
 +
* Envoyer les modifications sur le serveur :
 +
<pre>
 +
$ git push origin gt
 +
</pre>
 +
 
 +
* Faire la liste des fichiers modifiés entre deux envois dans le dépôt www. Comme les modifs de gt ne sont ajoutées à master qu'une fois envoyées dans www, il suffit de faire la liste des fichiers qui diffèrent entre les deux branches :
 +
<pre>
 +
$ git diff --name-only gt..master
 +
</pre>
  
[[Catégorie:Traduction de la philosophie GNU]]
+
* Prévenir sur [mailto:trad-gnu@april.org la liste trad-gnu] qu'il y a des fichiers à envoyer, en en donnant la liste et en les classant : mises à jour, relectures, nouvelles traductions, etc.

Version du 10 janvier 2013 à 18:07

Introduction

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   |
      +-------------+                   +---------------+
      |   Dépôts    |        M2         |    Dépôts     |   M4
      |   locaux    |------>---->-------|    locaux     |<------.
      |  www (CVS)  |                   |  www-fr (Git) |       |
      +-------------+                   +---------------+       |
             ^                                |   |             |
             |      C1                        |   |             |
             '----<----<---Coordinateur-------'   '---Membres---'

       M1 = cvs update                   C1 = make publish
       M2 = make sync                    C2 = cvs commit
       M3 = git pull
       M4 = git commit
       M5 = git push

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.


Mise en place des outils

Installation de GNUN dans une arborescence www locale

GNUN a été conçu pour le site web de gnu.org et a besoin de l'arborescence de www.gnu.org pour fonctionner. Pour l'utiliser en local, il faut donc recréer cette arborescence. Cela se fait avec cvs.

GNUN s'installe dans le dossier utilisateur. L'ensemble de l'installation occupe un peu moins de 400 Mo.

Pré-requis :

  • cvs
  • autoconf, autotools, texinfo
  • gettext
  • GNU guile et po4a (pour la conversion HTML <--> PO)
  • pour la validation des pages HTML : libxml2, libxml2-utils et la DTD XHTML 1.0 du W3C (paquet w3c-dtd-xhtml d'Ubuntu)
  • gawk

Créer un répertoire, GNU par exemple, et se placer dans celui-ci :

 $ mkdir GNU
 $ cd GNU

Récupérer tous les fichiers du site web de gnu.org dans un sous-repertoire www :

 $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/webcvs/www co www

Récupérer les sources de GNUN :

 $ cvs -d :pserver:anonymous@cvs.sv.gnu.org:/sources/trans-coord \
         checkout trans-coord/gnun/server/gnun

Préparer l'installation :

 $ cd trans-coord/gnun/server/gnun
 $ autoreconf -i
 $ ./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 -e 's/bug-gnun@gnu.org/adresse@bidon.fr/g' gnun.conf

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

 $ sudo make install

Et enfin, 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/


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

Créer le répertoire www-fr dans le répertoire courant :

 $ cd ~/GNU
 $ git clone ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git

É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 « @ ») :

 $ cd 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

Créer une branche « gt » synchronisée avec la branche master, et l'envoyer sur le serveur :

 $ cd ~/GNU/www-fr
 $ git branch --set-upstream gt origin/master
 $ 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


Les cinq étapes d'une mise à jour

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

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

 $ cd ~/GNU/www
 $ cvs update -d
  • Remarque 1. La connexion au dépôt CVS de Savannah est quelquefois très lente et très irrégulière ; il est arrivé que la synchronisation de www prenne une demi-heure au lieu de moins d'une minute normalement. On peut alors utiliser une solution de repli plus rapide : s'abonner à la liste de diffusion www.commits@gnu.org pour être informé en temps réel des modifications des pages web et synchroniser uniquement les fichiers correspondants :
 $ 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 :

 $ cd ~/GNU/www-fr
 $ make sync


Inventaire des PO à mettre à jour

2 méthodes :

  • À partir de l'arborescence www
 $ cd ~/GNU/www/server/gnun
 $ make report TEAM=fr
  • À partir du dépôt local www-fr
 $ cd ~/GNU/www-fr
 $ make report


Mise à jour des PO

Il est préférable de mettre les fichiers à jour dans www-fr, et de faire ensuite la validation sur une copie dans www (voir plus loin pourquoi).

La mise à jour peut se faire dans un éditeur de PO ou un éditeur de texte ordinaire (voir Outils de traduction 1e partie).


Validation des PO / Génération des pages HTML

  • 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.
  • 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 les fichiers PO et POT (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

  • Ajouter des modifications (ou de nouveaux fichiers) à la branche gt (indexation) :
 $ git checkout gt
 $ git add fichier1 fichier2 ...
  • Enregistrer (commiter) les modifications dans le dépôt local (branche gt) :
 $ git commit fichier1 fichier2 ...

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

  • Envoyer les modifications sur le serveur :
 $ git push origin gt
  • Faire la liste des fichiers modifiés entre deux envois dans le dépôt www. Comme les modifs de gt ne sont ajoutées à master qu'une fois envoyées dans www, il suffit de faire la liste des fichiers qui diffèrent entre les deux branches :
 $ git diff --name-only gt..master
  • Prévenir sur la liste trad-gnu qu'il y a des fichiers à envoyer, en en donnant la liste et en les classant : mises à jour, relectures, nouvelles traductions, etc.