31 lines
991 B
Python
31 lines
991 B
Python
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]
|