Index: django/utils/dateformat.py
===================================================================
--- django/utils/dateformat.py	(revision 11840)
+++ django/utils/dateformat.py	(working copy)
@@ -14,6 +14,7 @@
 import re
 import time
 import calendar
+from email.utils import formatdate
 from django.utils.dates import MONTHS, MONTHS_3, MONTHS_AP, WEEKDAYS, WEEKDAYS_ABBR
 from django.utils.tzinfo import LocalTimezone
 from django.utils.translation import ugettext as _
@@ -172,8 +173,12 @@
 
     def r(self):
         "RFC 2822 formatted date; e.g. 'Thu, 21 Dec 2000 16:01:07 +0200'"
-        return self.format('D, j M Y H:i:s O')
+        # solution taken from http://bugs.python.org/issue665194 until
+        # Python addresses this feature
+        timestamp = time.mktime(self.data.timetuple())
+        return formatdate(timestamp, True)
 
+
     def S(self):
         "English ordinal suffix for the day of the month, 2 characters; i.e. 'st', 'nd', 'rd' or 'th'"
         if self.data.day in (11, 12, 13): # Special case
Index: tests/regressiontests/dateformat/tests.py
===================================================================
--- tests/regressiontests/dateformat/tests.py	(revision 11840)
+++ tests/regressiontests/dateformat/tests.py	(working copy)
@@ -1,13 +1,14 @@
-
-from django.utils import dateformat, translation
 from unittest import TestCase
 import datetime, os, time
+from django.conf import settings
+from django.utils import dateformat, translation
 
 class DateFormatTests(TestCase):
     def setUp(self):
         self.old_TZ = os.environ.get('TZ')
         os.environ['TZ'] = 'Europe/Copenhagen'
         translation.activate('en-us')
+        settings.LANGUAGE_CODE = 'en'
 
         try:
             # Check if a timezone has been set
@@ -82,7 +83,7 @@
 
         if self.tz_tests:
             self.assertEquals(dateformat.format(my_birthday, 'O'), u'+0100')
-            self.assertEquals(dateformat.format(my_birthday, 'r'), u'Sun, 8 Jul 1979 22:00:00 +0100')
+            self.assertEquals(dateformat.format(my_birthday, 'r'), u'Sun, 08 Jul 1979 22:00:00 +0100')
             self.assertEquals(dateformat.format(my_birthday, 'T'), u'CET')
             self.assertEquals(dateformat.format(my_birthday, 'U'), u'300315600')
             self.assertEquals(dateformat.format(my_birthday, 'Z'), u'3600')
@@ -90,3 +91,13 @@
             self.assertEquals(dateformat.format(summertime, 'O'), u'+0200')
             self.assertEquals(dateformat.format(wintertime, 'I'), u'0')
             self.assertEquals(dateformat.format(wintertime, 'O'), u'+0100')
+
+    def test_rfc2822_trans(self):
+        settings.LANGUAGE_CODE='es'
+        translation.activate('es')
+        # Even though the language is now Spanish the RFC 2822 date string
+        #  should not be translated. Sun, not "dom"
+        not_my_birthday = datetime.datetime(1979, 7, 8, 22, 00)
+
+        if self.tz_tests:
+            self.assertEquals( dateformat.format(not_my_birthday, 'r'), u'Sun, 08 Jul 1979 22:00:00 +0100')
