This commit is contained in:
@@ -4,10 +4,12 @@ import re
|
||||
from typing import Any, Iterable
|
||||
|
||||
I18N_SETTINGS_KEY = "i18n"
|
||||
REFERENCE_LANGUAGE_CODE = "de"
|
||||
SOURCE_LANGUAGE_CODE = "en"
|
||||
|
||||
DEFAULT_LANGUAGE_PACKAGES: tuple[dict[str, str], ...] = (
|
||||
{"code": "en", "label": "English", "native_label": "English"},
|
||||
{"code": "de", "label": "German", "native_label": "Deutsch"},
|
||||
{"code": "en", "label": "English", "native_label": "English"},
|
||||
)
|
||||
|
||||
|
||||
@@ -66,7 +68,7 @@ def normalize_enabled_language_codes(
|
||||
available_languages: Iterable[dict[str, Any]],
|
||||
*,
|
||||
default_locale: object = None,
|
||||
fallback_codes: Iterable[str] = ("en", "de"),
|
||||
fallback_codes: Iterable[str] = (REFERENCE_LANGUAGE_CODE, SOURCE_LANGUAGE_CODE),
|
||||
) -> list[str]:
|
||||
available_codes = [normalize_language_code(item.get("code")) for item in available_languages if isinstance(item, dict)]
|
||||
available = {code for code in available_codes if code}
|
||||
@@ -88,8 +90,10 @@ def normalize_enabled_language_codes(
|
||||
|
||||
if enabled:
|
||||
return enabled
|
||||
if "en" in available:
|
||||
return ["en"]
|
||||
if REFERENCE_LANGUAGE_CODE in available:
|
||||
return [REFERENCE_LANGUAGE_CODE]
|
||||
if SOURCE_LANGUAGE_CODE in available:
|
||||
return [SOURCE_LANGUAGE_CODE]
|
||||
return available_codes[:1]
|
||||
|
||||
|
||||
@@ -126,7 +130,7 @@ def preferred_language_code(user_settings: dict[str, Any] | None, allowed_codes:
|
||||
default = resolve_language_code(default_locale, enabled)
|
||||
if default:
|
||||
return default
|
||||
return enabled[0] if enabled else "en"
|
||||
return enabled[0] if enabled else REFERENCE_LANGUAGE_CODE
|
||||
|
||||
|
||||
def update_i18n_settings(settings: dict[str, Any] | None, **values: Any) -> dict[str, Any]:
|
||||
@@ -141,10 +145,13 @@ def system_i18n_payload(settings_item: Any | None) -> dict[str, object]:
|
||||
settings = getattr(settings_item, "settings", None)
|
||||
packages = system_language_packages(settings)
|
||||
available_codes = [item["code"] for item in packages]
|
||||
default_language = resolve_language_code(getattr(settings_item, "default_locale", None), available_codes) or "en"
|
||||
default_language = (
|
||||
resolve_language_code(getattr(settings_item, "default_locale", None), available_codes)
|
||||
or REFERENCE_LANGUAGE_CODE
|
||||
)
|
||||
enabled = system_enabled_language_codes(settings, default_locale=default_language)
|
||||
if default_language not in enabled:
|
||||
default_language = enabled[0] if enabled else "en"
|
||||
default_language = enabled[0] if enabled else REFERENCE_LANGUAGE_CODE
|
||||
return {
|
||||
"available_languages": packages,
|
||||
"enabled_languages": enabled,
|
||||
|
||||
Reference in New Issue
Block a user