summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2011-11-01 14:02:31 +0000
committerAymeric Augustin <aymeric.augustin@m4x.org>2011-11-01 14:02:31 +0000
commitaf1893c4ff8fdbf227a43a559d90bb1c1238b01a (patch)
treec5d9709e7089197b3b10471232ee85a1547d7953
parent01964fd7e4ecd1998a2288e1759a63bd9a5fb2df (diff)
Made the cache locale-dependant when USE_L10N is True, even if USE_I18N is False. Refs #5691.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17061 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/utils/cache.py2
-rw-r--r--docs/topics/cache.txt4
-rw-r--r--tests/regressiontests/cache/tests.py20
3 files changed, 20 insertions, 6 deletions
diff --git a/django/utils/cache.py b/django/utils/cache.py
index 71c091ee18..be4fa58645 100644
--- a/django/utils/cache.py
+++ b/django/utils/cache.py
@@ -158,7 +158,7 @@ def has_vary_header(response, header_query):
def _i18n_cache_key_suffix(request, cache_key):
"""If enabled, returns the cache key ending with a locale."""
- if settings.USE_I18N:
+ if settings.USE_I18N or settings.USE_L10N:
# first check if LocaleMiddleware or another middleware added
# LANGUAGE_CODE to request, then fall back to the active language
# which in turn can also fall back to settings.LANGUAGE_CODE
diff --git a/docs/topics/cache.txt b/docs/topics/cache.txt
index 1d85683d95..4729cab60d 100644
--- a/docs/topics/cache.txt
+++ b/docs/topics/cache.txt
@@ -498,6 +498,10 @@ include the name of the active :term:`language<language code>` -- see also
:ref:`how-django-discovers-language-preference`). This allows you to easily
cache multilingual sites without having to create the cache key yourself.
+.. versionchanged:: 1.4
+
+This also happens when :setting:`USE_L10N` is set to ``True``.
+
__ `Controlling cache: Using other headers`_
The per-view cache
diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py
index bc0a05e4fe..e6c03837d4 100644
--- a/tests/regressiontests/cache/tests.py
+++ b/tests/regressiontests/cache/tests.py
@@ -1154,23 +1154,33 @@ class CacheI18nTest(TestCase):
request.session = {}
return request
- @override_settings(USE_I18N=True)
- def test_cache_key_i18n(self):
+ @override_settings(USE_I18N=True, USE_L10N=False)
+ def test_cache_key_i18n_translation(self):
request = self._get_request()
lang = translation.get_language()
response = HttpResponse()
key = learn_cache_key(request, response)
- self.assertTrue(key.endswith(lang), "Cache keys should include the language name when i18n is active")
+ self.assertIn(lang, key, "Cache keys should include the language name when translation is active")
key2 = get_cache_key(request)
self.assertEqual(key, key2)
- @override_settings(USE_I18N=False)
+ @override_settings(USE_I18N=False, USE_L10N=True)
+ def test_cache_key_i18n_formatting(self):
+ request = self._get_request()
+ lang = translation.get_language()
+ response = HttpResponse()
+ key = learn_cache_key(request, response)
+ self.assertIn(lang, key, "Cache keys should include the language name when formatting is active")
+ key2 = get_cache_key(request)
+ self.assertEqual(key, key2)
+
+ @override_settings(USE_I18N=False, USE_L10N=False)
def test_cache_key_no_i18n (self):
request = self._get_request()
lang = translation.get_language()
response = HttpResponse()
key = learn_cache_key(request, response)
- self.assertFalse(key.endswith(lang), "Cache keys shouldn't include the language name when i18n is inactive")
+ self.assertNotIn(lang, key, "Cache keys shouldn't include the language name when i18n isn't active")
@override_settings(
CACHE_MIDDLEWARE_KEY_PREFIX="test",