language.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from . import logger
  2. from abc import ABC, abstractmethod
  3. import gettext
  4. class language(ABC):
  5. def __init__(self):
  6. self.logger = logger.loader.get()
  7. def get(self, find):
  8. if (self.exists(find)):
  9. return self.translate(find)
  10. self.logger.warning("Can not translate: \"" + find + "\"")
  11. return find
  12. @abstractmethod
  13. def exists(self, find):
  14. pass
  15. @abstractmethod
  16. def translate(self, find):
  17. pass
  18. class gettext_parser(language):
  19. def __init__(self, domain = None, path = None):
  20. super().__init__()
  21. if domain is None:
  22. domain = "cx-newsletter-importer"
  23. if path is None:
  24. path = "./langugage/"
  25. self.domain = domain
  26. self.path = path
  27. self.prepare_gettext()
  28. def prepare_gettext(self):
  29. self.logger.info("Loading language to gettext")
  30. self.logger.info("Language text domain: " + self.domain)
  31. self.logger.info("Language path: " + self.path)
  32. gettext.bindtextdomain(self.domain, self.path)
  33. gettext.textdomain(self.domain)
  34. def exists(self, fing):
  35. return False
  36. def translate(self, find):
  37. return find
  38. class loader:
  39. _language = None
  40. def get():
  41. if loader._language is None:
  42. Exception("Language must be set in loader first.")
  43. return loader._language
  44. def set(new_language):
  45. if type(new_language) is not language:
  46. Exception("Language is not language class.")
  47. loader._language = new_language
  48. def __init__(self):
  49. Exception("Loader is static class.")