« Outils de traduction - 2e partie » : différence entre les versions

De April MediaWiki
Aller à la navigationAller à la recherche
(mini-www-checkout n'est plus sur la branche scripts)
(DIminuer la marge du diagramme.)
 
(86 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
:'''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.'''
:'''<span style="color: red;">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.</span>'''
 
 
'''&#8656; [[:Catégorie:Traduction_de_la_philosophie_GNU|Retour au menu de trad-gnu]]'''




'''&#8658; [[:Catégorie:Traduction_de_la_philosophie_GNU|Retour au menu de trad-gnu]]'''


{{Travail En Cours|}}


==Introduction==
==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.  
 
Le site gnu.org contient des centaines de pages dont certaines sont traduites en plus de 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).
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).


Ligne 14 : Ligne 16 :


<pre>
<pre>
      +-------------+              +---------------+
  +---------------+              +---------------+
      |   Dépôt   |              |    Dépôt    |
  |     Dépôt     |              |    Dépôt    |
      | officiel   |             |    officiel  |
  |   officiel   | [Savannah]  |    officiel  |
      | www (CVS) |              |  www-fr (Git) |
  |   www (CVS)   |              |  www-fr (Git) |
      +-------------+              +---------------+
  +---------------+              +---------------+
          ^                        ^
      ∧                         
        M1 |  | C2                   M3 |  | M5
    M1 |  | C2                     M2 |  | M5
          V  |                         V  |
      V  |                           V  |
      +-------------+              +---------------+
  +---------------+              +---------------+
      |   Dépôts    |      M2     |    Dépôts    |  M4
  | Répertoires  |      M3     |    Dépôts    |  M4
      |   locaux   |---->---->----|    locaux    |<------.
  |   locaux     |---->---->----|    locaux    |<------.
      | www (CVS) |              |  www-fr (Git) |      |
  |   www (CVS)   |              |  www-fr (Git) |      |
      +-------------+              +---------------+      |
  +---------------+              +---------------+      |
            ^                          |  |            |
        ∧                            |  |            |
            |     C1                   |  |            |
        |     C1                     |  |            |
            '---<----<---Coordinateur---'  '---Membres---'
        '----<----<---Coordinateur----'  '---Membres---'
_________________________________________________________
|                          |              |              |
|        Opération        | GNUmakefile  |  Scripts    |
|                          |  (GNUN)    |  maison*    |
|___________________________|______________|______________|
|                          |              |              |
|  M1 = cvs update          | )            | )            |
|  M2 = git pull            | )            | ) cvs-sync  |
|  M3 = msgmerge (Gettext)  | ) make sync  | )            |
|  M4 = git commit          | )            |              |
|  M5 = git push            | )            |              |
|                          |              |              |
|  C1 = cp de www-fr à www  | make publish | ) www-commit |
|  C2 = cvs commit          |              | )            |
|___________________________|______________|______________|


      M1 = cvs update              C1 = make publish
                    [*] Voir plus loin.
      M2 = make sync              C2 = cvs commit
      M3 = git pull
      M4 = git commit
      M5 = git push
</pre>
</pre>


Le travail se fait dans des copies locales de www et www-fr. Il comporte cinq étapes :
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 les copies locales de www et www-fr avec les dépôts officiels correspondants [voir schéma : M1 et M2] ;
# synchroniser www-fr avec www localement et déterminer quels fichiers PO ont besoin d'une mise à jour [M2] ;
# synchroniser www-fr avec www localement et déterminer quels fichiers PO ont besoin d'une mise à jour [M3] ;
# mettre à jour ces fichiers ;
# mettre à jour ces fichiers ;
# les valider ;
# les valider ;
Ligne 53 : Ligne 66 :
'''Sources d'information et de formation'''
'''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 :
* Le [https://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 ;
** valider les fichiers PO ;
** transformer les fichiers PO en pages HTML (avec le style par défaut), ce qui facilite grandement la relecture ;
** 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.  
** 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.
* Git est ce qui risque le plus de dérouter les débutants, mais avec un peu de persévérance 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 [https://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, Git a été conçu pour pouvoir rattraper les erreurs.


Et devinez quoi... Git a des ''interfaces graphiques'' :
Et devinez quoi... il y a des ''interfaces graphiques'' :
* Git GUI (multiplateforme) permet de faire une bonne partie des opérations. Il est couplé avec gitk.
* 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.
* 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). Lorsqu'il y a le choix, elles sont indiquées en gras.''  
:''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).''




Ligne 72 : Ligne 85 :




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


''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].


Le dépôt www-fr comprend plusieurs branches :
''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].
* <em>master</em>, que l'on ne peut pas supprimer ; elle contient les fichiers .fr.po et le [http://www.gnu.org/software/trans-coord/manual/gnun/gnun.html#GNUmakefile_002eteam-Targets GNUmakefile] qui permet de synchroniser les arborescences www-fr et www dans les deux sens (make sync et make publish), et de voir l'état des traductions (make report) ; elle est en principe synchronisée avec www après envoi des mises à jour dans le dépôt CVS de www.
 
* une ou plusieurs branches perso qui contiennent les dernières modifications faites par les traducteurs.
Le [https://git.savannah.gnu.org/gitweb/?p=www-fr.git dépôt www-fr] comprend 2 branches principales :
* <em>scripts</em>, qui contient :
* <em>master</em> contient les fichiers  *.fr.po  sur lesquels on travaille. Elle ne peut pas être supprimée.
** batch-transvalidate, pour convertir les POs en page HTML, et vérifier 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 » (batch-transvalidate utilise un autre fichier de la branche scripts, html5.dtd, qui provient du paquet GNUN).
* <em>scripts</em> contient quelques outils :
** mini-www-checkout et micro-www-checkout, pour créer un répertoire www réduit, ne contenant que les fichiers nécessaires à la régénération de pages traduites en français.
** <code>transvalid-po</code> vérifie que le format d'un PO est correct, régénère un fichier  *.html  et vérifie qu'il est conforme au standard XHTML (format utilisé sur www.gnu.org). L'ensemble de ces opérations est désigné par un néologisme, « transvalidation ». Le fichier  *.html  original est requis, ainsi qu'un autre fichier de la branche scripts, html5.dtd, qui provient du paquet GNUN.
** cvs-sync, pour synchroniser le répertoire www avec le dépôt CVS et le répertoire www-fr avec www, et éventuellement ajouter à www les fichiers nécessaires à la mise à jour des nouvelles traductions.
** <code>transvalid-batch</code> fait la même chose sur une liste de POs, typiquement l'ensemble d'un commit. Une arborescence contenant les HTML originaux est requise.
** pot2pad et pad2po, pour faciliter le passage du format PO au pad de traduction et inversement (pot2pad utilise un autre fichier de la branche scripts, pad-header-fr).
** <code>previewpo.pl</code> (écrit par Donatas Klimašauskas) crée un HTML générique à partir d'un PO. Pas besoin de l'original.
** <code>micro-www-checkout</code> 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.
** <code>cvs-sync</code> 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 discussion.
** <code>po2pad</code> et <code>pad2po</code> facilitent le passage du format PO au pad de traduction et inversement (po2pad utilise un autre fichier de la branche scripts, pad-header-gnu).
** <code>check-links</code> extrait les liens de chaque ensemble chaîne originale + chaîne traduite et montre leurs différences ; il opère sur un fichier PO, sur un répertoire (par exemple philosophy/) ou sur l'ensemble de www-fr.


''Ne pas hésiter à modifier ces scripts, à les critiquer ou à en créer de nouveaux. Ils sont là pour ça. ;-)''
''Ne pas hésiter à modifier ces scripts, à les critiquer ou à en créer de nouveaux. Ils sont là pour ça. ;-)''
On  peut même se payer le luxe de créer des lanceurs pour les 3 scripts les plus utiles: cvs-sync, transvalid-batch et www-commit.




Ligne 95 : Ligne 113 :
</pre>
</pre>


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


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


* ''Méthode plus élaborée : clonage séparé des branches master et scripts'' (voir le [http://www.kernel.org/pub/software/scm/git/docs/git-remote.html manuel de git-remote]).


* '''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ù ; en revanche, le répertoire www-fr doit avoir la même racine que www.
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>
mkdir -p ~/GNU/www-fr && cd ~/GNU/www-fr
mkdir -p www-fr && cd www-fr
git init
git init
git remote add -f -t master -m master origin ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
git remote add -f -t master -m master origin \
    ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
git merge origin
git merge origin
</pre>
</pre>
La branche créée localement s'appelle master par défaut. Lorsqu'on clone uniquement la branche scripts, la branche master créée à cette occasion ne correspond pas à la branche master du dépôt distant. Il faut la renommer si l'on veut ensuite pousser les modifications locales. Autrement, on a une erreur assez énigmatique : « error: src refspec scripts does not match any. »
 
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>
mkdir -p ~/www-fr-scripts && cd ~/www-fr-scripts
mkdir -p www-fr-scripts && cd www-fr-scripts
git init
git init
git remote add -f -t scripts -m scripts origin ID-SUR-SAVANNAH@git.sv.gnu.org:/srv/git/www-fr.git
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 merge origin
git branch -m master scripts
git branch -m master scripts
Ligne 121 : Ligne 144 :




'''2. Création d'une branche personnelle'''
'''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 « @ ») :
É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 « @ ») :
Ligne 135 : Ligne 158 :
</pre>
</pre>


Créer une branche « gt » synchronisée avec la branche master, et l'envoyer sur le serveur :
<pre>
cd ~/GNU/www-fr
git branch --set-upstream gt origin/master
git push origin gt
</pre>


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 » :
''Remarques :''
<pre>
* 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 :
git checkout gt
git pull
</pre>
 
 
''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 batch-transvalidate, qui sauvegarde les pages web traduites dans www-fr. Par exemple, le fichier exclude de www-fr pourrait contenir :
<pre>
<pre>
*~
*~
Ligne 157 : Ligne 168 :
</pre>
</pre>


*  Il est fortement déconseiller de créer des branches perso sur le serveur, car les utilisateurs ne peuvent pas les supprimer.




Ligne 162 : Ligne 174 :




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


*'''Installation minimum pour utiliser batch-transvalidate : micro-www-checkout'''
*'''Installation minimum pour utiliser transvalid-batch : micro-www-checkout'''


Ce script télécharge les fichiers strictement nécessaires à batch-transvalidate. 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.
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).
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).
Ligne 173 : Ligne 184 :
''Prérequis :'' cvs, rsync.
''Prérequis :'' cvs, rsync.
<pre>
<pre>
cd ~/www-fr-scripts
cd ~/GNU/www-fr-scripts
./micro-www-checkout -l fr
./micro-www-checkout -l fr
</pre>
</pre>


*'''Installation complète'''


*''Installation minimum pour utiliser GNUN : mini-www-checkout''
Pour avoir une image complète du site web (près de 500&nbsp;Mo), il faut passer par la méthode traditionnelle&nbsp;:
 
Ce script télécharge quelques fichiers supplémentaires qui sont nécessaires si l'on veut utiliser GNUN pour la transvalidation.
 
 
*''Installation complète''
 
Pour avoir une image complète du site web (plus de 450 Mo), il faut passer par la méthode traditionnelle :


''Prérequis :'' cvs.
''Prérequis :'' cvs.
<pre>  
<pre>
mkdir -p ~/GNU && cd ~/GNU
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
Ligne 194 : Ligne 199 :




===Installation de GNUN (optionnelle)===


===Installation de GNUN (optionnelle)===


''Prérequis :''  
''Prérequis :''  
# une arborescence www complète, ou bien créée par mini-www-checkout ;
# une arborescence www complète (voir plus haut) ;
# make, gawk ;
# make, gawk ;
# texinfo, gettext, po4a (pour la conversion HTML <--> PO) ;
# 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-dtd-xhtml).  
# pour la validation des pages HTML : libxml2, libxml2-utils (la DTD est incluse dans le paquet GNUN).  


Télécharger le paquet gnun-latest (ou gnun-0.9) par exemple dans $HOME, et l'extraire. On obtient le dossier gnun-0.9 :
Télécharger le paquet gnun-latest (ou gnun-1.4) par exemple dans $HOME, et l'extraire. On obtient le dossier gnun-1.4 :
<pre>
<pre>
wget ftp://ftp.gnu.org/gnu/gnun/gnun-latest.tar.gz
wget https://ftp.gnu.org/gnu/gnun/gnun-latest.tar.gz
tar xzvf gnun-latest.tar.gz
tar xzvf gnun-latest.tar.gz
</pre>
</pre>


Se placer dans le dossier gnun-0.9 et préparer l'installation :
Se placer dans le dossier gnun-1.4 et préparer l'installation :
<pre>
<pre>
cd ~/gnun-0.9
cd ~/gnun-1.4
./configure
./configure
make
make
Ligne 233 : Ligne 238 :
</pre>
</pre>


==Les cinq étapes d'une mise à jour==


==Les six étapes d'une mise à jour==




Ligne 242 : Ligne 248 :
*'''À l'aide du script cvs-sync'''
*'''À l'aide du script cvs-sync'''


''Prérequis'' : cvs, git, make et le [http://www.gnu.org/software/trans-coord/manual/gnun/gnun.html#GNUmakefile_002eteam-Targets GNUmakefile des équipes de traduction] dans le répertoire www-fr.
''Prérequis'' : cvs, git.


Ce script fait l'inventaire des PO à mettre à jour dans la foulée de la synchronisation ; s'il y a une nouvelle traduction non encore sous contrôle de version, il fait un « cvs checkout » sur les 3 fichiers nécessaires à sa mise à jour : DOSSIER/po/DOCUMENT.fr.po, DOSSIER/po/DOCUMENT.pot et DOSSIER/DOCUMENT.html (lire les commentaires).  
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 :
Si cvs-sync est dans le répertoire www-fr-scripts :
<pre>
<pre>
cd ~/www-fr-scripts
cd ~/GNU/www-fr-scripts
./cvs-sync
./cvs-sync
</pre>
</pre>


*''Manuellement''
*'''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.
 
1. Synchroniser l'arborescence www locale avec le dépôt CVS de www :
1. Synchroniser l'arborescence www locale avec le dépôt CVS de www :
<pre>
<pre>
Ligne 258 : Ligne 267 :
cvs update
cvs update
</pre>
</pre>
''Remarque 1''. La connexion au dépôt CVS de Savannah est quelquefois très lente et très irrégulière. Avec une arborescence www réduite (voir plus haut), il peut arriver que la synchronisation prenne 10 ou 20 minutes – ne parlons pas de l'arborescence complète. 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 :
''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>
<pre>
cd ~/GNU/www
cd ~/GNU/www
Ligne 273 : Ligne 282 :
cvs diff | patch -R -p0
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) :
2. Synchroniser localement www-fr avec www en utilisant GNUN (ne pas oublier de se placer sur la branche adéquate) :
<pre>
<pre>
cd ~/GNU/www-fr
cd ~/GNU/www-fr
git checkout gt
git checkout master
make sync
make sync
</pre>
</pre>




===Inventaire des PO à mettre à jour===


===Inventaire des PO à mettre à jour===


* '''En ligne''' : [https://www.gnu.org/software/gnun/reports/report-fr.html rapport de GNUN sur l'état des traductions]


*''À l'aide du script cvs-sync'' (à la suite de la synchronisation)
*'''À l'aide du script cvs-sync'''
''Prérequis'' : cvs, git, make et le GNUmakefile des équipes de traduction dans le répertoire www-fr.
''Prérequis'' : cvs, git.


Lire les explications au début du script. Si cvs-sync est dans le répertoire www-fr-scripts :
L'inventaire se fait dans la foulée de la synchronisation (voir plus haut).
<pre>
cd ~/www-fr-scripts
./cvs-sync
</pre>


* ''À l'aide de Make et du GNUmakefile'' (ne pas oublier de se placer sur la branche adéquate)
* '''À 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.
<pre>
<pre>
cd ~/GNU/www-fr
cd ~/GNU/www-fr
git checkout gt
git checkout master
make report
make report
</pre>
</pre>




Ligne 310 : Ligne 317 :
On peut utiliser un éditeur de PO ou un éditeur de texte ordinaire (voir [[Outils_de_traduction_-_1e_partie | Outils de traduction 1e partie]]).
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 reconstruire la page web soit directement avec batch-transvalidate, soit avec GNUN après avoir copié le fichier dans www.
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).
 




Ligne 317 : Ligne 323 :




*'''À l'aide du script batch-transvalidate'''
*'''À l'aide de transvalid-po ou transvalid-batch'''
C'est un script interactif – trop, disent certains ;-) – qui peut être utilisé avec un fichier de configuration ou des options en ligne de commande. Il permet de valider une liste de POs créée de diverses manières (entre autres par Git) et éditable. 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.
 
La page HTML générée par batch-transvalidate diffère quelque peu de la page générée localement par GNUN :
 
- les paragraphes coupés par des balises [http://www.gnu.org/software/trans-coord/manual/gnun/gnun.html#Splitting-Long-Passages « gnun-split »] restent coupés pour faciliter la relecture (mais la coupure est signalée) ;


- les liens relatifs qui pointent vers des pages de www.gnu.org sont remplacés par des liens absolus pour qu'ils fonctionnent effectivement.
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, actualise la date de révision et vérifie 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 :''
''Prérequis :''
# po4a (qui dépend de gettext, perl, etc.),
# po4a (qui dépend de gettext, perl, etc.), awk,
# xmllint (paquet Debian libxml2-utils),
# 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).
# html5.dtd de gnun (dans le même répertoire que batch-transvalidate).
Si transvalid-po est dans le répertoire www-fr-scripts :
Si batch-transvalidate est dans le répertoire www-fr-scripts :
<pre>
<pre>
cd ~/www-fr-scripts
cd ~/GNU/www-fr-scripts
./batch-transvalidate
./transvalid-po
</pre>
</pre>


 
*'''À l'aide d'une installation locale de GNUN'''
*''À l'aide 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.
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.
Ligne 351 : Ligne 350 :


''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.
''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===
===Envoi dans le dépôt www-fr===


1. Ajouter des modifications ou de nouveaux fichiers à la branche gt (indexation) :
 
1. Ajouter des modifications ou de nouveaux fichiers à la branche master (indexation) :
<pre>
<pre>
git checkout gt
cd ~/GNU/www-fr
git checkout master
git add fichier1 fichier2 ...
git add fichier1 fichier2 ...
</pre>
</pre>


2. Enregistrer (commiter) les modifications dans le dépôt local (branche gt) :
2. Enregistrer (commiter) les modifications dans le dépôt local (branche master) :
<pre>
<pre>
git commit fichier1 fichier2 ...
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.
Les commits peuvent être regroupés logiquement, par exemple modifications d'un même type sur plusieurs fichiers.
Ligne 368 : Ligne 370 :
3. Envoyer (pousser) les modifications sur le serveur :
3. Envoyer (pousser) les modifications sur le serveur :
<pre>
<pre>
git push origin gt
git push
</pre>
 
4. Éventuellement faire la liste des fichiers modifiés :
<pre>
git diff --name-only master master^
</pre>
</pre>


4. 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 :
5. Prévenir [mailto:trad-gnu@april.org trad-gnu@april.org] en joignant la liste des fichiers s'il y en a beaucoup.
 
 
 
===Envoi dans le dépôt www (coordinateur.trice uniquement)===
 
www-commit peut envoyer successivement 3 groupes de POs correspondant aux 3 derniers commits dans www-fr, en commençant par le plus récent.
 
<pre>
<pre>
git diff --name-only gt master
cd ~/GNU/www-fr-scripts
./www-commit
</pre>
</pre>


5. 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.





Dernière version du 29 mars 2024 à 11:15

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 plus de 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    |  [Savannah]  |    officiel   |
  |   www (CVS)   |              |  www-fr (Git) |
  +---------------+              +---------------+
       |   ∧                           |   ∧
    M1 |   | C2                     M2 |   | M5
       V   |                           V   |
  +---------------+              +---------------+
  |  Répertoires  |      M3      |     Dépôts    |   M4
  |    locaux     |---->---->----|     locaux    |<------.
  |   www (CVS)   |              |  www-fr (Git) |       |
  +---------------+              +---------------+       |
         ∧                             |   |             |
         |      C1                     |   |             |
         '----<----<---Coordinateur----'   '---Membres---'
 _________________________________________________________
|                           |              |              |
|         Opération         | GNUmakefile  |   Scripts    |
|                           |   (GNUN)     |   maison*    |
|___________________________|______________|______________|
|                           |              |              |
|  M1 = cvs update          | )            | )            |
|  M2 = git pull            | )            | ) cvs-sync   |
|  M3 = msgmerge (Gettext)  | ) make sync  | )            |
|  M4 = git commit          | )            |              |
|  M5 = git push            | )            |              |
|                           |              |              |
|  C1 = cp de www-fr à www  | make publish | ) www-commit |
|  C2 = cvs commit          |              | )            |
|___________________________|______________|______________|

                    [*] 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 M2] ;
  2. synchroniser www-fr avec www localement et déterminer quels fichiers PO ont besoin d'une mise à jour [M3] ;
  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 un peu de persévérance 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, Git a été conçu pour pouvoir rattraper les erreurs.

Et devinez quoi... il y 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[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 :

  • master contient les fichiers  *.fr.po  sur lesquels on travaille. Elle ne peut pas être supprimée.
  • scripts contient quelques outils :
    • transvalid-po vérifie que le format d'un PO est correct, régénère un fichier  *.html  et vérifie qu'il est conforme au standard XHTML (format utilisé sur www.gnu.org). L'ensemble de ces opérations est désigné par un néologisme, « transvalidation ». Le fichier  *.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 discussion.
    • 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).
    • check-links extrait les liens de chaque ensemble chaîne originale + chaîne traduite et montre leurs différences ; il opère sur un fichier PO, sur un répertoire (par exemple philosophy/) ou sur l'ensemble de www-fr.

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

On peut même se payer le luxe de créer des lanceurs pour les 3 scripts les plus utiles: cvs-sync, transvalid-batch et www-commit.


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 une des 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
  • Méthode plus élaborée : clonage séparé des branches master et scripts (voir le manuel de git-remote).

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


Remarques :

  • 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
  • Il est fortement déconseiller de créer des branches perso sur le serveur, car les utilisateurs ne peuvent pas les supprimer.


Installation d'une arborescence www locale[modifier]

Le type d'arborescence à créer dépend de ce qu'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 (la DTD est incluse dans le paquet GNUN).

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

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

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

cd ~/gnun-1.4
./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 six é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, actualise la date de révision et vérifie 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. 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.


Envoi dans le dépôt www (coordinateur.trice uniquement)[modifier]

www-commit peut envoyer successivement 3 groupes de POs correspondant aux 3 derniers commits dans www-fr, en commençant par le plus récent.

cd ~/GNU/www-fr-scripts
./www-commit