Using Django's new i18n_patterns: How to fall back to the default language specified in the settings module?

Armando Pérez Marqués picture Armando Pérez Marqués · Jun 12, 2012 · Viewed 9.7k times · Source

I'm using the new i18n_patterns of Django 1.4:

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

from django.contrib import admin
admin.autodiscover()

urlpatterns += i18n_patterns('',
    url(r'^admin/', include(admin.site.urls)),
)

It works for every active language:

/en/admin/ # Ok
/es/admin/ # Ok

But this fails:

/admin/ # 404 Not found

How to avoid the 404 error and redirect to a language-prefixed version of the requested URL (not only the admin panel)?

Is to write a custom middleware the solution? Why this doesn't come by default in Django?

Answer

jpic picture jpic · Jun 12, 2012