[Python-de] i18n / Tkinter

"Martin v. Löwis" martin at v.loewis.de
Son Jan 25 22:00:04 CET 2004


Olaf 'Rübezahl' Radicke wrote:

> Ich kann keine Beispiele finden und für die Doku ist
> mein Englisch zu schlecht.

Das einfachste Beispiel ist

# Python
import gettext
gettext.install("demoapp", localedir=".", unicode=True)

import Tkinter
t=Tkinter.Label(text=_("Hello, World"))
t.pack()
b=Tkinter.Button(text=_("Close"), command=t.tk.quit)
b.pack()

t.tk.mainloop()

Dies speichere man als a.py ab, und rufe

# Shell Command Line
xgettext a.py

auf. Daraus ergibt sich eine Datei messages.mo. Diese
ändere man ab in

# demoapp message file
#
msgid ""
msgstr ""
"Project-Id-Version: demoapp\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2004-01-25 21:50+0100\n"
"PO-Revision-Date: 2004-01-25 21:52+0100\n"
"Last-Translator: Martin v. Löwis <martin at v.loewis.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: a.py:5
msgid "Hello, World"
msgstr "Hallo, Welt"

#: a.py:7
msgid "Close"
msgstr "Ende"

Man rufe

# Shell Command Line
msgfmt messages.po

und schreibe das sich ergebende messages.mo unter

./de/LC_MESSAGES/demoapp.mo

ab. Danach rufe man

# Shell Command Line
python a.py

und betrachte die deutsche Ausgabe.

Wenn man mehrere Sprachen unterstützen will, muss man den
Übersetzern messages.po geben, und die Message-Dateien
kompilieren.

Ciao,
Martin