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:
parent
d9d6dfcdc0
commit
27f2479108
15
app.py
15
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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user