localizate patch

This commit is contained in:
unknown 2025-09-09 12:13:41 +03:00
parent 8f251dcf91
commit 95e39b72cf
2 changed files with 16 additions and 13 deletions

View File

@ -11,12 +11,15 @@ class Localizer:
self.locales_path = os.path.join("app/locales") self.locales_path = os.path.join("app/locales")
self.translations = {} self.translations = {}
self.lang = self.settings.value("language", ('ru', 'Русский')) lang_code = self.settings.value("language", "ru")
available_langs = self.get_available_languages() available_langs = self.get_available_languages()
if self.lang not in available_langs: available_codes = [code for code, _ in available_langs]
self.lang = available_langs[0] if available_langs else ('ru', 'Русский')
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): def get_available_languages(self):
""" """
@ -41,17 +44,19 @@ class Localizer:
if config.DEBUG: print("langs", langs) if config.DEBUG: print("langs", langs)
return langs return langs
def load_language(self, lang): def load_language(self, lang_code):
"""Загружает перевод из JSON-файла""" """Загружает перевод из 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): if os.path.exists(lang_file):
with open(lang_file, "r", encoding="utf-8") as file: with open(lang_file, "r", encoding="utf-8") as file:
self.translations = json.load(file) self.translations = json.load(file)
self.lang = lang self.lang = lang_code
self.settings.setValue("language", lang[0]) self.settings.setValue("language", lang_code)
if config.DEBUG: print(f"[Localizer.load_language] ✅ Язык загружен: {lang}") if config.DEBUG:
print(f"[Localizer.load_language] ✅ Язык загружен: {lang_code}")
else: 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): def translate(self, key, code=None):
"""Возвращает перевод слова""" """Возвращает перевод слова"""
@ -62,9 +67,6 @@ class Localizer:
def switch_language(self, lang): def switch_language(self, lang):
"""Переключает языки, если язык доступен""" """Переключает языки, если язык доступен"""
if isinstance(lang, (tuple, list)):
lang = lang[0]
available_langs = [code for code, _ in self.get_available_languages()] available_langs = [code for code, _ in self.get_available_languages()]
if lang in available_langs: if lang in available_langs:
self.load_language(lang) self.load_language(lang)

View File

@ -258,6 +258,7 @@ class LoginView(QWidget):
def change_language(self, display_name): def change_language(self, display_name):
lang_code = self.lang_map.get(display_name) lang_code = self.lang_map.get(display_name)
print("lang_code", lang_code)
if lang_code: if lang_code:
localizer.switch_language(lang_code) localizer.switch_language(lang_code)
self.update_ui_language() self.update_ui_language()