[Python-de] Locale saugt

Georg Mischler schorsch at schorsch.com
Fre Aug 1 07:42:40 EDT 2003


Gerson Kurz wrote:

> default = locale.getdefaultlocale()
> print "default locale ist %s" % str(default)

Bei mir passiert folgendes (Suse 8.1):

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.2/locale.py", line 337, in getdefaultlocale
    return _parse_localename(localename)
  File "/usr/lib/python2.2/locale.py", line 271, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: de_DE at euro


> # laut doku zu strftime ist, Zitat
> # "%c Locale's appropriate date and time representation "
>
> print 'Das ist aber keine Deutsche Datumsangabe: %s' % time.strftime("%c")

http://www.python.org/doc/current/lib/node264.html
  Initially, when a program is started, the locale is the "C"
  locale, no matter what the user's preferred locale is. The
  program must explicitly say that it wants the user's preferred
  locale settings by calling setlocale(LC_ALL, '').

Funktioniert also exakt wie dokumentiert.
Interessanterweise funktioniert die Umstellung bei mir trotz des
obigen Problems mit dem "... at euro". Getdefaultlocale() scheint also
eher etwas uebervorsichtig zu sein.


> # das ist auch toll:
> try:
>     locale.setlocale(locale.LC_ALL, default[0])
> except Exception, e:
>     print "setlocale('%s') schlägt fehl: %s" % (default[0], e)
>
> # undokumentiert, geht aber offensichtlich
> locale.setlocale(locale.LC_ALL, "german")

> # dokumentiert, geht aber nicht:
> try:
>     print locale.D_T_FMT
> except AttributeError, e:
>     print "locale.D_T_FMT gibt es nicht: %s" % str(e)

http://www.python.org/doc/current/lib/module-locale.html
  The locale module is implemented on top of the _locale module,
  which in turn uses an ANSI C locale implementation if
  available.

Schlüsselwort: "if available". Also ist es in diesem Punkt
wahrscheinlich eher dein OS, welches saugt, nicht das Python
locale Modul.

Wahrscheinlich hättest du jetzt gerne, dass das locale Modul alle
Inkonsistenzen und Bugs der jeweiligen OS-Implementation abfängt,
und gleich auch noch alle denkbaren Fehlkonfigurationen. Dem
Wunsch als solchem kann ich mich durchaus anschliessen, ich weiss
allerdings nicht, ob das mit vertretbarem Aufwand zu realisieren
waere. Aber die Maintainer werden sich ueber entsprechende
Patches sicher freuen...


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/