From 86628a935dd122aef2f849230cacbe322fd29fb3 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Sat, 29 Jan 2022 12:29:53 +0100 Subject: [PATCH] [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. --- searx/{user_help.py => user_help/__init__.py} | 31 +++++++++++++------ searx/{help => user_help/en}/about.md | 0 searx/webapp.py | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) rename searx/{user_help.py => user_help/__init__.py} (57%) rename searx/{help => user_help/en}/about.md (100%) diff --git a/searx/user_help.py b/searx/user_help/__init__.py similarity index 57% rename from searx/user_help.py rename to searx/user_help/__init__.py index bf7336777..68564dc3d 100644 --- a/searx/user_help.py +++ b/searx/user_help/__init__.py @@ -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 diff --git a/searx/help/about.md b/searx/user_help/en/about.md similarity index 100% rename from searx/help/about.md rename to searx/user_help/en/about.md diff --git a/searx/webapp.py b/searx/webapp.py index 2e6e388e5..bf937b986 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -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'])