2012-07-04 45 views
1

我已经花了几个小时已经试图了解我错过了什么。我有在项目设置文件中定义的语言。Django i18n_patterns不匹配具有不同语言代码的链接

LANGUAGE_CODE = 'en-us' 

LANGUAGES = (
    ('en', 'English'), 
    ('fr', 'French'), 
) 

然后我在我的MIDDLEWARE_CLASSES中列出了LocaleMiddleware。

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    ... 
) 

最后,在我的urls.py我有以下

from django.conf.urls import patterns, include, url 
from django.conf.urls.i18n import i18n_patterns 

... 
urlpatterns += i18n_patterns('', 
    url(r'^about/$', 'about.view', {'template_name': {'en':'contact_en.html', 'fr':'contact_fr.html',},}, name='about'), 
) 

现在链接/ EN /约工作做好,然而与/ FR /关于失败,出现以下错误链接:

Using the URLconf defined in XXX.urls, Django tried these URL patterns, in this order: 
... 
2. ^en/ 

The current URL, fr/about/, didn't match any of these. 

任何人都可以帮我理解我错过了什么吗?

回答

0

最后我解决了这个问题。以上所有内容对于常规项目都是正确的但是我忘记了我编写了一个中间件,它动态地修补了request.urlconf字段以替换为正确的URL配置文件。查看LocaleMiddlware代码后,我发现中间件改为使用settings.ROOT_URLCONF,因此未查找正确的urls.py

所以,如果有人做补丁urls.py不要忘记补丁ROOT_URLCONF