cross platform use of set locale

Timothy Smith timothy at open-networks.net
Wed Mar 23 16:40:07 EST 2005


Serge Orlov wrote:

>Timothy Smith wrote:
>  
>
>>Serge Orlov wrote:
>>
>>    
>>
>>>Timothy Smith wrote:
>>>
>>>
>>>      
>>>
>>>>thats ok, but how do i get it to group thousands with a , ?
>>>>and thats would mean i'd have to run everything through a formatter
>>>>before i displayed it :/ it'd be nicer if i could just select a
>>>>proper locale
>>>>
>>>>
>>>>        
>>>>
>>>I think you're misusing locale. There is no guarantee that any
>>>specific locale will have properties (like grouping) set to a known
>>>value. Are you trying to format money? Then you need a special class
>>>so that you can say:
>>>
>>>d = Dollars(1000000.01)
>>>print "You have %s in your account" % d
>>>
>>>and get
>>>
>>>You have $1,000,000.01 in your account.
>>>
>>> Serge.
>>>
>>>
>>>
>>>      
>>>
>>thats exactly what i'm trying to do, only having to do that for all
>>my outputs is more work then i'd like :/
>>    
>>
>
>SUS has added numeric grouping
>
>       For  some  numeric conversions a radix character (`decimal
>       point') or thousands'  grouping  character  is  used.  The
>       actual  character  used  depends on the LC_NUMERIC part of
>       the locale. The POSIX locale uses `.' as radix  character,
>       and does not have a grouping character.  Thus,
>                   printf("%'.2f", 1234567.89);
>       results   in   `1234567.89'   in   the  POSIX  locale,  in
>       `1234567,89' in the nl_NL locale, and in `1.234.567,89' in
>       the da_DK locale.
>
>but they hasn't added monetary grouping. I don't think you'll
>get monetary grouping anytime soon. Besides as far as I understood
>your question, you *always* want grouping, right?
>
>Actually I don't think a cryptic flag is better than an explicit
>formatter. What do you think is more clear for a maintainer of your
>code?
>
>print "%'.2f" % amount
>
>or
>
>print "%s" % dollars(amount)
>
>
>
>
>
>  
>
>>why is this a misuse of locale? it's exactly what locale is meant for
>>isn't it?
>>    
>>
>
>I just reacted to your words "select a proper locale" and "how do i get
>it to group thousands with a ,". It's just not a good idea to select
>a locale and expect the grouping character to be "," or expect
>grouping,
>see nl_NL locale example above.
>
>  Serge.
>
>  
>
i'm pretty sure english au uses thousands grouping with ,
i've managers to make this work, however it just isn't cross platform at 
all.




More information about the Python-list mailing list