fix(templates): fix unhashable dict in Jinja2 cache by converting available_languages global to function

This commit is contained in:
2026-07-18 08:57:42 +08:00
parent f27c263dd4
commit b80a1859a0
6 changed files with 6 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
@echo off
cd /d "%~dp0"
call .venv\Scripts\activate.bat
@rem python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
pause

View File

@@ -91,7 +91,7 @@ from app.storage import resolve_url as _resolve_image_url
templates.env.filters["image_url"] = lambda v: _resolve_image_url(v) if v else ""
from app.i18n import get_languages as _get_languages
templates.env.globals["available_languages"] = _get_languages()
templates.env.globals["get_languages"] = _get_languages
def _get_copyright() -> str:

View File

@@ -23,7 +23,7 @@
<div class="lang-switcher" id="langSwitcher">
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
<div class="lang-dropdown" id="langDropdown">
{% for code, name in available_languages.items() %}
{% for code, name in get_languages().items() %}
<form method="post" action="/settings/language">
<input type="hidden" name="language" value="{{ code }}">
<button type="submit" class="lang-option {% if user.language == code %}active{% endif %}">{{ name }}</button>

View File

@@ -7,7 +7,7 @@
<div class="lang-switcher" id="langSwitcher">
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
<div class="lang-dropdown" id="langDropdown">
{% for code, name in available_languages.items() %}
{% for code, name in get_languages().items() %}
<a href="/?lang={{ code }}" class="lang-option {% if lang == code %}active{% endif %}">{{ name }}</a>
{% endfor %}
</div>

View File

@@ -51,7 +51,7 @@
<h3 style="margin-bottom:.75rem">{{ 'settings.language'|t(user.language) }}</h3>
<form method="post" action="/settings/language" style="display:flex;align-items:center;gap:.75rem;flex-wrap:wrap">
<select name="language" style="width:auto">
{% for code, name in available_languages.items() %}
{% for code, name in get_languages().items() %}
<option value="{{ code }}" {% if user.language == code %}selected{% endif %}>{{ name }}</option>
{% endfor %}
</select>

View File

@@ -6,7 +6,7 @@
<div class="lang-switcher" id="langSwitcher">
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
<div class="lang-dropdown" id="langDropdown">
{% for code, name in available_languages.items() %}
{% for code, name in get_languages().items() %}
<a href="?lang={{ code }}" class="lang-option {% if lang == code %}active{% endif %}">{{ name }}</a>
{% endfor %}
</div>