Bonjour,

en consultant la doc de gettext, je vois que l'on peut changer la langue utilistaur à la volée:
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()
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
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()
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

Comment puis-je faire pour que mes chaînes soient traduites dans Tk ?

Merci d'avance,