Quiero internacionalizar mi proyecto. Seguí cómo se describe en la documentación oficial, pero la localización aún no funciona. Aquí es cómo lo intente conseguir regional del usuario:Determinar el idioma del usuario en Pyramid
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
Pero request
no tiene attr "local_name", pero tiene "Accept-Language", y así cuando la función get_local_name
no encuentra "local_name" en la solicitud , que llama a otra función:
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
Como puedo ver negotiator
intenta conseguir locales de medio ambiente global, pero si peralte hacer que su valor de ajuste de configuración. ¿Y no puedo entender por qué Pyramid no obtiene la configuración regional directamente desde el campo de solicitud "Accept-Language"?
Y, ¿cómo puedo hacer una determinación correcta de la configuración regional?
Pero no hay necesidad de crear el objeto aceptado de accept_language causa accept_language es una instancia ya existente de Accept() y tiene el método best_match() por sí mismo. Es try para la versión 1.2 de la pirámide muchas gracias – Denis
@Denis: Estás en verdad correcto; 'accept_language' ya es una instancia de' Accept'. Corregido –
@Martijin Pieters De todos modos, gracias, todo funciona bien)) – Denis