Re: locale Verwirrungen

From: Ulrich Spoerlein <q(at)uni.de>
Date: Fri, 20 Feb 2004 17:54:27 +0000

On Fri, 20.02.2004 at 11:34:52 +0100, Oliver Fromme wrote:
> Es gibt meines Wissens leider keine Funktionalität im
> Locale- bzw. NL-System, das die Präferenz für eine 12-
> oder 24-Stunden-Uhr in einer Sprache festlegt.

Nunja, _das_ ist schlecht :(

> > 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 ändern? 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?

> > 2. Frage: Kann mir bitte jemand die folgende Ausgabe erklaeren?:
> > % cc -o ampm ampm.c && ./ampm
> > de_DE:
> > Date: %d.%m.%Y
> > Time: %H:%M:%S
> > AMPM: %I:%M:%S %p
> > en_US:
> > Date: %m/%d/%Y
> > Time: %H:%M:%S
> > AMPM: %I:%M:%S %p
> >
> > Date scheint ja ok zu sein, aber seit wann hat en_US eine 24h Uhr (%H)
> > und warum wird AMPM im Fall von de_DE ueberhaupt zurueckgegeben?
>
> Warum sollte nicht auch jemand in Deutschland eine 12-
> Stunden-Angabe verwenden wollen? Und auch in den USA
> benutzen viele Leute lieber eine 24-Stunden-Angabe.
> Daher existiert berechtigterweise beides in beiden
> Locales. Allerdings sind die Strings falsch; im Deut-
> schen schreibt man »a.m.« bzw. »p.m.« mit Punkt, nicht
> »AM« oder »PM«.

Nun gut, ich ging davon aus, das 24h in DE Standard sind, und 12h in
den USA Standard sind. 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)

> > In
> > nl_langinfo(3) steht:
> > In all locales, nl_langinfo() returns a pointer to an empty string
> > if item contains an invalid setting.
>
> 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 :)
sk_SK.ISO8859-2 definiert kein AM/PM, da bekomme ich eine 24h Uhr. Werde
wohl am/pm in der de-locale loeschen...

Ulrich Spörlein

-- 
PGP Key ID: F0DB9F44				Get it while it's hot!
PGP Fingerprint: F1CE D062 0CA9 ADE3 349B  2FE8 980A C6B5 F0DB 9F44
I abhor a system designed for the "user", if that word is a coded
pejorative meaning "stupid and unsophisticated".	-- Ken Thompson

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 21 Feb 2004 - 11:59:10 CET

search this site