code: def get_all_tags_names_as_list(self, admin=False, language="en"):
          
  
          if admin:
              if self._all_tags_cache_list_admin != {} and language in self._all_tags_cache_list_admin:
                  return self._all_tags_cache_list_admin[language] #Cache hit
          else:
              if self._all_tags_cache_list != {} and language in self._all_tags_cache_list:
                  return self._all_tags_cache_list[language] #Cache hit
                          
          #Cache miss, computes everything
          s_stud = set()
          s_admin = set()
          (common, _, org) = self.get_all_tags()
          for tag in common + org:
              # Is tag_name_with_translation correct by doing that like that ?
              tag_name_with_translation = self.gettext(language, tag.get_name()) if tag.get_name() else ""
              s_admin.add(tag_name_with_translation) 
              if tag.is_visible_for_student():
                  s_stud.add(tag_name_with_translation) 
          self._all_tags_cache_list_admin[language] = natsorted(s_admin, key=lambda y: y.lower())
          self._all_tags_cache_list[language] = natsorted(s_stud, key=lambda y: y.lower())
          
          if admin:
              return self._all_tags_cache_list_admin[language]
          return self._all_tags_cache_list[language]
docs: Computes and cache two list containing all tags name sorted by natural order on name