Fixed #32581 -- Prevented to_locale() from corrupting locale names.
This commit is contained in:
parent
9d130920e6
commit
d11b9ffcc0
|
@ -201,9 +201,9 @@ def to_language(locale):
|
||||||
|
|
||||||
def to_locale(language):
|
def to_locale(language):
|
||||||
"""Turn a language name (en-us) into a locale name (en_US)."""
|
"""Turn a language name (en-us) into a locale name (en_US)."""
|
||||||
language, _, country = language.lower().partition('-')
|
lang, _, country = language.lower().partition('-')
|
||||||
if not country:
|
if not country:
|
||||||
return language
|
return language[:3].lower() + language[3:]
|
||||||
# A language with > 2 characters after the dash only has its first
|
# A language with > 2 characters after the dash only has its first
|
||||||
# character after the dash capitalized; e.g. sr-latn becomes sr_Latn.
|
# character after the dash capitalized; e.g. sr-latn becomes sr_Latn.
|
||||||
# A language with 2 characters after the dash has both characters
|
# A language with 2 characters after the dash has both characters
|
||||||
|
@ -212,7 +212,7 @@ def to_locale(language):
|
||||||
country = country.title() if len(country) > 2 else country.upper()
|
country = country.title() if len(country) > 2 else country.upper()
|
||||||
if tail:
|
if tail:
|
||||||
country += '-' + tail
|
country += '-' + tail
|
||||||
return language + '_' + country
|
return lang + '_' + country
|
||||||
|
|
||||||
|
|
||||||
def get_language_from_request(request, check_path=False):
|
def get_language_from_request(request, check_path=False):
|
||||||
|
|
|
@ -313,12 +313,16 @@ class TranslationTests(SimpleTestCase):
|
||||||
('EN', 'en'),
|
('EN', 'en'),
|
||||||
('en-us', 'en_US'),
|
('en-us', 'en_US'),
|
||||||
('EN-US', 'en_US'),
|
('EN-US', 'en_US'),
|
||||||
|
('en_US', 'en_US'),
|
||||||
# With > 2 characters after the dash.
|
# With > 2 characters after the dash.
|
||||||
('sr-latn', 'sr_Latn'),
|
('sr-latn', 'sr_Latn'),
|
||||||
('sr-LATN', 'sr_Latn'),
|
('sr-LATN', 'sr_Latn'),
|
||||||
|
('sr_Latn', 'sr_Latn'),
|
||||||
# 3-char language codes.
|
# 3-char language codes.
|
||||||
('ber-MA', 'ber_MA'),
|
('ber-MA', 'ber_MA'),
|
||||||
('BER-MA', 'ber_MA'),
|
('BER-MA', 'ber_MA'),
|
||||||
|
('BER_MA', 'ber_MA'),
|
||||||
|
('ber_MA', 'ber_MA'),
|
||||||
# With private use subtag (x-informal).
|
# With private use subtag (x-informal).
|
||||||
('nl-nl-x-informal', 'nl_NL-x-informal'),
|
('nl-nl-x-informal', 'nl_NL-x-informal'),
|
||||||
('NL-NL-X-INFORMAL', 'nl_NL-x-informal'),
|
('NL-NL-X-INFORMAL', 'nl_NL-x-informal'),
|
||||||
|
|
Loading…
Reference in New Issue