de_DE has been using the wrong group separator for over 18 years

Rafal Luzynski digitalfreak@lingonborough.com
Wed Apr 18 21:05:00 GMT 2018


18.04.2018 10:30 kdex <kdex@kdex.de> wrote:
>
> On Wednesday, April 18, 2018 9:14:45 AM CEST Florian Weimer wrote:
> > On 04/18/2018 12:24 AM, kdex wrote:
> > > To give some context: I have previously posted the following on
> > > libc-locales and was asked to bring this to the attention of senior
> > > developers on this least who speak German.
> > >
> > > I have noticed that the locale `de_DE` has erroneously been using a full
> > > stop (U+002E) for the thousands (group) separator in `mon_thousands_sep`
> > > and `thousands_sep` ever since 2000. The usage of a full stop to group
> > > thousands has (to my knowledge) has never been standardized.
> > >
> > > As per DIN 1333, DIN 5008, and DIN EN ISO 80000, the separator should have
> > > been a thin space (U+2009).
> > >
> > > In fact, DIN 1333 even explicitly forbids the usage of U+002E to group
> > > thousands, and DIN EN ISO 80000 explicitly excludes all other characters
> > > than a thin space.
> >
> > These standards are simply not universally used. They aren't exactly
> > wrong, either, because some typesetters actually use a (thin) space.
> > It's just that adoption is poor.

Florian, this is ambiguous: do you mean "not universally used, except for
financial institutions" or "not universally used, even by financial
institutions"?  Note that there is mon_thousands_sep (in LC_MONETARY)
and thousands_sep (in LC_NUMERIC) so it is possible to set different
thousands separators to format amounts of money and to format other numbers.

> [...]
> > I don't think the locales need to change. Using characters from the
> > ASCII range for printing numbers has its advantages.
> I don't think this premise is correct: In de_DE, amounts of money include
> `currency_symbol` (U+20AC), which is not in the ASCII range. [...]

This is an euro sign (€) and it is displayed as it is in the locales
implementing Unicode (e.g., de_DE.UTF-8).  In de_DE.ISO-8859-15@euro
it is converted to 0xa4 character which is again an euro sign in
ISO 8859-15.  In de_DE.ISO-8859-1 it is converted to "EUR" string.
So in every charset it is displayed correctly.  My point is that it
is safe to use sophisticated Unicode characters (like narrow space etc.)
in the locale data source code and assume that localedef handles it
smartly in every charset.

Of course I don't know what grouping separator is correct for Germany,
I'm only reminding possible technical solutions.

Regards,

Rafal



More information about the Libc-alpha mailing list