diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php
index 49fc6e2..3376bcb 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php
@@ -69,9 +69,9 @@ public function testLanguageBlockVisibility() {
 
     // Change the default language.
     $edit = array(
-      'site_default' => 'fr',
+      'site_default_language' => 'fr',
     );
-    $this->drupalpost('admin/config/regional/language', $edit, t('Save configuration'));
+    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Reset the static cache of the language list.
     drupal_static_reset('language_list');
diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index b078d23..e6ab744 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -22,7 +22,6 @@ function language_admin_overview_form($form, &$form_state) {
     '#type' => 'table',
     '#header' => array(
       t('Name'),
-      t('Default'),
       t('Weight'),
       t('Operations'),
     ),
@@ -36,15 +35,6 @@ function language_admin_overview_form($form, &$form_state) {
     $form['languages'][$langcode]['name'] = array(
       '#markup' => check_plain($language->name),
     );
-    $form['languages'][$langcode]['default'] = array(
-      '#type' => 'radio',
-      '#parents' => array('site_default'),
-      '#title' => t('Set @title as default', array('@title' => $language->name)),
-      '#title_display' => 'invisible',
-      '#return_value' => $langcode,
-      '#default_value' => ($langcode == $default->langcode ? $langcode : NULL),
-      '#id' => 'edit-site-default-' . $langcode,
-    );
     $form['languages'][$langcode]['weight'] = array(
       '#type' => 'weight',
       '#title' => t('Weight for @title', array('@title' => $language->name)),
@@ -87,10 +77,8 @@ function language_admin_overview_form($form, &$form_state) {
  */
 function language_admin_overview_form_submit($form, &$form_state) {
   $languages = language_list();
-  $old_default = language_default();
 
   foreach ($languages as $langcode => $language) {
-    $language->default = ($form_state['values']['site_default'] == $langcode);
     $language->weight = $form_state['values']['languages'][$langcode]['weight'];
     language_save($language);
   }
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 3486ff4..09e700b 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -24,7 +24,7 @@ function language_help($path, $arg) {
       return $output;
 
     case 'admin/config/regional/language':
-      return '<p>' . t('With multiple languages enabled, registered users may select their preferred language and authors can assign a specific language to content.') . '</p>';
+      return '<p>' . t('With multiple languages enabled, registered users may select their preferred language and authors can assign a specific language to content. Default language can be changed at  <a href="@region-settings">Regional settings</a> page.', array('@region-settings' => url('admin/config/regional/settings'))) . '</p>';
 
     case 'admin/config/regional/language/add':
       return '<p>' . t('Add a language to be supported by your site. If your desired language is not available, pick <em>Custom language...</em> at the end and provide a language code and other details manually.') . '</p>';
@@ -878,3 +878,34 @@ function language_update_locked_weights() {
       ->execute();
   }
 }
+
+/**
+ * Implements hook_form_FORM_ID_alter.
+ */
+function language_form_system_regional_settings_alter(&$form, &$form_state) {
+  $languages = language_list();
+  $default = language_default();
+  foreach ($languages as $key => $language) {
+    $language_options[$key] = $language->name;
+  }
+  $form['locale']['site_default_language'] = array(
+    '#type' => 'select',
+    '#title' => t('Default language'),
+    '#default_value' => $default->langcode,
+    '#options' => $language_options,
+    '#description' => t('It is not recommended to change the default language of a working site, use default language in the <a href="@language-detection">detection and selection</a> page instead.', array('@language-detection' => url('admin/config/regional/language/detection'))),
+    '#weight' => -1,
+  );
+  // Add submit handler to save default language.
+  $form['#submit'][] = 'language_system_regional_settings_form_submit';
+}
+
+/**
+ * Form submission handler for system_regional_settings form alter.
+ */
+function language_system_regional_settings_form_submit($form, &$form_state) {
+  $languages = language_list();
+  $language = $languages[$form_state['values']['site_default_language']];
+  $language->default = TRUE;
+  language_save($language);
+}
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php
index 3260717..b2d0bda 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php
@@ -36,7 +36,7 @@ function testLanguageConfiguration() {
     global $base_url;
 
     // User to add and remove language.
-    $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages'));
+    $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages', 'administer site configuration'));
     $this->drupalLogin($admin_user);
 
     // Check if the Default English language has no path prefix.
@@ -59,17 +59,18 @@ function testLanguageConfiguration() {
     $this->assertFieldByXPath('//input[@name="prefix[fr]"]', 'fr', 'French has a path prefix.');
 
     // Check if we can change the default language.
-    $this->drupalGet('admin/config/regional/language');
-    $this->assertFieldChecked('edit-site-default-en', 'English is the default language.');
+    $this->drupalGet('admin/config/regional/settings');
+    $this->assertOptionSelected('edit-site-default-language', 'en', 'English is the default language.');
+
     // Change the default language.
     $edit = array(
-      'site_default' => 'fr',
+      'site_default_language' => 'fr',
     );
     $this->drupalPost(NULL, $edit, t('Save configuration'));
-    $this->assertNoFieldChecked('edit-site-default-en', 'Default language updated.');
-    $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
+    $this->assertOptionSelected('edit-site-default-language', 'fr', 'Default language updated.');
+    $this->assertEqual($this->getUrl(), url('admin/config/regional/settings', array('absolute' => TRUE)), 'Correct page redirection.');
 
-    // Check if a valid language prefix is added afrer changing the default
+    // Check if a valid language prefix is added after changing the default
     // language.
     $this->drupalGet('admin/config/regional/language/detection/url');
     $this->assertFieldByXPath('//input[@name="prefix[en]"]', 'en', 'A valid path prefix has been added to the previous default language.');
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
index 9128bf7..fbb437a 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
@@ -59,20 +59,20 @@ function testLanguageList() {
     );
     $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
-    $this->assertRaw('"edit-site-default-' . $langcode .'"', 'Language code found.');
+    $this->assertRaw('"edit-languages-' . $langcode .'-weight"', 'Language code found.');
     $this->assertText(t($name), 'Test language added.');
 
     // Check if we can change the default language.
-    $path = 'admin/config/regional/language';
+    $path = 'admin/config/regional/settings';
     $this->drupalGet($path);
-    $this->assertFieldChecked('edit-site-default-en', 'English is the default language.');
+    $this->assertOptionSelected('edit-site-default-language', 'en', 'English is the default language.');
     // Change the default language.
     $edit = array(
-      'site_default' => $langcode,
+      'site_default_language' => $langcode,
     );
     $this->drupalPost(NULL, $edit, t('Save configuration'));
-    $this->assertNoFieldChecked('edit-site-default-en', 'Default language updated.');
-    $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
+    $this->assertNoOptionSelected('edit-site-default-language', 'en', 'Default language updated.');
+    $this->assertEqual($this->getUrl(), url($path, array('absolute' => TRUE)), 'Correct page redirection.');
 
     // Ensure we can't delete the default language.
     $this->drupalGet('admin/config/regional/language/delete/' . $langcode);
@@ -93,9 +93,9 @@ function testLanguageList() {
 
     // Change back the default language.
     $edit = array(
-      'site_default' => 'en',
+      'site_default_language' => 'en',
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPost($path, $edit, t('Save configuration'));
     // Ensure 'delete' link works.
     $this->drupalGet('admin/config/regional/language');
     $this->clickLink(t('delete'));
@@ -151,16 +151,16 @@ function testLanguageList() {
     $this->assertText($name, 'Name found.');
 
     // Check if we can change the default language.
-    $path = 'admin/config/regional/language';
+    $path = 'admin/config/regional/settings';
     $this->drupalGet($path);
-    $this->assertFieldChecked('edit-site-default-en', 'English is the default language.');
+    $this->assertOptionSelected('edit-site-default-language', 'en', 'English is the default language.');
     // Change the default language.
     $edit = array(
-      'site_default' => $langcode,
+      'site_default_language' => $langcode,
     );
     $this->drupalPost(NULL, $edit, t('Save configuration'));
-    $this->assertNoFieldChecked('edit-site-default-en', 'Default language updated.');
-    $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
+    $this->assertNoOptionSelected('edit-site-default-language', 'en', 'Default language updated.');
+    $this->assertEqual($this->getUrl(), url($path, array('absolute' => TRUE)), 'Correct page redirection.');
 
     $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete'));
     // We need raw here because %language and %langcode will add HTML.
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php
index 74ea08b..50be4a7 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php
@@ -42,8 +42,10 @@ function setUp() {
     $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Make French the default language.
-    $edit = array('site_default' => 'fr');
-    $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration'));
+    $edit = array(
+      'site_default_language' => 'fr',
+    );
+    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Delete English.
     $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete'));
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php
index a424457..5903ea2 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php
@@ -48,9 +48,10 @@ function testMachineNameLTR() {
     $edit['predefined_langcode'] = 'ar';
     $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
 
-    $edit = array();
-    $edit['site_default'] = 'ar';
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $edit = array(
+      'site_default_language' => 'ar',
+    );
+    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Verify that the machine name field is still LTR for a new content type.
     $this->drupalGet('admin/structure/types/add');
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationTest.php
index e3b6777..ed0addd 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationTest.php
@@ -75,7 +75,7 @@ function testStringTranslation() {
     t($name, array(), array('langcode' => $langcode));
     // Reset locale cache.
     locale_reset();
-    $this->assertRaw('"edit-site-default-' . $langcode .'"', t('Language code found.'));
+    $this->assertRaw('"edit-languages-' . $langcode .'-weight"', t('Language code found.'));
     $this->assertText(t($name), t('Test language added.'));
     $this->drupalLogout();
 
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php
index ce6591f..23a2c30 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php
@@ -59,9 +59,9 @@ function testNodeTypeInitialLanguageDefaults() {
     );
     $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
     $edit = array(
-      'site_default' => 'hu',
+      'site_default_language' => 'hu',
     );
-    $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration'));
+    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Tests the initial language after changing the site default language.
     // First unhide the language selector.
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php
index cdaf04b..e6fe186 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php
@@ -57,12 +57,14 @@ function testLanguages() {
     $this->assertFieldByXPath('//input[@name="keys"]', 'language:fr', 'Language filter added to query.');
 
     // Change the default language and delete English.
-    $path = 'admin/config/regional/language';
+    $path = 'admin/config/regional/settings';
     $this->drupalGet($path);
-    $this->assertFieldChecked('edit-site-default-en', 'English is the default language.');
-    $edit = array('site_default' => 'fr');
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
-    $this->assertNoFieldChecked('edit-site-default-en', 'Default language updated.');
+    $this->assertOptionSelected('edit-site-default-language', 'en', 'Default language updated.');
+    $edit = array(
+      'site_default_language' => 'fr',
+    );
+    $this->drupalpost($path, $edit, t('Save configuration'));
+    $this->assertNoOptionSelected('edit-site-default-language', 'en', 'Default language updated.');
     $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete'));
   }
 }
