core.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import json
  2. import locale
  3. from pathlib import Path
  4. I18N_FILE_PATH = Path(__file__).parent / "locale"
  5. DEFAULT_LANGUAGE = "en_US"
  6. def load_language_list(language):
  7. with open(I18N_FILE_PATH / f"{language}.json", "r", encoding="utf-8") as f:
  8. language_list = json.load(f)
  9. return language_list
  10. class I18nAuto:
  11. def __init__(self):
  12. i18n_file = Path(".locale")
  13. if i18n_file.exists():
  14. with open(i18n_file, "r", encoding="utf-8") as f:
  15. language = f.read().strip()
  16. else:
  17. # getlocale can't identify the system's language ((None, None))
  18. language = locale.getdefaultlocale()[0]
  19. if (I18N_FILE_PATH / f"{language}.json").exists() is False:
  20. language = DEFAULT_LANGUAGE
  21. self.language = language
  22. self.language_map = load_language_list(language)
  23. def __call__(self, key):
  24. return self.language_map.get(key, key)
  25. def __repr__(self):
  26. return "Use Language: " + self.language
  27. i18n = I18nAuto()