Subject: Re: [boost] [locale] Review
From: Artyom (artyomtnk_at_[hidden])
Date: 2011-04-18 17:25:35
> >> My language settings currently use ',' as decimal separator as do the
> >> for
> >> the french (Canada) language settings.
> >> The commented out version outputs "3,14000000001".
> >> This is what I would expect to happen. The boost::locale version
> >> outputs "3.14000000001".
> >> It looks to me like the punctuation stuff isn't being set up correctly.
> >> The as::number thing doesn't do anything either. Only locale::format
> >> on
> >> and does it right.
> > It is by design.
> Then what is the correct work-around to get past this "design"? Some
> people, like me, make frequent use of boost::format (which your version
> cannot replace because it does not implement 'g' formatting), and other
> functions that output in characters specific to the locale and know
> nothing about as::anything.
I see much more complains about the other way around when people
accidentially getting csv files like
3,435, 3,456, 3,345
And don't understand why.
> This is a problem. The library, perhaps rightly, doesn't follow
> standard conventions but it also doesn't replicate those functions which
> do. Can I use only your translation functionality without imbuing the
> streams with your locale?
Yes you can use *gettext API and pass locale explicitly, you can
also install message facets only and not formatting
ones (see generator reference documentation).
> Something tells me that won't work out quite
> If this design is going to stick, then there certainly needs to be a
> documented workaround so that those of us who need the behavior can get it.
There are two workarounds:
1. Use boost::locale::as::number manipulator.
2. Use locale you want as base locale in generator:
// the base is C++ librarie's default one.
But I really do not recommend you doing anything like that.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk