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
13
app.py
13
app.py
@ -49,6 +49,8 @@ class LanguageMiddleware(BaseHTTPMiddleware):
|
|||||||
async def dispatch(self, request: Request, call_next):
|
async def dispatch(self, request: Request, call_next):
|
||||||
# Get language from query parameter
|
# Get language from query parameter
|
||||||
lang = request.query_params.get("lang")
|
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 no language in query params, try to get from Accept-Language header
|
||||||
if not lang:
|
if not lang:
|
||||||
@ -85,6 +87,17 @@ class LanguageMiddleware(BaseHTTPMiddleware):
|
|||||||
|
|
||||||
# Continue processing the request
|
# Continue processing the request
|
||||||
response = await call_next(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
|
return response
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user