mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 22:43:42 +00:00
i18n: Move locale select logic in home to i18n.py.
Part of #16094. Moved the language selection preference logic from home.py to a new function in i18n.py to avoid repetition in analytics views and home views.
This commit is contained in:
committed by
Tim Abbott
parent
55a67ee7c5
commit
a20d22de43
@@ -10,6 +10,7 @@ from two_factor.utils import default_device
|
|||||||
|
|
||||||
from zerver.lib.events import do_events_register
|
from zerver.lib.events import do_events_register
|
||||||
from zerver.lib.i18n import (
|
from zerver.lib.i18n import (
|
||||||
|
get_and_set_request_language,
|
||||||
get_language_list,
|
get_language_list,
|
||||||
get_language_list_for_templates,
|
get_language_list_for_templates,
|
||||||
get_language_name,
|
get_language_name,
|
||||||
@@ -136,17 +137,11 @@ def build_page_params_for_home_page_load(
|
|||||||
|
|
||||||
furthest_read_time = get_furthest_read_time(user_profile)
|
furthest_read_time = get_furthest_read_time(user_profile)
|
||||||
|
|
||||||
# We pick a language for the user as follows:
|
request_language = get_and_set_request_language(
|
||||||
# * First priority is the language in the URL, for debugging.
|
request,
|
||||||
# * If not in the URL, we use the language from the user's settings.
|
register_ret['default_language'],
|
||||||
request_language = translation.get_language_from_path(request.path_info)
|
translation.get_language_from_path(request.path_info)
|
||||||
if request_language is None:
|
)
|
||||||
request_language = register_ret['default_language']
|
|
||||||
translation.activate(request_language)
|
|
||||||
|
|
||||||
# We also save the language to the user's session, so that
|
|
||||||
# something reasonable will happen in logged-in portico pages.
|
|
||||||
request.session[translation.LANGUAGE_SESSION_KEY] = translation.get_language()
|
|
||||||
|
|
||||||
two_fa_enabled = (
|
two_fa_enabled = (
|
||||||
settings.TWO_FACTOR_AUTHENTICATION_ENABLED and user_profile is not None
|
settings.TWO_FACTOR_AUTHENTICATION_ENABLED and user_profile is not None
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ import operator
|
|||||||
import os
|
import os
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from itertools import zip_longest
|
from itertools import zip_longest
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
import orjson
|
import orjson
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.http import HttpRequest
|
||||||
|
from django.utils import translation
|
||||||
|
|
||||||
|
|
||||||
@lru_cache()
|
@lru_cache()
|
||||||
@@ -84,3 +86,22 @@ def get_language_translation_data(language: str) -> Dict[str, str]:
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print(f'Translation for {language} not found at {path}')
|
print(f'Translation for {language} not found at {path}')
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
def get_and_set_request_language(
|
||||||
|
request: HttpRequest,
|
||||||
|
user_configured_language: str,
|
||||||
|
testing_url_language: Optional[str]=None
|
||||||
|
) -> str:
|
||||||
|
# We pick a language for the user as follows:
|
||||||
|
# * First priority is the language in the URL, for debugging.
|
||||||
|
# * If not in the URL, we use the language from the user's settings.
|
||||||
|
request_language = testing_url_language
|
||||||
|
if request_language is None:
|
||||||
|
request_language = user_configured_language
|
||||||
|
translation.activate(request_language)
|
||||||
|
|
||||||
|
# We also save the language to the user's session, so that
|
||||||
|
# something reasonable will happen in logged-in portico pages.
|
||||||
|
request.session[translation.LANGUAGE_SESSION_KEY] = translation.get_language()
|
||||||
|
|
||||||
|
return request_language
|
||||||
|
|||||||
Reference in New Issue
Block a user