#36642: makemessages provides invalid locale suggestions when attempting to format
the locale string
--------------------------+-----------------------------------------
Reporter: ontowhee | Type: Uncategorized
Status: new | Component: Uncategorized
Version: 5.2 | Severity: Normal
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------+-----------------------------------------
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.
--
Ticket URL: <
https://code.djangoproject.com/ticket/36642>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.