| LOCALE::PO4A::XML.3PM(1) | User Contributed Perl Documentation | LOCALE::PO4A::XML.3PM(1) |
Locale::Po4a::Xml - Convertir les documents XML (ou dérivés) depuis ou vers des fichiers PO
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::Xml est un module qui permet d’aider à traduire des documents XML dans d’autres langues. Il peut aussi servir de base pour créer d’autres modules pour des documents basés sur le format XML.
Ce module peut être utilisé directement pour traiter des documents dans un format générique XML. Le contenu des balises sera extrait, mais pas celui des attributs, parce que c’est ainsi que sont écrits la plupart des documents basés sur XML.
Il y a quelques options (décrites dans la section suivante) qui peuvent permettre de paramétrer ce comportement. Si cela ne correspond pas au format de votre document, je vous encourage à écrire votre propre module dérivé de celui-ci, pour décrire en détails votre format. Consultez la section ÉCRITURE DE MODULES DÉRIVÉS plus bas, pour un descriptif de la procédure.
L’option globale de débogage permet d’indiquer à ce module d’afficher les chaînes exclues, de façon à voir s’il saute quelque chose d’important.
Voici les options particulières à ce module :
Voir également : https://developer.android.com/guide/topics/resources/string-resource.html
Faites attention avec cette option. Il est généralement recommandé de corriger le fichier d’entrée.
N’extrait que les balises spécifiées par l’option tags. Sinon, toutes seront extraites, sauf celles spécifiées.
Liste de balises (séparées par des espaces) que vous voulez traduire ou sauter. Par défaut, les balises spécifiées seront exclues, mais si vous utilisez l’option « tagsonly », les balises spécifiées seront les seules à être inclues. Les balises doivent être de la forme <aaa>, mais vous pouvez en joindre (<bbb><aaa>) pour indiquer que le contenu de la balise <aaa> ne sera traduit que lorsqu’elle est comprise dans une balise <bbb>.
Vous pouvez également spécifier certaines options de balise en plaçant certains caractères devant la hiérarchie des balises. Par exemple, vous pouvez placer w (renvoyer à la ligne) ou W (ne pas renvoyer à la ligne) pour remplacer le comportement par défaut spécifié par l’option globale wrap.
Par exemple : W<chapitre><titre>
Ceci est utile quand des attributs ne doivent pas être traduits, puisque cela simplifie les chaînes pour les traducteurs et évite les fautes de typographie.
Les balises doivent être de la forme <aaa>, mais vous pouvez en joindre (<bbb><aaa>) si une balise (<aaa>) ne doit être prise en compte que si elle se trouve dans une autre balise (<bbb>).
Veuillez noter qu'une balise ne peut figurer que dans une seule des chaînes de paramétrage break, inline, placeholder, ou customtag.
Les balises doivent être de la forme <aaa>, mais vous pouvez en joindre (<bbb><aaa>) si une balise (<aaa>) ne doit être prise en compte que si elle se trouve dans une autre balise (<bbb>).
L’emplacement d’un « placeholder » dans son bloc sera marqué à l’aide d’un chaîne similaire à :
<placeholder type=\"footnote\" id=\"0\"/>
Les balises doivent être de la forme <aaa>, mais vous pouvez en joindre (<bbb><aaa>) si une balise (<aaa>) ne doit être prise en compte que si elle se trouve dans une autre balise (<bbb>).
Si vous avez une balise dont le paramètre par défaut est défini par la sous-classe de ce module mais que vous souhaitez définir un autre paramètre, vous devez l'inscrire dans la chaîne de paramètres nodefault.
Les balises doivent être de la forme <aaa>, mais vous pouvez en joindre (<bbb><aaa>) si une balise (<aaa>) ne doit être prise en compte que si elle se trouve dans une autre balise (<bbb>).
Vous pouvez également spécifier des options aux balises en précédant les hiérarchies de balises par des caractères. Ceci écrase le comportement par défaut renseigné par les options wrap et defaulttranslateoption.
En interne, l'analyseur XML ne se soucie que de ces quatre options : w W i p.
* Les balises répertoriées dans break sont définies à w ou W selon l'option wrap.
* Les balises répertoriées dans inline sont définies à i.
* Les étiquettes énumérées dans placeholder sont définies à p.
* Les balises répertoriées dans untranslated sont sans aucune de ces options définies.
Vous pouvez vérifier le comportement réel des paramètres internes en lançant po4a avec l'option --debug.
Par exemple : W<chapitre><titre>
Veuillez noter qu'une balise doit être listée dans l’option translated ou untranslated.
Les balises doivent être de la forme <aaa>, mais vous pouvez en joindre (<bbb><aaa>) si une balise (<aaa>) ne doit être prise en compte que si elle se trouve dans une autre balise (<bbb>).
Veuillez noter qu'une balise en ligne traduisible dans une balise non traduite est traitée comme une balise de rupture traduisible, le paramètre i est supprimé et w ou W est défini selon l'option wrap.
Il s'agit d'un ensemble de lettres tel que défini dans translated et ce paramètre n'est valable que pour les balises traduisibles.
La configuration la plus simple consiste à définir quelles balises et attributs vous voulez que l’analyseur traduise. Elle doit être faite dans la fonction initialize. Vous devez dans un premier temps appeler la fonction initialize principale, pour obtenir les options de la ligne de commande, puis ajouter vos propres configurations à la table de hachage options. Si vous voulez traiter de nouvelles options de la ligne de commande, vous devez les définir avant d’appeler la fonction initialize principale :
$self->{options}{'new_option'}='';
$self->SUPER::initialize(%options);
$self->{options}{'_default_translated'}.=' <p> <head><title>';
$self->{options}{'attributes'}.=' <p>lang id';
$self->{options}{'_default_inline'}.=' <br>';
$self->treat_options;
Vous devriez utiliser les options _default_inline, _default_break, _default_placeholder, _default_translated, _default_untranslated et _default_attributes dans les modules dérivés. Ceci permet de surcharger en ligne de commande le comportement par défaut défini par votre module.
Si vous n'aimez pas le comportement par défaut de ce module xml et de ses modules dérivés, vous pouvez fournir des options en ligne de commande pour modifier leur comportement.
Lisez Locale::Po4a::Docbook(3pm),
Une autre étape simple consiste à surcharger la fonction « found_string », qui prend les chaînes extraites par l’analyseur en paramètre, pour les traduire. Elle vous permet de contrôler quelles chaînes vous voulez traduire, et d’effectuer des transformations avant ou après la traduction en elle-même.
Elle reçoit le texte extrait, la référence où elle se trouve, et une table de hachage qui contient des informations additionnelles permettant de contrôler quelles sont les chaînes à traduire, comment les traduire et de générer le commentaire.
Le contenu de ces options dépend du type de la chaîne (spécifié dans une entrée de la table de hachage) :
Elle doit renvoyer le texte qui remplacera l’original dans le document traduit. Voici un exemple simple d’implémentation de cette fonction :
sub found_string {
my ($self,$text,$ref,$options)=@_;
$text = $self->translate($text,$ref,"type ".$options->{'type'},
'wrap'=>$self->{options}{'wrap'});
return $text;
}
Il y a également un exemple simple dans le module Dia, qui ne filtre que quelques chaînes.
Ceci est plus complexe, mais permet un contrôle (presque) total du paramétrage. C’est basé sur une liste de tables de hachage, chacune définissant le comportement d’un type de balise. La liste doit être triée de façon à ce que les balises les plus générales se trouvent après les plus concrètes (trié dans un premier temps par la clé « beginning » puis par « end »). Pour définir un type de balise, vous n’aurez qu’à créer une table de hachage avec les clés suivantes :
Un tableau supplémentaire de balises (sans chevrons) peut être fourni en paramètre. Ces éléments du chemin sont ajoutés à la fin du chemin en cours.
Ici, la balise a une structure commençant par < et se terminant par > et elle peut contenir plusieurs lignes.
Cela fonctionne avec le tableau "@{$self->{TT}{doc_in}}" en conservant les données et les références des documents d'entrée indirectement via "$self->shiftline()" et "$self->unshiftline($$)".
Cela fonctionne avec le tableau "@{$self->{TT}{doc_in}}" en conservant les données et les références des documents d'entrée indirectement via "$self->shiftline()" et "$self->unshiftline($$)".
Cela fonctionne avec le tableau "@{$self->{TT}{doc_in}}" en conservant les données et les références des documents d'entrée indirectement via "$self->shiftline()" et "$self->unshiftline($$)".
Cela fonctionne avec le tableau "@{$self->{TT}{doc_in}}" en conservant les données et les références des documents d'entrée indirectement via "$self->shiftline()" et "$self->unshiftline($$)".
Les options valables sont :
Ce module peut traduire les balises et les attributs.
DOCTYPE (ENTITÉS)
La traduction des entités est à peine supportée. Les entités sont traduites telles quelles, et les balises qu’elles contiennent ne sont pas prises en compte. Les entités sur plusieurs lignes ne sont pas supportées. De plus, les entités sont remises en forme pendant la traduction.
MODIFIER LES BALISES DEPUIS LES MODULES DÉRIVÉS (déplacer la structure tag_types à l’intérieur de la table de hachage $self ?)
Jordi Vilalta <jvprat@gmail.com> Nicolas François <nicolas.francois@centraliens.net>
Martin Quinson (mquinson#debian.org)
Copyright © 2004 Jordi Vilalta <jvprat@gmail.com> Copyright © 2008-2009 Nicolas François <nicolas.francois@centraliens.net>
Ce programme est un logiciel libre ; vous pouvez le copier et / ou le modifier sous les termes de la GPL v2.0 ou suivante (voir le fichier COPYING).
| 2024-08-06 | perl v5.38.2 |