mirror of https://github.com/django/django.git
Fixed #19142 -- Language codes can include numbers (RFC 3066).
This commit is contained in:
parent
6b0d93df18
commit
e6b34193c5
|
@ -30,9 +30,10 @@ _accepted = {}
|
||||||
# magic gettext number to separate context from message
|
# magic gettext number to separate context from message
|
||||||
CONTEXT_SEPARATOR = "\x04"
|
CONTEXT_SEPARATOR = "\x04"
|
||||||
|
|
||||||
# Format of Accept-Language header values. From RFC 2616, section 14.4 and 3.9.
|
# Format of Accept-Language header values. From RFC 2616, section 14.4 and 3.9
|
||||||
|
# and RFC 3066, section 2.1
|
||||||
accept_language_re = re.compile(r'''
|
accept_language_re = re.compile(r'''
|
||||||
([A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*|\*) # "en", "en-au", "x-y-z", "*"
|
([A-Za-z]{1,8}(?:-[A-Za-z0-9]{1,8})*|\*) # "en", "en-au", "x-y-z", "es-419", "*"
|
||||||
(?:\s*;\s*q=(0(?:\.\d{,3})?|1(?:.0{,3})?))? # Optional "q=1.00", "q=0.8"
|
(?:\s*;\s*q=(0(?:\.\d{,3})?|1(?:.0{,3})?))? # Optional "q=1.00", "q=0.8"
|
||||||
(?:\s*,\s*|$) # Multiple accepts per header.
|
(?:\s*,\s*|$) # Multiple accepts per header.
|
||||||
''', re.VERBOSE)
|
''', re.VERBOSE)
|
||||||
|
|
|
@ -715,6 +715,7 @@ class MiscTests(TestCase):
|
||||||
# Good headers.
|
# Good headers.
|
||||||
self.assertEqual([('de', 1.0)], p('de'))
|
self.assertEqual([('de', 1.0)], p('de'))
|
||||||
self.assertEqual([('en-AU', 1.0)], p('en-AU'))
|
self.assertEqual([('en-AU', 1.0)], p('en-AU'))
|
||||||
|
self.assertEqual([('es-419', 1.0)], p('es-419'))
|
||||||
self.assertEqual([('*', 1.0)], p('*;q=1.00'))
|
self.assertEqual([('*', 1.0)], p('*;q=1.00'))
|
||||||
self.assertEqual([('en-AU', 0.123)], p('en-AU;q=0.123'))
|
self.assertEqual([('en-AU', 0.123)], p('en-AU;q=0.123'))
|
||||||
self.assertEqual([('en-au', 0.5)], p('en-au;q=0.5'))
|
self.assertEqual([('en-au', 0.5)], p('en-au;q=0.5'))
|
||||||
|
@ -739,6 +740,7 @@ class MiscTests(TestCase):
|
||||||
self.assertEqual([], p('da, en-gb;q=0.8, en;q=0.7,#'))
|
self.assertEqual([], p('da, en-gb;q=0.8, en;q=0.7,#'))
|
||||||
self.assertEqual([], p('de;q=2.0'))
|
self.assertEqual([], p('de;q=2.0'))
|
||||||
self.assertEqual([], p('de;q=0.a'))
|
self.assertEqual([], p('de;q=0.a'))
|
||||||
|
self.assertEqual([], p('12-345'))
|
||||||
self.assertEqual([], p(''))
|
self.assertEqual([], p(''))
|
||||||
|
|
||||||
def test_parse_literal_http_header(self):
|
def test_parse_literal_http_header(self):
|
||||||
|
|
Loading…
Reference in New Issue