NOM¶
Locale::Po4a::Sgml - Convertir des documents SGML depuis ou vers des fichiers PO
DESCRIPTION¶
L'objectif du projet po4a [PO for anything -- PO pour tout] est de simplifier la
  traduction (et de façon plus intéressante, la maintenance des
  traductions) en utilisant les outils gettext dans des domaines pour lesquels
  ils n'étaient pas destinés, comme la documentation.
Locale::Po4a::Sgml est un module qui permet d'aider la traduction de
  documentations au format SGML vers d'autres langues.
Ce module utilise 
nsgmls pour analyser les fichiers SGML. Assurez vous
  qu'il est bien installé et que la DTD des fichiers SGML est bien
  installée sur le système.
OPTIONS ACCEPTÉES PAR CE MODULE¶
  - debug
 
  - Liste de mots clef séparés par des espaces et
      indiquant quelles parties vous voulez déboguer. Les valeurs possibles
      sont : tag, generic, entities et refs.
 
  - verbose
 
  - Donne plus d'informations sur ce qu'il se passe.
 
  - translate
 
  - Liste de balises supplémentaires (en plus de celles
      fournies par la DTD) séparées par des espaces dont le contenu
      doit former des msgid additionnels.
 
  - section
 
  - Liste de balises supplémentaires (en plus de celles
      fournies par la DTD) pouvant contenir d'autres balises, qui peuvent
      être à traduire (catégorie translate).
 
  - indent
 
  - Liste de balises, séparées par des espaces, qui
      augmentent le niveau d'indentation.
 
  - verbatim
 
  - Le formatage du texte contenu dans ces balises ne doit pas
      être modifié. Aucun retour à la ligne n'est ajouté
      dans les paragraphes et aucune espace pour l'indentation ou nouvelle ligne
      n'est ajoutée pour des raisons cosmétiques.
 
  - empty
 
  - Balises n'ayant pas besoin d'être fermées.
 
  - ignore
 
  - Les balises ignorées et considérées comme
      étant du texte brut par po4a. C'est-à-dire qu'elles peuvent
      faire partie d'un msgid. Par exemple, <b> est un bon candidat pour
      cette catégorie puisqu'en les mettant dans la catégorie
      translate (à traduire), cela aurait eu pour conséquence que des
      msgid n'auraient pas été des phrases complètes, ce qui
      n'est pas bien.
 
  - attributes
 
  - Une liste d'attributs de balises (séparés par des
      espaces) que vous voulez traduire. Vous pouvez spécifier les
      attributs par leur nom (par exemple, « lang »), mais
      vous pouvez aussi les faire précéder d'une hiérarchie de
      balises pour indiquer que cet attribut ne sera traduit que quand il sera
      placé à l'intérieur d'une balise. Par exemple :
      <bbb><aaa>lang indique que l'attribut lang ne sera traduit que
      s'il se trouve dans une balise <aaa>, se trouvant elle-même
      dans une balise <bbb>. Le nom des balises est en fait une expression
      rationnelle, ce qui vous permet de spécifier <aaa|bbbb>lang si
      vous ne voulez traduire que les attributs lang qui se trouvent dans une
      balise <aaa> ou <bbb>.
 
  - qualify
 
  - Une liste d'attributs séparés par des espaces
      pour lesquels la traduction doit être qualifiée par le nom
      d'attribut. Notez que cette option ajoute aussi automatiquement l'attribut
      donné à la liste d'attributs.
 
  - force
 
  - Continue même si la DTD est inconnue ou si nsgmls
      trouve des erreurs dans le document d'entrée.
 
  - include-all
 
  - Par défaut, les msgid qui ne contiennent qu'une
      entité (comme « &version; ») sont sautés
      pour le confort du traducteur. Activer cette option arrête cette
      optimisation. Ceci peut être utile si le document contient une
      construction telle que « <titleÁ</title>
      »,> même si je doute que ça puisse arriver...
 
  - ignore-inclusion
 
  - Liste d'entités, séparées par des espaces,
      qui ne seront pas insérées. Utilisez cette option avec
      précaution : elle peut forcer nsgmls (qui est utilisé en
      interne) à ajouter des tags et rendre le document
      généré non valable.
 
ÉTAT DE CE MODULE¶
Le résultat est parfait. C'est-à-dire que les documents
  générés sont rigoureusement identiques. Mais il y a encore
  quelques problèmes :
  - •
 
  - Les messages d'erreur de nsgmls sont redirigés vers
      /dev/null, ce qui n'est pas bien, mais je ne sais pas comment éviter
      cela.
    
 
    Le problème est que j'ai à « protéger »
      les inclusions conditionnées (utilisant
      « "<! [ %blah [" » et
      « "]]>" ») de nsgml, parce que dans
      certains cas, nsgmls les élimine, et je ne sais pas les rétablir
      dans le document final. Pour empêcher cela, je les récrit dans
      "{PO4A-beg-blah}" et "{PO4A-end}".
     
    Le problème avec cela est les "{PO4A-end}" et autres sont
      valides dans le document (pas dans une balise <p> ou autre).
     
    Tout marche bien avec cette redirection des messages de nsgmls, mais ceci
      empêchera de détecter que le document est mal formaté. 
  - •
 
  - Ceci ne marche qu'avec les DTD DebianDoc et DocBook.
      L'ajout de prise en charge d'une nouvelle DTD doit être très
      facile. Le mécanisme est le même pour chaque DTD, vous n'avez
      qu'à donner la liste des balises existantes et certaines de leurs
      caractéristiques.
    
 
    Je comprend que ceci nécessiterait plus de documentation, mais c'est
      toujours considéré comme à l'état bêta, et je
      déteste documenter ce qui risque de/va changer. 
  - •
 
  - Attention, le support des DTD est plutôt
      expérimental. Je n'ai lu aucun manuel de référence pour
      trouver la définition de toutes ces balises. J'ai ajouté des
      définitions de balises au module jusqu'à ce que ça marche
      pour certains documents trouvés sur internet. Si votre document
      utilise plus de balises que les miens, ça ne marchera pas. Mais,
      comme je l'ai dit plus haut, corriger cela doit être assez facile.
    
 
    J'ai testé le format DocBook avec le SAG (System Administrator Guide --
      Guide de l'Administrateur Système) uniquement, mais comme ce document
      est assez important, il doit utiliser la plupart des
      spécificités de DocBook.
     
    Pour le format DebianDoc, je l'ai testé avec certains manuels du DDP,
      mais pas encore avec tous. 
  - •
 
  - En cas d'inclusion d'un fichier, les références
      des messages du PO (c.-à-d., les lignes de la forme "#:
      en/titletoc.sgml:9460") seront erronées.
    
 
    Ceci est dû au fait que j'applique un prétraitement au fichier
      pour protéger les inclusions conditionnelles (utilisant
      « "<! [ %blah [" et
      « "]]>" ») et quelques entités
      (comme &version;) de nsgmls parce que je les veux telles quelles dans
      le document généré. Pour cela, je fait une copie temporaire
      du fichier d'entrée et effectue toutes les modifications que je veux
      lui appliquer avant de le passer à nsgmls pour son analyse.
     
    Pour que ça fonctionne, je remplace les entités demandant
      l'inclusion d'un fichier par le contenu du fichier donné (comme ceci
      je peux également protéger ce qui doit être dans le
      sous-fichier). Mais rien n'est fait à présent pour corriger les
      références (c.-à-d. les noms des fichiers et les
      numéros de ligne) par la suite. Je ne sais pas ce qui est
      préférable. 
AUTEURS¶
Ce module est une adaptation de sgmlspl (postprocesseur SGML pour les analyseurs
  SGMLS et NSGMLS), avec le copyright suivant :
 Copyright (c) 1995 par David Megginson <dmeggins@aix1.uottawa.ca>
L'adaptation de po4a a été faite par :
 Denis Barbier <barbier@linuxfr.org>
 Martin Quinson (mquinson#debian.org)
COPYRIGHT ET LICENCE¶
 Copyright (c) 1995 par David Megginson <dmeggins@aix1.uottawa.ca>
 Copyright 2002, 2003, 2004, 2005 par SPI, inc.
Ce programme est un logiciel libre ; vous pouvez le copier et / ou le
  modifier sous les termes de la GPL (voir le fichier COPYING).