Next: Java, Previous: C, C++, Objective C, Up: Individual Programming Languages [Contents][Index]
python
python
py
'abc', u'abc', r'abc', ur'abc',
"abc", u"abc", r"abc", ur"abc",
'''abc''', u'''abc''', r'''abc''', ur'''abc''',
"""abc""", u"""abc""", r"""abc""", ur"""abc"""
_('abc') etc.
gettext.gettext, gettext.dgettext,
gettext.ngettext, gettext.dngettext,
also ugettext, ungettext
gettext.textdomain function, or
gettext.install(domain) function
gettext.bindtextdomain function, or
gettext.install(domain,localedir) function
not used by the gettext emulation
import gettext
emulate
xgettext
'...%(ident)d...' % { 'ident': value }
'...{ident}...'.format(ident=value)
'...{0}...{1}...'.format(value0,value1)
'...{}...{}...'.format(value0,value1)
fully portable
—
An example is available in the examples directory: hello-python.
A note about format strings: Python supports format strings with unnamed
arguments, such as '...%d...', and format strings with named arguments,
such as '...%(ident)d...'. The latter are preferable for
internationalized programs, for two reasons:
"'%(volume)s' has only %(freespace)d bytes free."
to
"Only %(freespace)d bytes free on '%(volume)s'."
Additionally, the identifiers also provide some context to the translator.
"one hour" instead of "1 hour". Omitting
individual arguments from format strings like this is only possible with
the named argument syntax. (With unnamed arguments, Python – unlike C –
verifies that the format string uses all supplied arguments.)
A note about f-strings (PEP 498): xgettext
However, xgettext does not extract f-strings marked for translation
that contain sub-expressions. This will not work as expected:
_(f"The file {file[i]} does not exist.")
because the translator is generally not a programmer and should thus not be confronted with expressions from the programming language.
An internationalization system based on GNU gettext and PO files is Babel.
Next: Java, Previous: C, C++, Objective C, Up: Individual Programming Languages [Contents][Index]