'Translate a :term:`translation string` to the current language
and interpolate any *replacement markers* in the result.  The
``translate`` method accepts three arguments: ``tstring``
(required), ``domain`` (optional) and ``mapping`` (optional).
When called, it will translate the ``tstring`` translation
string to a ``unicode`` object using the current locale.  If
the current locale could not be determined, the result of
interpolation of the default value is returned.  The optional
``domain`` argument can be used to specify or override the
domain of the ``tstring`` (useful when ``tstring`` is a normal
string rather than a translation string).  The optional
``mapping`` argument can specify or override the ``tstring``
interpolation mapping, useful when the ``tstring`` argument is
a simple string instead of a translation string.
Example::
from pyramid.18n import TranslationString
ts = TranslationString(\'Add ${item}\', domain=\'mypackage\',
mapping={\'item\':\'Item\'})
translated = localizer.translate(ts)
Example::
translated = localizer.translate(\'Add ${item}\', domain=\'mypackage\',
mapping={\'item\':\'Item\'})'

def translate(self, tstring, domain=None, mapping=None):

    if (self.translator is None):
        self.translator = Translator(self.translations)
    return self.translator(tstring, domain=domain, mapping=mapping)
