NOM
Locale::Po4a::Sgml - convertit 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 ACCEPTEES 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 qui 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
aucun espace pour l'indentation ou nouvelle ligne n'est ajouté 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.
ETAT 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 :
o 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é.
o 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.
o Attention, le support des DTD est plutt expérimental. Je n'ai lu aucun
manuel de réfrence 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
spcificités de DocBook.
Pour le format DebianDoc, je l'ai testé avec certains manuels du DDP,
mais pas encore avec tous.
o 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).