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

1

11

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?

Whitefly answered 11/6, 2012 at 23:46 Comment(0)
D
17

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

Divertimento answered 12/6, 2012 at 2:47 Comment(2)
Oops... My bad! I guess the docs needs to clarify this a little more. However after reading the whole translation section it becomes clear that django.middleware.locale.LocaleMiddleware is pretty much needed for everything on translation. Thanks!Thermionics
Answer still applies to Django 1.9.Spoonbill

© 2022 - 2024 — McMap. All rights reserved.