config: refactor install language, fix issues with getlocale on mac (#1250)

This commit is contained in:
Alfredo Monclus 2024-01-25 22:47:08 -03:00 committed by GitHub
parent b5e87152f1
commit af8bd7050d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -116,24 +116,23 @@ class KlipperScreenConfig:
lang = self.get_main_config().get("language", None)
logging.debug(f"Selected lang: {lang} OS lang: {locale.getlocale()[0]}")
if lang not in self.lang_list:
lang = self.find_language(lang)
self.install_language(lang)
def find_language(self, lang):
if lang in (None, "system_lang"):
sys_lang = locale.getlocale()[0]
if sys_lang is None or len(sys_lang) < 2:
return "en"
if sys_lang in self.lang_list:
return sys_lang
for language in self.lang_list:
if sys_lang.startswith(language):
return language
return next((language for language in self.lang_list if lang.startswith(language)), "en")
def install_language(self, lang):
if lang is None or lang == "system_lang":
for language in self.lang_list:
if locale.getlocale()[0].startswith(language):
logging.debug("Using system lang")
lang = language
if lang is not None and lang not in self.lang_list:
# try to match a parent
for language in self.lang_list:
if lang.startswith(language):
lang = language
self.set("main", "language", lang)
if lang not in self.lang_list:
logging.error(f"lang: {lang} not found")
logging.info(f"Available lang list {self.lang_list}")
lang = "en"
logging.info(f"Using lang {lang}")
self.lang = self.langs[lang]
self.lang.install(names=['gettext', 'ngettext'])