Browse Source

Fixed #5241 -- Kept active transalation in LocaleMiddleware.process_response.

Aymeric Augustin 12 years ago
parent
commit
aa089b106b
3 changed files with 33 additions and 1 deletions
  1. 1 1
      django/middleware/locale.py
  2. 23 0
      tests/i18n/tests.py
  3. 9 0
      tests/i18n/urls.py

+ 1 - 1
django/middleware/locale.py

@@ -51,7 +51,7 @@ class LocaleMiddleware(object):
                     request.is_secure() and 'https' or 'http',
                     request.get_host(), language, request.get_full_path())
                 return HttpResponseRedirect(language_url)
-        translation.deactivate()
+
         if not (self.is_language_prefix_patterns_used()
                 and language_from_path):
             patch_vary_headers(response, ('Accept-Language',))

+ 23 - 0
tests/i18n/tests.py

@@ -1096,3 +1096,26 @@ class MultipleLocaleActivationTests(TestCase):
             t = Template("{% load i18n %}{% blocktrans %}No{% endblocktrans %}")
         with translation.override('nl'):
             self.assertEqual(t.render(Context({})), 'Nee')
+
+
+@override_settings(
+    USE_I18N=True,
+    LANGUAGES=(
+        ('en', 'English'),
+        ('fr', 'French'),
+    ),
+    MIDDLEWARE_CLASSES=(
+        'django.middleware.locale.LocaleMiddleware',
+        'django.middleware.common.CommonMiddleware',
+    ),
+)
+class LocaleMiddlewareTests(TestCase):
+
+    urls = 'i18n.urls'
+
+    def test_streaming_response(self):
+        # Regression test for #5241
+        response = self.client.get('/fr/streaming/')
+        self.assertContains(response, "Oui/Non")
+        response = self.client.get('/en/streaming/')
+        self.assertContains(response, "Yes/No")

+ 9 - 0
tests/i18n/urls.py

@@ -0,0 +1,9 @@
+from __future__ import unicode_literals
+
+from django.conf.urls.i18n import i18n_patterns
+from django.http import StreamingHttpResponse
+from django.utils.translation import ugettext_lazy as _
+
+urlpatterns = i18n_patterns('',
+    (r'^streaming/$', lambda r: StreamingHttpResponse([_("Yes"), "/", _("No")])),
+)