Intro à la location via la programmation
Transcription
Intro à la location via la programmation
Localisation Cours 3 The Translation Project Deux outils pour localiser : gettext et poEdit [email protected] Plan ● Translation Project poEdit – gettext – Configuration – fichiers .po, .mo., .pot – Création de catalogues – Edition poEdit – Mémoire de traduction – Enregistrement / Compilation en .mo – Autres configurations – ● ● Exemple de logiciel localisé via des .po – SuperTuxKart Le GNU Translation Project The GNU Translation Project - 1 ● ● ● ● ● Le TP a été créé dans le but de mettre à disposition des outils d'internationalisation et localisation de logiciels libres Il a été créé par François Pinard en 1996 Il a longtemps été hébergé par le laboratoire DIRO de l'Université de Montréal. Depuis 2007, c'est Vrijschrift qui l'héberge. http://translationproject.org/html/welcome.ht ml The Translation Project - 2 ● ● Le TP propose à la fois des outils tels que : – gettext : extracteur de texte à localiser + règles d'I18N – poEdit : éditeur de texte à localiser – Virtaal : autre éditeur de texte à localiser Et héberge des projets de traduction de logiciels / projets libres (des « packages »): – Doodle – Iso 3166 – Iso 639 – Klavaro (apprentissage de la typographie) – Solfege – …. gettext et poEdit ● ● gettext est un utilitaire qui permet d'extraire les textes à traduire hors de logiciels, sous la forme de ressources appelées « catalogues » poEdit est un logiciel de traduction de ces catalogues gettext ● Gettext propose une série d'outils : – A set of conventions about how programs should be written to support message catalogs : .po files – A directory and file naming organization for the message catalogs themselves. – A runtime library supporting the retrieval of translated messages. ● C'est pour C un équivalent du RessourceBundle + Locale de Java – A few stand-alone programs to massage in various ways the sets of translatable strings, or already translated strings. – A library supporting the parsing and creation of files containing translated messages. – A special mode for Emacs1 which helps preparing these sets and bringing them up to date. – gettext s'utilise en ligne de commande, dans Unix. Fichiers .po / .pot / .mo ● ● po : portable objects – Les fichiers .po sont créés par le programme xgettext depuis de programmes sources à l'origine écrits en C – poEdit permet de traduire aussi les ressources émanant de programmes écrits en d'autres langages de programmation : Java, python, Perl, ... – Les fichiers .po sont lisibles et éditables par des humains – Un fichier .po associe à chaque texte source une traduction – Il y a un .po par langue – Lors de l'extraction, xgettext créée un catalogue dont les parties sources sont renseignées et les parties cibles vides, attendant une traduction – Le programme msgmerge injecte et gère les traductions une fois réalisées pot : portable object template – ● Une collection de traductions de base au format .po (un modèle) mo : movable objects – Ils sont la version « machine » des .po files Format des fichiers .po - 1 ● Les fichiers .po sont des listes de segments (entries) à traduire. Chaque entrée est (dans les cas les plus compliqués) de cette forme : white-space # translator-comments #. extracted-comments #: reference... #, flag... #| msgid previous-untranslated-string msgid untranslated-string msgstr translated-string ● Dans la plupart des cas, elle ressemble à : #: lib/error.c:116 msgid "Unknown system error" msgstr "Error desconegut del sistema" Format des fichiers .po - 2 ● Un contexte de traduction peut être donné de la façon suivante : #: lib/error.c:116 msgctxt refering to interface C34 msgid "Unknown system error" msgstr "Error desconegut del sistema" ● Il peut y avoir plusieurs segments dans une entrée, par exemple pour les pluriels : #: src/msgcmp.c:338 src/po-lex.c:699 #, c-format msgid "found %d fatal error" msgid_plural "found %d fatal errors" msgstr[0] "s'ha trobat %d error fatal" msgstr[1] "s'han trobat %d errors fatals" Format des fichiers .po - 3 ● Un segment long sera découpé : msgid "" "Here is an example of how one might continue a very long string\n" "for the common case the string represents multi-line output.\n" ● Les premières lignes commençant par des dièses sont des commentaires #: src/msgcmp.c:338 src/po-lex.c:699 #, c-format msgid "found %d fatal error" msgid_plural "found %d fatal errors" msgstr[0] "s'ha trobat %d error fatal" msgstr[1] "s'han trobat %d errors fatals" poEdit ● ● PoEdit est un logiciel qui permet la localisation de fichiers .po Il est disponible à la fois sur Linux, Mac et Windows ● Il est simple d'utilisation ● Il permet de compiler les .po en .mo ● Il permet d'utiliser des modèles de catalogues .pot ● Il utilise Unicode pour afficher les fichiers .po ● Son interface est elle-même disponible en plusieurs langues Exemple de localisation avec poEdit : le jeu SuperTuxKart! Installez, jouez ! ● SuperTuxKart est un jeu libre et gratuit. ● Son internationalisation est faite par gettext ● Sa localisation est réalisée via des fichiers .po ● Téléchargez-le ici : – ● Installez-le sur D:\Applications – ● http://supertuxkart.sourceforge.net/Downloads#header_win Acceptez d'installer le moteur C++ et la bibliothèque supplémentaire Jouez avec pour vous y familiariser ! – Repérez en jouant les chaînes de caractères de l'interface qui sont à traduire Choix de la langue d'interface ● Ouvrir une fenêtre DOS et se placer dans SuperTuxKart: – Démarrer / Tous les programmes / Accessoires / Invite de commandes – Se placer dans le répertoire d'installation de SuperTuxKart ● ● ● ● ● D : pour changer de disque « cd .. » pour remonter d'un répertoire (change directory) dir pour lister les dossiers et fichiers « cd Users » pour passer dans le dossier « Users » « cd Pro » + Tab : complétion automatique – – ● « cd "Program Files" » ou « cd Applications » Corriger pour demander « cd "Program Files (x86)" » cd « Super » + Tab – Pour se retrouver dans le répertoire de SuperTuxKart> ● Changer la langue : « Set LANGUAGE=en » ● Démarrer : « .\SuperTuxKart » Le fichier fr.po de SuperTuxKart #. I18N: shown when hit by cake. %1 is the attacker, %0 is the victim. #: src/items/cake.cpp:149 msgid "%0 eats too much of %1's cake" À éditer dans 1 premier temps avec jEdit. msgstr "" L'installer sur D : si non disponible ! #. I18N: shown when a player receives a plunger in his face #: src/items/plunger.cpp:134 msgid "%0 gets a fancy mask from %1" msgstr "" #. I18N: shown when hit by bowling ball. %1 is the attacker, %0 is #. the victim. #: src/items/bowling.cpp:115 msgid "%0 is bowled over by %1" msgstr "" #. I18N: shown when hit by cake. %1 is the attacker, %0 is the victim. #: src/items/cake.cpp:151 msgid "%0 is dubious of %1's cooking skills" msgstr "" Exemple de segment à traduire #. I18N: ./data/gui/options_players.stkgui #. I18N: In players configuration menu #: data/po/gui_strings.h:507 msgid "Add Player" msgstr "" Traduction dans poEdit Configuration Configuration de poEdit - 1 ● Lancer poEdit ● Fichier/Préférences Personnalisation de poEdit ● Dans l'onglet Personnalisation – Vous pouvez indiquer vos coordonnées (droits d'auteur) – Elles seront enregistrées dans le .po – Vous pouvez choisir la langue de l'interface de poEdit Configuration de poEdit - 2 ● ● Dans le volet Éditeur Choisir les options suivantes – Compilation automatique de fichiers textes .po en fichiers binaires .mo – Résumé après mise à jour du catalogue – Conversion CR/LF ● ● Unix Ne pas charger le format des catalogues existants Traduction dans poEdit Création de catalogues Configuration de poEdit - 3 ● Mémoire de traduction – ● voir leur manipulation de plus bas Analyseurs – Permet de spécifier un autre langage de programmation à utiliser par poEdit Configuration de poEdit - 4 ● Dans le menu Affichage ● Choisir « Fenêtre de commentaires » Créer un nouveau catalogue – 1 à patir d'un modèle .pot ● Dans le menu Fichier ● Choisir « Nouveau catalogue depuis un fichier POT » Choisir supertuxkart.pot qui se trouve dans le dossier \SuperTuxKart\data\po Créer un nouveau catalogue - 2 ● Renseigner les champs ● Attention : la langue suit l'ISO 639 Créer un nouveau catalogue - 3 ● Enregistrer sous fr_iplv Lancement traduction ● La fenêtre d'édition se lance Traduction dans poEdit Édition Edition – 0 - Principe ● Le traducteur travaille dans la fenêtre du bas ● La fenêtre du haut donne le contexte ● Les notes de traduction aident à la traduction ● Le traducteur peut ajouter ses commentaires (CTR L+M) ● Validation du segment courant et le passage au suivant : CTRL+Entrée Edition - 1 ● Le menu Démarrer donne quelques raccourcis : ● La validation de segment se fait par CTRL+Entrée ● CTRL+Flèche Haut : message précédent ● CTRL+Flèche Bas: message suivant ● CTRL+Shift+Flèche Haut : message précédent incomplet ● CTRL+Shift+Flèche Bas: message suivant incomplet Edition - 2 ● ● ● ● Le menu Editer donne d'autres raccourcis : « Traduction approximative » est un statut du segment indiquant que la traduction doit être améliorée Commentaire permet d'insérer un commentaire « Voir les références » va chercher des informations dans le fichier de programme source dont est issu ce segment à traduire. Ne fonctionne que si les sources sont présents. Edition – 3 – Gestion des variables ● ● Dans les segments apparaissent des variables indiquées par des % Principes : – Reproduire dans la traduction toutes les variables – Ne pas changer les chiffres ou lettres suivant % – Les placer correctement suivant la syntaxe de la langue cible Traduction dans poEdit Mémoire de traduction Mémoire traduction - création Mémoires de traduction - 1 ● Dans poEdit, la mémoire de traduction est gérée dans le menu : – Fichier/Préférences, ● ● onglet Mémoire de traduction Principe : – Compiler une mémoire de traduction en collectant l'ensemble des traductions disponibles dans les fichiers .po d'une série de dossiers Mémoires de traduction - 1bis Mémoires de traduction - 2 ● Pour créer une mémoire de traduction : – Cliquer sur le bouton « Ajouter » pour ajouter une langue – la choisir dans la liste – Accepter Mémoires de traduction - 3 ● Ensuite : – Cliquer sur le bouton «Construire une base de données» – Une fenêtre s'ouvre, vous permettant d'indiquer des dossiers contenants des .po – Cliquez sur « Parcourir » pour les sélectionner Mémoires de traduction - 4 ● Puis : – Répétez l'opération pour tous les dossiers que vous voulez inclure – La recherche sera récursive dans les sous dossiers – Faites « Suivant » pour lancer la recherche de .po ● ● ● Mémoires de traduction - 5 Alors : – La liste des .po trouvés s'affiche Pour lancer la création de la mémoire – Cliquer sur « Finir » – Laissez agir Sortez de cette fenêtre avec : – Accepter Mémoire traduction - utilisation ● ● Utilisation de mémoire - 1 Ouvrir un fichier .po: – Ex : fr_iplv.po) Pour voir les propositions de la mémoire – Faire un clic droit sur un segment à traduire – Les propositions sont listées – Sélectionner la meilleure pour la copier Utilisation de mémoire - 2 Proposition intégrée Traduction dans poEdit Sauvegarde - compilation Enregistrement : compilation ● Lorsque vous demandez la sauvegarde d'un .po, poEdit le sauvegarde et le compile en un .mo – Ceci n'est effectué que si l'option de création de .mo est mise en place dans les Préférences / Éditeur Compilation ● ● ● Cela a pour conséquence de créer un .mo de même nom que le .po, dans le même dossier C'est ce .mo qui est utilisé directement par le programme pour afficher les textes traduits Dans l'exemple ci-dessous : – fr_CA.po n'a pas été compilé par sauvegarde – fr_iplv.po l'a été en un fr_iplv.mo Traduction dans poEdit Pluses Gestion de catalogues ● Permet de – Définir un répertoire de travail par défaut – Donner un nom à ce répertoire de travail – Changer son nom – Mettre à jour les fichiers de ce catalogue Autres commandes - 1 ● Fichier / Ouvrir... – ● Ouvrir simplement un .po existant Fichier / Nouveau Catalogue – Créer un nouveau catalogue