Index: django/views/i18n.py
===================================================================
--- django/views/i18n.py	(revision 9076)
+++ django/views/i18n.py	(working copy)
@@ -121,40 +121,31 @@
         packages = ['django.conf']
     if type(packages) in (str, unicode):
         packages = packages.split('+')
-    packages = [p for p in packages if p == 'django.conf' or p in settings.INSTALLED_APPS]
     default_locale = to_locale(settings.LANGUAGE_CODE)
     locale = to_locale(get_language())
     t = {}
     paths = []
-    # first load all english languages files for defaults
     for package in packages:
         p = __import__(package, {}, {}, [''])
         path = os.path.join(os.path.dirname(p.__file__), 'locale')
         paths.append(path)
-        try:
-            catalog = gettext_module.translation(domain, path, ['en'])
-            t.update(catalog._catalog)
-        except IOError:
-            # 'en' catalog was missing. This is harmless.
-            pass
-    # next load the settings.LANGUAGE_CODE translations if it isn't english
-    if default_locale != 'en':
+    # A list of locales to load. Fallbacks for the requested locale
+    # are settings.LANGUAGE_CODE and 'en', in that order
+    locales = ['en']
+    # Two checks: one to avoid dupes, and another one to skip this
+    # fallback if the requested language is 'en'
+    if default_locale != 'en' and locale != 'en':
+        locales.append(default_locale)
+    if locale not in locales:
+        locales.append(locale)
+    for loc in locales:
         for path in paths:
             try:
-                catalog = gettext_module.translation(domain, path, [default_locale])
+                catalog = gettext_module.translation(domain, path, [loc])
             except IOError:
                 catalog = None
             if catalog is not None:
                 t.update(catalog._catalog)
-    # last load the currently selected language, if it isn't identical to the default.
-    if locale != default_locale:
-        for path in paths:
-            try:
-                catalog = gettext_module.translation(domain, path, [locale])
-            except IOError:
-                catalog = None
-            if catalog is not None:
-                t.update(catalog._catalog)
     src = [LibHead]
     plural = None
     if '' in t:
