58 lines
1.6 KiB
Python
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")
|