You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

33 lines
1.2 KiB

from django.utils.translation import get_language
from .messages import ACCOUNT_MESSAGES
def get_localized_msg(key, request=None, fallback_lang="en"):
"""
Get localized message from ACCOUNT_MESSAGES based on request or active language.
"""
json_list = ACCOUNT_MESSAGES.get(key)
if not json_list:
return key # Fallback to key itself if not found
# Get language from request (LocaleMiddleware sets LANGUAGE_CODE)
language_code = getattr(request, "LANGUAGE_CODE", None) if request else None
# Check if 'lang' query param is used (common in this project's mobile apps)
if not language_code and request:
language_code = request.query_params.get('lang')
if not language_code:
language_code = get_language() or fallback_lang
# 1) Exact match
for item in json_list:
if item.get("language_code") == language_code:
return item.get("text")
# 2) Fallback to English
for item in json_list:
if item.get("language_code") == "en":
return item.get("text")
# 3) First available
return json_list[0].get("text") if json_list else key