"""Языковые теги сервиса: нормализация и выбор действующего языка.
Зеркало фронтовых i18n-слагов: override из настроек сервиса → язык аккаунта
gnexus-auth (users.profile.locale) → 'en'.
"""
SUPPORTED_LOCALES = ("en", "uk", "ru")
def normalize_locale(tag) -> str | None:
"""'en-US' -> 'en'; всё вне SUPPORTED_LOCALES -> None."""
text = str(tag or "").strip().lower()
prefix = text.split("-", 1)[0].split("_", 1)[0]
return prefix if prefix in SUPPORTED_LOCALES else None
def effective_locale(override, profile) -> str:
"""override -> язык аккаунта -> 'en' (совпадает с фолбэком фронта)."""
return (
normalize_locale(override)
or normalize_locale((profile or {}).get("locale"))
or "en"
)