2012-07-04 1 views
1

Я проводил пару часов, пытаясь понять, чего мне не хватает. У меня есть языки, определенные в файле настроек проекта.Django i18n_patterns не соответствует ссылкам с разными языковыми кодами

LANGUAGE_CODE = 'en-us' 

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

Тогда у меня есть LocaleMiddleware, указанный в моем MIDDLEWARE_CLASSES.

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'), 
) 

Теперь ссылки/ан/о работе хорошо, однако связь с/фр/о неудачно со следующей ошибкой:

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

 Смежные вопросы

  • Нет связанных вопросов^_^