Opened 105 minutes ago
#36636 new Bug
Outdated documentation in set_language() references removed session-based language storage
Reported by: | Samriddha Kumar Tripathi | Owned by: | |
---|---|---|---|
Component: | Documentation | Version: | 5.2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
The documentation and docstring for django.views.i18n.set_language()
contain outdated information about session-based language storage, which was deprecated in Django 3.0 and removed in Django 4.0.
Affected locations:
- Docstring in
django/views/i18n.py
: Current text says: "Redirect to a given URL while setting the chosen language in the session (if enabled) and in a cookie."
- Documentation (i18n section): Current text says: "The view expects to be called via the POST method, with a language parameter set in request. If session support is enabled, the view saves the language choice in the user's session. It also saves the language choice in a cookie that is named django_language by default."
The issue:
The actual code in set_language()
does NOT save the language to the session. According to the Django 3.0 release notes:
"To limit creation of sessions and hence favor some caching strategies, django.views.i18n.set_language() will stop setting the user's language in the session in Django 4.0. Since Django 2.1, the language is always stored in the LANGUAGE_COOKIE_NAME cookie."
Expected behavior:
Both the docstring and documentation should be updated to remove references to session storage and clarify that the language choice is stored only in the cookie (LANGUAGE_COOKIE_NAME, which defaults to django_language).
Credit: Issue reported by kid_alan_ on Discord.