#17720 closed Bug (fixed)
LocaleMiddleware inspects language from URL path in a backwards incompatible way
Reported by: | Anssi Kääriäinen | Owned by: | Jannis Leidel |
---|---|---|---|
Component: | Internationalization | Version: | 1.4-beta-1 |
Severity: | Release blocker | Keywords: | |
Cc: | Anssi Kääriäinen | Triage Stage: | Accepted |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
As reported by Ryan Kaskel in this django-dev thread, the LocaleMiddleware inspects the user's language from the URL path in a backwards incompatible way.
Kaskel had /sl/ as a prefix for his URL path, and due to that Slovak was activated as the language to use. He did not use the new i18n_patterns method in his patterns.
The relevant commit is this: r16405
There is this warning added to the docs:
Ensure that you don't have non-prefixed URL patterns that might collide with an automatically-added language prefix.
An user doesn't have much chance to dodge this issue: suggesting change of his existing URLs doesn't really fly.
I think the only sane fix is to detect if the user is using i18n_patterns in his root urls.py. If he isn't, no language introspection should be done based on the URL path. I have attached a patch with tests for this. My reading of the docs suggests no changes are needed there.
I do think this is backwards incompatible and should be fixed in one way or another before 1.4. Marking this as Release Blocker due to this not really being my ticket, but a confirmation of Kaskel's findings.
Attachments (1)
Change History (4)
by , 13 years ago
Attachment: | 17720.diff added |
---|
comment:1 by , 13 years ago
Owner: | changed from | to
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
In [17547]: