refactor(i18n): move translations to JSON files under app/locales, dynamic language switch

This commit is contained in:
2026-07-07 09:46:50 +08:00
parent fb98974382
commit 591ad3e178
7 changed files with 565 additions and 285 deletions

View File

@@ -19,8 +19,11 @@
{% endif %}
<a href="/api/docs">{{ 'nav.api_docs'|t(user.language) }}</a>
<form method="post" action="/settings/language" class="inline" style="display:inline-flex;align-items:center;gap:0">
<input type="hidden" name="language" value="{{ 'en' if user.language == 'zh' else 'zh' }}">
<button type="submit" class="nav-lang-btn">{{ 'EN' if user.language == 'zh' else '中' }}</button>
<select name="language" class="nav-lang-select" onchange="this.form.submit()">
{% for code, name in available_languages.items() %}
<option value="{{ code }}" {% if user.language == code %}selected{% endif %}>{{ name }}</option>
{% endfor %}
</select>
</form>
<a href="/logout" class="nav-logout">{{ 'nav.logout'|t(user.language) }}</a>
{% endif %}

View File

@@ -51,8 +51,9 @@
<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">
<option value="zh" {% if user.language == 'zh' %}selected{% endif %}>{{ 'settings.language_zh'|t(user.language) }}</option>
<option value="en" {% if user.language == 'en' %}selected{% endif %}>{{ 'settings.language_en'|t(user.language) }}</option>
{% for code, name in available_languages.items() %}
<option value="{{ code }}" {% if user.language == code %}selected{% endif %}>{{ name }}</option>
{% endfor %}
</select>
<button type="submit" class="btn btn-primary btn-sm">{{ 'settings.save'|t(user.language) }}</button>
</form>