diff options
| author | Claude Paroz <claude@2xlibre.net> | 2012-10-21 10:35:01 -0700 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2012-10-21 10:35:01 -0700 |
| commit | 22471a41ba676afdab55daf34f1c7c25b327bbb9 (patch) | |
| tree | 14a4c780c2f9c932e438e5f1fabb411f31da98ff | |
| parent | e987d20ac92ceef382cc02dfab38aac64d84dc5d (diff) | |
| parent | e6b34193c5c7d117ededdab04bb16caf8864f07c (diff) | |
Merge pull request #457 from JanBednarik/ticket_19142
Fixed #19142 -- Language codes can include numbers (RFC 3066)
| -rw-r--r-- | django/utils/translation/trans_real.py | 5 | ||||
| -rw-r--r-- | tests/regressiontests/i18n/tests.py | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index cce2a8cb86..9e94840ee0 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -30,9 +30,10 @@ _accepted = {} # magic gettext number to separate context from message 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''' - ([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*|$) # Multiple accepts per header. ''', re.VERBOSE) diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py index bce3d617d2..45471a9678 100644 --- a/tests/regressiontests/i18n/tests.py +++ b/tests/regressiontests/i18n/tests.py @@ -715,6 +715,7 @@ class MiscTests(TestCase): # Good headers. self.assertEqual([('de', 1.0)], p('de')) 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([('en-AU', 0.123)], p('en-AU;q=0.123')) 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('de;q=2.0')) self.assertEqual([], p('de;q=0.a')) + self.assertEqual([], p('12-345')) self.assertEqual([], p('')) def test_parse_literal_http_header(self): |
