On Wed, Feb 20, 2013 at 8:14 AM, Albert-Jan Roskam <[email protected]> wrote:
> Thank you. So can I simply use the function below to replace 
> locale.getlocale()?
> Will this never cause problems? The thing I remember about setlocale is that
> "thou shalt never call setlocale anywhere else but in the beginning of a 
> script".
> Or am I wrong here? I am always a little reluctant to mess with the host 
> locale.
>
> def getlocale(category=locale.LC_ALL):
>     return locale.setlocale(category)

That's fine. If you only pass in the category it's just a query.

locale.getlocale defaults to a single category (LC_CTYPE) because of
the parsing it does to create the tuple. The issue is that an LC_ALL
query returns all of the categories, delimited by semicolons, if
they're not all the same. In this case locale.getlocale(LC_ALL) raises
a TypeError. But there's no problem using such a locale string with
setlocale LC_ALL.

Also, on Windows locale.getdefaultlocale uses win32 GetLocaleInfo, set
to return ISO 639/3166 language/country codes. These codes don't work
with the MS CRT setlocale, so locale.resetlocale fails.
setlocale(LC_ALL, '') is supported to reset to the default. More here:

setlocale
http://msdn.microsoft.com/en-us/library/x99tb11d

language strings
http://msdn.microsoft.com/en-us/library/39cwe7zf

country/region strings
http://msdn.microsoft.com/en-us/library/cdax410z
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to