GNU bug report logs - #45871
Incorrect currency symbol used by locale support

Previous Next

Package: guile;

Reported by: Guenther Brunthaler <gb_about_gnu <at> gmx.net>

Date: Thu, 14 Jan 2021 19:31:01 UTC

Severity: normal

Full log


View this message in rfc822 format

From: Guenther Brunthaler <gb_about_gnu <at> gmx.net>
To: 45871 <at> debbugs.gnu.org
Subject: bug#45871: Incorrect currency symbol used by locale support
Date: Thu, 14 Jan 2021 20:19:54 +0100
The (locale-currency-symbol) procedure uses the wrong locale setting,
which effects the formatting of monetary amounts:

scheme@(guile-user)> (use-modules (ice-9 i18n))
scheme@(guile-user)> (setlocale LC_ALL "")
$3 = "de_AT.UTF-8"
scheme@(guile-user)> (display (monetary-amount->locale-string +123.456
#f)) (newline)
-€ 123,46

A negative amount???

This seems to be the source of the problem:

scheme@(guile-user)> (locale-currency-symbol #f)
$2 = "-€"

(Note if your e-mail agent cannot display the currency symbol correctly:
The symbol ought to be displayed as the EUR-sign.)

Obviously, the implementation uses the "crncystr" setting:

$ locale -kc LC_MONETARY | grep -E '€'
currency_symbol="€"
crncystr="-€"
duo_currency_symbol="€"

Problem resolution: The implementation should use the "currency_symbol"
setting rather than the "crncystr" setting.

Alternatively, the "crncystr" can be used, but then the first character
should be interpreted as defined by the POSIX standard, i. e. as a mode
indicator and not as part of the actual currency symbol.




This bug report was last modified 4 years and 151 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.