Boost logo

Boost :

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
> right.
> 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, gregod at, cpdaniel at, john at