from json import JSONDecodeError, load from os import listdir, path from typing import Dict import app.utils.paths as paths class LanguageManager: """ Gère les traductions pour l'application. Charge les fichiers JSON de langue dans data/lang/, permet de changer la langue courante, et récupérer des textes traduits. """ def __init__(self, settings_manager) -> None: self.translations: Dict[str, Dict[str, str]] = {} self.settings_manager = settings_manager self.load_all_translations() def load_all_translations(self) -> None: """ Charge tous les fichiers JSON dans data/lang/ comme dictionnaires. """ lang_dir = paths.get_lang_path() for filename in listdir(lang_dir): if filename.endswith(".json"): lang_code = filename[:-5] # strip .json file_path = path.join(lang_dir, filename) try: with open(file_path, "r", encoding="utf-8") as f: self.translations[lang_code] = load(f) except JSONDecodeError as e: pass def get_text(self, key: str) -> str: """ Retourne le texte traduit correspondant à la clé dans la langue courante. Si la clé n'existe pas, retourne la clé elle-même. """ return self.translations.get(self.settings_manager.get_language(), {}).get(key, key)