Création de fichier *.po avec outils xgettext (fichiers sources yacs) et tutoriaux d'utilisation
Bonjour à tous ;
Ce message s'adresse plus particulièrement à Bernard, auteur de la classe i18n intégrée au projet YACS.
Ce message s'adresse plus particulièrement à Bernard, auteur de la classe i18n intégrée au projet YACS.
Il y a quelque temps, je t'avais fais part d'un projet dans lequel je souhaitais intégrer ta classe i18n. Tu m'avais donné ton accord par retour courriel.
Ajourd'hui, dans la mesure ou je suis en pleine internationalisation, j'aurais besoin (je sais, je suis un peu fainiant) de connaître les arguements que tu passe à l'outil xgettext pour créer les fichiers *.po à partir des fichiers sources.
Plus particulièrement, j'aimerais si possible que tu m'indique le mot clé que tu utilise dans la mesure ou dans le code source *.php, l'identificateur n'est pas celui communement employé. Est-ce tout simplement un truc du genre --> -ks ?
Je sais que ma question peut paraître conne mais dans le code source, tu fais appel à différentes méthodes de la classe i18n selon qu'il s'agisse de pluriels ou non.
Ps : Si dans le fond de ton grenier ou encore, dans la cage de ton Amster, tu as rangé un petit script maison pour la création des fichiers *.po, je suis bien entendu preneur.
Merci d'avance pour les éclaircissement apportés.
Nuxwin Team
Ajourd'hui, dans la mesure ou je suis en pleine internationalisation, j'aurais besoin (je sais, je suis un peu fainiant) de connaître les arguements que tu passe à l'outil xgettext pour créer les fichiers *.po à partir des fichiers sources.
Plus particulièrement, j'aimerais si possible que tu m'indique le mot clé que tu utilise dans la mesure ou dans le code source *.php, l'identificateur n'est pas celui communement employé. Est-ce tout simplement un truc du genre --> -ks ?
Je sais que ma question peut paraître conne mais dans le code source, tu fais appel à différentes méthodes de la classe i18n selon qu'il s'agisse de pluriels ou non.
Ps : Si dans le fond de ton grenier ou encore, dans la cage de ton Amster, tu as rangé un petit script maison pour la création des fichiers *.po, je suis bien entendu preneur.
Merci d'avance pour les éclaircissement apportés.
Nuxwin Team
Files
| Recipelevel php.zip 1,764 bytes, 116 downloads Edited by Agnès on Dec. 22 2007 Zoom | |
| unix_build_pot.pl 12,158 bytes, 224 downloads Edited by Nuxwin on Nov. 4 2007 Zoom |
Comments
| Bernard from nearby-an-airport Associate, 6745 posts | La commande utilisée est : xgettext *.php --output=i18n/templates/%MODULE%.pot --default-domain=%MODULE% --keyword=c --keyword=nc:1,2 --keyword=s --keyword=ns:1,2 --language=php
##
Le script qui permet d'extraire les chaînes en ligne de commande sous Windows est disponible dans l'archive de base de YACS, c'est le fichier ##tools/build_i18n.bat
|
| Nuxwin from Caen, devant mon bureau 190 posts | Bonjour ; Je te remercie pour cette réponse rapide. Je suis sous linux donc le .bat.... J'avais trouvé la marche à suivre sous poedit mais j'avais omis les arguements (1,2) pour les pluriels et du coup, j'arrivais pas à les extraire. Encore merci. Nuxwin Team |
| Bernard from nearby-an-airport Associate, 6745 posts |
Nuxwin: Si tu prépares un script shell pour Linux, je connais quelques personnes que ceci pourrait intéresser. Merci d'avance... |
| Nuxwin from Caen, devant mon bureau 190 posts |
Bernard : Bonjour ; Je peux bien faire ça mais je pense que Perl offrerais plus de possibilitées (La vérité c'est que je n'aime pas l'approche bash ).Pour exemple, je pourrais coder un programme qui opererait récursivement dans l'archive amont de yacs à la recherche de modules. Ce programme extrairait les chaînes, crérait les fichiers *.pot et *.po. Le programme serait invoqué avec x arguements offrant ainsi plusieurs possibilitées à l'utilisateur. Bien entendu, il faudrait aussi penser à gérer les exceptions au niveau des noms de certains *.pot qui diffèrent des fichiers sources. Qu'en pense-tu ? Si tu as une idée précise de ce que ce programme devrais pouvoir accomplir, n'hésite pas. Edit : Dans un premier temps, je pense qu'on pourrait axer le codage sur ton .bat. Voici le genre de résultat que l'utilisateur pourrait obtenir en mode debug : nuxwin@dev:~/Desktop/20071024-yacs-7-10beta24.tgz_FILES/tools$ ./build_pot.pl -v J'attends tes idées pour continuer. Nuxwin Team |
| Bernard from nearby-an-airport Associate, 6745 posts | Et bien, cela m'irait très bien, le propos étant d'avoir, pour les Unixiens, une solution complète d'extraction des chaînes de caractères et de fabrication des .pot et des .po de référence, équivalente à celle utilisée aujourd'hui sous Windows. Donc une commande qui analyse l'ensemble des scripts et qui, module par module, recrée le contenu des répertoires i18n/templates et aussi i18n/locale/en et i18n/locale/fr. Idéalement, une deuxième commande pourrait être fabriquée pour rafraichir les .po dans une autre langue. Merci par avance...
|
| Nuxwin from Caen, devant mon bureau 190 posts | Bernard : Bonsoir ; Je fais suite à notre discussion en te demandant si tu peux arranger ceci (je suis une vrai courge en anglais) : $0 Ver $VERSION D'avance merci. Nuxwin Team |
| Bernard from nearby-an-airport Associate, 6745 posts |
Pour information, courge se dit squash en anglais $0 Ver $VERSION A faire tester et vérifier par NickR, à l'occasion, et un grand merci pour ce boulot. Tu vas faire des heureux chez les Linuxiens... |
| Nuxwin from Caen, devant mon bureau 190 posts | Bonjour ; Dans le cadre du développement du présent script, je suis entrain de mettre en place certaines règles au niveau du nom des locales que l'utilisateur peut passer à l'option --locale. Je voulais donc savoir si on devais simplement autoriser la définition ISO 639 soit : # Set Locales Ou modifier ces règles de façon à accepter la définition ISO 3166-1. Merci d'avance pour la réponse. Ps : Merci pour la rectification du helper. Nuxwin Team |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts | Nuxwin : J'avoue que je ne comprends pas tout à votre discussion technique mais je peux t'assurer que je suis tout cela avec un grand intérêt. Je fais partie de ceux qui te remercieront bôôôôcoup de cette contribution !
|
| Bernard from nearby-an-airport Associate, 6745 posts |
Nuxwin: Tu me poses une colle, mais on pourrait au mons démarrer avec la première spécification, qui est aussi un RFC comme signalé dans ton code, et puis voir venir ensuite non ? |
| Nuxwin from Caen, devant mon bureau 190 posts |
Bernard : Oui, pas de problème, de toute façon, on pourra toujours modifier la chose si besoin. Je pense pouvoir fournir une première version ce jour. Par contre, faudra me dire comment je dois la publier. Merci. @agnes : Merci pour les encouragements Nuxwin Team |
| Nuxwin from Caen, devant mon bureau 190 posts | unix_build_pot.pl - v1.00 : Création des fichiers de langue pour le projet YACSCi-joint une première version du script à renommer en unix_build_pot.pl. Doit être placé dans le dossier ./tools et un chmod 0750 doit être appliqué dessus pour qu'il puisse être exécuté. A noter que l'utilisateur unix qui l'exécute doit avoir le droit d'écriture dans l'archive Yacs.UTILISATION : Ce programme permet aux utilisateurs des systèmes GNU-linux de créer automatiquement tous les fichiers de langues du projets YACS pour une localisation respectant la spécification ISO 639 (e.g. 'en', 'fr', 'ar'...) décrite dans la RFC 3066. A noter que dans l'immédiat, ce programme ne gère pas la spécification ISO 3166-1 (eg. 'en-uk', 'zh-cn' ...). Ce script peut être exécuté avec ou sans option(s). Exécuté sans option, ce script contruira les fichiers *.pot (Portable Object Template), *.po (Portable Object) et *.mo (Machine Object) de tous les modules du projet YACS, étant précisé que la localisation selectionnée par défaut est l'anglais. Comme évoqué ci-avant, le programme peut être invoqué avec une ou des options passées sur la ligne de commandes. Les options disponibles sont les suivantes : -?, h, -a, --availablesmod Cette option permet à l'utilisateur de prendre connaissance de la liste des modules disponibles. -b, --buildall=# Cette option permet à l'utilisateur de spécifier en argument un ou plusieurs modules pour lesquels les fichiers *.pot, *.po et *.mo seront générés. Si pour un module donné, le fichier *.po existe déjà, il sera simplement mis à jour. Si l'utilisateur passe l'agument ( all ) à cette option, les fichiers seront générés pour l'ensemble des modules disponibles. -G, --Genpot=# Cette option permet à l'utilisateur de spécifier en argument un ou plusieurs modules pour lesquels les fichiers *.pot seront générés. Si l'utilisateur passe l'argument ( all ) à cette option, les fichers *.pot seront générés pour l'ensemble des modules disponibles. A noter que la création des fichier *.pot est indépendante de la localisation. -g, --genpo=# Cette option permet à l'utilisateur de spécifier en argument un ou plusieurs modules pour lesquels les fichiers *.po seront générés. Si pour un module donné, le fichier *.po existe déjà, il sera simplement mis à jour. A noter que les fichiers *.pot rattachés au modules spécifiés doivent exister. -u, --updatepo=# Cette option permet à l'utilisateur de spécifier en argument un ou plusieurs modules pour lesquels les fichiers *.po seront mis à jour. Si l'utilisateur passe l'argument ( all ) à cette option, la mise à jour sera effectuée pour les fichiers *.po de tous les modules disponibles. A noter que les fichiers *.po rattachés aux modules spécifiés doivent exister. -c, --compile=# Cette option permet à l'utilisateur de spécifier en argument un ou plusieurs modules pour lesquels les fichiers *.mo seront générés. A noter que les fichiers *.po des modules concernés doivent exister. -l, --locale=# Cette option permet à l'utilisateur de specifier en argument une ou plusieurs localisation. Cette option peut être associée aux options buildall, Pour ce qui concerne l'association de cette option avec les options updatepo et A noter que si l'option locale n'est pas paramétrée explicitement par l'utilisateur, la localisation selectionnée par défaut sera l'anglais ( en ). -d, v, Vous noterez que le mixage des options availablesmod, Note complémentaire : Ce script à été développé de manière à ce que l'utilisateur final puisse effectuer des actions liées à la localisation de manière dirigée. Si le but est simplement de créer tous les fichiers de langue pour les localisation en et fr, comme le fait déjà le script dédié aux plateformes windows (script ./tools/script build_i18n.bat), l'utilisateur doit simplement exécuter le programme avec les options suivantes : ./unix_build.pot --locale=en-frou ./unix_build.pot --buildall=all --locale=en-frEnfin, si le but est simplement de mettre à jour les fichiers *.po pour la localisation fr, comme le fait déjà le script dédié aux plateformes windows (script ./tools/update_i18n.bat), l'utilisateur doit simplement exécuter le programme avec les options suivantes : ./unix_build_pot.pl --updatepo=all --locale=fr Note de conception : Le présent script est écrit en perl. Il ne requière pas de modules spéficiques supplémentaires que ceux installés avec perl de base. Le script à été testé sur Debian Etch et devrait normalement fonctionner correctement avec toutes les plateformes Linux. Note aux développeurs du projet YACS : Le liste des modules disponibles est incluse en dur dans le code source du programme. Si vous ajoutez ou supprimez un module du projet, il vous suffit d'éditer le tableau listant tous les modules soit la partie suivante du code : our $MODULES = ["root", "actions", "agents", "articles", "behaviors", "categories", "codes", "collections", "comments", "control", "dates", "decisions", "feeds", "files", "i18n", "images", "letters", "links", "locations", "overlays", "scripts", "sections", "servers", "services", "shared", "skins", "smileys", "tools", "tables", "users", "versions"]; Ne pas hésiter à me faire part de vos remarques (bonnes ou mauvaises) Nuxwin Team Fichier joint : unix_build_pot.pl Last Update : - Nov 05 - 01:27 |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts | Nuxwin : c'est un bien joli travail ! Et la doc ira avec, merci. On va bientôt pouvoir compléter la doc et faire l'annonce J'ai pas encore eu le temps de tester ton script, désolée, je suis débordée en ce moment. Mais je promets de le faire bientôt. Nick devrai pouvoir nous en dire plus... plus vite ----- Agnès Il n'y a pas de problèmes, que des solutions. |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts |
Nuxwin : J'ai un overlay à localiser en français. J'ai mis le script dans /tools (extension.pl), et mon overlay dans le répertoire overlays. Quels sont les prérequis sur ma machine ? Car quand je lance la commande, je récolte un "commande introuvable". J'avais commencé en tapant "unix_build...", puis j'ai vu qu'en fait c'était "unix-build...", enfin, j'ai essayé avec et sans l'extension : même résultat. La commande que j'ai tapée (en étant dans le répertoire tools) : unix-build-pot.pl --updatepo=overlays --locale=frJe suis sous ubuntu 7.04. Il y a des librairies perl installées - mais pas de serveur apache sur ma machine, je pense pas en avoir besoin. Faut-il vérifier d'autres choses ? (par ex. je me souviens sous windows, il m'a fallu installer gettext (là j'ai gettext et gettext-base d'installés) et rajouter un truc dans PATH pour que ça fonctionne - et là, y'a quelque chose du même genre à faire ? si oui où et comment ? Mais qu'est-ce que j'ai donc oublié là ? |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts |
Nuxwin : 'a y est, j'ai trouvé mes coquilles ! Alors résultat :
Encore un peu plus cultivée aujourd'hui
|
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts |
Coucou, encore moi, avec un message qui me déroute : je tape ./unix-build-pot.pl --Genpot=all et le script me renvoie : ./unix-build-pot.pl --Genpot=all
xgettext: Chaîne non-ASCII repérée à overlays/recipelevel.php:31.
Veuillez spécifier l'encodage de la source avec l'option « --from-code »..Qu'est-ce à dire ? L'overlay (celui que j'ai retravaillé) est sur la base de recipe. J'ai rajouté des champs, et pile poil le premier est à la ligne 31. Pour autant, le script est encodé en UTF-8, mais comme tous les autres. Alors pourquoi il râle juste sur le bout de texte que j'ai tapé ? Ce sont des mots, juste des mots (donc des lettres toutes bêtes), entre quote : $label = i18n::s('Level of the recipe');. Pas d'accents et autres trucs bizarres (que j'aurai encodé de toutes manières).Comment sortir de ça ? une idée, quelqu'un ? Sinon, c'est quoi la syntaxe de l'option --from-code ? |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts | Allez, ça finit par fonctionner. Voilà où ce sont situés les problèmes :
Reste à comprendre pourquoi le message d'erreur de xgettext mentionne la ligne 31 si le problème se situe ligne 30... |
| Nuxwin from Caen, devant mon bureau 190 posts |
Agnès : bonsoir ; Je suis désolé, de ne pas t'avoir répondu en tant et en heures mais je viens seulement de prendre connaissance de tes posts. Bien que tu es réussie à tant sortir, est-ce qu'en définitif ce script fonctionne correctement, pense tu qu'il faut apporter des modifications ? Pour ce qui concerne le problème concernant le format d'entrée (ACSII), j'avoue que j'ai pas bien compris, tu peux ré-expliquer ? |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts | Nuxwin : pour le script, voici ce que j'ai fait :
En mettant à jour via ton script overlays.po (updatepo=overlays --locale=en-fr), je récolte ceci sur la console : ...:~/Desktop/712test/tools$ ./unix-build-pot.pl --updatepo=overlays --locale=fr Bref, je comprends pas tout, mais j'ai une cagouille quelque part - et je sais pas du tout d'où ça vient, y compris moi peut-être. Je te joins le script (à peine) modifié qui me pose problème, si tu veux faire des tests - au moins pour voir si ton script est hors de cause. Je me tournerai alors vers mon espace entre la chaise et le clavier...). Pour les messages, pas de soucis. Le transfert du domaine de Yetanoz a duré quelques bonnes paires d'heures, et si le contenu était hébergé sur paxer.info - donc j'ai pu poster - les mails n'étaient plus en service le temps du transfert - donc pas d'alerte. Enfin, pour l'ascii, je comprends pas tout non plus. En fait, j'avais simplement fait une erreur puisque j'avais laissé un caractère accentué sans le coder - le coup de l'erreur entre la chaise et le clavier, classique). |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts |
(le fichier n'est pas passé, je retente) [file=709] |
| Nuxwin from Caen, devant mon bureau 190 posts | Agnès : Bonjour ; Voici la procédure suivie lors d'un premier teste : Dans un premier temps, j'ai effectué un teste sans ton script pour voir le comportement général. Voici un sommaire des opérations effectuées lors de ce teste :
1. Dans le répertoire /home/nuxwin/Desktop, j'ai créé un nouveau répertoire nommé ./agnes dans lequel j'ai créé un autre répertoire nommé ./yacs : nuxwin@dev:~$ cd ~/Desk* 2. J'ai récupéré la version 7.12 de yacs et je l'ai décompressée dans le dossier ./agnes/yacs : nuxwin@dev:~/Desktop$ cd ./agnes/yacs 3. J'ai téléchargé le script ./unix-build-pot que j'ai placé dans le dossier ./tools de yacs : nuxwin@dev:~/Desktop/agnes/yacs$ cd ./tools && wget http://www.yetanothercommunitysystem.com/file-fetch/679-unix-build-pot.txt 4. J'ai renommé le script en ./unix-build-pot et je lui ai appliqué un chmod 0755 afin de pouvoir l'exécuter : nuxwin@dev:~/Desktop/agnes/yacs/tools$ mv *unix-build-pot.txt unix-build-pot && chmod 0755 ./unix-build-pot 5. J'ai généré tous les fichiers *.pot : nuxwin@dev:~/Desktop/agnes/yacs/tools$ ./unix-build-pot --Genpot=all 6. J'ai généré les fichiers *.po pour tous les modules mais seulement pour la localisation en : nuxwin@dev:~/Desktop/agnes/yacs/tools$ ./unix-build-pot --genpo=all 7. J'ai récupéré l'archive contenant les fichiers *.po de la version 7.10 sur le serveur de référence (de façon à ne pas devoir tout re-traduir) et je l'ai décompressée dans le dossier ./agnes : nuxwin@dev:~/Desktop/agnes/yacs/tools$ cd ../.. && wget http://www.yetanothercommunitysystem.com/file-fetch/676-20071103-yacs7-10-i18n-locale-fr.tgz && tar xzf *-20071103-yacs7-10-i18n-locale-fr.tgz 8. J'ai placé tous les fichiers *.po de la localisation fr dans le dossier ./i18n/locale/fr de l'aborecence de yacs (7.12) : nuxwin@dev:~/Desktop/agnes/$ mv ./i18n/locale/fr/*.po ./yacs/i18n/locale/fr/ 9. Comme je ne suis pas membre de l'équipe de traduction et que je ne savais donc pas si de nouvelles chaînes avaient été ajoutées entre la version 7.10 et la version 7.12, j'ai fait une mise à jour des fichiers *.po (localisation fr) à partir des fichiers *.pot précédement créés : nuxwin@dev:~/Desktop/agnes/$ cd ./yacs/tools && ./unix-build-pot --updatepo=all --locale=fr 10. J'ai ensuite ouvert le fichier ./overlay.po (localisation fr) avec poEdit et je me suis amusé à modifier la traduction de la première chaîne : #: overlays/contact.php:56 11. J'ai enregistré le fichier et voici les modifications y apparaissant : msgid "" 12. Enfin, j'ai procédé à une mise à jour du fichier *.mo afférent : nuxwin@dev:~/Desktop/agnes/yacs/tools$ ./unix-build-pot --compile=overlays --locale=fr Lors de ce teste, je n'ai rencontré aucunes erreurs, que cela soit avec le script ou encore poEdit. Le deuxième teste consistera à placer ton script dans le répertoire du module overlays, recréer le fichier *.pot du module overlays pour la prise en comptes des nouvelles chaînes présentes dans ton script, mettre le *.po du module overlays à jour, faire une tentative d'edition et enregistrement avec poEdit et enfin mettre à jour le *.mo afférent. |
| Nuxwin from Caen, devant mon bureau 190 posts | Agnes : Le fichier communiqué est identique à celui contenu dans l'archive de la version 7.12 de yacs. J'ai fait un diff pour m'en assurer. Ne te serais-tu pas trompé de fichier ? |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts | Bien sûr que je me suis trompée de fichier - désolée. Le voici. Sinon, j'ai fais comme toi - en récupérant les traductions de la 7.10 également. J'ajoute que sous poEdit, lorsque j'ouvre recipelevel.po, je n'ai aucune traduction. Je demande alors la traduction à partir de la mémoire de traduction - j'ai indiqué en paramètres le répertoire I18n et il récupère toutes les chaînes contenues dans les dossiers locale pour construire la base de données. Dans la procédure, il faut ensuite transformer ces traductions "approximatives" en traductions validées. Il y a en principe 3 nouvelles chaînes à traduire pour mon overlays, et il m'a placé des chaînes par défaut qui n'ont rien à voir, mais du coup il n'apparaît pas de chaînes manquantes. Enfin, après plusieurs passages de ton script avec des erreurs sous poEdit, j'ai demandé uniquement la génération des .po du module overlays et c'est là que j'ai les messages d'erreurs que j'ai mentionné lors d'un précédent message. Je ne maîtrise pas trop poEdit, je ne sais pas si je peux faire plus simple. Merci de tes tests. Je sais pas si j'aurai le temps d'en faire d'autres aujourd'hui. Agnès Il n'y a pas de problèmes, que des solutions. recipelevel-php.zip |
| Nuxwin from Caen, devant mon bureau 190 posts | " Bonjour ; Ps : Afin que je teste sous le même environnement, peux tu me dire sous quelle version d'Ubuntu tu tourne et me dire quelle locales par défaut utilise tu sur ton systeme ? D'avance merci. |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts |
" Ps : Afin que je teste sous le même environnement, peux tu me dire sous quelle version d'Ubuntu tu tourne et me dire quelle locales par défaut utilise tu sur ton systeme ? Je suis sous ubuntu 7.04. Pour les locales ( ) ça doit être un truc du genre "tout par défaut" - et en français tant qu'à faire - moi juste utilisatrice quasiment "de base".Merci d'avance de ton regard éclairé et attentif
|
| Nuxwin from Caen, devant mon bureau 190 posts | Agnès : Deuxième teste (avec ton script --> recipelevel.php )Note : Pour rappel, j'avais précedement effectué les opérations suivantes (cf. teste1 ci-avant) :
Voici un sommaire des opérations effectuées lors de ce nouveau teste (teste 2) :
Détails de la procédure suivie :1. J'ai récupéré ton script --> ./recipelevel.php, et je l'ai décompressé dans le dossier ./agnes : nuxwin@dev:~$ cd ~/Desktop/agnes 2. J'ai édité le fichier ./recipelevel.php avec l'éditeur de texte Gedit et j'ai fait : Fichier --> Enregistrer sous. Dans la nouvelle fenêtre qui s'est ouverte, pour le codage des caractères, j'ai selectionné l'option : UTF-8 (qui, sur mon système, est la locale par défaut). Lorsque Gedit m'a indiqué que le fichier existait déjà, j'ai cliqué sur le bouton 'Remplacer' pour l'écraser. Enfin, j'ai fermé l'editeur Gedit. 3. J'ai copié le script ./recipelevel.php dans le répertoire du module overlays : nuxwin@dev:~/Desktop/agnes$ cp ./recipelevel.php ./yacs/overlays/ 4. J'ai mis à jour le template ./overlays.pot en exécutant le script ./unix-build-pot : nuxwin@dev:~/Desktop/agnes$ cd ./yacs/tools && ./unix-build-pot --Genpot=overlays 5. J'ai édité le fichier ./overlays.pot avec l'editeur Gedit et j'ai fait une recherche sur le nom de ton script soit : 'recipelevel.php' pour mettre en évidence la présence des nouvelles chaines. Le résultat de la recherche fut le suivant : #: overlays/recipelevel.php:25 overlays/recipe.php:25 Ici, comme tu peux aisément le constater, la plupart des chaînes présentes dans le script importé ( ./recipelevel.php ) sont identiques à celles présentes dans le scripts nommé ./overlays/recipe.php. Les seules nouvelles chaînes à traduire sont situées aux lignes 31, 33 et 140 du script importé ( ./recipelevel.php ). 6. J'ai mis à jour le fichier ./overlays.po du module overlays pour les locales en et fr : nuxwin@dev:~/Desktop/agnes$ ./unix-build-pot --updatepo=overlays --locale=en-frNote : Comme tu peux le voir au regard de la sortie du script, aucune erreur n'a été retournée lors de la mise à jour des fichiers ./overlays.po. 7. J'ai édité le fichier ./overlays.po ( localisation fr ) avec l'editeur Gedit et j'ai fait une recherche sur le nom de ton script soit : 'recipelevel.php' pour mettre en évidence la présence de nouvelles chaines. Le résultat de la recherche fut le suivant : #: overlays/recipelevel.php:25 overlays/recipe.php:25 Comme évoqué à l'étape précédente, la pluparts des chaînes présentes dans le script importé (recipelevel.php) étaient déjà présentes dans le script ./overlays/recipe.php). De ce fait, nul besoin de les re-traduire. Nous avions noté que seules les chaînes situées aux lignes 31, 33 et 140 du script importé (recipelevel.php) devraient faire l'objet d'une attention particulière. Ce faisant, ici que pouvons nous constater de nouveau ? Les chaînes situées aux lignes 31, 140 du script recipelevel.php), se trouvent dans un état dit d'incohérence (marqueur fuzzy). Il s'agit en fait de nouvelles chaînes qui ont fait l'objet d'une traduction approximative lors de la mise à jour du fichier ./overlays.po. Malheureusement une traduction approximative n'est pas synonyme de traduction correcte. Il faudra donc penser à modifier cet état d'incohérence (effectuer une traduction correcte) lorsque nous allons éditer le fichier ./overlays.po ( localisation fr ) avec poEdit. Ceci sera très facile puisque sous poEdit, toutes les chaînes se trouvant dans un état d'incohérence apparaissent sur fond jaune. Enfin, la chaînes située à la ligne 33 du script ./recipelevel.php n'a quand à elle fait l'objet d'aucune traduction. En ce qui concerne cette chaîne, il nous suffira de la traduire à l'aide de poEdit, étant précisé que les chaînes non traduites apparaissent sur fond bleu sous ce dernier. 8. Après avoir dûment analisé le fichier ./overlays.po ( localisation fr ) avec l'éditeur Gedit, je l'ai refermé et je l'ai édité avec poEdit : IMAGE 8.1 Comme tu peux le voir sur l'image jointe ci-dessus, nous retrouvons bien notre nouvelle chaine non traduite (ligne apparaissant sur fond bleu) ainsi que les deux lignes ayant fait l'objet d'une traduction approximative (lignes apparaissant sur fond jaune) Ici, nous allons donc nous contenter de traduire c'est trois nouvelles chaînes. Voici une capture de poEdit après traduction : IMAGE 8_2 9. La traduction des trois chaînes étant terminée, j'ai enregistré le fichier et j'ai fermé poEdit. 10. J'ai ré-édité le fichier ./overlays.po ( localisation fr ) avec Gedit et j'ai effecuté une nouvelle recherche sur le nom de ton script 'recipelevel.php' pour vérifier que la traduction des trois chaines à bien été prise en compte. Voici le résultat que j'ai obtenu : msgid "" Comme tu peux le constater, les trois chaines qui nous interessent ont bien été traduites : #: overlays/recipelevel.php:31 11. Enfin, j'ai mis les fichiers ./overlays.mo ( localisation en et fr ) à jour. nuxwin@dev:~/Desktop/agnes$ ./unix-build-pot --compile=overlays --locale=en-fr Là encore, l'exécution du scripts n'a engengrée aucun problème particulier. EN CONCLUSIONS :Je te recommande de suivre au moin une fois les deux procédures (teste 1 et teste 2) à la lettre en prenant le soin de vérifier que la locale par défaut sur ton système et UTF-8 et non pas ISO-8859-15 ou encore ISO-8859-1. Pour le savoir facilement, ouvre Gedit et simule une opération d'enregistrement. Normalement, dans les paramètre d'encodage, la locale employée par défaut sur ton système devrait clairement être mise en évidence dans la liste. Par ailleurs, comme tu as pu le constater, lorsque j'ai récupéré ton fichier, la première chose que j'ai fait, c'est de le passer en UTF-8. Peut-être que le problème vient de là chez toi car tu utilise un codage iso-8859-15 . Enfin, en ce qui concerne l'exécution du script ./unix-build-pot, il faut que tu l'exécute toujours à partir du répertoire ./tools de l'arborescence de yacs. En effet, si tu es située dans un autre répertoire et que tu tente de l'exécuter en précisant le chemin, tu rencontreras des erreurs. Pour exemple, si tu fait : nuxwin@dev:~/Desktop/agnes$ ./yacs/tools/unix-build-pot [param] Il y a de fortes chances que l'exécution échoue. Tu dois donc faire : nuxwin@dev:~/Desktop/agnes$ cd ./yacs/tools Esperant t'avoir suffisament éclairé sur la chose. Ps : Désolé pour la longueur de cette réponse mais j'ai essayé de détaillé au maximum pour que tu puisse comprendre facilement la démarche. Ps : Je suis entrain de mettre les images. |
Agnès![]() from le Grésivaudan (grenoble-chambéry) Associate, 2032 posts |
Nuxwin : Alors là, je vais devoir transformer ton post en documentation !! si si !! Mille merci, et j'ai enfin compris où était mon problème : j'ai d'abord eu des erreurs "d'encodage", dues à une erreur de ma part (un é écrit tel quel dans un commentaire : d'où un message de présence de texte non-ASCII), mais je ne savais pas encore où. Ce faisant, Bernard me dis que tous ces scripts sont en ASCII - alors que j'ai plutôt UTF-8 comme paramètre de base sur l'éditeur Bluefish que j'utilise en général). J'ai alors modifié l'encodage de mon script - sans bien comprendre, puisqu'à mon sens, l'UTF-8 devait convenir - avec gEdit. Mais j'avais toujours le message d'erreur, et ç'est là que j'ai repéré l'erreur sur le e accentué. J'ai tout recommencé, à peu près de la même manière que toi, mais je n'ai pas pensé à re-basculer mon script en UTF-8. Bien entendu, ça n'allait toujours pas à cause de l'encodage du script. J'ai appris pas mal de choses à propos des formats d'encodage en deux jours, mais j'avais vraiment oublié le format de mon script ! Au final, après un ré-enregistrement en UTF-8, j'ai pu mener l'opération à son bon terme, en suivant tes explications vraiment tip-top. Merci encore Alors te voilà gagnant :
Enfin, cette histoire montre aussi que ta contribution est solide et que les erreurs sont entre la chaise et clavier comme dirait Moi-même ! Ben maintenant, je vais explorer les overlays moi Merci merci encore
|
| Nuxwin from Caen, devant mon bureau 190 posts | @agnes Merci pour ta gratitude. Ps : Si tu transforme en doc, je te souhaite bon courage pour toutes les fautes d'ortho que j'ai faites. |
Rate this page
Posted by Nuxwin on Oct. 29 2007, edited by Nuxwin on Jan. 2, (popular)
).

!
) pour se faire expliquer le pourquoi du comment du
) ça doit être un truc du genre "tout par défaut" - et en français tant qu'à faire - moi juste utilisatrice quasiment "de base".