Re: locale Verwirrungen

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 23 Feb 2004 14:54:26 +0100 (CET)

Peter Wullinger <some-mail-drop(at)gmx.net> wrote:
> On Fri, Feb 20, 2004 at 03:13:59PM +0100, Oliver Fromme wrote:
> > Nein, denn seine Methode, die Variable use_ampm zu initia-
> > lisieren, ist »bogus«.
>
> In Single UNIX v3 steht dazu:
> » nl_langinfo() shall return a pointer to an empty
> string if item contains an invalid setting. «
>
> Kann man sich jetzt drüber streiten, ob in Ländern,
> in denen es kein offizielles, eindeutiges 12 h-Zeitformat
> gibt, T_FMT_AMPM als Parameter jetzt ungültig ist oder
> nicht.

Also, meine Ausgabe des Duden behauptet, daß im Deutschen
die Schreibweise »5.35 a.m.« bzw »p.m.« zulässig ist, um
eine 12-Stunden-Darstellung mit ante-meridiem bzw. post-
meridiem anzugeben (im Gegensatz zur US-Schreibweise mit
Kleinbuchstaben, Punkten und einem Leerschritt). Klingt
für mich offiziell und eindeutig.

Demzufolge wären allerdings die Strings im NLS von FreeBSD
falsch. Statt »am« und »pm« müßte es » a.m.« und » p.m.«
liefern. Da solte man eigentlich 'nen PR einreichen.

> > Nunja, das gleiche Problem wie mit Datum/Zeit bei »ls -l«.
> > Aber das hat er bereits durch eine Fallunterscheidung ge-
> > löst, ganz ähnlich wie bei ls. Das hat aber nichts damit
> > zu tun, ob er 12- oder 24-Stunden-Format verwendet. Die
> > Spaltenbreite ist so gewählt, daß beides hineinpassen wür-
> > de.
>
> Das nicht, aber er schnippelt auch noch an der Zeit
> rum und schreibt nur den Tag raus, wenn es über
> 24 Stunden sind

Ja, wie ich schon schrieb -- ganz ähnlich wie ls -l, das
nur bei Zeiten, die jünger als 6 Monate sind, die Uhrzeit
angibt (und dann auf das Jahr verzichtet), ansonsten nur
Jahr und Tag. Da die Spalte bei ps noch etwas schmaler
sein sollte, wurde die Fallunetrscheidung noch etwas rigo-
roser gemacht.

> (was auch Blödsinn ist, weil man
> ja bis 99 Stunden in zwei Stellen unterbringen kann).

Naja, in der Praxis kann man mit der Angabe »4 Tage« wohl
meistens mehr anfangen als mit »99 Stunden«. Aber darüber
könnte man vermutlich streiten.

> Erinnert mich an ein nettes Progrämmchen Namens
> netsaint ... das hat auch die Ausgabe von "ping"
> geparsed und sich dann gewundert, daß auf einer
> SuSE 7.2 die Ausgabe auf deutsch lokalisiert war ;-).

Ja, ich habe auch schon Skripte gesehen, die »ls -l« par-
sen, um die mtimes von Dateien herauszufinden, und die dann
ins Schleudern kommen, wenn da »Okt«, »Jän« u.ä. steht.
:-)

> > Falls Du mit irgendwelchen Encodings arbeitest (UTF-* oder
> > sonstwas), dann ist es wohl das einfachste, Du konvertierst
> > es zunächst nach Unicode bzw. ISO10646, denn dann hast Du
> > eine konstante Anzahl von Bytes pro Zeichen, und dividierst
> > dann die Anzahl der Bytes durch 2 (oder 4).
>
> Wenn man das dauernd machen muß ist das höllisch aufwändig
> (sprich ineffizient).

Tja, dann einfach immer mit Unicode-Strings arbeiten.
Einige Sprachen (nicht C) machen's ja bereits vor, und
besonders ineffizient ist das nicht.

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.
"C++ is to C as Lung Cancer is to Lung."
        -- Thomas Funke
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:02:08 CET

search this site