Bonjour,
en consultant la doc de gettext, je vois que l'on peut changer la langue utilistaur à la volée:
J'ai donc fait un test avec une fenêtre Tkinter et un menu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import gettext lang1 = gettext.translation('myapplication', languages=['en']) lang2 = gettext.translation('myapplication', languages=['fr']) lang3 = gettext.translation('myapplication', languages=['de']) # start by using language1 lang1.install() # ... time goes by, user selects language 2 lang2.install() # ... more time goes by, user selects language 3 lang3.install()
Mais volià, si dans la console, celà fonctionne bien (mes prints de contrôles), dans ma fenêtre là ca fonctionne pas du tout, mes chaines de carractères restent en fr
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 from __future__ import unicode_literals from Tkinter import * import gettext import os pathname = os.path.dirname(sys.argv[0]) localdir = os.path.abspath(pathname) + "/locale" lang1 = gettext.translation('messages', localdir, languages=['fr']) lang1.install() print _('Repertoire') # CONTROLE: Ca affiche 'Repertoire' def langue(): lang2 = gettext.translation('messages', localdir, languages=['nl']) lang2.install() print _('Repertoire') #CONTROLE: Ca affiche 'REP' donc c'est traduit root = Tk() root.title(_("Repertoire")) mainmenu = Menu(root) menuFichier = Menu(mainmenu) menuFichier.add_command(label=_("Encoder")) #Ajouter la commande menuFichier.add_command(label=_("Quitter"), command = quitte) menuFichier.add_command(label=_("Changer la langue"), command= langue) mainmenu.add_cascade(label = _("Programme"), menu=menuFichier) root.config(menu = mainmenu) root.mainloop()
Comment puis-je faire pour que mes chaînes soient traduites dans Tk ?
Merci d'avance,
Partager