Opened 8 years ago

Last modified 7 years ago

#28070 closed Bug

set_language (i18n) without next does not change language if called from a language prefixed URL — at Version 1

Reported by: Monsieur Cellophane Owned by: nobody
Component: Internationalization Version: 1.11
Severity: Normal Keywords: set_language, url translation
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Monsieur Cellophane)

Greetings.

Preamble:
Switching language by posting to set_language with an empty next parameter causes a redirection to the REFERER url, as per the documentation.

Description:

What this means is that if language selection is made from a language-neutral URL (say /about/), selecting english as language the redirection in set_language will land the user to /en/about.

If - however - a new language selection (say de) is now made from /en/about/, the landing spot will be (again) /en/about, rather than the expected /de/about. The new language (de) is now, however, memorised in the user's session.

What should happen:
Invoking set_language from a language prefixed page with an empty next parameter should redirect to the language-neutral URL, allowing the session based url selection to kick in.

What would help:

Of course, being able to reference the current language-neutral url as the next parameter to set_language would achieve the result. However, language-neutral urls aren't availble in templates (or anywhere I looked); so one's best hope is writing a custom template filter that strips the language prefix from a URL and hen use the stripped request.path (or request.get_fulL_path) as the next parameter to the POST.

Change History (1)

comment:1 by Monsieur Cellophane, 8 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top