summaryrefslogtreecommitdiffstats
path: root/aurweb/l10n.py
diff options
context:
space:
mode:
Diffstat (limited to 'aurweb/l10n.py')
-rw-r--r--aurweb/l10n.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/aurweb/l10n.py b/aurweb/l10n.py
index 51b56abb..a476ecd8 100644
--- a/aurweb/l10n.py
+++ b/aurweb/l10n.py
@@ -16,3 +16,25 @@ class Translator:
self._localedir,
languages=[lang])
return self._translator[lang].gettext(s)
+
+
+def get_translator_for_request(request):
+ """
+ Determine the preferred language from a FastAPI request object and build a
+ translator function for it.
+
+ Example:
+ ```python
+ _ = get_translator_for_request(request)
+ print(_("Hello"))
+ ```
+ """
+ lang = request.cookies.get("AURLANG")
+ if lang is None:
+ lang = aurweb.config.get("options", "default_lang")
+ translator = Translator()
+
+ def translate(message):
+ return translator.translate(message, lang)
+
+ return translate