[mod] user_help: support translations

replace "user_help.HELP" by a new function "get_help_for_locale".
This function the help a one locale, and fall back to English if the
translation is not available.
This commit is contained in:
Alexandre Flament 2022-01-29 12:29:53 +01:00
parent 6a366c9807
commit 86628a935d
3 changed files with 23 additions and 10 deletions

View file

@ -6,8 +6,9 @@ import flask
from flask.helpers import url_for
import mistletoe
from . import get_setting
from .version import GIT_URL
from .. import get_setting
from ..version import GIT_URL
from ..locales import LOCALE_NAMES
HELP: Dict[str, str] = {}
""" Maps a filename under help/ without the file extension to the rendered HTML. """
@ -37,12 +38,24 @@ def render(app: flask.Flask):
define_link_targets = ''.join(f'[{name}]: {url}\n' for name, url in link_targets.items())
for filename in pkg_resources.resource_listdir(__name__, 'help'):
rootname, ext = os.path.splitext(filename)
if ext != '.md':
for locale_name in pkg_resources.resource_listdir(__name__, '.'):
if locale_name not in LOCALE_NAMES:
continue
HELP[locale_name] = {}
for filename in pkg_resources.resource_listdir(__name__, locale_name):
rootname, ext = os.path.splitext(filename)
markdown = pkg_resources.resource_string(__name__, 'help/' + filename).decode()
markdown = define_link_targets + markdown
HELP[rootname] = mistletoe.markdown(markdown)
if ext != '.md':
continue
markdown = pkg_resources.resource_string(__name__, locale_name + '/' + filename).decode()
markdown = define_link_targets + markdown
HELP[locale_name][rootname] = mistletoe.markdown(markdown)
def get_help_for_locale(locale_name: str) -> Dict[str, str]:
result = {**HELP['en']}
if locale_name != 'en':
for rootname, content in HELP.get(locale_name, {}).items():
result[rootname] = content
return result

View file

@ -878,7 +878,7 @@ def __get_translated_errors(unresponsive_engines: Iterable[UnresponsiveEngine]):
@app.route('/about', methods=['GET'])
def about():
"""Render about page"""
return render('about.html', help=user_help.HELP)
return render('about.html', help=user_help.get_help_for_locale(get_locale()))
@app.route('/autocompleter', methods=['GET', 'POST'])