summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBouke Haarsma <bouke@webatoom.nl>2013-11-12 07:54:01 +0100
committerClaude Paroz <claude@2xlibre.net>2014-02-26 16:58:04 +0100
commit2bab9d6d9ea095c4bcaeede2df576708afd46291 (patch)
tree8225995e22d76818f9659ceff5629a30d4a38d2d /tests
parent48a8b714d49d7a4ceee66473aea72c2d8c84a672 (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.py22
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'),