'Add the given translations to the catalog.
If the domain of the translations is different than that of the
current catalog, they are added as a catalog that is only accessible
by the various ``d*gettext`` functions.
:param translations: the `Translations` instance with the messages to
add
:param merge: whether translations for message domains that have
already been added should be merged with the existing
translations
:return: the `Translations` instance (``self``) so that `merge` calls
can be easily chained
:rtype: `Translations`'

def add(self, translations, merge=True):

    domain = getattr(translations, 'domain', self.DEFAULT_DOMAIN)
    if ((domain == self.DEFAULT_DOMAIN) and (self.plural is DEFAULT_PLURAL)):
        self.plural = translations.plural
    if (merge and (domain == self.domain)):
        return self.merge(translations)
    existing = self._domains.get(domain)
    if (merge and (existing is not None)):
        existing.merge(translations)
    else:
        translations.add_fallback(self)
        self._domains[domain] = translations
    return self
