#11915 closed Bug (fixed)
language range request should return sublanguage
Reported by: | George Lund | Owned by: | Łukasz Langa |
---|---|---|---|
Component: | Internationalization | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
If a user's browser includes a request for a language range including a parent language, sub-languages which match should be returned.
For example, if a user's browser sends a header
Accept-Language: pt
And my site has
LANGUAGES = ( #... ('pt-br', 'Português (Brazil)'), #... )
Then the pt_BR locale files I have should be used. (RFC 2616: 'A language-range matches a language-tag if it exactly equals the tag, or if it exactly equals a prefix of the tag such that the first tag character following the prefix is "-".')
Right now the only way to get the Portugese returned is for me to relabel my local to just "pt" (which works except that the language will now be mislabelled in the Content-Language header).
Change History (8)
comment:1 by , 15 years ago
Description: | modified (diff) |
---|---|
Triage Stage: | Unreviewed → Design decision needed |
Version: | 1.0 → SVN |
comment:2 by , 14 years ago
Severity: | → Normal |
---|---|
Type: | → New feature |
comment:3 by , 13 years ago
Easy pickings: | unset |
---|---|
Triage Stage: | Design decision needed → Accepted |
Type: | New feature → Bug |
UI/UX: | unset |
ramiro: I propose to select whichever language comes first in settings.LANGUAGES
.
comment:4 by , 11 years ago
Just a small comment from my side, not sure at this moment how to solve this.
As it is implemented at the moment function all_locale_paths (django/utils/translation/trans_real.py) always returns "django/conf/locale" (with addition of user added locale path directories). That directory already contains translation files for most of the languages with sublanguages (ar, pt, es, en, ...). In example above where user has defined "Accept-Language: pt" Django will accept this as valid choice (because it does have translation for that language) even though user has only defined "pt_BR" for his own applications. Not really sure how one could decide and make a switch to pt_BR language code.
comment:5 by , 11 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:6 by , 11 years ago
Has patch: | set |
---|
Pull request ready: https://github.com/django/django/pull/1152
comment:7 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
This takes us to the following possible scenario: What if the
LANGUAGES
setting has, in addition to'pt-br'
,'pt-cv'
(Portuguese as spoken in Cape Verde)? How and why should Django choose'pt-br'
in preference to'pt-cv'
(or vice versa) if a translation to'pt'
is missing?(The fact I'm using
pt
,pt-br
andpt-cv
in this example is just incidental, the real issue is what matters)