Opened 3 hours ago
Last modified 3 hours ago
#36642 assigned Uncategorized
makemessages provides invalid locale suggestions when attempting to format the locale string
Reported by: | ontowhee | Owned by: | ontowhee |
---|---|---|---|
Component: | Internationalization | Version: | 5.2 |
Severity: | Normal | Keywords: | |
Cc: | ontowhee | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
This bug is reported by the forum user "hfl" in https://forum.djangoproject.com/t/invalid-locale-zh-hans-did-you-mean-zh-hans/42829.
When an invalid locale is provided, makemessages will provide a suggested valid locale. However, some locales are displayed with incorrect capitalizations, because there is an attempt to parse and capitalize a territory component in [lines 431-438](https://github.com/django/django/blob/main/django/core/management/commands/makemessages.py#L431-L438). Not all locales contain a territory component.
The example from the forum post is,
$ python manage.py makemessages zh-hans invalid locale zh-hans, did you mean zh_HAns?
where zh-hans
is an invalid input, and the suggested locale zh_HAns
is also invalid. The correct suggestion should be zh_Hans
.
I'm not familiar with translations, but I wonder if it would help to use a dictionary lookup of the locales (with the keys as the locales in all lowercase, and the values the actual locale with correct casing), instead of relying on regular expressions to validate the locale in is_valid_locale()
and to format the locale.
Change History (1)
comment:1 by , 3 hours ago
Component: | Uncategorized → Internationalization |
---|---|
Owner: | set to |
Status: | new → assigned |
If this ticket is accepted, it would be a good "quick win" ticket for Djangonaut Space. I'm assigning it to myself it that's ok.