Seite 1 von 1

Gettext initalisieren unter Windows

Verfasst: Sonntag 26. August 2007, 15:32
von veers
Ich habe etwas Probleme damit gettext unter Windows zu initialisieren. Derzeit mache ich das so:

Code: Alles auswählen

import gettext
gettext.bindtextdomain('lanshark', config.LOCALE_PATH)
gettext.textdomain('lanshark')
_ = gettext.gettext
Funktioniert auf meiner GNU/Linux Box auch. Bloss auf Windows Systemen ist die Sprache immer Englisch.

Scheint allgemein ein locale Problem zu sein. Unter Windows funktioniert (auf meinen Systemen) nicht mal das Beispiel aus der Dokumentation:
locale.setlocale(locale.LC_ALL, 'de_DE') wirft eine Exception.

-.-

Verfasst: Montag 27. August 2007, 10:08
von mkesper
Ich kenne das Problem, die Locale scheint unter Windows

Code: Alles auswählen

German_Germany.1252
zu heissen. :(

Verfasst: Montag 27. August 2007, 12:32
von gerold
Hallo veers!

Und wenn gar nichts funktionieren sollte, dann kannst du die Sprache zumindest explizit auswählen.

http://docs.python.org/lib/node741.html

mfg
Gerold
:-)

Verfasst: Montag 27. August 2007, 13:02
von veers
gerold hat geschrieben:Hallo veers!

Und wenn gar nichts funktionieren sollte, dann kannst du die Sprache zumindest explizit auswählen.

http://docs.python.org/lib/node741.html

mfg
Gerold
:-)
Ja wäre eine Möglichkeit. Dann muss ich es noch irgend wie hinbiegen das die gtk Stock Elemente in der richtigen Sprache sind.

Auf der deutschen Vista VM sind die Deutsch. Auf der Deutschen XP Maschiene englisch. Und auf der Englischen XP Maschiene englisch.

Verfasst: Dienstag 28. August 2007, 17:14
von veers
Irgend wie scheint es mir als würde Windows etwas mit LANG vergleichbares nicht kennen.

Verfasst: Dienstag 28. August 2007, 22:10
von gerold
veers hat geschrieben:Irgend wie scheint es mir als würde Windows etwas mit LANG vergleichbares nicht kennen.
Hallo veers!

Code: Alles auswählen

>>> import win32api
>>> win32api.GetUserDefaultLangID()
3079
>>> hex(3079)
'0xc07'
>>> 
- http://msdn2.microsoft.com/en-us/library/ms776265.aspx
- http://msdn2.microsoft.com/en-us/library/ms776324.aspx
- http://msdn2.microsoft.com/en-us/library/ms776294.aspx (hier nach "0x0c07" suchen !!! zusätzliche 0 !!!)

Ob man auch einfacher an diese Info kommt, weiß ich nicht.

EDIT:

Nachtrag:

Code: Alles auswählen

>>> import wx
>>> locale = wx.Locale()
>>> locale.GetSystemLanguage()
88
>>> locale.GetLanguageName(locale.GetSystemLanguage())
u'German (Austrian)'
>>> 88 == wx.LANGUAGE_GERMAN_AUSTRIAN
True
>>>
mfg
Gerold
:-)

Verfasst: Dienstag 28. August 2007, 22:22
von veers

Code: Alles auswählen

if sys.platform.startswith("win"):
   import ctypes
   n = ctypes.windll.kernel32.GetUserDefaultUILanguage()
   lang = locale.windows_locale[n]
   if lang.startswith("de"):
      locale.setlocale(locale.LC_ALL, "german")
   else:
        locale.setlocale(locale.LC_ALL, '')
else:
    locale.setlocale(locale.LC_ALL, '')
Soweit war ich auch :)
Jedoch fand ich keinen Ort wo ich die SPRACHE definieren kann. Ich kann das Datums, und Währungsformat festlegen so das das englische XP mir als Datum "Dienstag" anzeigt, sowie meine "Postion" und natürlich das Keyboardlayout. Eine Spracheinstellung konnte ich nicht finden. Aber ich bin wohl einfach zu dumm für Windows. -.-