+ """
+ Returns 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
+ :param type: type of term to translate (see ``type`` field on ir.translation)
+ :param lang: language code of the desired translation
+ :param source: optional source term to translate (should be unicode)
+ :rtype: unicode
+ :return: the request translation, or an empty unicode string if no translation was
+ found and `source` was not passed
+ """
+ # FIXME: should assert that `source` is unicode and fix all callers to always pass unicode
+ # so we can remove the string encoding/decoding.
+