import streamlit as st import json import os import logging # Configuration du logger logging.basicConfig(level=logging.INFO) logger = logging.getLogger("translations") def load_translations(lang="fr"): """ Charge les traductions depuis le fichier JSON correspondant à la langue spécifiée. Args: lang (str): Code de langue (par défaut: "fr" pour français) Returns: dict: Dictionnaire des traductions ou un dictionnaire vide en cas d'erreur """ try: file_path = os.path.join("assets", "locales", f"{lang}.json") if not os.path.exists(file_path): logger.warning(f"Fichier de traduction non trouvé: {file_path}") return {} with open(file_path, "r", encoding="utf-8") as f: translations = json.load(f) logger.info(f"Traductions chargées: {lang}") return translations except Exception as e: logger.error(f"Erreur lors du chargement des traductions: {e}") return {} def get_translation(key, default=None): """ Récupère une traduction par sa clé. Les clés peuvent être hiérarchiques, séparées par des points. Exemple: "header.title" pour accéder à translations["header"]["title"] Args: key (str): Clé de traduction (peut être hiérarchique comme "header.title") default (str, optional): Valeur par défaut si la traduction n'est pas trouvée Returns: str: Texte traduit ou valeur par défaut """ # Initialiser les traductions si nécessaire if "translations" not in st.session_state: st.session_state.translations = load_translations("fr") st.session_state.lang = "fr" # Si aucune traduction n'est chargée, retourner la valeur par défaut if not st.session_state.get("translations"): return default if default is not None else key # Parcourir la hiérarchie des clés keys = key.split(".") current = st.session_state.translations for k in keys: if not isinstance(current, dict) or k not in current: return default if default is not None else key current = current[k] return current def set_language(lang="fr"): """ Force l'utilisation d'une langue spécifique. Args: lang (str): Code de langue à utiliser """ st.session_state.lang = lang st.session_state.translations = load_translations(lang) # Initialiser la langue française par défaut def init_translations(): """Initialise les traductions avec la langue française""" if "translations" not in st.session_state: set_language("fr") # Raccourci pour get_translation _ = get_translation