localizate patch
This commit is contained in:
parent
8f251dcf91
commit
95e39b72cf
@ -11,12 +11,15 @@ class Localizer:
|
||||
self.locales_path = os.path.join("app/locales")
|
||||
self.translations = {}
|
||||
|
||||
self.lang = self.settings.value("language", ('ru', 'Русский'))
|
||||
lang_code = self.settings.value("language", "ru")
|
||||
available_langs = self.get_available_languages()
|
||||
if self.lang not in available_langs:
|
||||
self.lang = available_langs[0] if available_langs else ('ru', 'Русский')
|
||||
available_codes = [code for code, _ in available_langs]
|
||||
|
||||
self.load_language(self.lang[0])
|
||||
if lang_code not in available_codes:
|
||||
lang_code = available_codes[0] if available_codes else "ru"
|
||||
|
||||
self.lang = lang_code
|
||||
self.load_language(self.lang)
|
||||
|
||||
def get_available_languages(self):
|
||||
"""
|
||||
@ -41,17 +44,19 @@ class Localizer:
|
||||
if config.DEBUG: print("langs", langs)
|
||||
return langs
|
||||
|
||||
def load_language(self, lang):
|
||||
def load_language(self, lang_code):
|
||||
"""Загружает перевод из JSON-файла"""
|
||||
lang_file = os.path.join(self.locales_path, f"{lang}.json")
|
||||
lang_file = os.path.join(self.locales_path, f"{lang_code}.json")
|
||||
if os.path.exists(lang_file):
|
||||
with open(lang_file, "r", encoding="utf-8") as file:
|
||||
self.translations = json.load(file)
|
||||
self.lang = lang
|
||||
self.settings.setValue("language", lang[0])
|
||||
if config.DEBUG: print(f"[Localizer.load_language] ✅ Язык загружен: {lang}")
|
||||
self.lang = lang_code
|
||||
self.settings.setValue("language", lang_code)
|
||||
if config.DEBUG:
|
||||
print(f"[Localizer.load_language] ✅ Язык загружен: {lang_code}")
|
||||
else:
|
||||
if config.DEBUG: print(f"[Localizer.load_language] ❌ Файл локализации не найден: {lang_file}")
|
||||
if config.DEBUG:
|
||||
print(f"[Localizer.load_language] ❌ Файл локализации не найден: {lang_file}")
|
||||
|
||||
def translate(self, key, code=None):
|
||||
"""Возвращает перевод слова"""
|
||||
@ -62,9 +67,6 @@ class Localizer:
|
||||
|
||||
def switch_language(self, lang):
|
||||
"""Переключает языки, если язык доступен"""
|
||||
if isinstance(lang, (tuple, list)):
|
||||
lang = lang[0]
|
||||
|
||||
available_langs = [code for code, _ in self.get_available_languages()]
|
||||
if lang in available_langs:
|
||||
self.load_language(lang)
|
||||
|
||||
@ -258,6 +258,7 @@ class LoginView(QWidget):
|
||||
|
||||
def change_language(self, display_name):
|
||||
lang_code = self.lang_map.get(display_name)
|
||||
print("lang_code", lang_code)
|
||||
if lang_code:
|
||||
localizer.switch_language(lang_code)
|
||||
self.update_ui_language()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user