Files
pvemanager/backend/app/language_middleware.py

35 lines
949 B
Python

"""
Language middleware
Detects user language from settings and adds to request state
"""
from fastapi import Request
from starlette.middleware.base import BaseHTTPMiddleware
from sqlalchemy.orm import Session
from .db import SessionLocal
from .models import PanelSettings
class LanguageMiddleware(BaseHTTPMiddleware):
"""Middleware to detect and set language"""
async def dispatch(self, request: Request, call_next):
# Get language from database settings
lang = "ru" # default
try:
db = SessionLocal()
setting = db.query(PanelSettings).filter(PanelSettings.key == "language").first()
if setting:
lang = setting.value
db.close()
except Exception:
pass
# Store language in request state
request.state.lang = lang
response = await call_next(request)
return response