Les fichiers PO et POT
Un article de openSUSE.
Sommaire |
Qu'est-ce qu'un fichier PO ?
Il existe deux types de fichiers PO : ceux qui utilisent
msgid "" msgstr ""
et ceux qui, comme le fichier update-desktop-files.fr.po, utilisent :
msgctxt "Comment(klettres.desktop)" msgid " a KDE program to learn the alphabet" msgstr "Un programme KDE pour apprendre l'alphabet"
Version avec : msgid et msgstr
Les boites de dialogues et les menus d'une application, qui doit être traduite, sont stockés dans des fichiers PO. Le fichier PO est un fichier avec une structure spéciale et qui comporte l'extension .po. Il contient des informations sur la langue, sur les traducteurs et les phrases originales et traduites. Les phrases originales commencent par msgid et sont suivies de leur traduction qui commence par msgstr. Les informations concernant la langue et les traducteurs se trouvent au début du fichier PO. Si aucune traduction n'est disponible, la partie msgstr reste vide. Le signe # signifie que la ligne est un commentaire.
Un exemple de traduction vide :
#: src/PackageCommands.cs:57 src/PackageCommands.cs:3181 msgid "Search for a match to any of the search strings" msgstr ""
L'exemple de la traduction tchèque :
#: src/PackageCommands.cs:57 src/PackageCommands.cs:3181 msgid "Search for a match to any of the search strings" msgstr "Vyhledat výsledek odpovídající alespoň některému z řetězců"
Version avec :msgctxt, msgid et msgstr
Le principe est le même sauf que le champ msgctxt "" contient des informations qui permettent de reconnaître quelle est la chaine de caractère à traduire.
Attention, les logiciels de traduction doivent être utilisés dans leur dernière version pour que le msgctxt "" soit reconnu et non pas effacé automatiquement par le logiciel... Le mieux est de vérifier la compatibilité du logiciel avant de commencer la tradution ou alors de simplement utiliser un éditeur de texte et de vérifier la syntaxe par la commande :
msgfmt -c monfichier.fr.po
Qu'est-ce qu'un fichier POT
Le fichier POT est un modèle pour la traduction. Le format d'un fichier POT est semblable à un fichier PO, mais il n'y a que le texte Anglais d'origine et aucune information sur la langue ou les traductions. Les fichiers PO sont créés à partir d'un fichier POT. Si vous créez un fichier PO manuellement dans un éditeur de texte, vous devrez ajouter l'information de langue et sauvegarder le fichier avec l'extension .po. Si vous céez le début du fichier PO de manière incorrecte, le fichier PO ne franchira pas l'examen de syntaxe et dans statistics il sera de couleur violette et traduction zéro et chaîne 'fuzzy' .
Le début du fichier rug.pot:
# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-02 20:04-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n"
Le début du fichier rug.hu.po:
# translation of hu.po to # Peter Breuer <comp@suselinux.hu>, 2003. # Marcel Hilzinger <hili@suselinux.hu>, 2003. # Marcel Hilzinger <marcel.hilzinger@suselinux.hu>, 2004. # Szabolcs Varga <shirokuma@shirokuma.hu>, 2004, 2005. # Kalman Kemenczy <kkemenczy@novell.com>, 2006. msgid "" msgstr "" "Project-Id-Version: hu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-06-08 12:58+0200\n" "PO-Revision-Date: 2006-06-08 17:26+0200\n" "Last-Translator: \n" "Language-Team: <hu@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.2\n" "Plural-Forms: nplurals=1; plural=0;\n"
Comment traduire les fichiers PO ?
La seule chose nécessaire pour traduire est un éditeur de texte. Vous ouvrez le fichier PO avec et vous completez toutes les msgstr vide par une traduction. Sinon, il existe des logiciels dédiés, allez voir : OpenSUSE_Localization_Guide#Les_outils_de_traduction
Le texte original en anglais qui commence par msgid ne doit pas être changé ! Vous pouvez seulement modifier les traductions. Même si vous trouvez une erreur dans la phrase originale (en anglais), il ne faut surtout pas la modifier ! Il faut utiliser Bugzilla pour rapporter l'erreur. Ainsi, la correction sera apportée au fichier source, un nouveau fichier POT sera généré et automatiquement fusionné avec votre fichier. Apres cela, la 'phrase' sera marqué comme "fuzzy".
Les raccourcis
Il y a deux facon de définir les raccourcis :
msgid "&Add..." msgstr "&Ajouter"
ou
msgid "_Add" msgstr "_Ajouter"
Il est possible de choisir l'emplacement du raccourci mais le symbole doit rester le meme (& OU _). Les traduction suivantes sont correctes :
msgid "_Add" msgstr "A_jouter"
msgid "&Add..." msgstr "Ajou&ter"
S'il n'est pas possible d'ajouter le raccourci directement dans la chaine de caractere, il faut utiliser la syntaxe suivante :
msgid "&Add..." msgstr "新增(&A)"
ou
msgid "_Add" msgstr "新增(_A)"
Les variables
Toutes les variables sont représentées par un % suivi d'une lettre ou d'un nombre. Par exemple :
msgid "Insert boot disk %u." msgstr "Insérer le disque d'amorçage %u."
Les variables sont obligatoires dans la traduction. Si une chaine de caractère comporte une variable, il faut qu'elle soit aussi dans la chaine traduite.
Chaînes de formats
Dans chaque fichier po on peut utiliser plusieurs chaînes de formats. La plupart d'entre elles sont identiques à des balises HTML. Il peut se faire qu'on trouve des balises XML ou des chaînes de formats d'autres langues. Toutes ces chaînes sont obligatoires dans votre traduction. Si l'on oemt un chaîne, la traduction de franchira pas l'examen de syntaxe.
| \n | nouvelle ligne |
Si toutes les lignes excepté la dernière se terminent avec \n dans la chaîne originale, dans la traduction, on peut avoir de même seulement la dernière sans \n même si le nombre de lignes varie en plus ou en moins par rapport à la chaîne originale. Toutes les autres lignes doivent se terminer par \n |
| <b>un_texte</b> | texte gras | |
| <i>un_texte</i> | texte italique | |
| <qt>un_texte</qt> |
Pluriels
Chaîne avec un pluriel dans un fichier POT:
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "" msgstr[1] ""
Traduction de la chaîne avec une seule forme plurielle ex (zh_CN):
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "%1 秒"
Traduction de la chaîne avec deux formes plurielles ex (Greek):
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "%1 δευτερόλεπτο" msgstr[1] "%1 δευτερόλεπτα"
Traduction de la chaîne avec trois formes plurielles ex (Czech):
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "%1 sekunda" msgstr[1] "%1 sekundy" msgstr[2] "%1 sekund"
Dans KBabel, il faut d'abord mettre la définition des formes plurielles dans les paramètres du projet. Si ce paraétrage est correct, KBabel fournira pour chaque forme plurielle une 'tab' séparée.
Vérifier la syntaxe
Avant de soumettre un fichier PO par SVN, il faut vérifier sa syntaxe. Pour cela, si vous utilisez un simple editeur de texte, utilisez la commande suivante :
msgfmt -c monfichier.fr.po
Ou si vous utilisez un logiciel de traduction (Kbabel, poedit, etc...) contrôlez la fonctionnalité de votre traduction par votre logiciel.

