docs: def from_dict(self, dictionary, **kwargs):
          """
          Direct translation, so the value for one key might be a list or a
          single value.
  
          :param dictionary: The info
          :return: A class instance or raise an exception on error
          """
  
          _spec = self.c_param
  
          for key, val in dictionary.items():
              # Earlier versions of python don't like unicode strings as
              # variable names
              if val == "" or val == [""]:
                  continue
  
              skey = str(key)
              try:
                  (vtyp, req, _, _deser, null_allowed) = _spec[key]
              except KeyError:
                  # might be a parameter with a lang tag
                  try:
                      _key, lang = skey.split("#")
                  except ValueError:
                      try:
                          (vtyp, _, _, _deser, null_allowed) = _spec['*']
                          if val is None:
                              self._dict[key] = val
                              continue
                      except KeyError:
                          self._dict[key] = val
                          continue
                  else:
                      try:
                          (vtyp, req, _, _deser, null_allowed) = _spec[_key]
                      except KeyError:
                          try:
                              (vtyp, _, _, _deser, null_allowed) = _spec['*']
                              if val is None:
                                  self._dict[key] = val
                                  continue
                          except KeyError:
                              self._dict[key] = val
                              continue
  
              self._add_value(skey, vtyp, key, val, _deser, null_allowed)
          return self