¿Cómo puedo saber por qué Django ignora el encabezado Aceptar idioma?
google-app-engine internationalization (1)
Hay un cierto orden de que Django haga las cosas en términos de i18n.
Primero verifica LANGUAGE_CODE
. Es el idioma de todo el sitio y, si no se establece nada más, este es el idioma que recibe el usuario.
En segundo lugar, dado que ha agregado el LocaleMiddleware
, verifica si django_language
está configurado en la sesión del usuario. Sugiero borrar la información de la sesión en el DB o crear un usuario completamente nuevo para probar.
En tercer lugar, verifica si hay un django_language
cookies django_language
(o, en realidad, el nombre de la cookie está definido por LANGUAGE_COOKIE_NAME
). Sugeriría eliminar esta cookie.
En cuarto lugar, busca el encabezado HTTP Accept-Language
. Que es donde entra la configuración de tu navegador
¡Buena suerte!
Tengo una aplicación Django (en Google App Engine) que deseo internacionalizar.
settings.py:
USE_I18N = True
LANGUAGE_CODE = ''en''
# Restrict supported languages (and JS media generation)
LANGUAGES = (
(''en'', ''English''),
(''fr'', ''French''),
)
MIDDLEWARE_CLASSES = (
''ragendja.middleware.ErrorMiddleware'',
''django.contrib.sessions.middleware.SessionMiddleware'',
# i18n
''django.middleware.locale.LocaleMiddleware'',
...
He generado archivos .po y .mo para mi aplicación en locale / fr / LC_MESSAGES (aunque no a nivel global).
Configuré el título Accept-Language de mi navegador en "fr" y Django lo ignora. Cuando miro request.LANGUAGE_CODE siempre es "en".
Puedo decir que el navegador es correcto porque visito otro sitio i18n-aware y devuelve francés.
¿Cómo puedo encontrar lo que Django piensa que falta en mi configuración?
Vi esta pregunta y no me ayudó.
Estoy ejecutando Django 1.0 usando el parche de motor de aplicación 1.0.2.2 en Google App Engine.