refactor(lang): frappe.translate.get_language

User.language should be given higher priority in terms of
authenticated user since they chose it. Even higher than the
browser they're using...even if the system locales aren't set
properly and browser isn't configured properly
This commit is contained in:
Gavin D'souza 2021-07-30 18:59:57 +05:30
parent 5f678a0d40
commit 450d4e489b
2 changed files with 7 additions and 3 deletions

View file

@ -154,7 +154,6 @@ class LoginManager:
self.make_session()
self.setup_boot_cache()
self.set_user_info()
self.clear_preferred_language()
def get_user_info(self):
self.info = frappe.db.get_value("User", self.user,

View file

@ -27,11 +27,12 @@ def get_language(lang_list: List = None) -> str:
Order of priority for setting language:
1. Form Dict => _lang
2. Cookie => preferred_language
3. Request Header => Accept-Language
2. Cookie => preferred_language (Non authorized user)
3. Request Header => Accept-Language (Non authorized user)
4. User document => language
5. System Settings => language
"""
is_logged_in = frappe.session.user != "Guest"
# fetch language from form_dict
if frappe.form_dict._lang:
@ -41,6 +42,10 @@ def get_language(lang_list: List = None) -> str:
if language:
return language
# use language set in User or System Settings if user is logged in
if is_logged_in:
return frappe.local.lang
lang_set = set(lang_list or get_all_languages() or [])
# fetch language from cookie