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 ontowhee, 3 hours ago

Component: UncategorizedInternationalization
Owner: set to ontowhee
Status: newassigned

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.

Note: See TracTickets for help on using tickets.
Back to Top