Gettext initalisieren unter Windows

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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.

-.-
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Ich kenne das Problem, die Locale scheint unter Windows

Code: Alles auswählen

German_Germany.1252
zu heissen. :(
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Irgend wie scheint es mir als würde Windows etwas mit LANG vergleichbares nicht kennen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
Zuletzt geändert von gerold am Dienstag 28. August 2007, 22:23, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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. -.-
Antworten