Re: locale Verwirrungen

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 23 Feb 2004 15:39:57 +0100 (CET)

Ulrich Spoerlein <q(at)uni.de> wrote:
> On Fri, 20.02.2004 at 11:34:52 +0100, Oliver Fromme wrote:
> > Es gibt meines Wissens leider keine Funktionalit=E4t im
> > Locale- bzw. NL-System, das die Pr=E4ferenz f=FCr eine 12-
> > oder 24-Stunden-Uhr in einer Sprache festlegt.
>
> Nunja, _das_ ist schlecht :(

Wie man's nimmt ... Das beste wäre eigentlich, dem Benut-
zer die Wahl zu überlassen (per Option, Environment, Konfi-
gurationsdatei oder was auch immer).

> > > 1. Frage: Wenn ich LC_TIME oder LC_ALL als Umgebungsvariable setze
> > > aendert sich an der Ausgabe von nl_langinfo() nichts. Warum?
> > Warum sollte sich etwas =E4ndern? Ich verstehe die Frage
> > nicht ganz.
>
> Wie funktioniert das dann in ls(1)? Ich kann ja
> env LC_ALL=en_US.ISO8859-1 ls -l
> aufrufen und bekomme englische Monatsnamen. Bei
> env LC_ALL=de_DE.ISO8859-1 ls -l
> hingegen deutsche. Sollte sich nl_langinfo() nicht die
> Umgebungsvariablen ansehen und dann den passenden String liefern?

Du bringst da Locales und NLS durcheinander, scheint mir.
Das sind orthogonale Konzepte.

nl_langinfo() liefert ja nicht die Monatsnamen, sondern nur
Formatstrings für bestimmte Zeit/Datum-Kombinationen. Mit
diesen kann »ls -l« aber nichts anfangen. Es ist sozusagen
die falsche Abstraktionsebene.

»ls -l« verwendet einfach »%b«, was laut strftime(3) die
»national representation of the abbreviated month name«
ist, also bei en_US-Locale »Oct« und bei de_DE-Locale »Okt«
ergibt. nl_langinfo() kommt dabei überhaupt nicht ins
Spiel.

> Nun gut, ich ging davon aus, das 24h in DE Standard sind, und 12h in
> den USA Standard sind.

Wenn ich mal kurz Haare spalte darf: Sowohl 24-Stunden als
Auch 12-Stunden-Darstellung sind sowohl in Deutschland als
auch in den USA Standards. Nur ist in Deutschland die 24-
Stunden-Darstellung in einigen Bereichen üblicher.

> Und ich ging weiterhin davon aus, das
> nl_langinfo() nicht einen _moeglichen_ String zurueckliefert, sondern
> den Standard String (also %H fuer DE und %I fuer US)

Nein, es liefert für jedes Land (sofern existent) den Stan-
dardformatstring für 24-Stunden-Format _und_ den Standard-
formatstring für 12-Stunden-Format -- Je nachdem, wonach
man fragt. ;-)

> > Ja, wenn Du z.B. nl_langinfo(9999) versuchst. Das ist
> > mit »invalid« gemeint. T_FMT_AMPM ist dagegen auch im
> > deutschen Locale völlig zulässig.
>
> Achso, aber ich will kein am/pm in ps! Das kann ich nicht parsen :)

Dann solltest Du Dich beim Autor von ps beklagen. :-)

> sk_SK.ISO8859-2 definiert kein AM/PM, da bekomme ich eine 24h Uhr.

Wahrscheinlich kenne die Leute dort sowas gar nicht.

> Werde wohl am/pm in der de-locale loeschen...

Kannst Du machen, aber das halte ich eher für Pfusch. Der
Bug ist in ps.

Gruß
   Olli

PS: Der Kirchturm bei mir an der Ecke schlägt abends um
acht glücklicherweise auch nur achtmal, nicht zwanzigmal.
:-)

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"That's what I love about GUIs: They make simple tasks easier,
and complex tasks impossible."
        -- John William Chambless
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 23 Feb 2004 - 15:47:34 CET

search this site