docs: def trans(self, id, parameters=None, domain=None, locale=None):
          """
          Throws RuntimeError whenever a message is missing
          """
          if parameters is None:
              parameters = {}
  
          if locale is None:
              locale = self.locale
          else:
              self._assert_valid_locale(locale)
  
          if domain is None:
              domain = 'messages'
  
          catalogue = self.get_catalogue(locale)
          if not catalogue.has(id, domain):
              raise RuntimeError(
                  "There is no translation for {0} in domain {1}".format(
                      id,
                      domain
                  )
              )
  
          msg = self.get_catalogue(locale).get(id, domain)
          return self.format(msg, parameters)