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)Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access