diff options
| author | Bouke Haarsma <bouke@webatoom.nl> | 2013-11-12 07:54:01 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2014-02-26 16:58:04 +0100 |
| commit | 2bab9d6d9ea095c4bcaeede2df576708afd46291 (patch) | |
| tree | 8225995e22d76818f9659ceff5629a30d4a38d2d /tests | |
| parent | 48a8b714d49d7a4ceee66473aea72c2d8c84a672 (diff) | |
Fixed #21389 -- Accept most valid language codes
By removing the 'supported' keyword from the detection methods and only relying
on a cached settings.LANGUAGES, the speed of said methods has been improved;
around 4x raw performance. This allows us to stop checking Python's incomplete
list of locales, and rely on a less restrictive regular expression for
accepting certain locales.
HTTP Accept-Language is defined as being case-insensitive, based on this fact
extra performance improvements have been made; it wouldn't make sense to
check for case differences.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/i18n/tests.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 56c3f63316..cc25904ccc 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -821,10 +821,10 @@ class MiscTests(TestCase): p = trans_real.parse_accept_lang_header # Good headers. 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([('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', 1.0)], p('en-au;q=1.0')) self.assertEqual([('da', 1.0), ('en', 0.5), ('en-gb', 0.25)], p('da, en-gb;q=0.25, en;q=0.5')) @@ -884,6 +884,24 @@ class MiscTests(TestCase): r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-cn,de'} self.assertEqual(g(r), 'zh-cn') + r.META = {'HTTP_ACCEPT_LANGUAGE': 'NL'} + self.assertEqual('nl', g(r)) + + r.META = {'HTTP_ACCEPT_LANGUAGE': 'fy'} + self.assertEqual('fy', g(r)) + + r.META = {'HTTP_ACCEPT_LANGUAGE': 'ia'} + self.assertEqual('ia', g(r)) + + r.META = {'HTTP_ACCEPT_LANGUAGE': 'sr-latn'} + self.assertEqual('sr-latn', g(r)) + + r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-hans'} + self.assertEqual('zh-hans', g(r)) + + r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-hant'} + self.assertEqual('zh-hant', g(r)) + @override_settings( LANGUAGES=( ('en', 'English'), |
