设置django_language Cookie时出现LocaleMiddleware错误
我想使用LocaleMiddleware在模板层中获取用户首选语言,从而为每种语言显示不同的内容。根据django文档,LocaleMiddleware执行以下操作:设置django_language Cookie时出现LocaleMiddleware错误
首先,它在请求的URL中查找语言前缀。只有在您的根URLconf中使用i18n_patterns功能时才会执行此操作。请参阅国际化:在URL模式中了解有关语言前缀以及如何国际化URL模式的更多信息。
失败的是,它在当前用户的会话中查找django_language键。
如果失败,它会查找cookie。所用Cookie的名称由LANGUAGE_COOKIE_NAME设置设置。 (默认名称是django_language。)
如果失败,它将查看Accept-Language HTTP标头。这个头文件由浏览器发送,并按照优先顺序告诉服务器你喜欢哪种语言。 Django在标题中尝试每种语言,直到找到可用翻译的语言。
失败的是,它使用全局LANGUAGE_CODE设置。
当它使用Accept-Language头时它似乎正常工作。然而,当我参观set_language重定向,LocaleMiddleware开始用下面的错误而失败:
AttributeError at/
'NoneType' object has no attribute '_info'
如果我排除LocaleMiddleware从中间件列表或清除浏览器cookie,这个错误不会再出现,直到我再次去到set_language重定向。
这是我的配置:
settings.py
LANGUAGE_CODE = 'en-us'
USE_I18N = True
LANGUAGES = (
('en', 'English'),
('es', 'Español'),
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
#Uncomment the next line for simple clickjacking protection:
#'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
而下面的模式到set_language在urls.py重定向:
(r'^i18n/', include('django.conf.urls.i18n')),
我读过一些信息类似的错误和错误,但他们都不能解决我的问题。任何线索?
这是Django的一种说法:“找不到所需语言的翻译”。
您是否运行过compilemessages?
我发现了一些有趣的东西。也许这是因为我的开发机器。我正在使用Ubuntu 12.04和Django 1.4。它在我用root用户测试时正常工作,可能它与我的安装权限有关,我使用PIP安装了Django。 – 2012-07-17 13:41:44
尝试查看错误的堆栈跟踪,以便您可以查看哪种对象缺少“_info”属性...如果足够长的跟踪它,则会找到答案;) – benjaoming 2012-07-17 15:48:11