TranslationΒΆ

translationstring provides a function named translationstring.Translator() which is used to create a translator object.

It is called like so:

1
2
3
4
import gettext
from translationstring import Translator
translations = gettext.translations(.. the right arguments ...)
translator = Translator(translations)

The translations argument is required; it should be an object supporting at least the Python gettext.NullTranslations API but ideally the babel.support.Translations API, which has support for domain lookups like dugettext.

The callable returned accepts three arguments: a translation string tstring (required), domain (optional), and mapping (optional). When called, it will translate the tstring translation string to a unicode object using the translations object provided and interpolate the result.

1
2
3
4
5
6
7
8
from gettext import translations
from translationstring import Translator
from translationstring import TranslationString

t = translations(.. the right arguments ...)
translator = Translator(t)
ts = TranslationString('Add ${number}', domain='foo', mapping={'number':1})
translator(ts)

If translations is None, the result of interpolation of the msgid or default value of the translation string is returned.

The translation function can also deal with plain Unicode objects. The optional domain argument can be used to specify or override the domain of the tstring argument (useful when tstring is a normal string rather than a translation string). The optional mapping argument can specify the interpolation mapping, useful when the tstring argument is not a translation string. If tstring is a translation string its mapping data, if present, is combined with the data from the mapping argument.

1
2
3
4
5
6
7
from gettext import translations
from translationstring import Translator
from translationstring import TranslationString

t = translations(.. the right arguments ...)
translator = Translator(t)
translator('Add ${number}', domain='foo', mapping={'number':1})

The translationstring.Translator() function accepts an additional optional argument named policy. policy should be a callable which accepts three arguments: translations, tstring and domain. It must perform the actual translation lookup. If policy is None, the translationstring.dugettext_policy() policy will be used.