feat(i18n): unify django api error resolution
This commit is contained in:
@@ -24,6 +24,15 @@ def lobby_i18n_error_messages() -> dict:
|
||||
return shared_i18n_catalog().get("backend", {}).get("errors", {})
|
||||
|
||||
|
||||
def resolve_error_key(code: str) -> str:
|
||||
resolved = lobby_i18n_errors().get(code)
|
||||
if isinstance(resolved, str) and resolved:
|
||||
return resolved
|
||||
|
||||
LOGGER.warning("i18n error code missing in shared catalog", extra={"code": code})
|
||||
return code
|
||||
|
||||
|
||||
def _quality_value(language_candidate: str) -> float | None:
|
||||
for parameter in language_candidate.split(";")[1:]:
|
||||
key, separator, value = parameter.partition("=")
|
||||
@@ -78,12 +87,13 @@ def resolve_error_message(*, key: str, locale: str) -> str:
|
||||
return key
|
||||
|
||||
|
||||
def api_error(request: HttpRequest, *, key: str, status: int) -> JsonResponse:
|
||||
def api_error(request: HttpRequest, *, code: str, status: int) -> JsonResponse:
|
||||
locale = resolve_locale(request)
|
||||
key = resolve_error_key(code)
|
||||
return JsonResponse(
|
||||
{
|
||||
"error": resolve_error_message(key=key, locale=locale),
|
||||
"error_code": key,
|
||||
"error_code": code,
|
||||
"locale": locale,
|
||||
},
|
||||
status=status,
|
||||
|
||||
Reference in New Issue
Block a user