import json from functools import lru_cache from pathlib import Path _LOCALE_LABELS = { "en": "English", "da": "Danish", } @lru_cache(maxsize=1) def shared_i18n_catalog() -> dict: catalog_path = Path(__file__).resolve().parents[1] / "shared" / "i18n" / "lobby.json" with catalog_path.open(encoding="utf-8") as handle: return json.load(handle) @lru_cache(maxsize=1) def locale_config() -> tuple[str, tuple[str, ...]]: locales = shared_i18n_catalog().get("locales", {}) default_locale = str(locales.get("default", "en")).strip().lower() or "en" supported_locales = tuple( locale.strip().lower() for locale in locales.get("supported", ["en", "da"]) if str(locale).strip() ) or ("en", "da") return default_locale, supported_locales def django_languages() -> list[tuple[str, str]]: _default_locale, supported_locales = locale_config() return [(locale, _LOCALE_LABELS.get(locale, locale.upper())) for locale in supported_locales]