#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 , 14 years ago
| Attachment: | 17720.diff added |
|---|
comment:1 by , 14 years ago
| Owner: | changed from to |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 14 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
In [17547]: