3
0
This commit is contained in:
2022-04-07 13:53:45 +02:00
parent 71e7fe7b09
commit 7420b4107e
4 changed files with 24 additions and 29 deletions

View File

@ -3,6 +3,7 @@ from __future__ import annotations
import re
import typing
import quart
import os.path
from .app import app
@ -49,14 +50,15 @@ def detect_language():
g = quart.g
r = quart.request
s = quart.session
lang = r.args.get('setlang')
if lang:
lang = lang.strip().lower()
if 'setlang' in r.args:
lang = r.args.get('setlang').strip().lower()
if lang and _VALID_LANGUAGE_NAMES.match(lang):
s = quart.session
s['lang'] = lang
g.langs = [lang]
return
else:
# reset language
s.pop('lang')
lang = s.get('lang')
if lang:
lang = lang.strip().lower()
@ -65,3 +67,15 @@ def detect_language():
return
acc_lang = ','.join(r.headers.get_all('Accept-Language'))
g.langs = parse_accept_language(acc_lang)
async def render_i18n_template(template, /, **kwargs) -> str:
langs: typing.List[str] = quart.g.langs
if not langs:
return await quart.render_template(template, **kwargs)
names = [
os.path.join('i18n', lang, template)
for lang in langs
]
names.append(template)
return await quart.render_template(names, **kwargs)