Locale

From XPUB & Lens-Based wiki

Locales are ways for the operating system to group information about different language and regional settings.

The following is an example of a command on an Ubuntu Linux machine to see the installed locales:

ls -l /usr/share/i18n/locales/

It may be necessary to install support for locales. On a Debian/Ubuntu system this can be done with:

apt-get install locales

Locales in Python

Python uses locales to make sure certain functions are "smart" and do what is expected of them, based on the conventions of a given region. Rules for alphabetizing, how to display numbers and monetary values, what constitutes a "yes" or a "no" typed value. When using the regular expressions, the meaning of "\w" (word character) is updated so that, for instance, accented characters are included when the locale is set to a French language region.

In general, all one needs to do is to call "setlocale" function to make sure that Python's locale is properly setup to match that of the current system:

import locale
locale.setlocale(locale.LC_ALL, '')

You can also explicitly set a locale, as long as it is available to the system. For instance, the following sets up support for Dutch language (in the Netherlands), using UTF-8 as the preferred character set.

>>> locale.setlocale(locale.LC_ALL, ("nl_NL", "UTF-8"))
'nl_NL.UTF8'

If things work, the setlocale command will return a string representing the selected locale.

If the given locale is not installed on your system, or if the name is given incorrectly you may an error like:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/locale.py", line 478, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

See: http://docs.python.org/library/locale.html