Næste version
This commit is contained in:
57
linedance-app/translations/__init__.py
Normal file
57
linedance-app/translations/__init__.py
Normal file
@@ -0,0 +1,57 @@
|
||||
"""
|
||||
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")
|
||||
Reference in New Issue
Block a user