Add localization support
This commit is contained in:
parent
6614d6344a
commit
2d5749007a
@ -1,5 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
from flask import Flask, render_template
|
from flask import Flask, render_template, g
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from .auth import login_required
|
from .auth import login_required
|
||||||
|
|
||||||
@ -69,4 +69,11 @@ def create_app(test_config=None):
|
|||||||
app.register_blueprint(auth.blueprint)
|
app.register_blueprint(auth.blueprint)
|
||||||
app.register_blueprint(api.blueprint)
|
app.register_blueprint(api.blueprint)
|
||||||
|
|
||||||
|
from . import lang
|
||||||
|
|
||||||
|
def use_english(text_id: str):
|
||||||
|
return lang.localize(text_id, lang.JAPANESE)
|
||||||
|
app.jinja_env.globals.update(localize=use_english)
|
||||||
|
|
||||||
|
|
||||||
return app
|
return app
|
35
kanken_online/lang.py
Normal file
35
kanken_online/lang.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
EXISTING_STRINGS = {
|
||||||
|
"kanken_online",
|
||||||
|
"options",
|
||||||
|
"log_in",
|
||||||
|
"register",
|
||||||
|
"log_out"
|
||||||
|
}
|
||||||
|
|
||||||
|
ENGLISH = {
|
||||||
|
"kanken_online": "KankenOnline",
|
||||||
|
"options": "Options",
|
||||||
|
"log_in": "Log in",
|
||||||
|
"register": "Register",
|
||||||
|
"log_out": "Log out",
|
||||||
|
"kanji": "Kanji"
|
||||||
|
}
|
||||||
|
|
||||||
|
JAPANESE = {
|
||||||
|
"kanken_online": "漢検オンライン",
|
||||||
|
"options": "設定",
|
||||||
|
"log_in": "ログイン",
|
||||||
|
"register": "登録",
|
||||||
|
"log_out": "ログアウト",
|
||||||
|
"kanji": "漢字"
|
||||||
|
}
|
||||||
|
|
||||||
|
LANGUAGES = [
|
||||||
|
ENGLISH,
|
||||||
|
JAPANESE
|
||||||
|
]
|
||||||
|
|
||||||
|
assert all(all(key in lang for key in EXISTING_STRINGS) for lang in LANGUAGES) # Ensure all strings are mapped for all existing languages
|
||||||
|
|
||||||
|
def localize(text_id: str, language: dict[str, str]) -> str:
|
||||||
|
return language[text_id]
|
@ -2,22 +2,22 @@
|
|||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>{% block title %}{% endblock %} - KankenOnline</title>
|
<title>{% block title %}{% endblock %} - {{ localize("kanken_online") }}</title>
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||||
{% block styles %}{% endblock %}
|
{% block styles %}{% endblock %}
|
||||||
{% block scripts %}{% endblock %}
|
{% block scripts %}{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav>
|
<nav>
|
||||||
<h1>KankenOnline</h1>
|
<h1>{{ localize("kanken_online") }}</h1>
|
||||||
<ul>
|
<ul>
|
||||||
{% if g.user %}
|
{% if g.user %}
|
||||||
<li><span>{{ g.user['username'] }}</span>
|
<li><span>{{ g.user['username'] }}</span>
|
||||||
<li><a href="{{ url_for('options') }}">Options</a>
|
<li><a href="{{ url_for('options') }}">{{ localize("options") }}</a>
|
||||||
<li><a href="{{ url_for('auth.logout') }}">Log Out</a>
|
<li><a href="{{ url_for('auth.logout') }}">{{ localize("log_out") }}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li><a href="{{ url_for('auth.register') }}">Register</a>
|
<li><a href="{{ url_for('auth.register') }}">{{ localize("register") }}</a>
|
||||||
<li><a href="{{ url_for('auth.login') }}">Log In</a>
|
<li><a href="{{ url_for('auth.login') }}">{{ localize("log_in") }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{% block scripts %}<script src="/static/kanji.js" defer></script>{%endblock %}
|
{% block scripts %}<script src="/static/kanji.js" defer></script>{%endblock %}
|
||||||
|
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<h1>{% block title %}Kanji - {{ kanji.character }}{% endblock %}</h1>
|
<h1>{% block title %}{{localize("kanji")}} - {{ kanji.character }}{% endblock %}</h1>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
Loading…
Reference in New Issue
Block a user