From 27f24791082fc1ae7307f9b4145284c6d3ce3686 Mon Sep 17 00:00:00 2001 From: mxr612 Date: Tue, 17 Jun 2025 14:01:48 +0800 Subject: [PATCH] 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. --- app.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index ef48555..4245460 100644 --- a/app.py +++ b/app.py @@ -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()