Hi, Martin Michel <d...@famic.de> skribis:
> From: Vladimir Zhbanov <vzhba...@gmail.com> > Subject: Re: Formatted output with locale > To: d...@famic.de, 24...@debbugs.gnu.org > Date: Mon, 14 Nov 2016 09:03:19 +0300 (12 weeks, 6 days, 15 hours ago) > > Hi Martin, > > On 11/13/16, d...@famic.de <d...@famic.de> wrote: >> Hi there, >> I have problems to get a proper formatting using the (ice-9 format) >> module. In my code, I need to deal with monetary figures, but I fail >> to get the correct format for my German locale. >> Let's say I have one hundred thousand Euros. The correct format to output >> this in de_DE.utf-8 would be >> 100.000,00 EUR >> (with 2 decimals) >> >> Now I tried: >> (setlocale LC_ALL "de_DE.UTF-8") >> (use-modules (ice-9 format)) >> (define a 100000.00) >> (format #t "~12,2h EUR~%" a) >> (format #t "~,,12$ EUR~%" a) >> (format #t "~12,2f EUR~%" a) >> >> But this is what Guile gives to me: >> 100.000,0 EUR >> 100000.00 EUR >> 100000.00 EUR >> >> None is correct. What did I miss? >> -Martin > > Looking at the `format' code for option `h' I see the procedure > `number->locale-string' is used. > > OK, let's do some experiments: > > scheme@(guile-user)> (setlocale LC_ALL) > $2 = "ru_RU.UTF-8" > scheme@(guile-user)> ,use (ice-9 i18n) > scheme@(guile-user)> (number->locale-string 10.0 5) > $3 = "10,0" > scheme@(guile-user)> (number->locale-string .00003 2) > $4 = "3,0e" > scheme@(guile-user)> (number->locale-string .00003 1) > $5 = "3,0" > scheme@(guile-user)> (number->locale-string .00003 3) > $6 = "3,0e-" > scheme@(guile-user)> (number->locale-string .0 3) > $7 = "-0,0" > scheme@(guile-user)> (number->locale-string .0 10) > $8 = "-0,0" > scheme@(guile-user)> (number->locale-string .0 1) > $9 = "-0,0" > > Now for the procedure monetary-amount->locale-string: > > scheme@(guile-user)> (monetary-amount->locale-string .0 #t) > $10 = "-0.0 RUB " > scheme@(guile-user)> (monetary-amount->locale-string 100000.0 #t) > $11 = "100\xa0000.0 RUB " > scheme@(guile-user)> (monetary-amount->locale-string .00003 #t) > $12 = "3.0e RUB " I believe these are fixed by commit 4aead68cdb86ca60cc372f0cd558cadda90ddec5. You’re welcome to do more testing and report back! Thanks, Ludo’.