diff --git a/core/modules/locale/locale.install b/core/modules/locale/locale.install
index 9d172f9..d2908c5 100644
--- a/core/modules/locale/locale.install
+++ b/core/modules/locale/locale.install
@@ -6,6 +6,35 @@
  */
 
 /**
+ * Implements hook_install().
+ *
+ * Enable URL language negotiation by default in order to have a basic working
+ * system on multilingual sites without needing any preliminary configuration.
+ */
+function locale_install() {
+  require_once DRUPAL_ROOT . '/core/includes/language.inc';
+
+  // We cannot rely on language negotiation hooks here, because locale module is
+  // not enabled yet. Therefore language_negotiation_set() cannot be used.
+  $info = locale_language_negotiation_info();
+  $provider = $info[LOCALE_LANGUAGE_NEGOTIATION_URL];
+  $provider_fields = array('callbacks', 'file', 'cache');
+  $negotiation = array();
+
+  // Store only the needed data.
+  foreach ($provider_fields as $field) {
+    if (isset($provider[$field])) {
+      $negotiation[LOCALE_LANGUAGE_NEGOTIATION_URL][$field] = $provider[$field];
+    }
+  }
+
+  // Enable URL language detection for each (core) configurable language type.
+  foreach (language_types_configurable() as $type) {
+    variable_set("language_negotiation_$type", $negotiation);
+  }
+}
+
+/**
  * Fill in the path prefixes and domains when enabled.
  *
  * Language module might change the list of languages, so we need to sync our
diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test
index d5439a9..d722033 100644
--- a/core/modules/locale/locale.test
+++ b/core/modules/locale/locale.test
@@ -1640,15 +1640,10 @@ class LocalePathFunctionalTest extends DrupalWebTestCase {
     $edit = array( "prefix[$langcode]" => $prefix );
     $this->drupalPost('admin/config/regional/language/configure/url', $edit, t('Save configuration'));
 
-    // Check that the "xx" front page is not available when path prefixes are
-    // not enabled yet.
-    $this->drupalPost('admin/config/regional/language/configure', array(), t('Save settings'));
+    // Check that the "xx" front page is readily available because path prefix
+    // negotiation is pre-configured.
     $this->drupalGet($prefix);
-    $this->assertResponse(404, t('The "xx" front page is not available yet.'));
-
-    // Enable URL language detection and selection.
-    $edit = array('language[enabled][locale-url]' => 1);
-    $this->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings'));
+    $this->assertText(t('Welcome to Drupal'), t('The "xx" front page is readibly available.'));
 
     // Create a node.
     $node = $this->drupalCreateNode(array('type' => 'page'));
@@ -2187,7 +2182,6 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase {
     $edit = array('prefix[en]' => 'en');
     $this->drupalPost('admin/config/regional/language/configure/url', $edit, t('Save configuration'));
 
-
     // Enable browser and URL language detection.
     $edit = array(
       'language[enabled][locale-browser]' => TRUE,
