gonets/SRV/utils/i18n.py

36 lines
No EOL
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import Request
from babel.support import Translations
import logging
logger = logging.getLogger(__name__)
def get_translations(request: Request) -> Translations:
"""
Загружает переводы для текущего запроса на основе заголовка Accept-Language
или параметра запроса 'locale'. По умолчанию используется русский язык.
Args:
request (Request): Объект запроса FastAPI.
Returns:
Translations: Объект переводов для текущей локали.
"""
# Проверяем параметр запроса 'locale', если он есть
locale = request.query_params.get("locale")
if not locale:
# Если параметр отсутствует, используем заголовок Accept-Language
locale = request.headers.get("Accept-Language", "ru").split(",")[0]
try:
translations = Translations.load("locales", [locale], domain="messages")
logger.debug(f"Загружены переводы для локали: {locale}")
return translations
except Exception as e:
logger.error(f"Не удалось загрузить переводы для локали {locale}: {str(e)}")
# Возвращаем переводы по умолчанию (русский)
return Translations.load("locales", ["ru"], domain="messages")
# Определяем функцию `_` для удобства использования в коде
_ = lambda s: get_translations(Request).gettext(s)