'Return the translation for the given combination of ``name``,
``type``, ``language`` and ``source``. All values passed to this method
should be unicode (not byte strings), especially ``source``.
:param name: identification of the term to translate, such as field name (optional if source is passed)
:param types: single string defining type of term to translate (see ``type`` field on ir.translation), or sequence of allowed types (strings)
:param lang: language code of the desired translation
:param source: optional source term to translate (should be unicode)
:param res_id: optional resource id or a list of ids to translate (if used, ``source`` should be set)
:rtype: unicode
:return: the request translation, or an empty unicode string if no translation was
found and `source` was not passed'

@api.model
def _get_source(self, name, types, lang, source=None, res_id=None):

    if (not lang):
        return tools.ustr((source or ''))
    if isinstance(types, basestring):
        types = (types,)
    if res_id:
        if isinstance(res_id, (int, long)):
            res_id = (res_id,)
        else:
            res_id = tuple(res_id)
    return self.__get_source(name, types, lang, source, res_id)
