#35973: makemessages: is_valid_locale regex fails to validate locales with numeric
region codes
-------------------------------------+-------------------------------------
Reporter: Juan Pablo | Type:
Mallarino | Uncategorized
Status: new | Component:
| Internationalization
Version: 4.2 | Severity: Normal
Keywords: makemessages, i18n | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
The is_valid_locale function in the makemessages management command uses a
regular expression that doesn't account for locales with numeric region
codes, such as es_419. The current regex r"^[a-z]+_[A-Z].*$" only allows
uppercase letters after the underscore. This excludes valid locale codes
that use numbers in the region subtag.
This can cause issues when trying to generate message files for these
locales. For example, running makemessages with es_419 will not generate
the expected message files, potentially leading to missing translations.
Proposed Solution
Modify the regular expression in is_valid_locale to include numeric
characters in the region subtag validation. The suggested change is:
From: r"^[a-z]+_[A-Z].*$" To: r"^[a-z]+_[A-Z0-9].*$"
This change would allow the validation of locales like es_419 while still
maintaining the expected format for other locale codes. This simple
modification would ensure broader compatibility and avoid unexpected
behavior when working with valid locales containing numeric region codes.
--
Ticket URL: <
https://code.djangoproject.com/ticket/35973>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.