Locale related warning message

John Ralls jralls at ceridwen.us
Fri Aug 19 10:57:10 EDT 2011


On Aug 19, 2011, at 3:24 AM, Geert Janssens wrote:

> Hi,
> 
> Recently I discovered a very weird warning on my test builds. When I open a 
> book with a report open, this line is printed in the trace file:
> 
> WARN <> Monetary thousands separator is the same as the decimal separator; 
> converting '.' to ','
> 
> My LC_CURRENCY is set to nl_BE.UTF-8, for which decimals are separated by a 
> ',' and thousands are separated by ' ' (a blank).
> 
> My first thought was some locale misconfiguration, but it's weirder than that 
> and I fail to understand what is happening. I'll give you all the pieces of 
> the puzzle I discovered so far. Perhaps someone reading this with more 
> knowledge of internationalization can explain this better.
> 
> And upon closer inspection it's not only a matter of a warning. Some input 
> fields are affected too. The register is fine, but for example there's a 
> number field on Preferences->Online Banking called "Commercial ATM Fees 
> treshold". With the rpm based gnucash, this shows a decimal number using ',' 
> while my own builds show the same number with a '.'. I see the same thing in 
> the mortgage druid.
> 
> So the warning is only one symptom and useful to determine at startup already 
> if the build will be affected by the locale bug or not.
> 
> The warning by the way is generated by goffice. If I don't have any tabs open 
> using goffice (certain reports only), I won't have the warning printed, but 
> still the number entry fields show the wrong separator.
> 
> And now it gets curious: I have also installed gnucash 2.4.7 via rpm (on 
> Fedora 14). If I run that one from the command line, the warning isn't issued. 
> But with each and every build in my development tree, the warning is printed. 
> I tried a lot of builds: trunk, 2.4.7, 2.4 just before the 2.4 branch was 
> created,... And I tried to configure exactly as the rpm version was configured 
> (with the exception of aqbanking, but I can hardly imagine this would make a 
> difference).
> 
> The rpm-based version applies one patch to the sources. It suppresses the 
> binreloc disabled warning message. This has no relation to the warning above, 
> it simply removes one printf from the sources.
> 
> My locale related settings my be a bit unusual:
> $ locale
> LANG=en_US.UTF-8
> LC_CTYPE=nl_BE.UTF-8
> LC_NUMERIC=nl_BE.UTF-8
> LC_TIME=nl_BE.UTF-8
> LC_COLLATE=nl_BE.UTF-8
> LC_MONETARY=nl_BE.UTF-8
> LC_MESSAGES=nl_BE.UTF-8
> LC_PAPER=nl_BE.UTF-8
> LC_NAME=nl_BE.UTF-8
> LC_ADDRESS=nl_BE.UTF-8
> LC_TELEPHONE=nl_BE.UTF-8
> LC_MEASUREMENT=nl_BE.UTF-8
> LC_IDENTIFICATION=nl_BE.UTF-8
> LC_ALL=
> $ echo $LANGUAGE 
> en_BE.UTF-8:en_BE:en
> 
> But with the exact same locale settings the rpm version runs ok, and none of 
> my builds do.
> 
> So I don't understand why I'm getting this. I even tried to automake, 
> configure and build with LANG and LANGUAGE set to nl_BE.UTF-8, it doesn't make 
> a difference.
> 
> Can anyone perhaps shed some light on this ? Or suggest ways to debug it ?

Setting $LANG=en_US is a no-op, because you've set all of $LC_.* to nl_BE.UTF8. That doesn't have anything to do with anything, it's just an observation.

Might you have a separate build of libc or libintl that your gnucash builds are linking? A separate set of locale files?

You can set a breakpoint in core-utils/gnc-locale.c and look  at what's getting set for decimal and thousands separator.

Regards,
John Ralls




More information about the gnucash-devel mailing list