Name

translation

Synopsis

translation(domain,localedir=None,languages=None)

Searches for a .mo file similarly to function install. When languages is None, translation looks in the environment for the lang to use, like install. However, languages can also be a list of one or more lang names separated by colons (:), in which case translation uses the first of these names for which it finds a .mo file. Returns an instance object that supplies methods gettext (to translate a plain string), ugettext (to translate a Unicode string), and install (to install gettext or ugettext under name _ into Python’s built-in namespace).

Function translation offers more detailed control than install, which is like translation( domain,localedir ).install( unicode ). With translation, you can localize a single package without affecting the built-in namespace by binding name _ on a per-module basis, for example with:

_ = translation(domain).ugettext

translation also lets you switch globally between several languages, since you can pass an explicit languages argument, keep the resulting instance, and call the install method of the appropriate language as needed:

import gettext
translators = {  }
def switch_to_language(lang, domain='my_app', 
                       use_unicode=False):
    if not translators.has_key(lang):
        translators[lang] = \
        gettext.translation(domain, languages=[lang])
    translators[lang].install(use_unicode)

Get Python in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.