Files
fastapi-admin/fastapi_admin/middlewares.py
2021-04-25 17:17:21 +08:00

23 lines
703 B
Python

from typing import Callable
from starlette.requests import Request
from fastapi_admin import template
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
template.set_locale(locale)
response = await call_next(request)
if locale:
response.set_cookie(key="language", value=locale)
return response