desktop_app/app/core/localizer.py
2025-09-06 06:07:14 +03:00

44 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
import os
from PySide6.QtCore import QSettings
import config
class Localizer:
"""Класс для загрузки и работы с переводами"""
def __init__(self):
self.settings = QSettings("volna_desktop_app", "Localization")
self.lang = self.settings.value("language", "ru") # Загружаем сохраненный язык
#self.locales_path = os.path.join(os.path.dirname(__file__), "locales")
self.locales_path = os.path.join("app/locales")
self.translations = {}
self.load_language(self.lang)
def load_language(self, lang):
"""Загружает перевод из JSON-файла"""
lang_file = os.path.join(self.locales_path, f"{lang}.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) # Сохраняем выбор языка
if config.DEBUG: print(f"[Localizer.load_language] ✅ Язык загружен: {lang}")
else:
if config.DEBUG: print(f"[Localizer.load_language] ❌ Файл локализации не найден: {lang_file}")
def translate(self, key, code=None):
"""Возвращает перевод слова"""
text = self.translations.get(key, key)
if code is not None:
text = f"{text} {code}" # Подставляем код ошибки в строку, если он есть
return text
def switch_language(self, lang):
"""Переключает языки"""
if lang not in ["ru", "en"]:
lang = "ru"
self.load_language(lang)
# Создаем глобальный экземпляр, чтобы использовать в любом месте
localizer = Localizer()