Files
LinedanceAfspiller/linedance-app/translations/__init__.py
2026-04-12 10:25:41 +02:00

58 lines
1.6 KiB
Python

"""
translations/__init__.py — Central oversættelsesfunktion.
Brug:
from translations import _
btn = QPushButton(_("btn.start_event"))
lbl = QLabel(_("level.beginner"))
Fallback: hvis nøglen ikke findes returneres nøglen selv.
"""
_current: dict[str, str] = {}
_current_lang: str = "da"
def load_language(lang: str = "da"):
"""Indlæs sprogfil. Kaldes ved opstart og ved sprogskift i indstillinger."""
global _current, _current_lang
_current_lang = lang
try:
if lang == "en":
from translations.en import STRINGS
else:
from translations.da import STRINGS
_current = STRINGS
except ImportError:
from translations.da import STRINGS
_current = STRINGS
def _(key: str, **kwargs) -> str:
"""Oversæt en nøgle. Fallback = nøglen selv hvis ikke fundet."""
text = _current.get(key, key)
return text.format(**kwargs) if kwargs else text
def current_lang() -> str:
return _current_lang
def translate_level(level_name: str | None) -> str:
"""Oversæt et niveau-navn fra API/DB canonical navn til valgt sprog."""
if not level_name:
return _("level.none")
key = f"level.{level_name.lower().replace(' ', '_').replace('ø', 'o').replace('æ', 'ae').replace('å', 'aa')}"
result = _current.get(key)
if result:
return result
# Fallback: prøv direkte match
for k, v in _current.items():
if k.startswith("level.") and v.lower() == level_name.lower():
return v
return level_name # helt rå fallback
# Indlæs dansk som standard ved import
load_language("da")