demorrha / pages /configuration_ui_lang.py
0x07CB
Nettoyage des importations inutilisรฉes dans configuration_ui_lang.py
8c55a56 unverified
# Standard libraries
#import base64
#import io
import json
#import os
#import re
#import tempfile
#import time
#from os import getenv
from typing import Any
from typing import Dict
#from typing import IO
#from typing import List
from typing import Optional
#from typing import Tuple
#from typing import Union
# Third-party libraries
import streamlit as st
from var_app import __version__
LANGUAGES_EMOJI = {
"Afrikaans": "๐Ÿ‡ฟ๐Ÿ‡ฆ", "Arabic": "๐Ÿ‡ธ๐Ÿ‡ฆ", "Armenian": "๐Ÿ‡ฆ๐Ÿ‡ฒ", "Azerbaijani": "๐Ÿ‡ฆ๐Ÿ‡ฟ", "Belarusian": "๐Ÿ‡ง๐Ÿ‡พ",
"Bosnian": "๐Ÿ‡ง๐Ÿ‡ฆ", "Bulgarian": "๐Ÿ‡ง๐Ÿ‡ฌ", "Catalan": "๐Ÿ‡ช๐Ÿ‡ธ", "Chinese": "๐Ÿ‡จ๐Ÿ‡ณ", "Croatian": "๐Ÿ‡ญ๐Ÿ‡ท",
"Czech": "๐Ÿ‡จ๐Ÿ‡ฟ", "Danish": "๐Ÿ‡ฉ๐Ÿ‡ฐ", "Dutch": "๐Ÿ‡ณ๐Ÿ‡ฑ", "English": "๐Ÿ‡ฌ๐Ÿ‡ง", "Estonian": "๐Ÿ‡ช๐Ÿ‡ช",
"Finnish": "๐Ÿ‡ซ๐Ÿ‡ฎ", "French": "๐Ÿ‡ซ๐Ÿ‡ท", "Galician": "๐Ÿ‡ช๐Ÿ‡ธ", "German": "๐Ÿ‡ฉ๐Ÿ‡ช", "Greek": "๐Ÿ‡ฌ๐Ÿ‡ท",
"Hebrew": "๐Ÿ‡ฎ๐Ÿ‡ฑ", "Hindi": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Hungarian": "๐Ÿ‡ญ๐Ÿ‡บ", "Icelandic": "๐Ÿ‡ฎ๐Ÿ‡ธ", "Indonesian": "๐Ÿ‡ฎ๐Ÿ‡ฉ",
"Italian": "๐Ÿ‡ฎ๐Ÿ‡น", "Japanese": "๐Ÿ‡ฏ๐Ÿ‡ต", "Kannada": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Kazakh": "๐Ÿ‡ฐ๐Ÿ‡ฟ", "Korean": "๐Ÿ‡ฐ๐Ÿ‡ท",
"Latvian": "๐Ÿ‡ฑ๐Ÿ‡ป", "Lithuanian": "๐Ÿ‡ฑ๐Ÿ‡น", "Macedonian": "๐Ÿ‡ฒ๐Ÿ‡ฐ", "Malay": "๐Ÿ‡ฒ๐Ÿ‡พ", "Marathi": "๐Ÿ‡ฎ๐Ÿ‡ณ",
"Maori": "๐Ÿ‡ณ๐Ÿ‡ฟ", "Nepali": "๐Ÿ‡ณ๐Ÿ‡ต", "Norwegian": "๐Ÿ‡ณ๐Ÿ‡ด", "Persian": "๐Ÿ‡ฎ๐Ÿ‡ท", "Polish": "๐Ÿ‡ต๐Ÿ‡ฑ",
"Portuguese": "๐Ÿ‡ต๐Ÿ‡น", "Romanian": "๐Ÿ‡ท๐Ÿ‡ด", "Russian": "๐Ÿ‡ท๐Ÿ‡บ", "Serbian": "๐Ÿ‡ท๐Ÿ‡ธ", "Slovak": "๐Ÿ‡ธ๐Ÿ‡ฐ",
"Slovenian": "๐Ÿ‡ธ๐Ÿ‡ฎ", "Spanish": "๐Ÿ‡ช๐Ÿ‡ธ", "Swahili": "๐Ÿ‡ฐ๐Ÿ‡ช", "Swedish": "๐Ÿ‡ธ๐Ÿ‡ช", "Tagalog": "๐Ÿ‡ต๐Ÿ‡ญ",
"Tamil": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Thai": "๐Ÿ‡น๐Ÿ‡ญ", "Turkish": "๐Ÿ‡น๐Ÿ‡ท", "Ukrainian": "๐Ÿ‡บ๐Ÿ‡ฆ", "Urdu": "๐Ÿ‡ต๐Ÿ‡ฐ",
"Vietnamese": "๐Ÿ‡ป๐Ÿ‡ณ", "Welsh": "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ"
}
def load_ui_language(file_path: Optional[str] = "ui_lang_support.json") -> Dict[str, Any]:
"""
Charge les traductions de l'interface utilisateur ร  partir d'un fichier JSON.
Args:
file_path (Optional[str]): Chemin vers le fichier JSON contenant les traductions.
Returns:
Dict[str, Any]: Un dictionnaire contenant les traductions de l'interface utilisateur.
"""
try:
with open(file_path, 'r', encoding='utf-8') as file:
return json.load(file)
except FileNotFoundError:
print(f"{get_translation('erreur_fichier_non_trouve')} {file_path}")
return {}
except json.JSONDecodeError:
print(f"{get_translation('erreur_lecture_fichier')} JSON decoding error")
return {}
except IOError as e:
print(f"{get_translation('erreur_lecture_fichier')} {e}")
return {}
def get_translation(key: str) -> str:
"""
Obtient la traduction pour une clรฉ donnรฉe basรฉe sur la langue d'interface sรฉlectionnรฉe.
"""
lang = st.session_state.get('interface_language', 'English')
return translations.get(lang, {}).get(key, key)
# Dictionary to store translations
translations = load_ui_language()
def language_selection_page():
st.set_page_config(initial_sidebar_state="collapsed")
#st.set_page_config(page_icon="๐Ÿ‘น")
#st.set_page_config(layout="wide")
# Fonction de rappel pour mettre ร  jour la langue temporaire lorsque la sรฉlection change
def update_temp_language():
st.session_state['temp_interface_language'] = st.session_state['language_selector']
# Initialiser la langue temporaire si elle n'existe pas
if 'temp_interface_language' not in st.session_state:
st.session_state['temp_interface_language'] = st.session_state.get('interface_language', 'English')
# Sรฉlecteur de langue avec un callback pour mettre ร  jour la langue temporaire
with st.container(
border=True,
key='lang_choices_container',
height=None
):
TITRE_LANGSELMENU=translations[st.session_state['temp_interface_language']].get('selection_de_la_langue', 'Language Selection')
# Titre basรฉ sur la langue temporaire
st.header(
f":blue[{TITRE_LANGSELMENU}]"
,divider=True)
selecteur_du_choix, boutton_de_validation = st.columns(2,
vertical_alignment='top',
gap="small")
selected_language = selecteur_du_choix.selectbox(
translations[st.session_state['temp_interface_language']].get('choix_selection_langue', 'Choose the interface language'),
options=list(translations.keys()),
index=list(translations.keys()).index(st.session_state['temp_interface_language']),
format_func=lambda lang: f"{LANGUAGES_EMOJI.get(lang, '')} {lang}",
key='language_selector',
on_change=update_temp_language,
label_visibility="collapsed"
)
# Bouton de confirmation avec traduction
if boutton_de_validation.button(
translations[st.session_state['temp_interface_language']].get(
'confirmer', 'Confirm'),
key='confirm_button_ui_lang_choice',
type="secondary",
use_container_width=True,
disabled = False
):
st.session_state.interface_language = selected_language
st.session_state.init_launch_app = False
st.switch_page(st.Page("pages/main.py", title="Main page"))
language_selection_page()