Określ język użytkownika w Pyramid
Chcę umiędzynarodowić mój projekt. Postępowałem zgodnie z opisem w oficjalnej dokumentacji, ale lokalizacja nadal nie działa. Oto, jak próbuję pobrać ustawienia użytkownika:
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
Alerequest
nie ma atrybutu „nazwa_lokalna”, ale ma „Język akceptujący”, a więc kiedy funkcjaget_local_name
nie znajduje „żądania_lokalnego” w żądaniu, wywołuje inną funkcję:
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
Jak mogę zobaczyćnegotiator
spróbuj uzyskać lokalne z globalnego środowiska, ale jeśli nie można tego zrobić, ustaw jego wartość z config. I nie mogę zrozumieć, dlaczego Pyramid nie pobiera locale bezpośrednio z pola żądania „Accept-Language”?
Jak mogę określić poprawne ustawienia regionalne?