docs: def transchoice(self, id, number, parameters=None, domain=None, locale=None):
          """
          Raises a RuntimeError whenever a message is missing
          @raises: RuntimeError
          """
          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)
          while not catalogue.defines(id, domain):
              cat = catalogue.fallback_catalogue
              if cat:
                  catalogue = cat
                  locale = catalogue.locale
              else:
                  break
  
          if not catalogue.has(id, domain):
              raise RuntimeError(
                  "There is no translation for {0} in domain {1}".format(
                      id,
                      domain
                  )
              )
  
          parameters['count'] = number
          msg = selector.select_message(
              catalogue.get(
                  id,
                  domain
              ),
              number,
              locale
          )
          return self.format(msg, parameters)