From 4aaf2dc33664e442de0a653de1fe115c986ad92b Mon Sep 17 00:00:00 2001 From: WhatDidYouExpect <89535984+WhatDidYouExpect@users.noreply.github.com> Date: Fri, 18 Jul 2025 14:08:31 +0200 Subject: [PATCH] caching up to 600 entries :p --- main.py | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/main.py b/main.py index fb6a080..1f05473 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,7 @@ import pathlib import threading import time from dotenv import load_dotenv +from functools import lru_cache ANSI = "\033[" RED = f"{ANSI}31m" @@ -140,6 +141,7 @@ def set_language(lang: str): else: print(f"[VOLTA] {RED}The fallback translations cannot be found! No fallback available.{RESET}") ENGLISH_MISSING = True + _lookup_translation.cache_clear() def check_missing_translations(): global LOCALE, ENGLISH_MISSING @@ -175,26 +177,33 @@ def check_missing_translations(): printedsystemfallback = False +@lru_cache(maxsize=600) +def _lookup_translation(lang: str, key: str): + return translations.get(lang, {}).get(key) + def get_translation(lang: str, key: str): global printedsystemfallback if ENGLISH_MISSING: return f"[VOLTA] {RED}No fallback available!{RESET}" - fallback_translations = translations.get(FALLBACK_LOCALE, {}) - sys_lang = get_system_locale().split("_")[0] if get_system_locale() else None - sys_translations = translations.get(sys_lang, {}) if sys_lang else {} - lang_translations = translations.get(lang, {}) - if key in lang_translations: - return lang_translations[key] - if sys_lang and sys_lang != lang and key in sys_translations: - if not printedsystemfallback: - print(f"[VOLTA] {YELLOW}Falling back to system language {sys_lang}!{RESET}") - printedsystemfallback = True - return sys_translations[key] - if key in fallback_translations: - print(f"[VOLTA] {YELLOW}Missing key: '{key}' in '{lang}', falling back to fallback locale '{FALLBACK_LOCALE}'{RESET}") - return fallback_translations[key] - return f"[VOLTA] {YELLOW}Missing key: '{key}' in all locales!{RESET}" + val = _lookup_translation(lang, key) + if val: + return val + sys_lang = get_system_locale().split("_")[0] if get_system_locale() else None + if sys_lang and sys_lang != lang: + sys_val = _lookup_translation(sys_lang, key) + if sys_val: + if not printedsystemfallback: + print(f"[VOLTA] {YELLOW}Falling back to system language {sys_lang}!{RESET}") + printedsystemfallback = True + return sys_val + fallback_val = _lookup_translation(FALLBACK_LOCALE, key) + if fallback_val: + print(f"[VOLTA] {YELLOW}Missing key: '{key}' in '{lang}', falling back to fallback locale '{FALLBACK_LOCALE}'{RESET}") + return fallback_val + + return f"[VOLTA] {YELLOW}Missing key: '{key}' in all locales!{RESET}" + def _(key: str) -> str: return get_translation(LOCALE, key)