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

django, internationalization, python, url-routing, urlconf

Solution

It looks like you did not enable django.middleware.locale.LocaleMiddleware.

Problem

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?

Original source