Gerade bin ich hier auf der Arbeit dabei, ein kleines Programm zu erstellen, für dessen GUI ich wxPython benutze. Als weitere Abhängigkeit habe ich PIL. Soweit hat alles sehr gut funktioniert, nur wollen unsere Aussentellen in den nicht deutschsprachigen Ländern das nun auch benutzen. Freut mich ja grundsätzlich, nur habe ich dort überall das Problem, dass keine Python installation (von den Abhängigkeiten wxPython und PIL ganz zu schweigen) vorhanden ist.
Ich werde also genötigt, py2exe zu verwenden, um Pakete zu erstellen.
Um die GUI zu internationalisieren habe ich mich an Gerolds überaus geniales Tutorial gehalten, was so auch sehr gut funktioniert. Hier also ein großes Lob und ein Danke.
Hier der Link zum Tutorial: http://www.halvar.at/python/wxpython_in ... alisieren/
Wie gesagt, bei mir auf der Maschine (Windows XP SP3, Python 2.5.4, wxPython 2.8.10.1 msw-unicode, PIL 1.1.7) funktioniert das jetzt auch einwandfrei. Das Programm startet, meine GUI erscheint in Deutsch. Ich hab's auch kurz mit Mint Linux 9 unter Gnome getestet, dort funktioniert das ganze ebenfalls.
Die Ordnerstruktur ist wie in Gerolds Tutorial beschrieben:
Code: Alles auswählen
PROGRAMMVERZEICHNIS
| -> .WorkTool.py
| -> .*.py
|
|--- locale
|
|--- en
| |
| |--- LC_MESSAGES
| |
| |--> WorkTool.mo
|
|--- de
|
|--- LC_MESSAGES
|
|--> WorkTool.mo
Code: Alles auswählen
import wx
from wx.lib.wordwrap import wordwrap
import os
import sys
APPDIR = os.path.dirname(os.path.abspath(__file__))
LOCALDIR = os.path.join(APPDIR, "locale")
LOCALDOMAIN = "WorkTool"
wx.SetDefaultPyEncoding("utf-8")
_ = wx.GetTranslation
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.panel = wx.Panel(self, -1)
self.labeltext = _("This is the text of the Label")
self.label = wx.StaticText(self.panel, -1, self.labeltext, pos=(10,10))
print "Appdir: ", APPDIR
print "Locale Dir: ", LOCALDIR
print "Locale Domain: ", LOCALDOMAIN
# More widgets here
# ...
class MyApp(wx.App):
def OnInit(self):
self.locale = wx.Locale(wx.LANGUAGE_DEFAULT)
self.locale.AddCatalogLookupPathPrefix(LOCALDIR)
self.locale.AddCatalog(LOCALDOMAIN)
wx.InitAllImageHandlers()
self.frameMain = MyFrame(None, -1, "")
self.SetTopWindow(self.frameMain)
self.frameMain.Show()
return 1
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()
Ich habe mit Py2exe ein Paket geschnürt, die Anwendung funktioniert soweit auch (alle Funktionen), nur mit der Lokalisation scheint etwas nicht zu stimmen. Die Anwendung erscheint nicht in der jeweiligen Landessprache, sondern nur in Englisch.
Daher meine Frage:
Weiß jemand, warum die Lokalisierung jetzt nicht mehr funktioniert, bzw. wie man sie wieder zum Laufen bringt?
Für jeden Hinweis wäre ich sehr dankbar.
Viele Grüße,