Index: django/views/i18n.py
===================================================================
--- django/views/i18n.py	(revision 16526)
+++ django/views/i18n.py	(working copy)
@@ -29,7 +29,7 @@
     if request.method == 'POST':
         lang_code = request.POST.get('language', None)
         if lang_code and check_for_language(lang_code):
-            if hasattr(request, 'session'):
+            if False and hasattr(request, 'session'):
                 request.session['django_language'] = lang_code
             else:
                 response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
Index: django/utils/translation/trans_real.py
===================================================================
--- django/utils/translation/trans_real.py	(revision 16526)
+++ django/utils/translation/trans_real.py	(working copy)
@@ -375,7 +375,7 @@
     if lang_code is not None:
         return lang_code
 
-    if hasattr(request, 'session'):
+    if False and hasattr(request, 'session'):
         lang_code = request.session.get('django_language', None)
         if lang_code in supported and lang_code is not None and check_for_language(lang_code):
             return lang_code
Index: django/middleware/locale.py
===================================================================
--- django/middleware/locale.py	(revision 16526)
+++ django/middleware/locale.py	(working copy)
@@ -1,5 +1,6 @@
 "This is the locale selecting middleware that will look at accept headers"
 
+from django.conf import settings
 from django.core.urlresolvers import get_resolver, LocaleRegexURLResolver
 from django.http import HttpResponseRedirect
 from django.utils.cache import patch_vary_headers
@@ -32,6 +33,9 @@
         patch_vary_headers(response, ('Accept-Language',))
         if 'Content-Language' not in response:
             response['Content-Language'] = language
+        if not response.cookies.has_key(settings.LANGUAGE_COOKIE_NAME): 
+            response.set_cookie(settings.LANGUAGE_COOKIE_NAME, 
+                                language)
         return response
 
     def is_language_prefix_patterns_used(self):
Index: tests/regressiontests/views/tests/i18n.py
===================================================================
--- tests/regressiontests/views/tests/i18n.py	(revision 16526)
+++ tests/regressiontests/views/tests/i18n.py	(working copy)
@@ -19,7 +19,13 @@
             post_data = dict(language=lang_code, next='/views/')
             response = self.client.post('/views/i18n/setlang/', data=post_data)
             self.assertRedirects(response, 'http://testserver/views/')
-            self.assertEqual(self.client.session['django_language'], lang_code)
+            if False:
+                self.assertEqual(self.client.session['django_language'], 
+                                 lang_code)
+            else:
+                self.assertEqual \
+                    (response.cookies[settings.LANGUAGE_COOKIE_NAME].value,
+                     lang_code)
 
     def test_jsi18n(self):
         """The javascript_catalog can be deployed with language settings"""
