Re: locale Verwirrungen

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 20 Feb 2004 11:34:52 +0100 (CET)

Ulrich Spoerlein <q(at)uni.de> wrote:
> I versuche gerade herrauszufinden, warum 'ps' darauf besteht am/pm
> auszugeben, obwohl ich z.B. LC_TIME=de_DE.ISO8859-1 definiert habe.

Weil der Programmierer, der das "use_ampm"-Feature in
src/bin/ps/print.c eingebaut hat, nicht verstanden hat,
wie nl_langinfo funktioniert. :-)

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.

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

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

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

Gruß
   Olli

-- 
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.
"One of the main causes of the fall of the Roman Empire was that,
lacking zero, they had no way to indicate successful termination
of their C programs."
        -- Robert Firth
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 20 Feb 2004 - 11:42:06 CET

search this site