code: def transliterate(mode, string, ignore = '', reverse = False ):
      # @todo: arabtex and iso8859-6 need individual handling because in some cases using one-two mapping
      
  
      if mode in available_transliterate_systems():
          MAPPING = ROMANIZATION_SYSTEMS_MAPPINGS[mode]
      else:
          print(mode+"  not supported! \n")
          MAPPING = {}
  
      if reverse:
          mapping = {}
          for k, v in MAPPING.items():
              # reverse the mapping buckwalter <-> unicode
              mapping[v] = k
      else:
          mapping = MAPPING
  
      result = ""
      for char in string:
          if char in mapping.keys() and char not in ignore:
              result += mapping[char]
          else:
              result += char
      return result
docs: encode & decode different  romanization systems
      :param mode:
      :param string:
      :param ignore:
      :param reverse:
      :return: