summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2012-02-18 13:37:30 +0000
committerJannis Leidel <jannis@leidel.info>2012-02-18 13:37:30 +0000
commit7dd0ceba2e8413d79c2aaff62733f4631cd3c1e7 (patch)
tree3e3cf3d88531a6fca68ee79978d398d6e1c52062 /django
parent52b06e29c76dc9a5184edf3bbea64f0d4d5442b1 (diff)
Fixed #17720 -- Stopped the LocaleMiddleware from overeagerly using the request path for language activation if it's actually not wanted. Thanks to Anssi Kääriäinen for the initial patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17547 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/middleware/locale.py4
-rw-r--r--django/utils/translation/__init__.py4
-rw-r--r--django/utils/translation/trans_null.py2
-rw-r--r--django/utils/translation/trans_real.py12
4 files changed, 14 insertions, 8 deletions
diff --git a/django/middleware/locale.py b/django/middleware/locale.py
index d42a615b04..2a71f3d150 100644
--- a/django/middleware/locale.py
+++ b/django/middleware/locale.py
@@ -15,7 +15,9 @@ class LocaleMiddleware(object):
"""
def process_request(self, request):
- language = translation.get_language_from_request(request)
+ check_path = self.is_language_prefix_patterns_used()
+ language = translation.get_language_from_request(
+ request, check_path=check_path)
translation.activate(language)
request.LANGUAGE_CODE = translation.get_language()
diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py
index 8ad9c5d59a..dbe48239d0 100644
--- a/django/utils/translation/__init__.py
+++ b/django/utils/translation/__init__.py
@@ -144,8 +144,8 @@ def check_for_language(lang_code):
def to_locale(language):
return _trans.to_locale(language)
-def get_language_from_request(request):
- return _trans.get_language_from_request(request)
+def get_language_from_request(request, check_path=False):
+ return _trans.get_language_from_request(request, check_path)
def get_language_from_path(path):
return _trans.get_language_from_path(path)
diff --git a/django/utils/translation/trans_null.py b/django/utils/translation/trans_null.py
index 5c9edb1dd4..0fabc707ce 100644
--- a/django/utils/translation/trans_null.py
+++ b/django/utils/translation/trans_null.py
@@ -55,7 +55,7 @@ def to_locale(language):
else:
return language.lower()
-def get_language_from_request(request):
+def get_language_from_request(request, check_path=False):
return settings.LANGUAGE_CODE
def get_language_from_path(request):
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 419b3809e7..82072b1397 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -363,20 +363,24 @@ def get_language_from_path(path, supported=None):
if lang_code in supported and check_for_language(lang_code):
return lang_code
-def get_language_from_request(request):
+def get_language_from_request(request, check_path=False):
"""
Analyzes the request to find what language the user wants the system to
show. Only languages listed in settings.LANGUAGES are taken into account.
If the user requests a sublanguage where we have a main language, we send
out the main language.
+
+ If check_path is True, the URL path prefix will be checked for a language
+ code, otherwise this is skipped for backwards compatibility.
"""
global _accepted
from django.conf import settings
supported = dict(settings.LANGUAGES)
- lang_code = get_language_from_path(request.path_info, supported)
- if lang_code is not None:
- return lang_code
+ if check_path:
+ lang_code = get_language_from_path(request.path_info, supported)
+ if lang_code is not None:
+ return lang_code
if hasattr(request, 'session'):
lang_code = request.session.get('django_language', None)