[Python-de] wie can ich locale setzen

Martin v. Loewis martin at v.loewis.de
Tue Oct 30 09:31:38 EST 2001


> Diese Konstante wiederum wird (gemäss meinem Stöbern in der Doku) von
> setlocale beinflusst. Ich hoffe damit string.letters um Umlaute zu
> Erweitern.

Das stimmt; string.letters ändert sich tatsächlich in Abhängigkeit der
aktuellen locale.

> Nun zum Verhalten von setlocale:
> 
> >>> import locale
> >>> locale.setlocale(locale.LC_ALL, "de_DE")
> Traceback (most recent call last):
>   File "<interactive input>", line 1, in ?
>   File "K:\Programme\Python21\lib\locale.py", line 374, in setlocale
>     return _setlocale(category, locale)
> Error: locale setting not supported
> >>>

Das bedeutet, dass die locale "de_DE" dem Betriebssystem nicht bekannt
ist. Leider ist ein solches Problem etwas schwieriger zu untersuchen:
- die Namen der locale für deutsch/Deutschland sind auf verschiedenen
  Betriebssystemen verschieden.
- manche Betriebssysteme benötigen separat installierte Files, bevor
  eine locale funktioniert

Kurz: Um dieses Problem zu lösen, muss man sich in den Details der
Betriebssysteminstallation umschauen. Auf meinem System (SuSE 7.3)
funktioniert dieser Aufruf ohne weiteres, so dass eine
Miskonfiguration Deines Betriebssystems oder der Zopeinstallation
wahrscheinlich ist.

Man kann vielleicht erstmal Zope als Fehlerquelle dadurch
ausschliessen, dass man eine separate Python-Installation verwendet.
Wenn der Fehler dann immer noch der gleiche ist, liegt es nicht am
Zope.

Unter Linux braucht man eine Reihe von Dateien für eine locale, die
sich, in Abhängigkeit von der Version, in /usr/lib/locale oder
/usr/share/locale befinden. Dort sollte es dann ein Verzeichnis de_DE
geben, in dem es eine Datei LC_CTYPE gibt. Wenn es das nicht gibt
(sondern beispielsweise nur ein Verzeichnis de), dann kann man noch
die Datei locale.alias inspizieren, ob de_DE dort als Alias definiert
ist. Wenn man keine Spuren von de_DE findet, ist das Problem ganz
einfach: de_DE ist nicht installiert.

Wenn de_DE vorhanden ist, kann es immer noch sein, dass dieses
Verzeichnis miskonfiguriert ist. Beispielsweise wurden mit glibc 2.2
eine Reihe weiterer locale-Kategorien eingeführt (LC_PAPER,
LC_TELEPHONE, ...). Wenn glibc erneuert wurde, ohne die locales neu zu
generieren, funktioniert LC_ALL nicht mehr.

Warum es unter NT nicht funktioniert, kann ich nicht genau sagen.
Vielleicht ist nicht die deutsche Version installiert, vielleicht
heisst die deutsche locale anders - probier mal, ob man mit "german"
mehr Erfolg hat.

Ciao,
Martin



More information about the Python-de mailing list