Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 02/04/2011, à 21:06

YannUbuntu

Re : Integrer des .po .pot .mo dans mon application?

Merci a tous, j'arrive a quelquechose de potable maintenant en :
- ayant supprimé les apostrophes de mes chaines anglaises (j'essaierai a nouveau le \' plus tard)
- ayant supprimé les variables a tableau comme indiqué par Jarbinks

Par contre la creation du .pot via la commande

bash --dump-po-strings hello > hello.pot

ne fonctionne pas si on utilise seulement la syntaxe

eval_gettext $'Ma_chaine'

, pour pallier a ce probleme j'ai du "declarer" les chaines a traduire de la facon suivante:

echo $"Ma_chaine"  ## Declaration de la chaine a traduire pour qu'elle soit detectee par bash --dump-po-strings
eval_gettext $'Ma_chaine'

Sauriez-vous comment faire cela plus simplement?

Dernière modification par YannUbuntu (Le 02/04/2011, à 21:16)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#27 Le 03/04/2011, à 06:12

Jarbinks

Re : Integrer des .po .pot .mo dans mon application?

xgettext -L shell script.sh [-o script.pot]

extrait les chaines passées en paramètre de eval_gettext (par défaut dans messages.po) et râle quand il y a des chaînes du style $"..." :

AVERTISSEMENT : la syntaxe « $"..." » ne doit pas être utilisée pour des raisons de sécurité. Utilisez plutôt « eval_gettext »

Dernière modification par Jarbinks (Le 03/04/2011, à 17:48)

Hors ligne

#28 Le 03/04/2011, à 10:07

YannUbuntu

Re : Integrer des .po .pot .mo dans mon application?

Merci Jarbinks !
juste pour info ta syntaxe me renvoit une erreur, par contre celle-ci fonctionne:

xgettext --language=Shell --output=script.pot script.sh

à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#29 Le 03/04/2011, à 17:51

YannUbuntu

Re : Integrer des .po .pot .mo dans mon application?

J'ajoute pour ceux que ca interesserait qu'il faut utiliser la syntaxe suivante pour les sauts de ligne :

eval_gettext $'premiere ligne\\n 2eme ligne'

(si on ne met qu'un seul slash avant le n, ca ne fonctionne pas)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#30 Le 03/04/2011, à 18:51

Hizoka

Re : Integrer des .po .pot .mo dans mon application?

Si c'est totalement fonctionnel, il faudrait faire une page dans la doc !


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#31 Le 04/04/2011, à 01:56

Jarbinks

Re : Integrer des .po .pot .mo dans mon application?

Pour revenir sur le problème des variables tableaux, on peut utiliser printf(1), qui s'utilise comme le printf du C
Exemple :

A=2;B[2]=3;
printf 'abcd %s def\n' ${B[$A]}

On pourrait alors le combiner avec $'...' et eval_gettext (pas essayé) :

A=2;B[2]=3;
printf $(eval_gettext $'abcd %s def\\n') ${B[$A]}

Et si on veut faire autre chose qu'afficher ce texte, un truc du genre (toujours pas testé):

A=2;B[2]=3;
fonction $(printf $(eval_gettext $'abcd %s def\\n') ${B[$A]})

Hors ligne

#32 Le 05/04/2011, à 02:55

Hizoka

Re : Integrer des .po .pot .mo dans mon application?

YannUbuntu
J'y arrive pas perso...

place_dispo=5555555
echo "TEXT@@END@@_textedebug@@\\n$(eval_gettext $'Place disponible sur le disque dur : ${place_dispo} ko')\\n"

me renvoie :

Place disponible sur le disque dur : ko

tu fais comment exactement ?

j'ai essayé en utilisant une variable :

place_dispo=5555555
test=$(eval_gettext $'Place disponible sur le disque dur : ${place_dispo} ko')
echo "TEXT@@END@@_textedebug@@\\n${test}\\n"

mais c'est la même...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#33 Le 05/04/2011, à 04:23

Jarbinks

Re : Integrer des .po .pot .mo dans mon application?

@Hizoka : Tes codes marchent très bien chez moi ...

#!/bin/bash
. gettext.sh
export TEXTDOMAIN=test
place_dispo=5555555
echo "TEXT@@END@@_textedebug@@\\n$(eval_gettext $'Place disponible sur le disque dur : ${place_dispo} ko')\\n"
$ ./script.sh
TEXT@@END@@_textedebug@@\nPlace disponible sur le disque dur : 5555555 ko\n

Avec /usr/share/locale/en/LC_MESSAGES/test.mo compilé de :

msgid "Place disponible sur le disque dur : ${place_dispo} ko"
msgstr "Available space on the hard disk drive : ${place_dispo} ko"
$ LANGUAGE=en ./script.sh
TEXT@@END@@_textedebug@@\nAvailable space on the hard disk drive : 5555555 ko\n

Hors ligne

#34 Le 05/04/2011, à 22:19

YannUbuntu

Re : Integrer des .po .pot .mo dans mon application?

Je ne sais pas avec la fonction TEXT@@END@@ de glade2script, mais chez moi ca marche avec les fonctions SET@window1.set_title et SET@_label0.set_text , et les zenity.

Essaye juste avec un Zenity tout simple pour voir ?
Tu as bien

. gettext.sh
export TEXTDOMAIN=test

au debut de ton script ? (avec tes mo dans /usr/share/locale/en/LC_MESSAGES/test.mo , /usr/share/locale/es/LC_MESSAGES/test.mo  , etc..)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#35 Le 05/04/2011, à 22:49

Hizoka

Re : Integrer des .po .pot .mo dans mon application?

Dans mon script :

source gettext.sh
set +a
export TEXTDOMAIN=mkv_extractor_gui
export TEXTDOMAINDIR="${chemin}/locale"
. gettext.sh
echo "TEXT@@END@@_textedebug@@\\n$(eval_gettext $'Place disponible sur le disque dur : ${place_dispo} ko')\\n"

Pour la création des pots :

xgettext -o mkv_extractor_gui.pot mkv_extractor_gui.glade *.sh --from-code UTF-8

Dans mon pot :

msgid "Place disponible sur le disque dur : ${place_dispo} ko"
msgstr ""

Je convertis le pot en po :

msginit -i mkv_extractor_gui.pot -o mkv_extractor_gui.po

Je modifie avec :

msgid "Place disponible sur le disque dur : ${place_dispo} ko"
msgstr "Available space on the hard disk drive : ${place_dispo} ko"

je convertis le po en mo :

msgfmt mkv_extractor_gui.po -o mkv_extractor_gui.mo

et je mets le mo dans son dossier : locale/en/LC_MESSAGES/

Via la commande de mon script, ca ne renvoie pas la valeur de la variable : Available space on the hard disk drive :  ko
et idem via une fenetre zenity...
idem via echo "$(eval_gettext $'Place disponible sur le disque dur : $place_dispo ko')" > test


EDIT : Ca venait de la facon dont je récupérais la variable qui n'était pas bonne en fait...

Dernière modification par Hizoka (Le 06/04/2011, à 00:16)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne