dc 28/08/06
Article écrit grâce à un mail avec Sylvain Beucler. Merci pour ses précisions sur l'utilisation de gettext
gettext est l'outil basique de traduction sous gnu/linux.
Voici un petit exemple d'utilisation sur le fichier source suivant essai.tcl:
package require msgcat namespace import msgcat::* mcload ./locales proc _ {s} {::msgcat::mc $s} pack [label .l -text [_ Yes]]
la procédure _ est utilisé pour permettre une identification facile des messages à extraire par l'extracteur xgettext. On tape alors dans un shell :
$ xgettext -k_ essai.tcl
En sortie, on récupère un fichier appelé messages.po dont voici le contenu :
# translation of messages.po to # translation of messages.po to # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER, 2006. # msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-08-28 07:56+0200\n" "PO-Revision-Date: 2006-08-28 08:17+0200\n" "Last-Translator: \n" "Language-Team: <fr@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.9\n" #: essai.tcl:6 msgid "Yes" msgstr ""
C'est ce fichier qu'il va falloir traiter pour traduire les différents messages. En utilisant par exemple kbabel, on pourra générer à partir de ce fichier les fichiers fr.po, en.po, de.po etc.
Une fois réalisé la traduction, il faut générer les fichiers .msg compatibles avec msgcat par exemple :
$ msgfmt --tcl fr.po -l fr -d locales/
créera le fichier fr.msg dans le répertoire ./locales
Voilà ce que contient ce fichier après traduction :
set ::msgcat::header "Project-Id-Version: fr\nReport-Msgid-Bugs-To: \nPOT-Creation-Date: 2006-08-28 07:56+0200\nPO-Revision-Date: 2006-08-28 08:17+0200\nLast-Translator: \nLanguage-Team: <fr@li.org>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nX-Generator: KBabel 1.9\n" ::msgcat::mcset fr "Yes" "Oui"
Quelques remarques
msgmerge fr_old.po messages.po -o fr.po
À consulter