changer de langue via un menu avec Tkinter et Gettext
Bonjour,
en consultant la doc de gettext, je vois que l'on peut changer la langue utilistaur à la volée:
Code:
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:
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 :cry:
Comment puis-je faire pour que mes chaînes soient traduites dans Tk ?
Merci d'avance,