Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !


Po4a, acronyme de "PO 4 (for) Anything" est un programme d'aide à la traduction et à la maintenance des traductions de logiciels et de documents.

Il extrait les phrases à traduire de plusieurs formats de fichiers en les transformant en un fichier POT (*.pot), puis en fichier PO (*.po) pour chaque langue de traduction souhaitée.

une fois les traductions insérées manuellement dans le fichier PO (*.po), il crée la traduction du fichier de départ dans son format d'origine.

  Action de po4a: *.xml > *.pot > *.fr.po > (traduction manuelle) > *.fr.xml.

Il est capable de faire des mises à jour uniquement des fichiers qui le nécessitent (à la façon de make).

Il est en ligne de commande, est écrit en Perl et utilise les outils Gettext.

Il se décline en 5 commandes:

  • po4a
  • po4a-gettextize
  • po4a-updatepo
  • po4a-translate
  • po4a-normalize.

La commande la plus utile est po4a, qui châpeaute les autres

Quelques formats de fichiers supportés: # C/C++, C#, JAVA, PERL, PHP, Python, TCL,Glade, SGML, XML, …

Le synopsis de la syntaxe est le suivant:

 po4a [options] <fichier de configuration>

Le fichier de configuration

Commençons par un exemple: imaginons que vous voulez traduire la documentation d'un paquet de documentation linux; le document d'origine est en anglais américain; son arborescence est (entre autres) la suivante:

  paquet_linux ---> guide/C/fichiers à traduire
               |--> help/C/fichiers à traduire

Voyons un exemple de fichier de configuration, crée dans le dossier racine:

  # fichier "po4a.cfg"
  #
  # template languages
  #[po4a_langs] test
  [po4a_langs] fr de jp en_GB
  #
  # paths to POT and PO
  # single
  [po4a_paths] po/guide.pot $lang:po/guide.$lang.po
  # splitted
  #[po4a_paths] po/$master.pot $lang:po/$lang/$master.$lang.po
  # documents to translate
  # [type]	source				translation
  [type: xml]	guide/C/appendixa.xml		$lang:guide/$lang/appendixa.xml
  [type: xml]	guide/C/appendixb.xml		$lang:guide/$lang/appendixb.xml
  [type: xml]	guide/C/appendixc.xml		$lang:guide/$lang/appendixc.xml
  # ... autant de documents que nécessaire
  # ici français, allemand, japonais, anglais britannique

Le fichier de configuration "po4a.cfg" indique à po4a:

  1. de traduire les documents dans les langues suivantes: en français (fr), allemand (de), japonais (jp), anglais britannique (en_GB).
  2. les dossiers et fichiers où seront stockés les fichiers POT (*.pot) et les fichiers PO (*.PO). ils sont stockés dans un dossier séparé (po) qu'il faut créer AVANT d'exécuter po4a.
  3. indique pour chaque ligne de documents à traduire: de quel type de document il s'agit (ici XML), l'emplacement du fichier de départ, l'emplacement du fichier de destination.
  4. LES SEULS FICHIERS A MODIFIER (traduire) SERONT LES *po ! Tous les autres (*.pot, *xml d'origine et de départ) ne doivent pas être édités !
  5. Astuce: ici nous sommes en mode "single" (un seul); il faut commenter sa ligne et décommenter la ligne en dessous de "splitted" pour passer en mode "splitted" (séparé).
  6. Astuce: utiliser une langue bidon appelée par exemple "test" lors des essais du fichier de configuration.

Nous décrirons les deux plus utiles, cf le manuel de po4a pour les autres. De toutes façon, elles ne sont pas indispensables pour un usage classique.

Pourcentage exigible de traduction

Indique à po4a le pourcentage exigible de traduction dans le ou les fichiers PO (*.po) pour que les documents de traduction soient créés: par défaut 80%. syntaxe:

    po4a -kXX po4a.cfg

Aau moins pour tester le fonctionnement, il peut être utile d'obliger po4a à traduire même sans aucune traduction faite (chaque ligne du fichier PO conservera alors la phrase dans la langue d'origine, sans aucune traduction).

    po4a -k0 po4a.cfg

Ne pas traduire

    po4a --no-translations po4a.cfg

Indique à po4a de se limiter à la création ou la mise à jour des fichiers POT (*.pot) et PO (*.po), sans créer le ou les documents traduis. Tant que les fichiers PO ne sont pas traduits, cette option peut être utile.

En mode "single", le fichier POT peut être unique et commun à tous les documents (dans notre exemple, toutes les lignes à traduire seront mises dans guide.pot et guide.fr.po par exemple), ou individuels pour chaque document : chaque document à traduire aura son .pot et son .fr.pot. Dans tous les cas, la traduction des documents restitués sera faite fichier par fichier dans la langue de destination. Chacun a ses avantages et ses inconvénients:

  • Le mode "single" permet d'avoir toutes les phrases à traduire dans le même fichier; toutes les lignes identiques d'un fichier à l'autre ne seront à traduire qu'une seule fois. Avec de très nombreux petits fichiers, surtout s'ils reprennent les mêmes lignes à traduire (interfaces de logiciels par exemple) , le mode "single" est à bénéficier.
  • Le mode "splitted" crée un fichier PO séparé pour chaque document à traduire: la tâche de traduction peut plus facilement être répartie entre plusieurs traducteurs. Il convient mieux aux gros fichiers, surtout s'ils sont nombreux.

Une fois po4a exécuté une première fois, les fichiers PO peuvent être édités avec poedit, gtranslator, dont voici les différences:

  1. Gtranslator fourni une arborescence avec 3 dossiers: phrases non traduites, traductions approximées (douteuses à améliorér), phrases traduites.
  2. Poedit fournit un gestionnaire de catalogue de fichiers PO du répertoire et des sous-répertoires de travail, ce qui facilite le passage d'un document à traduire à l'autre. Une autre commande de poedit est censée générer une mémoire de traduction (base de donnée) à partir de tous les fichiers *.po des dossiers que vous lui indiquer sur votre machine (d'un dossier racine et de ses arborescence) avec toutes les phrases trouvées.

Il y a aussi kbabel (?), et n'importe quel traitement de texte peuvent aussi faire l'affaire.

Inconvénients:

  1. Le type de ficher à traduire doit être précisé pour chaque fichier, et il serait pratique que po4a le "devine" tout seul, via l'extension et le type de fichier par exemple, au moins pour les cas simples.
  2. Il n'est pas possible d'utiliser de "jockers" pour la liste des fichiers à traduire; pouvoir dire à po4a de préparer à la traduction tous les fichiers *.xml par exemple, avec des exceptions inscrits dans une liste du type POTFILE.ignore. Il n'est pas possible non plus de fournir la liste à traduire et celle de fichiers à ignorer dans un fichier externe au fichier de configuration.
  3. Les options ne peuvent pas être incluses dans le fichier de configuration.
  4. Il faudrait intégrer son éxécution lors de la compilation d'un projet via ./autogen.sh ./configure ./make, afin de mettre à jour les chaînes traduites. Pour l'instant certains projets le font via Xgettext par exemple, qui ne fait que créer les fichiers PO, et ne supporte pas le XML.
  5. Je n'ai pas trouvé comment générer une liste de mots-clés avec po4a !

Avantages:

  1. Obtenir une traduction du fichier à traduire dans le format de fichier de départ, et pas seulement de deux fichier POT et PO !.
  2. éviter d'éditer un fichier (par exemple XML +++) dans un environnement de programmation ou un traitement de texte, avec le risque d'endommager les balises XML adjacentes au texte à traduire.
  3. Une fois traduits, les fichiers PO générés peuvent servir et resservir tels quels pour d'autres projets que le fichier d'origine, voir être mis en commun pour avoir une base de traduction commune.
  • po4a.1226615957.txt.gz
  • Dernière modification: Le 18/04/2011, 14:51
  • (modification externe)