2025-06-20 23:48:10 +02:00
|
|
|
import os
|
|
|
|
import json
|
|
|
|
import pathlib
|
2025-07-05 20:15:54 +02:00
|
|
|
from modules.globalvars import RED, RESET, LOCALE
|
2025-06-22 19:07:41 +02:00
|
|
|
|
2025-07-05 20:15:54 +02:00
|
|
|
# Load translations at module import
|
2025-06-20 23:48:10 +02:00
|
|
|
def load_translations():
|
|
|
|
translations = {}
|
2025-07-01 16:21:34 +02:00
|
|
|
translations_dir = pathlib.Path(__file__).parent.parent / 'assets' / 'locales'
|
2025-06-20 23:48:10 +02:00
|
|
|
for filename in os.listdir(translations_dir):
|
|
|
|
if filename.endswith(".json"):
|
|
|
|
lang_code = filename.replace(".json", "")
|
2025-07-05 20:15:54 +02:00
|
|
|
with open(translations_dir / filename, "r", encoding="utf-8") as f:
|
2025-06-20 23:48:10 +02:00
|
|
|
translations[lang_code] = json.load(f)
|
|
|
|
return translations
|
|
|
|
|
|
|
|
translations = load_translations()
|
|
|
|
|
2025-07-05 20:15:54 +02:00
|
|
|
|
|
|
|
def set_language(lang: str):
|
|
|
|
global LOCALE
|
|
|
|
LOCALE = lang if lang in translations else "en"
|
|
|
|
|
2025-06-20 23:48:10 +02:00
|
|
|
def get_translation(lang: str, key: str):
|
|
|
|
lang_translations = translations.get(lang, translations["en"])
|
|
|
|
if key not in lang_translations:
|
|
|
|
print(f"{RED}Missing key: {key} in language {lang}{RESET}")
|
|
|
|
return lang_translations.get(key, key)
|
2025-07-05 20:15:54 +02:00
|
|
|
|
|
|
|
def _(key: str) -> str:
|
|
|
|
return get_translation(LOCALE, key)
|