Opened 8 years ago
Closed 8 years ago
#28755 closed Bug (fixed)
django.utils.translation.check_for_language doesn't check in the app folders
| Reported by: | Dorian Amouroux | Owned by: | ChillarAnand |
|---|---|---|---|
| Component: | Internationalization | Version: | 1.11 |
| Severity: | Normal | Keywords: | |
| Cc: | ChillarAnand | Triage Stage: | Ready for checkin |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
When using the set_language view to set the language for the user, it doesn't work if the language file is not in settings.LOCALE_PATHS nor in django/conf/locale/.
Indeed set_language (https://github.com/django/django/blob/stable/1.11.x/django/views/i18n.py#L50) calls the function check_for_language. check_for_language will check if the language in parameter exists in the gettext catalog. However, check_for_language calls the function all_locale_paths (https://github.com/django/django/blob/stable/1.11.x/django/utils/translation/trans_real.py#L411) which doesn't contains the path of the apps.
I create a language that doesn't exist in the Django default language, I can't switch to this language because it cannot be found, it only exists in the locale directory inside my apps.
Change History (9)
comment:1 by , 8 years ago
| Easy pickings: | unset |
|---|---|
| Has patch: | unset |
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 8 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:3 by , 8 years ago
| Cc: | added |
|---|---|
| Has patch: | set |
comment:4 by , 8 years ago
| Needs tests: | set |
|---|
comment:8 by , 8 years ago
| Patch needs improvement: | set |
|---|
Left a comment for improvement about putting the test in a better location.
comment:10 by , 8 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
PR -> https://github.com/django/django/pull/9351