feat: enhance language handling in middleware

- Updated LanguageMiddleware in app.py to retrieve the user's language preference from cookies if not provided in query parameters.
- Added logic to set a cookie for the language, ensuring consistent language detection and user experience across sessions.
This commit is contained in:
Miu Li 2025-06-17 14:01:48 +08:00
parent d9d6dfcdc0
commit 27f2479108

15
app.py
View File

@ -49,7 +49,9 @@ class LanguageMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
# Get language from query parameter
lang = request.query_params.get("lang")
if not lang:
lang = request.cookies.get("lang")
# If no language in query params, try to get from Accept-Language header
if not lang:
accept_language = request.headers.get("accept-language", "")
@ -85,6 +87,17 @@ class LanguageMiddleware(BaseHTTPMiddleware):
# Continue processing the request
response = await call_next(request)
# Set cookie if it's not already set or if it's different
if not request.cookies.get("lang") or request.cookies.get("lang") != lang:
response.set_cookie(
key="lang",
value=lang,
max_age=365 * 24 * 60 * 60, # 1 year
httponly=True,
samesite="lax"
)
return response
app = FastAPI()