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.

#1 Le 30/09/2017, à 16:50

L'Africain

Logiciel python affiche texte aulieu d'icônes

Bonjour,
J'ai entrepris de traduire un petit logiciel en python : lios qui se trouve dans les dépôts. Or j'ai un léger problème lorsque je traduit certaines lignes, les icônes de la fenêtre principales sont remplacées par le texte traduit (qui correspond à l'aide qui s'affiche quand on passe la souris dessus)! Si ça reste en anglais le problème ne se pose pas. Si vous voulez visualiser j'ai mis des captures dans le rapport de bug que j'ai fait ici.
Je ne sais pas si c'est très compliqué (car je connais rien à python), mais j'ai l'ambition de traduire correctement l'application smile
Merci pour votre aide.


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#2 Le 06/10/2017, à 12:21

J5012

Re : Logiciel python affiche texte aulieu d'icônes

c'est ce fichier que tu modifies ?

lios/ui/gtk/icons.py
...
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext

stock_icon_dict = { _("_File") :"edit-copy",
					_("New") :"gtk-new",
					_("Open"):"gtk-open",
					_("Save"):"gtk-save",
					_("Save-As"):"gtk-save-as",
					_("Find"):"gtk-find",
					_("Find-Replace"):"gtk-find-and-replace",
					_("Text-Cleaner"):"gtk-find-and-replace",
...
					_("_Preferences"):"gtk-preferences",
					_("Preferences"):"gtk-preferences",
					_("Preferences-Scanning"):"gtk-preferences",
					_("Preferences-General"):"gtk-preferences",
					_("Preferences-Recognition"):"gtk-preferences",
...

Hors ligne

#3 Le 06/10/2017, à 13:06

L'Africain

Re : Logiciel python affiche texte aulieu d'icônes

Je n'ai pas modifier de fichier en réalité (mais j'ai essayé de le faire sur le fichier main.py). Ce qui se passe c'est qu'une fois que je traduis la ligne (par exemple New : Nouveau) dans l'interface ce n'est plus l'icône qui s'affiche mais ma traduction Nouveau... Je ne touche pas au code. Juste au po.
Faut-il travailler sur le fichier icon.py? Au pire j'enlève la l18n pour ce fichier uniquement?


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#4 Le 07/10/2017, à 21:17

J5012

Re : Logiciel python affiche texte aulieu d'icônes

je pense le probleme : je n'ai pas vu de pack de traduction po/mo ?

normalement quand il y a un pack : tu as un, des fichiers de localisations localisables ou à localiser disponibles, tu n'as pas à fouiner dans le code maitre de l'app ... c'est pourtant ce que j'ai du faire pour trouver les icons du menu de l'app ...

et les menus de l'app sont composés d'icon à cliquer et non de texte à cliquer ... le fichier icon.py n'intervient pas sur les icon à cliquer mais sur leurs labels : les bulles descriptives quand tu passes le pointeur dessus ...

Hors ligne

#5 Le 08/10/2017, à 08:34

L'Africain

Re : Logiciel python affiche texte aulieu d'icônes

Bonjour,
Les fichiers de localisation ne sont pas sur la branche principale de gitlab mais sur mon fork. J'ai fait une requête de fusion. C'est donc à partir de mon fork qui est déjà traduit que le problème se pose. En effet le fichier icon.py donne les bulles descriptives, mais quand je les traduit ces bulles, l'icône disparaît au profit de la traduction dans le bouton smile
Merci pour ton aide !


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#6 Le 08/10/2017, à 20:15

J5012

Re : Logiciel python affiche texte aulieu d'icônes

parce que comme c'est en dur ... tu dois reporter les modif icon.py dans le main.py ... arrghh

un pack po/mo serait que le main.py ne code pas direct les variables menu en objets icon à cliquer (le code actu) mais associe des variables lang à ceux-ci : les fichiers po/mo ne faisant alors que les correspondances linguistiques ...

d'apres ce que j'ai compris, le lios/main.py associe direct l'icon à cliquer avec le label et non une variable linguistique ?

...
def create_menu(item,agr):
	if (type(item) == list ):
		menu_item = ImageMenuItem(item[0])
		menu = Gtk.Menu()
		if (item[0] in icon.stock_icon_dict.keys()):
			image = Gtk.Image()
			image.set_from_icon_name(icon.stock_icon_dict[item[0]],10)
			menu_item.set_image(image)
			menu_item.set_always_show_image(True)
...

ce qui serait aussi interessant de savoir :
- à quoi pensait les devs de lios en implantant gettext domain avec l'option language dans lio/ui/gtk/icon.py , alors qu'il n'y a à priori pas d'indices de localisation (code en dur, pas de variables linguistiques) ?

edit : nota : https://docs.python.org/2/library/gette … le-gettext
pas vu d'instruction "gettext.install" pour notifier de "_(...)" ?

Dernière modification par J5012 (Le 08/10/2017, à 20:31)

Hors ligne

#7 Le 09/10/2017, à 08:25

L'Africain

Re : Logiciel python affiche texte aulieu d'icônes

Ok merci, mais comme je te l'ai dit, je ne connais pas python smile Je te donc sur parole. Cela est-il difficile à corriger?
Sinon éventuellement (mais c'est pas propre) je peux "délocaliser" (sans jeux de mot smile ) le fichier icon.py pour que les autres parties soient au moins traduites?


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#8 Le 10/10/2017, à 20:39

J5012

Re : Logiciel python affiche texte aulieu d'icônes

je n'ai eu le temps que de chercher les mots cles que tout developpeur chercherait quand il analyse un code (n'importe lequel, on regarde la structure et les fonctions) ... pour savoir ce que fait lios exactement (le minimum : l'interaction entre menus et dalogues), il faudrait une doc dev comme ce que fait virtualbox par ex. ou un mapping fonctionnel detaillé ...

les devs de lios ont donné une reponse claire à ton post issue ?

la doc de python qui documente la localisation des applications dit explicitement que l'instruction gettext.install doit etre employée soit au niveau du main.py global soit à chaque entree de fichier fonctionnel dont on veut donner une localisation ... sans cette instruction les autres gettext domain etc sont inutiles : la notation _(...) ne sera pas reconnue

je ne sais pas quand je pourrais compiler l'app python et fourailler dans son code ... wink

Hors ligne

#9 Le 10/10/2017, à 21:55

J5012

Re : Logiciel python affiche texte aulieu d'icônes

petit test du programme :
- telechargement de la version 2.5 master : lios-3-master-b7203af292d13a92742db7d415972fa9faefa61c.zip
- je fais un bdist pour avoir le binaire

python setup.py bdist

- le bdist donne le binaire tar-gzedé : lios-2.5.linux-x86_64.tar.gz
- je fais une install à la main en admin
- je fais en terminal l'exe des deux commandes lios : lios lui-meme et train-tesseract, et j'obtiens les memes erreurs :

user@ordi:~$ lios
Traceback (most recent call last):
  File "/usr/local/bin/lios", line 3, in <module>
    from lios.main import *
ImportError: No module named 'lios'
user@ordi:~$ 
user@ordi:~$ train-tesseract
Traceback (most recent call last):
  File "/usr/local/bin/train-tesseract", line 4, in <module>
    from lios import train_tesseract
ImportError: No module named 'lios'
user@ordi:~$ 

je pense à une erreur de hierarchisation : il manque le module lios ou ce module se trouve ailleurs ou porte un nom different attendu ... bug courant dans les devs rapides ...

edit : l'inconvenient de ne pas avoir ou de ne pas faire d'abord un mapping fonctionnel wink

Dernière modification par J5012 (Le 10/10/2017, à 21:56)

Hors ligne

#10 Le 11/10/2017, à 12:58

L'Africain

Re : Logiciel python affiche texte aulieu d'icônes

Salut,
Il y a u petit script qui crée un deb à partir des sources sur le gitlab de lios, je sais pas si ça peut être utile?


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#11 Le 13/10/2017, à 21:23

J5012

Re : Logiciel python affiche texte aulieu d'icônes

le script en question utilises la meme commande que moi ... je l'ai peché la bien sur ...

Hors ligne