Index: django/views/i18n.py
===================================================================
--- django/views/i18n.py	(revision 11600)
+++ django/views/i18n.py	(working copy)
@@ -126,6 +126,7 @@
     locale = to_locale(get_language())
     t = {}
     paths = []
+    en_catalog_missing = False
     # first load all english languages files for defaults
     for package in packages:
         p = __import__(package, {}, {}, [''])
@@ -135,7 +136,12 @@
             catalog = gettext_module.translation(domain, path, ['en'])
             t.update(catalog._catalog)
         except IOError:
-            # 'en' catalog was missing. This is harmless.
+            if locale.startswith('en'):
+                # 'en' catalog was missing, but it is the selected language.
+                # This would cause issues later on if default_locale is
+                # something other than 'en'.
+                en_catalog_missing = True
+            # Otherwise it is harmless.
             pass
     # next load the settings.LANGUAGE_CODE translations if it isn't english
     if default_locale != 'en':
@@ -155,6 +161,13 @@
                 catalog = None
             if catalog is not None:
                 t.update(catalog._catalog)
+        # If the flag en_catalog_missing has been set, the currently
+        # selected language is English but it doesn't have a translation
+        # catalog (presumably due to being the language translated from).
+        # If that is the case, a wrong language catalog might have been
+        # loaded in the previous step. It needs to be discarded.
+        if en_catalog_missing:
+            t = {}
     src = [LibHead]
     plural = None
     if '' in t:
