LOCALE::PO4A::PO.3PM(1) User Contributed Perl Documentation NOM Locale::Po4a::Po - Module de manipulation des fichiers PO SYNOPSIS use Locale::Po4a::Po; my $pofile=Locale::Po4a::Po->new(); # Lit un fichier PO $pofile->read('fichier.po'); # Ajoute une entree $pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour', 'flags' => "wrap", 'reference'=>'file.c:46'); # Extrait la traduction $pofile->gettext("Hello"); # renvoie << bonjour >> # Ecrit le resultat dans un fichier $pofile->write('autrefichier.po'); DESCRIPTION Locale::Po4a::Po est un module qui permet de manipuler des catalogues de messages. Vous pouvez lire et ecrire dans ou depuis un fichier (dont l'extension classique est po), vous pouvez construire de nouvelles entrees ou demander la traduction d'une chaine. Pour une description plus complete des catalogues de messages dans le format PO et leur utilisation, referez-vous a la documentation au format info du programme gettext (section << Fichiers PO >>). Ce module fait partie du projet po4a, dont l'objectif est d'utiliser les fichiers PO (concus a l'origine pour la traduction des programmes) pour la traduction d'autres formats tels que la documentation (pages de manuel, manuels info), la description des paquets, les questionnaires debconf et toute chose pouvant beneficier de ces mecanismes. OPTIONS ACCEPTEES PAR CE MODULE --porefs type Indique le format des references. L'argument type peut-etre never pour ne pas produire de reference, file pour n'indiquer que le fichier sans le numero de ligne, counter pour remplacer le numero de ligne par un decompte croissant, et full pour inclure des references completes (par defaut, la valeur full est utilisee). --wrap-po no|newlines|nombre (par defaut : 76) Determine la facon de formater le fichier po. Cela donne le choix entre des fichiers joliment reformates mais pouvant mener a des conflits git, ou des fichiers plus facile a prendre en main automatiquement, mais plus difficile a lire pour les humains. Historiquement, la suite gettext a formate les fichiers po a la 77e colonne pour des raisons cosmetiques. Cette option indique le comportement de po4a. Si defini en tant qu'entier, po4a va restreindre la largeur du fichier apres cette colonne et apres les nouvelles lignes de contenu. Si defini a newlines, po4a ne separera les msgit et msgstr qu'apres les nouvelles lignes dans le contenu. Si defini a no, po4a ne restreindra pas du tout le fichier. Les commentaires de reference sont toujours limites par les outils gettext que nous utilisons en interne. Veuillez noter que cette option n'a pas d'impact sur la facon dont les msgid et msgstr sont renvoyees, c'est-a-dire sur la facon dont les nouvelles lignes sont ajoutees au contenu de ces chaines. --msgid-bugs-address adresse@email Fixe l'adresse a laquelle les bogues des msgid doivent etre envoyes. Par defaut, les fichiers POT crees n'ont pas de champ Report-Msgid-Bugs-To. --copyright-holder chaine Fixe le detenteur du copyright dans l'en-tete du fichier POT. La valeur par defaut est << Free Software Foundation, Inc. >>. --package-name chaine Fixe le nom du paquet pour l'en-tete du fichier POT. La valeur par defaut est << PACKAGE >>. --package-version chaine Fixe la version du paquet pour l'en-tete du fichier POT. La valeur par defaut est << VERSION >>. Fonctions concernant les catalogues de messages entiers new() Cree un nouveau catalogue. Si un parametre est fourni, il s'agit du nom du fichier PO a lire. read($) Lit un fichier PO (dont le nom est fourni en parametre). Les entrees pre-existantes dans self ne sont pas oubliees, et les nouvelles sont ajoutees a la fin du catalogue. write($) Ecrit le catalogue courant dans le fichier specifie. write_if_needed($$) Comme write, mais si le fichier PO ou POT existe deja, l'objet sera ecrit dans un fichier temporaire qui sera ensuite compare avec le fichier existant pour verifier que la mise a jour est necessaire (ceci permet d'eviter de changer le fichier POT juste pour mettre a jour une reference de ligne ou le champ POT-Creation-Date). filter($) Cette fonction extrait un catalogue d'un autre. Seules les entrees ayant une reference dans le fichier donne seront placees dans le catalogue resultant. Cette fonction analyse son parametre, le convertit en une definition de fonction Perl, evalue cette definition et filtre les champs pour lesquels cette fonction renvoie << true >>. J'aime Perl par moments ;) Fonctions pour utiliser un catalogue de messages pour les traductions gettext($%) Recherche la traduction de la chaine, fournie en parametre, dans le catalogue courant. Cette fonction renvoie la chaine originelle (non traduite) si la chaine cherchee est introuvable. Apres la chaine a traduire, vous pouvez passer un hachage de parametres supplementaires. Voici la liste des valeurs valables : wrap booleen indiquant si les espaces et retours chariot de la chaine peuvent etre modifies. Si oui, la fonction utilise une forme canonique de la chaine lors de la recherche d'une traduction, et ajoute des retours a la ligne. wrapcol la colonne a laquelle les retours a la ligne doivent avoir lieu (76 par defaut). stats_get() Renvoie les statistiques sur le taux de reussite des requetes de traduction depuis la derniere fois que stats_clear() a ete appele. Notez qu'il ne s'agit pas des statistiques obtenues avec l'option --statistic de msgfmt. Ici, ce sont les statistiques de l'usage recent du fichier PO tandis que msgfmt indique l'etat du fichier. Exemple d'utilisation : [une utilisation quelconque du fichier PO pour des traductions] ($percent,$hit,$queries) = $pofile->stats_get(); print "Pour l'instant, $percent\% des traductions cherchees ont ete trouvees ($hit parmi $queries).\n"; stats_clear() Oublie les statistiques sur la reussite de gettext. Fonctions pour construire un catalogue de messages push(%) Ajoute une nouvelle entree dans le catalogue courant. Les parametres doivent etre un hachage. Les valeurs de cle valides sont : msgid la chaine dans la langue originale. msgstr la traduction. reference une indication de la localisation de cette chaine. Par exemple : file.c:46 (ce qui designe la ligne 46 du fichier file.c). Il peut s'agir d'une liste separee par des espaces dans le cas d'occurrences multiples. comment un commentaire ajoute manuellement (par l'equipe de traduction). Le format est libre. automatic un commentaire ajoute automatiquement par le programme d'extraction des chaines. Referez-vous a l'option --add-comments du programme xgettext pour en savoir plus. flags liste de tous les drapeaux utilises pour cette entree (separes par des espaces). Les valeurs valides sont : c-text, python-text, lisp-text, elisp-text, librep-text, smalltalk-text, java-text, awk-text, object-pascal-text, ycp-text, tcl-text, wrap, no-wrap et fuzzy. Voir la documentation de gettext pour leur signification. type il s'agit principalement d'un parametre interne utilise lors de la gettextisation des documents. Le but est d'analyser a la fois le document d'origine et la traduction sous la forme d'objet PO, et de les combiner en utilisant les msgid de l'un comme msgid et les msgid de l'autre comme msgstr. Afin de s'assurer que les choses se deroulent correctement, un type dependant de son role syntaxique dans le document (comme << chapt >>, << sect1 >>, << p >>, etc. dans DocBook) est attribue a chaque chaine. Si deux chaines sur le point d'etre appariees sont de types differents, cela signifie que les deux fichiers ne partagent pas la meme structure, et le processus se termine par une erreur. Cette information est egalement reportee dans le fichier PO sous forme de commentaire automatique car elle indique le contexte des chaines a traduire. wrap booleen indiquant si les espaces peuvent etre modifiees lors de remises en forme esthetiques. Si vrai, les chaines sont mises sous forme canonique avant usage. Cette information est reportee dans le fichier PO grace aux drapeaux wrap (si vrai) et no-wrap (sinon). wrapcol ignoree; la clef est conservee pour la retro-compatibilite. Fonctions diverses count_entries() Renvoie le nombre d'entrees dans le catalogue (sans compter l'en-tete). count_entries_doc() Renvoie le nombre d'entrees dans le document. Si une chaine apparait plusieurs fois dans le document, elle sera comptee plusieurs fois. msgid($) Renvoie le msgid du numero fourni. msgid_doc($) Renvoie le msgid qui a la position donnee dans le document. type_doc($) Retourne le type du msgid a la position donnee dans le document. Ceci n'est probablement utile que pour la gettextisation, et il est stocke separement de {$msgid}{'type'} parce que ce dernier peut etre ecrase par un autre type lorsque le $msgid est duplique dans le document d'origine. get_charset() Renvoie le jeu de caracteres specifie dans l'en-tete du PO. S'il n'a pas ete defini, il renvoie << UTF-8 >>. AUTEURS Denis Barbier Martin Quinson (mquinson#debian.org) TRADUCTION Martin Quinson (mquinson#debian.org) perl v5.38.2 2024-06-26 LOCALE::PO4A::PO.3PM(1)