Ich dreh' noch am Rad
Das kann doch nicht so schwer sein ein Programm platformübergreifend mehrsprachig zu machen.
Unter Linux funktioniert alles wunderbar, unter OS X auch solange es nicht durch py2app gejagt wird, aber unter Windows XP bekomme ich es um's Verrecken nicht gebacken.
Der Languagecode wird richtig erkannt, der Pfad zum Verzeichnis 'local' ebenfalls und dennoch erfolgt keine Übersetzung.
Wenn den jedenfalls irgend eine Fehlermeldung ausgegeben werden würde hätte ich ja noch einen Ansatz, aber so bin ich echt mit meinem Latein am Ende.
Ich glaube ich habe mitlerweile alle Variationen ausprobiert, die so über Google & Co zu diesem Thema zu finden sind, aber wenn dan artete das nur in Verschlimmbesserungen aus.
Wer hat es denn schon einmal geschafft eine Pythonanwendung unter Win mehrsprachig umzusetzen?
Zur Zeit sieht der Code folgendermaßen aus:
Code: Alles auswählen
from MainFrame import MainFrame
import locale
import gettext
import os
import sys
import wx
from AppKit import NSLocale
import platform
APPDIR = os.path.split( os.path.realpath( sys.argv[0] ) )[0]
LOCALEDIR = os.path.join( APPDIR, "locale" )
class MainApp( wx.App ):
def OnInit( self ):
wx.InitAllImageHandlers()
MainWindow = MainFrame( None, -1, "" )
self.SetTopWindow( MainWindow )
MainWindow.Show()
return 1
# end of class MainApp
if __name__ == "__main__":
# Plattform erkennen
if platform.system() == 'Windows':
locale.setlocale( locale.LC_ALL, '' )
language_code, encoding = locale.getlocale()
elif platform.system() == 'Darwin':
language_code = NSLocale.currentLocale().localeIdentifier()
encoding = unicode
else:
locale.setlocale( locale.LC_ALL, '' )
language_code, encoding = locale.getlocale()
# Localelize
gettext.bindtextdomain( 'ScaleIt4BB', LOCALEDIR )
gettext.install( 'ScaleIt4BB', LOCALEDIR, language_code, encoding )
ScaleIt4BB = MainApp( 0 )
ScaleIt4BB.MainLoop()
Ratlose, hilfesuchende Grüße,
SB