Provided by: po4a_0.40-1_all bug

NOM

       po4a - Cadre de travail pour la traduction de documentations et autres
       documents

Introduction

       L'objectif du projet po4a [PO for anything -- PO pour tout] est de
       simplifier la traduction (et de faon plus intressante, la maintenance
       des traductions) en utilisant les outils gettext dans des domaines pour
       lesquels ils n'taient pas destins, comme la documentation.

Table des matires

       Ce document est organis de la manire suivante:

       1 Pourquoi utiliser po4a?  quoi cela sert-il?
           Cette section d'introduction explique les motivations du projet et
           sa philosophie. Vous devriez le lire si vous cherchez  valuer po4a
           pour vos traductions.

       2 Comment utiliser les fonctionnalits de po4a?
           Cette section est une sorte de manuel de rfrence qui cherche
           rpondre aux questions des utilisateurs et qui vous donnera une
           meilleure comprhension de son fonctionnement. Il vous donnera les
           bases de l'utilisation de po4a et sert d'introduction  la
           documentation des outils spcifiques.

           Comment commencer une nouvelle traduction?
           Comment convertir la traduction en un fichier de documentation?
           Comment mettre  jour une traduction faite avec po4a?
           Comment convertir une traduction pr-existante  ce systme?
           Comment ajouter des choses n'tant pas des traductions (comme le nom
           du traducteur)?
           Comment automatiser tout ceci?
           Comment personaliser po4a?
       3 Comment a marche?
           Cette section vous donne un bref aperu des rouages internes de po4a
           afin que vous vous sentiez plus  mme de nous aider  le maintenir et
           l'amliorer. Elle peut galement vous permettre de comprendre
           pourquoi cela ne fait pas ce que vous souhaitez et corriger vos
           problmes par vous-mme.

       4 FAQ
           Cette section regroupe les questions le plus souvent poses. En
           fait, la plupart d'entre elles sont des questions de design du
           projet. Si vous pensez que po4a n'est pas la bonne rponse au
           problme de traduction de documentation, lisez cette section avant
           de nous donner votre avis sur la liste de diffusion
           <po4a-devel@lists.alioth.debian.org>. Votre avis nous intresse.

       5 Notes spcifiques  certains modules
           Cette section prsente les spcificits de chaque module du point de
           vue du traducteur et de l'auteur original. Lisez le pour prendre
           connaissance du format des traductions pour ce module et les rgles
           suivre dans le document original pour rendre le travail des
           traducteurs plus simple.

           Cette section ne fait pas vraiment partie de ce document, mais elle
           est place dans chaque documentation des modules. Ceci permet de
           s'assurer que les informations sont  jour en conservant la
           documentation et le code ensemble.

Pourquoi utiliser po4a? Dans quel domaine est-il bon?

       J'aime le concept des logiciels  sources ouverts, qui permettent de
       donner
        tous un accs au logiciel et  son code source. Mais, tant moi-mme
       franais, je suis conscient que la licence n'est pas le seul frein
       l'ouverture d'un logiciel: les logiciels non traduits, mme s'ils sont
       libres, sont sans aucune utilit pour ceux qui ne comprennent pas
       l'anglais, et il y a encore beaucoup de travail pour les rendre
       accessibles  vraiment tout le monde.

       La perception du problme par les acteurs du dveloppement libre s'est
       fortement acclre rcemment. Nous, les traducteurs, avons gagn une
       premire bataille et avons convaincu tout le monde de l'importance des
       traductions. Mais c'est malheureusement la partie la plus facile. Il
       faut maintenant raliser tout le travail et traduire tous les documents.

       Les logiciels aux sources ouverts bnficient d'un niveau de traduction
       relativement bon, grce  la formidable suite d'outils gettext. Ces
       outils permettent d'extraire les chanes  traduire du programme, de les
       prsenter sous une forme standard pour les traducteurs, puis d'utiliser
       le rsultat de leur travail lors de l'excution pour afficher les
       messages traduits aux utilisateurs.

       Mais cette situation est assez diffrente en ce qui concerne les
       documentations. Trop souvent, la documentation traduite n'est pas assez
       visible (pas distribue avec le programme), seulement partielle ou pas
       jour. Cette dernire situation est de loin la moins bonne. Les
       traductions pas  jour peuvent se rvler plus embtantes pour les
       utilisateurs que l'absence de traduction parce que d'anciens
       comportements d'un programme peuvent y tre dcrits, mais ne plus tre en
       vigueur.

   La problmatique
       La traduction des documentations n'est pas une tche difficile en
       elle-mme. Les textes sont bien plus longs que les messages des
       programmes ce qui rend leur traduction plus longue, mais il n'y a
       aucune difficult technique  faire ceci. La difficult vient en fait de
       la maintenance de la traduction. La dtection des parties ayant t
       modifies et ncessitant une mise  jour est une tche trs difficile, ce
       qui explique que tant de traductions ne correspondent plus  la version
       originale.

   La rponse de po4a
       La maintenance de la traduction est donc la raison premire de po4a. La
       faon de faire de gettext a t rutilise dans ce but. Comme avec gettext,
       des chanes de texte sont extraites de leur emplacement d'origine de
       faon tre prsentes de faon standardise aux traducteurs. Les outils pour
       gettext sont ensuite utiliss pour aider le traducteur  faire son
       travail lorsqu'une nouvelle version du document est disponible. Mais,
       la diffrence de l'utilisation classique de gettext, les traductions
       sont rinjecte dans la structure du document d'origine de faon  pouvoir
       les utiliser ou les distribuer comme les documents de la version
       anglaise.

       Grce  ceci, la dtection des parties du document qui ncessitent une mise
        jour est trs facile. Un autre avantage est que l'outil va faire une
       bonne partie du travail lorsque seule la structure du document  t
       modifie et que des chapitres ont t dplacs, rassembls ou redcoups. En
       extrayant le texte  traduire de la structure du document, il permet
       galement de masquer la complexit de la mise en page et rduit les
       chances d'avoir un document dfectueux (mme s'il reste un risque).

       Veuillez galement consulter la FAQ plus bas dans ce document pour une
       liste plus complte des avantages et inconvnients de cette approche.

   Formats pris en charge
       Actuellement, cette approche a t implmente avec succs pour un certain
       nombre de formats de mise en page de texte.

       man

       Le bon vieux format des pages de manuel, utilis par beaucoup de
       programmes. Le support de po4a pour ce format est trs utile parce que
       ce format est assez compliqu, surtout pour les dbutants. Le module
       Locale::Po4a::Man(3pm) supporte galement le format mdoc, utilis par les
       pages de manuel BSD (elles sont galement assez frquentes sous Linux).

       pod

       C'est le format pour la documentation en ligne de Perl (Perl Online
       Documentation). Le langage et ses documentations sont documents de
       cette faon, ainsi que la plupart des scripts Perl existants. Il permet
       de garder la documentation plus fidle au code en les intgrant tous deux
       au mme fichier. Il rend la vie du programmeur plus simple, mais
       malheureusement pas celle du traducteur.

       sgml

       Mme s'il est de plus en plus remplac par le XML, ce format est encore
       assez utilis pour les documents dont la taille dpasse plusieurs crans.
       Il permet de faire des livres complets. La mise  jours de documents
       aussi longs est un vrai cauchemar. diff se montre souvent inutile quand
       le document original a t rindent aprs une mise  jour. Heureusement,
       po4a vous aide dans cette tche.

       Actuellement, seules les DTDDebianDoc et DocBook sont prises en charge,
       mais l'ajout d'une nouvelle est trs facile. Il est mme possible
       d'utiliser po4a avec une DTDSGML inconnue sans modifier le code en
       fournissant les informations ncessaires sur la ligne de commande.
       Veuillez consulter Locale::Po4a::Sgml(3pm) pour plus de dtails.

       TeX / LaTeX

       Le format LaTeX est un format majeur utilis pour les documentations
       dans le monde du logiciel libre ou pour des publications. Le module
       Locale::Po4a::LaTeX(3pm) a t test avec la documentation de Python, un
       livre et avec quelques prsentations.

       texinfo

       Toutes les documentations du projet GNU sont crites dans ce format
       (c'est mme une des exigences pour devenir un projet officiel du projet
       GNU). Le support pour Locale::Po4a::Texinfo(3pm) dans po4a en est
       encore ses dbut. Veuillez nous envoyer des rapports de bogue ou des
       demandes de nouvelle fonctionnalit.

       xml

       Le format XML est  la base de beaucoup de formats pour la
       documentation.

        ce jour, la DTDDocBook est prise en charge par po4a. Veuillez
       consulter Locale::Po4a::Docbook(3pm) pour plus de dtails.

       autres

       Po4a peut galement grer des formats plus rares et plus spcifiques, tels
       que celui de la documentation des options de compilation des noyaux
       2.4.x ou les diagrammes produits par l'outil dia. L'ajout d'un nouveau
       format est souvent trs simple, et consiste principalement  fournir un
       interprteur pour le format voulu. Veuillez consulter
       Locale::Po4a::TransTractor(3pm) pour plus d'informations  ce sujet.

   Formats non supports
       Malheureusement, po4a ne supporte pas encore certains formats utiliss
       pour les documentations.

       Il y a une quantit d'autres formats que nous aimerions supporter avec
       po4a, et pas seulement des formats de documentation. En fait, nous
       visons toutes les niches laisses par les outils gettext classiques.
       Cela va de la traduction de la documentation des descriptions des
       paquets Debian et paquetages rpm, aux les questions poses par les
       scripts d'installation, ex passant par les fichiers changelog, et de
       tous les formats spcifiques tels que les scnarios de jeux ou les
       fichiers de ressource pour wine.

Comment utiliser po4a?

       Cette section est une sorte de manuel de rfrence qui cherche  rpondre
       aux questions des utilisateurs et qui vous donnera une meilleure
       comprhension de son fonctionnement. Il vous donnera les bases de
       l'utilisation de po4a et sert d'introduction  la documentation des
       outils spcifiques.

   Rsum graphique
       Le schma suivant donne un aperu du processus mis en oeuvre pour la
       traduction de documents avec po4a. Ne soyez pas effray par son
       apparente complexit, qui est due au fait que le processus complet y est
       prsent. Une fois que vous avez converti votre projet  po4a, seule la
       partie de droite du graphique est utilise.

       Notez que maitre.doc est pris pour exemple de documentation  traduire
       et traduction.doc est la traduction correspondante. L'extension
       pourrait tre .pod, .xml ou .sgml en fonction du format. Chaque partie
       de la figure est dtaille dans les sections suivantes.

                                          maitre.doc
                                              |
                                              V
            +<-----<----+<-----<-----<--------+------->-------->-------+
            :           |                     |                        :
       {traduction}     |        { mise  jour de maitre.doc }         :
            :           |                     |                        :
          XX.doc        |                     V                        V
       (optionnel)      |                 maitre.doc ->-------->------>+
            :           |                 (nouveau)                    |
            V           V                     |                        |
         [po4a-gettextize]   doc.XX.po--->+   |                        |
                 |           (ancien)     |   |                        |
                 |              ^         V   V                        |
                 |              |     [po4a-updatepo]                  |
                 V              |           |                          V
           traduction.pot       ^           V                          |
                 |              |       doc.XX.po                      |
                 |              |        (I<fuzzy>)                       |
           { traduction }       |           |                          |
                 |              ^           V                          V
                 |              |  {dition manuelle}                  |
                 |              |           |                          |
                 V              |           V                          V
             doc.XX.po --->---->+<---<-- doc.XX.po    addendum     maitre.doc
             (initial)                   ( jour)   (optionnel)     ( jour)
                 :                          |            |             |
                 :                          V            |             |
                 +----->----->----->------> +            |             |
                                            |            |             |
                                            V            V             V
                                            +------>-----+------<------+
                                                         |
                                                         V
                                                  [po4a-translate]
                                                         |
                                                         V
                                                       XX.doc
                                                      ( jour)

       La partie gauche illustre la conversion d'une traduction n'utilisant
       pas po4a. En haut de la partie droite est prsent ce qui est du ressort
       de l'auteur du document d'origine (la mise  jour de la documentation).
       Au milieu de la partie de droite se trouve la partie automatise par
       po4a. Les nouvelles chanes sont extraites et compares avec la
       traduction existante. Pour celles qui n'ont pas chang, la traduction
       prcdente est utilise. Celles qui ont t en partie modifies sont galement
       associes leur ancienne traduction, mais avec un marquage spcifique
       indiquant que la traduction doit tre mise  jour. La partie du bas
       indique comment le document format est construit.

       En fait, en tant que traducteur, la seule opration manuelle consiste en
       l'tape indique par {dition manuelle}. En effet, nous nous en excusons,
       po4a aide  la traduction, mais il ne traduit rien pour vous...

   Comment commencer une nouvelle traduction?
       Cette section prsente les tapes ncessaires pour dbuter une nouvelle
       traduction avec po4a. Les modifications  appliquer pour la conversion
       d'un projet existant sont dtailles dans la section correspondante.

       Voici les tapes permettant de commencer une traduction avec po4a:

       - Extraction du texte du document d'origine <maitre.doc> qui doit tre
         traduit dans <traduction.pot>, un nouveau fichier POT (le format
         utilis par gettext). Pour ceci, utilisez po4a-gettextize de cette
         faon:

           $ po4a-gettextize -f <format> -m <maitre.doc> -p <traduction.pot>

         Naturellement, <format> est le format du document maitre.doc et la
         sortie est place dans traduction.pot. Veuillez consulter
         po4a-gettextize(1) pour plus de dtails concernant les options
         existantes.

       - Traduit rellement ce qui doit tre traduit. Pour cela, vous devez
         renommer le fichier POT en doc.XX.po (o XX est le code ISO639 de la
         langue vers laquelle vous tes en train de traduire, c.--d. fr pour le
         franais), puis diter ce fichier. C'est souvent une bonne ide de ne
         pas nommer le fichier XX.po pour viter de confondre ce fichier avec
         la traduction des messages du programme, mais vous faites comme vous
         voulez. N'oubliez pas de mettre  jour les en-ttes du fichier PO, ils
         sont importants.

         La traduction peut tre ralise avec Emacs et son mode PO ou Lokalize
         (bas sur KDE) ou Gtranslator (bas sur GNOME) ou encore n'importe quel
         programme que vous prfrez utiliser pour l'dition de ces fichiers. Un
         bon vieux vi fera l'affaire, mme s'il n'y a pas de mode spcial pour
         ce type de tche.

         Si vous voulez en apprendre plus  ce sujet, vous voudrez probablement
         consulter la documentation de gettext, disponible dans le paquet
         gettext-doc.

   Comment convertir la traduction en un fichier de documentation?
       Une fois que la traduction est effectue, il faut gnrer la documentation
       traduite et la distribuer avec l'original. Pour cela, utilisez
       po4a-translate(1) de cette faon (XX reprsente le code de la langue):

         $ po4a-translate -f <format> -m <maitre.doc> -p <doc.XX.po> -l <XX.doc>

       Comme prcdemment, <format> est le format du document maitre.doc. Mais
       cette fois-ci, le fichier PO fourni en paramtre de l'option -p est un
       fichier d'entre. Il s'agit de votre traduction. La sortie se trouve
       dans le fichier XX.doc.

       Veuillez consulter po4a-translate(1) pour plus de dtails.

   Comment mettre  jour une traduction faite avec po4a?
       Pour mettre  jour votre traduction lorsque l'original maitre.doc a
       chang, utilisez po4a-updatepo(1) comme ceci:

         $ po4a-updatepo -f <format> -m <nouveau_maitre.doc> -p <ancien.XX.po>

       (Veuillez consulter po4a-updatepo(1) pour plus de dtails)

       Naturellement, les nouveaux paragraphes de ce document ne seront pas
       traduits par magie dans le fichier "PO" par cette opration, et vous
       devrez mettre  jour le fichier "PO" manuellement. De la mme faon, vous
       devrez vrifier les traductions des paragraphes qui ont t lgrement
       modifis. Pour vous assurer que vous n'en oubliez pas, ils sont marqus
       comme approximatifs (fuzzy) pendant cette phase, et vous devrez retirer
       cette marque avant d'utiliser la traduction avec po4a-translate. Comme
       pour la traduction originelle, vous pouvez utiliser votre diteur de
       fichier PO prfr.

       Une fois que votre fichier "PO" est de nouveau  jour, sans aucune chane
       non traduite ou marque comme approximative (fuzzy), vous pouvez gnrer
       un fichier de documentation traduit, comme expliqu dans la section
       prcdente.

   Comment convertir une traduction pr-existante  ce systme?
       Souvent, vous traduisez manuellement le document sans difficult, jusqu'
       ce qu'une rorganisation majeure du document d'origine maitre.doc
       apparaisse. Alors, aprs quelques essais infructueux en utilisant diff
       ou des outils similaires, vous voulez convertir la traduction  po4a.
       Mais bien sr, vous ne souhaitez pas perdre votre traduction existante
       dans le mme temps. Pas de panique, ce cas est aussi gr par les outils
       de po4a et est appel gettextization.

       Le point important pour ceci est d'avoir la mme structure de document
       pour l'original et la version traduite, de faon  ce que les outils
       associent leur contenu correctement.

       Si vous avez de la chance (c.--d., si les structures des deux documents
       se correspondent parfaitement), ceci fonctionnera sans soucis, et vous
       n'en aurez que pour quelques secondes. Sinon, vous allez comprendre
       pourquoi ce processus a un nom si barbare, et vous devriez vous prparer
       une tche ingrate. Dans tous les cas, souvenez-vous que c'est le prix
       payer pour bnficier du confort que po4a vous apportera par la suite. Le
       point positif est que vous n'aurez  faire cela qu'une seule fois.

       Ceci ne sera jamais rpt suffisamment: afin de faciliter ce processus,
       il est trs important de trouver la version exacte qui a t utilise pour
       raliser la traduction. La meilleure situation est quand vous avez not
       la version CVS lors de la traduction.

       a ne fonctionnera pas trs bien si vous utilisez le document d'origine
       mis
        jour avec l'ancienne traduction. a reste possible, mais sera plus
       compliqu et doit tre vit autant que possible. En fait, je pense que si
       vous n'arrivez pas  trouver le document original, la meilleure solution
       est de trouver quelqu'un pour faire la gettextization pour vous (mais,
       s'il vous plat, pas moi;).

       Je dramatise peut-tre un peu trop ici. Mme lorsque tout ne se passe pas
       bien, c'est bien plus rapide que de tout retraduire. J'ai pu raliser
       une gettextization de la traduction franaise de Perl en un jour, mme si
       les choses ne se sont pas bien passes. Il y avait plus de deux
       mgaoctets de textes, et une nouvelle traduction aurait pris des mois.

       Voici d'abord la procdure, puis nous reviendrons sur les astuces qui
       permettent d'y parvenir avec succs lorsqu'il y a un problme. Pour
       faciliter la comprhension, rutilisons encore une fois l'exemple
       prcdent.

       Une fois que vous avez l'ancien maitre.doc correspondant  la traduction
       XX.doc, la gettextization peut tre faite directement dans doc.XX.po
       sans traduction manuelle du fichier traduction.pot:

        $ po4a-gettextize -f <format> -m <ancien_maitre.doc> -l <XX.doc> -p <doc.XX.po>

       Si vous avez de la chance, c'est fini. Vous avez converti votre
       ancienne traduction pour po4a et pouvez commencer la phase de mise
       jour qui suit. Utiliser la procdure dcrite quelques sections auparavant
       pour synchroniser votre fichier PO avec le nouveau document original,
       et mettez jour votre traduction en consquence.

       Veuillez noter que mme si tout semble s'tre bien pass, il reste une
       possibilit que des erreurs se soient introduites au cours du processus.
       En fait, po4a est incapable de vrifier que les chanes correspondent
       l'original, et il marque toutes les chanes comme approximatives (fuzzy)
       au cours de cette procdure. Vous devriez vrifier chacune d'elle
       soigneusement avant de retirer ces marques.

       Souvent, la structure du document ne correspond pas exactement, ce qui
       empche po4a-gettextize de faire son travail correctement. Pour
       contourner cela, vous pouvez diter les fichiers afin de faire
       correspondre leur structure.

       La section "Gettextization: Comment a marche?" ci-dessous pourra vous
       aider. La comprhension du fonctionnement interne vous aidera raliser
       cette tche. Par chance, po4a-gettextize est relativement bavard sur ce
       qui s'est mal pass. Dans un premier temps, il indique o, dans les
       documents, se trouve la diffrence des structures. Vous obtiendrez les
       chanes qui ne correspondent pas, leur position dans le texte, et leur
       type De plus, le fichier PO gnr ainsi sera crit dans
       gettextization.failed.po.

       -   Retirez toutes les parties propres  la traduction, telles que les
           sections dans lesquelles vous avez indiqu le nom du traducteur et
           les remerciements envers toutes les personnes qui ont contribu  la
           traduction. Les addenda qui sont dcrits dans la section suivante
           vous permettront de les rajouter par la suite.

       -   N'hsitez pas  diter les deux fichiers. Le plus important est
           d'obtenir le fichier PO. Vous pourrez le mettre  jour par la suite.
           Cela dit, il est tout de mme prfrable d'diter la traduction quand
           c'est possible, puisque a simplifiera les tapes suivantes.

       -   Si besoin, supprimez des parties de l'original s'il se trouve
           qu'elles n'ont pas t traduites. Elles reviendront par la suite
           lorsque vous synchroniserez le PO avec le document.

       -   Si vous avez un peu modifi la structure (pour combiner deux
           paragraphes ou pour en dcouper un autre), enlevez ces
           modifications. S'il y a des problmes avec l'original, vous devriez
           en informer son auteur. Faire la correction dans votre traduction
           n'en fait bnficier qu'une partie de la communaut. Et de plus, ce
           n'est pas possible lorsque po4a est utilis.

       -   Parfois, le contenu des paragraphes correspond, mais pas leur type.
           Corriger cela dpend du format. Pour les formats POD et man, cela
           provient souvent du fait qu'un des deux contient une ligne
           commenant par des espaces et pas l'autre. Pour ces formats, cela
           signifie que ce paragraphe ne doit pas tre reformat, il a donc un
           type diffrent. Retirez simplement les espaces et vous serez
           tranquille. Il se peut aussi qu'il s'agisse d'une petite erreur
           dans le nom d'une balise.

           De la mme faon, deux paragraphes peuvent avoir t combins, dans le
           format POD, si la ligne qui les spare contient des espaces, ou s'il
           n'y a pas de ligne vide avant la ligne =item et le contenu de cet
           lment.

       -   Il arrive galement qu'il se produise une dsynchronisation entre les
           fichiers, et la traduction se retrouve alors attache au mauvais
           paragraphe. C'est le signe que le problme se situe avant dans le
           fichier. Consultez gettextization.failed.po pour voir quand la
           dsynchronisation s'est produite, et corrigez-la.

       -   D'autres fois, vous aurez l'impression que po4a a oubli des parties
           du texte original ou de la traduction. gettextization.failed.po
           indique que les deux correspondent correctement, mais la
           gettextization choue parce que po4a essaie de faire correspondre un
           paragraphe avec le paragraphe suivant (ou prcdant) de celui qui
           devrait lui tre associ, comme si celui-ci avait disparu. Vous
           pesterez srement contre po4a comme je l'ai fait quand a m'est
           arriv.

           Cette situation malheureuse se manifeste quand un mme paragraphe
           est rpt dans le document. Dans ce cas, aucune nouvelle entre n'est
           cre dans le fichier PO, mais une nouvelle rfrence est ajoute
           l'entre existante.

           Donc, lorsque le mme paragraphe apparat deux fois dans l'original
           mais n'est pas traduit exactement de la mme faon chaque fois, vous
           aurez l'impression qu'un paragraphe de l'original a disparu.
           Supprimez juste la seconde traduction. Si vous prfrez plutt
           supprimer la premire traduction parce que la nouvelle traduction
           est meilleure, enlevez la seconde de sa place et replacez-la  la
           place de la premire.

           De la mme faon, si deux paragraphes lgrement diffrents ont t
           traduits de faon identique, vous aurez l'impression qu'un
           paragraphe de la traduction a disparu. Une solution consiste
           ajouter une certaine chane dans le paragraphe du document original
           (I'm different par exemple). Ne vous inquitez pas, ces
           modifications disparatront pendant la synchronisation, et quand le
           texte ajout est suffisamment court, gettext associera votre
           traduction au texte existant de toute faon (en le marquant comme
           approximatif (fuzzy), ce qui n'a pas d'importance puisque toutes
           les chanes sont marques fuzzy aprs la gettextization).

       Avec un peu de chance, ces astuces vous permettront de raliser la
       gettextization et d'obtenir le prcieux PO. Vous serez alors prt pour
       synchroniser votre fichier et commencer la traduction. Veuillez noter
       que pour les gros fichiers, la synchronisation peut prendre beaucoup de
       temps.

       Par exemple, la premire excution de po4a-updatepo pour la traduction de
       la documentation Perl (un fichier PO de 5,5 Mo) a pris presque deux
       jours sur un G5  1GHz. Eh oui, 48 heures. Mais les mises  jour
       suivantes n'ont pris que quelques secondes sur un vieux portable. Ceci
       parce que la premire fois, la plupart des msgid du PO ne correspondent
       aucun dans le fichier POT. Ce qui oblige gettext  rechercher la chane
       la plus proche avec un algorithme de recherche coteux.

   Comment ajouter des choses n'tant pas des traductions (comme le nom du
       traducteur)?
       Du fait de l'approche de type gettext, faire ceci est plus compliqu
       avec po4a que a ne l'tait en ditant simplement le nouveau fichier et en
       lisant l'original  ct. Mais ceci reste possible en utilisant les
       addenda.

       Pour aider  leur comprhension, on peut considrer les addenda comme des
       sortes de rustines  appliquer sur le document traduit  la fin du
       processus. Ils sont assez diffrents des rustines usuelles (il n'y a
       qu'une seule ligne de contexte, qui peut contenir une expression
       rationnelle Perl, et ne peuvent que rajouter du texte, sans en
       enlever), mais la fonctionnalit qu'ils apportent est la mme.

       Leur but est de permettre au traducteur d'ajouter au document du texte
       qui ne soit pas une traduction, mais quelque chose de spcifique  la
       version traduite. De cette faon, ils peuvent ajouter une section
       indiquant qui a particip  cette traduction ou expliquer comment
       rapporter des bogues de traduction.

       Un addendum est fourni dans un fichier spar. La premire ligne constitue
       un en-tte indiquant o le texte qu'il contient doit tre plac dans le
       document. Le reste du fichier est ajout tel quel  cette position dans
       le document rsultant.

       Les en-ttes ont une syntaxe relativement rigide: ils doivent commencer
       par la chane PO4A-HEADER:, suivie par une liste de champs de la forme
       clef=valeur spars par des points-virgules. Les espaces ONT leur
       importance. Notez qu'il n'est pas possible d'utiliser de point-virgule
       dans la valeur, mme en la plaant entre des guillemets.

       Encore une fois, a parat peut-tre effrayant, mais les exemples ci-
       dessous devraient vous aider  crire les en-ttes dont vous avez besoin.
       Supposons que nous voulons ajouter une section  propos de cette
       traduction aprs la section  propos de ce document.

       Voici les diffrentes clefs d'en-tte existantes:

       position (obligatoire)
           une expression rationnelle. L'addendum sera plac prs de la ligne
           correspondant  cette expression rationnelle. Notez qu'il s'agit ici
           du document traduit, et non pas du document original. Si plus d'une
           ligne correspond  cette expression (ou si aucune ne correspond),
           l'ajout chouera. Il est prfrable de donner un message d'erreur que
           d'ajouter l'addendum au mauvais endroit.

           La ligne est appele point de position par la suite. L'endroit o est
           ajout l'addendum est appel point d'insertion. Ces deux points sont
           proches, mais pas identiques. Par exemple, si vous voulez insrer
           une nouvelle section, il est plus simple de placer le point de
           position au niveau du titre de la section prcdente, et d'expliquer
           po4a o se termine la section (souvenez-vous que le point de
           position doit tre donn par une expression rationnelle ne
           correspondant qu' une seule ligne.

           La localisation du point d'insertion par rapport au point de
           position est contrle par les champs "mode", "beginboundary" et
           "endboundary", comme expliqu par la suite.

           Dans notre cas, nous aurons:

                position=<title> propos de ce document</title>

       mode (obligatoire)
           Le mode est soit before (avant) soit after (aprs). Il permet de
           prciser la position de l'addendum par rapport au point d'ancrage.

           Comme nous voulons placer la nouvelle section sous celle qui
           correspond, nous utilisons:

                mode=after

       beginboundary (utilis uniquement avec mode=after, et obligatoire dans
       ce cas)
       endboundary (idem)
           expression rationnelle correspondant  la fin de la section aprs
           laquelle l'addendum doit tre plac.

           Lorsque le mode vaut after (aprs), le point d'insertion se trouvera
           aprs le point de position, mais pas juste aprs! Il est plac  la fin
           de la section qui dbute par le point de position, c'est--dire aprs
           la ligne correspondant  l'expression rationnelle donne par le champ
           "beginboundary" ou avant la ligne correspondant  l'expression
           rationnelle donne par le champ "endboundary".

           Dans notre cas, nous pouvons choisir d'indiquer la fin de la
           section qui doit correspondre en ajoutant:

              endboundary=</section>

           ou en indiquant le dbut de la section suivante en indiquant:

              beginboundary=<section>

           Dans les deux cas, notre addendum sera plac aprs </section> et
           avant <section>. La premire solution est meilleure puisqu'elle
           fonctionnera toujours, mme si le document est rorganis.

           Les deux existent parce que les formats des documentations sont
           diffrents. Dans certains d'entre eux, il est possible d'indiquer la
           fin d'une section comme "</section>" que nous avons utilis), et
           dans d'autres les fins de section ne sont pas spcifies
           explicitement (c'est le cas du format man). Dans le premier cas, la
           frontire (boundary) est la fin de section, et le point d'insertion
           vient aprs. Dans le second cas, la frontire correspond au dbut de
           la section suivante, et le point d'insertion vient juste avant.

       Tout ceci peut sembler confus, mais l'exemple suivant devrait vous
       clairer.

       Pour rsumer l'exemple utilis, pour ajouter une section appele  propos
       de cette traduction aprs la section  propos de ce document dans un
       document SGML, vous pouvez utiliser une de ces lignes d'en-tte.
          PO4A-HEADER: mode=after; position= propos de ce document; endboundary=</section>
          PO4A-HEADER: mode=after; position= propos de ce document; beginboundary=<section>

       Si vous voulez ajouter quelque chose aprs la section nroff suivante:
           .SH "AUTEURS"

         vous devez utiliser un champ "position" correspondant  cette ligne,
         et un champ "beginboundary" correspondant au dbut de la section
         suivante (c'est--dire "^\.SH"). L'addendum sera plac aprs le point de
         position et immdiatement avant la premire ligne correspondant au
         champ "beginboundary". C'est--dire:

          PO4A-HEADER:mode=after;position=AUTEURS;beginboundary=\.SH

       Si vous voulez ajouter quelque chose  une section (par exemple aprs
       Copyright Tralala) au lieu d'ajouter une section entire, vous pouvez
       fournir une "position" correspondant  cette ligne, et un champ
       "beginboundary" correspondant  n'importe quelle ligne.
          PO4A-HEADER:mode=after;position=Copyright Tralala, 2004;beginboundary=^

       Si vous voulez ajouter quelque chose  la fin du document, donnez une
       position correspondant  n'importe quelle ligne du document (mais  une
       seule ligne, puisque po4a n'acceptera pas que la position ne
       corresponde pas  une ligne unique), et donnez un champ "endboundary" ne
       correspondant  aucune ligne. N'utilisez pas de chane simple, comme FIN,
       mais prfrez-en une qui a une chance moindre de se trouver dans votre
       document.
          PO4A-HEADER:mode=after;position=<title>Au sujet de...</title>;beginboundary=FausseLimitePo4a

       Dans tous les cas, rappelez-vous qu'il s'agit d'une expression
       rationnelle. Par exemple, si vous voulez pointer la fin d'une section
       nroff qui se termine par la ligne:

         .fi

       N'utilisez pas ".fi" comme valeur pour endboundary, parce que cette
       expression rationnelle correspond galement  ce[fi]chier, ce qui n'est
       videmment pas ce que vous voulez. La valeur du champ endboundary dans
       ce cas est "^\.fi$".

       Si l'addendum n'est pas positionn l o vous l'escomptiez, essayez en
       fournissant l'option -vv aux outils, ce qui vous donnera des
       indications sur ce qui est fait pour le placement de l'addendum.

       Voici un exemple plus dtaill.

       Document original (au format POD):

        |=head1 NAME
        |
        |dummy - a dummy program
        |
        |=head1 AUTHOR
        |
        |me

       Voici maintenant un addendum qui s'assure qu'une section est ajoute  la
       fin du fichier pour indiquer le traducteur.

        |PO4A-HEADER:mode=after;position=AUTEUR;beginboundary=^=head
        |
        |=head1 TRADUCTEUR
        |
        |moi

       De faon  placer l'addendum avant l'AUTEUR (section nomme AUTHOR dans le
       document original), utilisez l'en-tte suivant:

        PO4A-HEADER:mode=after;position=NOM;beginboundary=^=head1

       Ceci fonctionne parce que la premire ligne correspondant  l'expression
       rationnelle donne dans le champ beginboundary (/^=head1/) aprs la
       section NOM (correspondant  la section NAME dans le document original),
       est celle indiquant les auteurs. De cette faon, l'addendum est plac
       entre les deux sections.

   Comment automatiser tout ceci?
       L'utilisation de po4a s'est montre propice aux erreurs pour les
       utilisateurs parce que deux programmes doivent tre appels dans le bon
       ordre (po4a-updatepo puis po4a-translate), chacun d'eux prenant au
       moins 3 paramtres. De plus, il tait difficile avec ce systme d'utiliser
       un seul fichier PO pour tous les documents quand plusieurs formats
       taient utiliss.

       Le programme po4a(1) a t conu pour rpondre  ces difficults. Une fois
       que votre projet a t converti  po4a, vous crivez un petit fichier de
       configuration indiquant o se trouvent vos fichiers de traduction (les
       fichiers PO et POT), o se trouvent les documents originaux, leurs
       formats, et o doivent tre places leur traduction.

       Ensuite, l'appel de po4a(1) avec ce fichier vrifie que les fichiers PO
       sont synchroniss avec le document original, et que les documents
       traduits sont gnrs correctement. Bien sr, il vous faudra appeler ce
       programme deux fois: une fois avant l'dition des fichiers PO pour les
       mettre  jour et une autre fois aprs pour mettre  jour les documents
       traduits. Mais vous n'aurez qu' vous rappeler cette commande.

   Comment personaliser po4a?
       Les modules po4a ont des options (fournies  l'aide de l'option -o) qui
       peuvent tre utilises pour modifier le comportement du module.

       Il est aussi possible de personaliser un module, d'ajouter de nouveaux
       modules ou des modules drivs / modifis en plaant un module dans
       lib/Locale/Po4a/ et en ajoutant lib aux chemins indiqus par les
       variables d'environnement PERLLIB ou PERL5LIB. Par exemple:

          PERLLIB=$PWD/lib po4a --previous po4a/po4a.cfg

       Note: le nom du rpertoire lib n'est pas important.

Comment a marche?

       Cette section vous donne un bref aperu des rouages internes de po4a
       afin que vous vous sentiez plus  mme de nous aider  le maintenir et
       l'amliorer. Elle peut galement vous permettre de comprendre pourquoi
       cela ne fait pas ce que vous souhaitez et corriger vos problmes par
       vous-mme.

   Quel est le plan gnral ici?
       L'architecture po4a est oriente objet (en Perl, n'est-ce pas
       formidable?). L'anctre commun de tous les classes d'analyseur est appel
       Transtractor. Ce nom trange provient du fait qu'il est  la fois charg
       de la traduction et de l'extraction des chanes du document.

       Plus formellement, il prend un document  traduire et un fichier PO
       contenant les traductions en entre et produit en sortie deux autres
       fichiers: un autre fichier PO (rsultant de l'extraction des chanes
       traduire du document d'entre), et un document traduit (avec la mme
       structure que le document d'entre, mais dont toutes les chanes
       traduire ont t remplaces par leur traduction donne par le PO fournit en
       entre). Voici une reprsentation graphique de tout ceci:

         document entre --\                             /---> document sortie
                            \      TransTractor::       /       (traduit)
                             +-->--   parse()  --------+
                            /                           \
         PO entre --------/                             \---> PO sortie
                                                                (extrait)

       Cette forme d'os est le coeur de l'architecture de po4a. Sans le
       fichier PO en entre et le document en sortie, cela donne
       po4a-gettextize. Si vous fournissez les deux entres et ignorez le PO de
       sortie, vous aurez po4a-translate.

       TransTractor::parse() est une fonction virtuelle implmente dans chaque
       module. Voici un petit exemple pour montrer comment elle marche. Cet
       exemple analyse une liste de paragraphes qui dbutent tous par <p>.

         1 sub parse {
         2   PARAGRAPH: while (1) {
         3     $my ($paragraph,$pararef,$line,$lref)=("","","","");
         4     $my $first=1;
         5     while (($line,$lref)=$document->shiftline() && defined($line)) {
         6       if ($line =~ m/<p>/ && !$first--; ) {
         7         $document->unshiftline($line,$lref);
         8
         9         $paragraph =~ s/^<p>//s;
        10         $document->pushline("<p>".$document->translate($paragraph,$pararef));
        11
        12         next PARAGRAPH;
        13       } else {
        14         $paragraph .= $line;
        15         $pararef = $lref unless(length($pararef));
        16       }
        17     }
        18     return; # Did not got a defined line? End of input file.
        19   }
        20 }

        la ligne 6, <p> est rencontr pour la seconde fois. Cela indique le
       passage un paragraphe suivant. Nous replaons donc la ligne, qui vient
       juste d'tre obtenue, dans le document d'origine (ligne 7) et envoyons
       le paragraphe ainsi construit dans les sorties. Aprs avoir retir le <p>
       de tte en ligne 9, nous envoyons la concatnation de cette balise avec
       la traduction du reste du paragraphe.

       Cette fonction translate() est trs pratique. Elle envoie son paramtre
       dans le fichier PO de sortie (l'extraction) et renvoie sa traduction
       telle qu'elle a t trouve dans le fichier PO d'entre (la traduction).
       Comme elle est utilise dans le paramtre de pushline(), cette traduction
       se retrouve dans le document de sortie.

       N'est-ce pas gnial? Il est possible de construire un module complet
       pour po4a en moins de 20 lignes, si le format est suffisamment
       simple...

       Vous trouverez plus de dtails  ce sujet dans
       Locale::Po4a::TransTractor(3pm).

   Gettextization: Comment a marche?
       L'ide ici est de prendre  la fois le document d'origine et sa
       traduction, et de supposer que la nime chane extraite du document
       traduit correspond
        la traduction de la nime chane du document original. Pour que cela
       fonctionne, il faut donc que les deux documents aient exactement la mme
       structure. Par exemple, si les fichiers ont la structure suivante, il y
       a trs peu de chance pour que la quatrime chane de la traduction (qui
       est de type chapter) soit la traduction de la quatrime chane du
       document original (de type paragraph).

           Original         Traduction

         chapitre            chapitre
           paragraphe          paragraphe
           paragraphe          paragraphe
           paragraphe        chapitre
         chapitre              paragraphe
           paragraphe          paragraphe

       Pour cela, les analyseurs po4a sont utiliss  la fois sur l'original et
       sur la traduction pour extraire des fichiers PO, et un troisime fichier
       PO est construit  partir d'eux en utilisant les chanes du second comme
       traductions des chanes du premier. Pour s'assurer que les chanes ainsi
       associes sont bien les traductions, les analyseurs de po4a doivent
       ajouter des informations sur le type syntaxique des chanes extraites du
       document (les analyseurs existants le font, les vtres devraient
       galement). Ensuite, ces informations sont utilises pour s'assurer que
       les deux documents ont la mme syntaxe. Dans l'exemple prcdent, cela
       permet de dtecter que la quatrime chane est dans un cas un paragraphe
       et dans l'autre un titre de chapitre, et le problme est affich.

       En thorie, il devrait tre possible de dtecter le problme, puis de
       resynchroniser les fichiers par la suite (comme le fait diff). Mais il
       est alors difficile de savoir quoi faire des chanes prcdant la
       dsynchronisation, et le rsultat pourrait parfois ne pas tre bon. C'est
       pourquoi l'implmentation actuelle ne resynchronise rien et choue avec
       un message d'erreur complet quand quelque chose se passe mal, indiquant
       qu'une modification manuelle des fichiers est ncessaire pour corriger
       le problme.

       Mme avec ces prcautions, des erreurs peuvent survenir. C'est la raison
       pour laquelle toutes les traductions trouves de cette faon sont marques
       fuzzy, pour s'assurer que le traducteur les relira et vrifiera.

   Fonctionnement d'un Addendum
       Bien, il n'y a rien de bien compliqu ici. La traduction n'est pas
       directement crite sur le disque, mais est conserve en mmoire jusqu' ce
       que tous les addenda soient ajouts. Les algorithmes utiliss sont assez
       simples. Une ligne correspondant  l'expression rationnelle de la
       position est recherche, et l'addendum est ajout juste avant si
       mode=before. Sinon, la premire ligne trouve  partir de cette position
       correspondant l'expression rationnelle donne par le champ boundary est
       recherche et l'addendum est insr juste aprs cette ligne s'il s'agit
       d'un "endboundary" ou juste avant s'il s'agit d'un "beginboundary".

FAQ

       Cette section regroupe les questions le plus souvent poses. En fait, la
       plupart d'entre elles sont des questions de design du projet. Si vous
       pensez que po4a n'est pas la bonne rponse au problme de traduction de
       documentation, lisez cette section avant de nous donner votre avis sur
       la liste de diffusion <po4a-devel@lists.alioth.debian.org>. Votre avis
       nous intresse.

   Pourquoi traduire chaque paragraphe sparment?
       En effet, avec po4a, tous les paragraphes sont traduits sparment (en
       fait, c'est au choix de chaque module, mais tous les modules existants
       font ainsi, et les vtres devraient galement). Il y a deux avantages
       principaux  cette approche:

       o Quand les parties techniques du document sont masques, le traducteur
         ne peut pas faire de btises avec. Moins nous prsentons de marqueurs
         au traducteur, moins il pourra faire d'erreurs.

       o Dcouper le document aide  isoler les changements apparaissant dans le
         document original. Lorsque l'original est modifi, la mise  jour des
         parties modifies est plus facile.

       Mme avec ces avantages, certains n'aiment pas l'ide de traduire chaque
       paragraphe sparment. Voici quelques rponses  leurs inquitudes:

       o Cette approche a t couronne de succs dans le cadre du projet KDE et a
         permis de produire la plus grosse documentation traduite et mise
         jour notre connaissance.

       o Les traducteurs peuvent toujours utiliser le contexte pour traduire,
         puisque les chanes du fichier PO se trouvent dans le mme ordre que
         dans le document original. La traduction squentielle est donc
         relativement comparable qu'elle soit faite avec ou sans po4a. Et dans
         tous les cas, la meilleure faon reste de convertir le document dans
         un format imprimable puisque les indications de formatage ne sont pas
         vraiment lisibles.

       o C'est l'approche utilise par les traducteurs professionnels. Mme si
         je l'admets, leurs buts peuvent tre diffrents des traducteurs de
         logiciels source ouvert. La maintenance tant par exemple souvent
         moins critique puisque le contenu change rarement.

   Pourquoi ne pas dcouper au niveau des phrases (ou  un niveau plus petit)?
       Les outils des traducteurs professionnels dcoupent parfois les
       documents au niveau des phrases, de faon  maximiser la rutilisation de
       traductions prcdentes et  acclrer leur travail. Le problme est qu'une
       mme phrase peut avoir plusieurs traductions en fonction du contexte.

       Les paragraphes sont par dfinition plus longs que les phrases. Cela
       permet la plupart du temps d'assurer que deux paragraphes dans deux
       documents diffrents auront le mme sens (et la mme traduction),
       indpendamment du contexte.

       Un dcoupage  un niveau encore plus petit qu'une phrase pourrait tre trs
       gnant. Ce serait un peu long d'expliquer pourquoi ici, mais les
       lecteurs intresss pourront par exemple consulter la page de manuel
       Locale::Maketext::TPJ13(3pm) (qui est fournie avec la documentation de
       Perl). Pour faire court, chaque langue a ses propres rgles syntaxiques,
       et il n'y a aucun moyen de construire des phrases  partir de morceaux
       de phrases pour toutes les langues existantes (ou pour les 5  10
       langues les plus parles, et mme moins).

   Pourquoi ne pas mettre la version originelle en commentaire avec la
       traduction?
        premire vue, gettext ne semble pas adapt  tous les types de
       traduction. Par exemple, il ne semblait pas adapt  debconf, l'interface
       que tous les paquets Debian utilisent pour l'interaction avec
       l'utilisateur pendant l'installation. Dans ce cas, les textes  traduire
       taient assez courts (une dizaine de lignes pour chaque fichier), et il
       tait difficile de placer la traduction dans un fichier spar parce qu'il
       doit tre disponible avant l'installation du paquet.

       C'est pourquoi les concepteurs de debconf ont dcid d'implmenter une
       autre solution, plaant les traductions dans le mme fichier que
       l'original. C'est une solution plutt sduisante. Certains voudront
       galement faire ainsi pour les fichiers XML, par exemple. Voici  quoi
       cela ressemblerait:

        <section>
         <title lang="en">My title</title>
         <title lang="fr">Mon titre</title>

         <para>
          <text lang="en">My text.</text>
          <text lang="fr">Mon texte.</text>
         </para>
        </section>

       Mais cette solution a t si problmatique que l'approche base sur PO est
       dsormais utilise. Seul l'original peut tre dit dans le fichier, et les
       traductions sont places dans des fichiers PO gnrs  partir du modle
       matre (et replacs au cours de la compilation). L'ancien systme a t
       abandonn  cause de plusieurs problmes:

       o   problmes de maintenance

           Si plusieurs traducteurs fournissent une rustine (patch) au mme
           moment, il est difficile de les appliquer ensemble.

           Comment dtecter les modifications dans l'original qui doivent tre
           appliques  une traduction? Pour pouvoir utiliser diff, il faut
           noter la version du document original traduit. C'est--dire qu'il
           faut un fichier PO dans le fichier;)

       o   problmes d'encodage

           Cette solution n'est envisageable que quand seules des langues
           europennes sont impliques, mais la traduction pour le coren, le
           russe ou l'arabe peuvent compliquer la situation. UTF peut tre une
           solution, mais il y a galement des problmes avec.

           De plus, ces problmes sont difficiles  dtecter (c.--d. que seules
           les personnes capables de lire le coren pourront s'apercevoir que
           l'encodage pour le coren est dfectueux [ce qui aurait t caus par un
           traducteur russe]).

       gettext rsout tous ces problmes.

   Mais gettext n'a pas t conu pour faire a!
       C'est vrai, mais  ce jour, personne n'a apport de meilleure solution.
       La seule solution alternative est la traduction manuelle, avec tous les
       problmes de maintenance qu'elle comporte.

   Qu'en est-il des autres outils de traduction de documentation utilisant
       gettext?
       Il n'y en  notre connaissance que deux:

       poxml
           C'est l'outil dvelopp au sein du projet KDE pour grer les
           XMLDocBook. C'est  notre connaissance le premier programme qui a
           extrait des chanes  traduire d'une documentation pour les mettre
           dans un fichier PO, et les rinjecter ensuite dans le document aprs
           la traduction.

           Il ne peut grer que le format XML, avec une DTD particulire. Je
           n'aime pas beaucoup la faon dont les listes sont gres: elles sont
           rassembles en un seul gros msgid. Lorsque la liste est de taille
           importante, les lments sont assez durs  grer.

       po-debiandoc
           Ce programme crit par Denis Barbier est un prcurseur du module SGML
           de po4a, qui le remplace plus ou moins. Comme son nom l'indique, il
           ne gre que la DTD DebianDoc, qui est en voie d'extinction.

       Le principal avantage de po4a par rapport  eux est la facilit d'ajouter
       du contenu additionnel (ce qui est encore plus difficile avec ces
       outils) et la possibilit de faire une gettextization.

   duquer les dveloppeurs au problme des traductions
       Lors de la traduction de documentations ou de programmes, trois types
       de difficults sont rencontrs; des problmes linguistiques (tout le monde
       ne parle pas deux langues), des problmes techniques (la raison d'tre de
       po4a) et des problmes de type relationnel et humain. Tous les
       dveloppeurs ne voient pas la ncessit de raliser des traductions. Mme
       avec la meilleure volont, ils peuvent aussi ignorer comment faciliter
       le travail des traducteurs. C'est pour cela que po4a fournit une bonne
       quantit de documentation que vous pouvez leur indiquer.

       Un autre point important est que chaque fichier traduit contient un
       petit commentaire indiquant ce qu'est le fichier et comment l'utiliser.
       Ceci devrait aider les pauvres dveloppeurs inonds de tonnes de fichiers
       contenant les traductions pour des langues qu'ils ne parlent quasiment
       pas, et qui devrait les aider  grer ces fichiers correctement.

       Dans le projet po4a, les fichiers traduits ne sont plus des fichiers
       source. Comme les fichiers SGML sont d'habitude des fichiers source,
       ceci peut tre droutant. C'est pourquoi tous les fichiers contiennent un
       en-tte similaire  celui-ci:

        |       *****************************************************
        |       *           GENERATED FILE, DO NOT EDIT             *
        |       * THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
        |       *****************************************************
        |
        | This file was generated by po4a-translate(1). Do not store it (in cvs,
        | for example), but store the PO file used as source file by po4a-translate.
        |
        | In fact, consider this as a binary, and the PO file as a regular source file:
        | If the PO gets lost, keeping this translation up-to-date will be harder ;)

       De la mme faon, les fichiers PO usuels n'ont qu' tre copis dans le
       rpertoire po/. Mais ce n'est pas le cas de ceux manipuls par po4a. Le
       principal risque tant que le dveloppeur crase la traduction existante
       de son programme avec la traduction de sa documentation. (Les deux ne
       peuvent pas tre stockes dans le mme fichier PO parce que le programme
       doit installer sa traduction en tant que fichier mo et que la
       documentation n'a besoin de la traduction qu'au moment de la
       compilation). C'est pourquoi les fichiers PO crs par le module po-
       debiandoc contient l'en-tte suivant:

        #
        #  ADVISES TO DEVELOPERS:
        #    - you do not need to manually edit POT or PO files.
        #    - this file contains the translation of your debconf templates.
        #      Do not replace the translation of your program with this !!
        #        (or your translators will get very upset)
        #
        #  ADVISES TO TRANSLATORS:
        #    If you are not familiar with the PO format, gettext documentation
        #     is worth reading, especially sections dedicated to this format.
        #    For example, run:
        #         info -n '(gettext)PO Files'
        #         info -n '(gettext)Header Entry'
        #
        #    Some information specific to po-debconf are available at
        #            /usr/share/doc/po-debconf/README-trans
        #         or http://www.debian.org/intl/l10n/po-debconf/README-trans
        #

   RSUM des avantages de l'approche base sur gettext
       o Les traductions ne sont pas stockes indpendamment de l'original, ce
         qui rend possible la dtection des parties  mettre  jour.

       o Les traductions sont stockes dans des fichiers diffrents pour chaque
         langue, ce qui vite les interfrences entre traducteurs. Que ce soit
         pour la soumission de rustines ou pour le choix d'un encodage.

       o En interne, tout est bas sur "gettext" (mais "po4a" offre une
         interface simple qui ne ncessite pas de comprendre comment a marche
         en interne pour pouvoir l'utiliser). Ce qui permet de ne pas
         rinventer la roue, et du fait de leur utilisation importante, nous
         pouvons supposer qu'ils ont peu ou pas de bogue.

       o Pour l'utilisateur final, rien ne change ( part que les
         documentations seront probablement mieux maintenues:). La
         documentation distribue reste la mme.

       o Il n'est pas ncessaire pour les traducteurs d'apprendre une nouvelle
         syntaxe et leur diteur de fichier PO prfr (qui peut tre le mode PO
         d'Emacs, Lokalize ou Gtranslator) sera parfait.

       o Gettext permet d'obtenir facilement des statistiques sur ce qui a t
         fait, ce qui doit tre revu et mis  jour, et sur ce qu'il reste
         faire. Vous trouverez des exemples  ces adresses:

          - http://kv-53.narod.ru/kaider1.png
          - http://www.debian.org/intl/l10n/

       Mais tout n'est pas rose, et cette approche a aussi quelques
       dsavantages que nous devons grer.

       o Les addenda sont... surprenants au premier abord.

       o Il n'est pas possible d'adapter le texte traduit  votre got, comme de
         dcomposer ou recomposer des paragraphes. Mais d'un autre ct, s'il
         s'agit d'un problme dans le document original, celui-ci doit tre
         signal de toute faon.

       o Mme s'il a une interface simple, il reste un nouvel outil qu'il
         faudra apprendre  matriser.

         Un de mes rves serait d'intgrer po4a  Gtranslator ou Lokalize.
         Lorsqu'un fichier SGML serait ouvert, ses chanes seraient extraites
         automatiquement. Lors de l'enregistrement, le fichier SGML traduit
         serait crit sur le disque. Si nous arrivons  faire un module pour
         MSWord (TM) (ou au moins pour le format RTF), des traducteurs
         professionnels pourraient mme l'utiliser.

AUTEURS

        Denis Barbier <barbier,linuxfr.org>
        Martin Quinson (mquinson#debian.org)