fix default locale and language issues

This commit is contained in:
Marc Abonce Seguin 2020-02-23 02:03:42 -07:00
parent 2ade2ce10a
commit c0006cadf7
3 changed files with 19 additions and 13 deletions

View file

@ -157,14 +157,16 @@ _category_names = (gettext('files'),
outgoing_proxies = settings['outgoing'].get('proxies') or None
def _get_browser_language(request, lang_list):
for lang in request.headers.get("Accept-Language", "en").split(","):
locale = match_language(lang, lang_list, fallback=None)
if locale is not None:
return locale
@babel.localeselector
def get_locale():
locale = "en-US"
for lang in request.headers.get("Accept-Language", locale).split(","):
locale = match_language(lang, settings['locales'].keys(), fallback=None)
if locale is not None:
break
locale = _get_browser_language(request, settings['locales'].keys())
logger.debug("default locale from browser info is `%s`", locale)
@ -372,8 +374,7 @@ def render(template_name, override_theme=None, **kwargs):
kwargs['language_codes'] = languages
if 'current_language' not in kwargs:
kwargs['current_language'] = match_language(request.preferences.get_value('language'),
LANGUAGE_CODES,
fallback=locale)
LANGUAGE_CODES)
# override url_for function in templates
kwargs['url_for'] = url_for_theme
@ -444,11 +445,10 @@ def pre_request():
request.errors.append(gettext('Invalid settings'))
# init search language and locale
locale = get_locale()
if not preferences.get_value("language"):
preferences.parse_dict({"language": locale})
preferences.parse_dict({"language": _get_browser_language(request, LANGUAGE_CODES)})
if not preferences.get_value("locale"):
preferences.parse_dict({"locale": locale})
preferences.parse_dict({"locale": get_locale()})
# request.user_plugins
request.user_plugins = []