mirror of
https://github.com/fastapi-admin/fastapi-admin.git
synced 2025-08-06 18:49:47 +08:00
23 lines
695 B
Python
23 lines
695 B
Python
from typing import Callable
|
|
|
|
from starlette.requests import Request
|
|
|
|
from fastapi_admin import i18n
|
|
|
|
|
|
async def language_processor(request: Request, call_next: Callable):
|
|
locale = request.query_params.get("language")
|
|
if not locale:
|
|
locale = request.cookies.get("language")
|
|
if not locale:
|
|
accept_language = request.headers.get("Accept-Language")
|
|
if accept_language:
|
|
locale = accept_language.split(",")[0].replace("-", "_")
|
|
else:
|
|
locale = None
|
|
i18n.set_locale(locale)
|
|
response = await call_next(request)
|
|
if locale:
|
|
response.set_cookie(key="language", value=locale)
|
|
return response
|