Определить язык пользователя в пирамиде
Я хочу сделать интернационализацию для своего проекта. Я следовал тому, как это описано в официальной документации, но локализация все еще не работает. Вот как я пытаюсь получить локаль пользователя:
def get_locale_name(request):
""" Return the :term:`locale name` associated with the current
request (possibly cached)."""
locale_name = getattr(request, 'locale_name', None)
if locale_name is None:
locale_name = negotiate_locale_name(request)
request.locale_name = locale_name
return locale_name
Ноrequest
не имеет атрибута "local_name", но имеет "Accept-Language" и так, когда функцияget_local_name
не находит & quot; локальное_имя & quot; в запросе он вызывает другую функцию:
def negotiate_locale_name(request):
""" Negotiate and return the :term:`locale name` associated with
the current request (never cached)."""
try:
registry = request.registry
except AttributeError:
registry = get_current_registry()
negotiator = registry.queryUtility(ILocaleNegotiator,
default=default_locale_negotiator)
locale_name = negotiator(request)
if locale_name is None:
settings = registry.settings or {}
locale_name = settings.get('default_locale_name', 'en')
return locale_name
Как я могу видетьnegotiator
попытаться получить локальный из глобальной среды, но если он не может сделать это, его установленное значение из конфигурации.
И я не могу понять, почему Pyramid не получает языковой стандарт непосредственно из поля запроса «Accept-Language»?
И как я могу сделать правильное определение локали?