diff --git a/django/middleware/locale.py b/django/middleware/locale.py
index d42a615..3f562c5 100644
--- a/django/middleware/locale.py
+++ b/django/middleware/locale.py
@@ -15,7 +15,8 @@ class LocaleMiddleware(object):
     """
 
     def process_request(self, request):
-        language = translation.get_language_from_request(request)
+        check_path = self.is_language_prefix_patterns_used()
+        language = translation.get_language_from_request(request, check_path=check_path)
         translation.activate(language)
         request.LANGUAGE_CODE = translation.get_language()
 
diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py
index 8ad9c5d..dbe4823 100644
--- a/django/utils/translation/__init__.py
+++ b/django/utils/translation/__init__.py
@@ -144,8 +144,8 @@ def check_for_language(lang_code):
 def to_locale(language):
     return _trans.to_locale(language)
 
-def get_language_from_request(request):
-    return _trans.get_language_from_request(request)
+def get_language_from_request(request, check_path=False):
+    return _trans.get_language_from_request(request, check_path)
 
 def get_language_from_path(path):
     return _trans.get_language_from_path(path)
diff --git a/django/utils/translation/trans_null.py b/django/utils/translation/trans_null.py
index 5c9edb1..2884557 100644
--- a/django/utils/translation/trans_null.py
+++ b/django/utils/translation/trans_null.py
@@ -55,7 +55,7 @@ def to_locale(language):
     else:
         return language.lower()
 
-def get_language_from_request(request):
+def get_language_from_request(request, check_path):
     return settings.LANGUAGE_CODE
 
 def get_language_from_path(request):
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 419b380..fb4bca4 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -363,20 +363,24 @@ def get_language_from_path(path, supported=None):
         if lang_code in supported and check_for_language(lang_code):
             return lang_code
 
-def get_language_from_request(request):
+def get_language_from_request(request, check_path):
     """
     Analyzes the request to find what language the user wants the system to
     show. Only languages listed in settings.LANGUAGES are taken into account.
     If the user requests a sublanguage where we have a main language, we send
     out the main language.
+
+    If check_path is true, the URL path prefix will be checked for a language
+    code, otherwise this is skipped for backwards compatibility.
     """
     global _accepted
     from django.conf import settings
     supported = dict(settings.LANGUAGES)
 
-    lang_code = get_language_from_path(request.path_info, supported)
-    if lang_code is not None:
-        return lang_code
+    if check_path:
+        lang_code = get_language_from_path(request.path_info, supported)
+        if lang_code is not None:
+            return lang_code
 
     if hasattr(request, 'session'):
         lang_code = request.session.get('django_language', None)
diff --git a/tests/regressiontests/i18n/patterns/templates/showlang.html b/tests/regressiontests/i18n/patterns/templates/showlang.html
new file mode 100644
index 0000000..f1e6c61
--- /dev/null
+++ b/tests/regressiontests/i18n/patterns/templates/showlang.html
@@ -0,0 +1 @@
+LANGUAGE: {{ lang }} 
diff --git a/tests/regressiontests/i18n/patterns/tests.py b/tests/regressiontests/i18n/patterns/tests.py
index 40a62d4..a9b4f22 100644
--- a/tests/regressiontests/i18n/patterns/tests.py
+++ b/tests/regressiontests/i18n/patterns/tests.py
@@ -292,3 +292,14 @@ class URLTagTests(URLTestCaseBase):
             {% language 'pt-br' %}{% url 'no-prefix-translated-slug' slug='apo' %}{% endlanguage %}""")
         self.assertEqual(tpl.render(Context({})).strip().split(),
                          [u'/vertaald/apo/', u'/traduzidos/apo/'])
+
+class NoI18NPatternsTest(URLTestCaseBase):
+    urls = 'regressiontests.i18n.patterns.urls.no18n'
+    def test_no_lang_activate(self):
+        """
+        Check that if no i18n_patterns is used in root urlconfs, then no
+        language activation happens based on url prefix.
+        """
+        rev = reverse('notrans')
+        response = self.client.get(rev)
+        self.assertContains(response, 'LANGUAGE: en')
diff --git a/tests/regressiontests/i18n/patterns/urls/no18n.py b/tests/regressiontests/i18n/patterns/urls/no18n.py
new file mode 100644
index 0000000..5d00fbe
--- /dev/null
+++ b/tests/regressiontests/i18n/patterns/urls/no18n.py
@@ -0,0 +1,16 @@
+from django.conf.urls import url
+from django.conf.urls import patterns
+from django.views.generic import TemplateView
+from django.utils.translation import get_language
+
+class LangTemplate(TemplateView):
+    def get_context_data(self, **kwargs):
+        context = super(LangTemplate, self).get_context_data(**kwargs)
+        context['lang'] = get_language
+        return context
+
+view = LangTemplate.as_view(template_name='showlang.html')
+
+urlpatterns = patterns('',
+    url(r'^nl/notrans/', view, name='notrans'),
+)
diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py
index 4b543d2..c647f81 100644
--- a/tests/regressiontests/i18n/tests.py
+++ b/tests/regressiontests/i18n/tests.py
@@ -39,7 +39,7 @@ from .models import Company, TestModel
 from .patterns.tests import (URLRedirectWithoutTrailingSlashTests,
     URLTranslationTests, URLDisabledTests, URLTagTests, URLTestCaseBase,
     URLRedirectWithoutTrailingSlashSettingTests, URLNamespaceTests,
-    URLPrefixTests, URLResponseTests, URLRedirectTests)
+    URLPrefixTests, URLResponseTests, URLRedirectTests, NoI18NPatternsTest)
 from .test_warnings import DeprecationWarningTests
 
 
