From de92f73f58579157a01c91d84fcfc18db1bd1324 Mon Sep 17 00:00:00 2001 From: Sergey Vanyushkin Date: Sun, 10 May 2026 16:48:56 +0300 Subject: [PATCH] fix(i18n): register _() Jinja2 global and current_locale in error handlers Error handlers had a separate Jinja2Templates instance without the _ global function, causing UndefinedError when rendering base.html (which now calls {{ _(key, current_locale) }}). - Register _() from translator module as Jinja2 global on error_handlers templates - Add current_locale to get_template_context() from request.state.locale --- app/presentation/web/error_handlers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/presentation/web/error_handlers.py b/app/presentation/web/error_handlers.py index 61b9ef7..ae13f7d 100644 --- a/app/presentation/web/error_handlers.py +++ b/app/presentation/web/error_handlers.py @@ -10,9 +10,11 @@ from fastapi import HTTPException, Request from fastapi.responses import HTMLResponse, RedirectResponse from fastapi.templating import Jinja2Templates +from app.infrastructure.i18n.translator import DEFAULT_LOCALE, _ from app.presentation.web.flash import FlashManager, get_flash_messages templates = Jinja2Templates(directory="app/presentation/templates") +templates.env.globals["_"] = _ async def setup_flash_manager(request: Request) -> None: @@ -55,6 +57,7 @@ def get_template_context(request: Request) -> dict[str, Any]: "user_role": user_role.value if user_role else None, "can_create": can_create_post(user), "flash_messages": get_flash_messages(request), + "current_locale": getattr(request.state, "locale", DEFAULT_LOCALE), }