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 /django/middleware | |
| 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 'django/middleware')
| -rw-r--r-- | django/middleware/locale.py | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/django/middleware/locale.py b/django/middleware/locale.py index 1f64387d78..0867e3d60f 100644 --- a/django/middleware/locale.py +++ b/django/middleware/locale.py @@ -1,7 +1,5 @@ "This is the locale selecting middleware that will look at accept headers" -from collections import OrderedDict - from django.conf import settings from django.core.urlresolvers import (is_valid_path, get_resolver, LocaleRegexURLResolver) @@ -21,7 +19,6 @@ class LocaleMiddleware(object): response_redirect_class = HttpResponseRedirect def __init__(self): - self._supported_languages = OrderedDict(settings.LANGUAGES) self._is_language_prefix_patterns_used = False for url_pattern in get_resolver(None).url_patterns: if isinstance(url_pattern, LocaleRegexURLResolver): @@ -37,9 +34,7 @@ class LocaleMiddleware(object): def process_response(self, request, response): language = translation.get_language() - language_from_path = translation.get_language_from_path( - request.path_info, supported=self._supported_languages - ) + language_from_path = translation.get_language_from_path(request.path_info) if (response.status_code == 404 and not language_from_path and self.is_language_prefix_patterns_used()): urlconf = getattr(request, 'urlconf', None) |
