diff --git a/core/modules/language/config/language.mappings.yml b/core/modules/language/config/language.mappings.yml
index e4ef2a1..4dcdb07 100644
--- a/core/modules/language/config/language.mappings.yml
+++ b/core/modules/language/config/language.mappings.yml
@@ -3,7 +3,5 @@
 zh-tw: 'zh-hant' # Taiwan Chinese in traditional script
 zh-hk: 'zh-hant' # Hong Kong Chinese in traditional script
 zh-mo: 'zh-hant' # Macao Chinese in traditional script
-zh-cht: 'zh-hant' # traditional Chinese
 zh-cn: 'zh-hans' # PRC Mainland Chinese in simplified script
 zh-sg: 'zh-hans' # Singapore Chinese in simplified script
-zh-chs: 'zh-hans' # simplified Chinese
diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index ee3dbd1..7cd623a 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -565,6 +565,11 @@ function language_negotiation_configure_form_submit($form, &$form_state) {
 
 /**
  * Builds the browser language negotiation method configuration form.
+ *
+ * @see language_negotiation_configure_browser_form_validate()
+ * @see language_negotiation_configure_browser_form_submit()
+ *
+ * @ingroup forms
  */
 function language_negotiation_configure_browser_form($form, &$form_state) {
   $form = array();
@@ -582,13 +587,11 @@ function language_negotiation_configure_browser_form($form, &$form_state) {
   // the list of existing and then predefined languages.
   if (empty($existing_languages)) {
     $language_options = language_admin_predefined_list();
-    $default = key($language_options);
   }
   else {
-    $default = key($existing_languages);
     $language_options = array(
       t('Existing languages') => $existing_languages,
-      t('Languages not yet added') => language_admin_predefined_list()
+      t('Languages not yet added') => language_admin_predefined_list(),
     );
   }
 
@@ -601,12 +604,16 @@ function language_negotiation_configure_browser_form($form, &$form_state) {
   foreach ($mappings as $browser_langcode => $drupal_langcode) {
     $form['mappings'][$browser_langcode] = array(
       'browser_langcode' => array(
+        '#title' => t('Browser language code'),
+        '#title_display' => 'invisible',
         '#type' => 'textfield',
         '#default_value' => $browser_langcode,
         '#size' => 20,
         '#required' => TRUE,
       ),
       'drupal_langcode' => array(
+        '#title' => t('Site language'),
+        '#title_display' => 'invisible',
         '#type' => 'select',
         '#options' => $language_options,
         '#default_value' => $drupal_langcode,
@@ -631,7 +638,7 @@ function language_negotiation_configure_browser_form($form, &$form_state) {
   );
   $form['new_mapping']['drupal_langcode'] = array(
     '#type' => 'select',
-    '#title' => t('Drupal language'),
+    '#title' => t('Site language'),
     '#options' => $language_options,
     '#default_value' => '',
   );
@@ -665,9 +672,6 @@ function theme_language_negotiation_configure_browser_form_table($variables) {
     $links['delete'] = array(
       'title' => t('Delete'),
       'href' => "admin/config/regional/language/detection/browser/delete/$key",
-      'attributes' => array(
-        'class' => array('image-style-link'),
-      ),
     );
     $row[] = array(
       'data' => array(
@@ -681,7 +685,7 @@ function theme_language_negotiation_configure_browser_form_table($variables) {
 
   $header = array(
     t('Browser language code'),
-    t('Drupal language'),
+    t('Site language'),
     t('Operations'),
   );
 
@@ -689,7 +693,8 @@ function theme_language_negotiation_configure_browser_form_table($variables) {
     '#theme' => 'table',
     '#header' => $header,
     '#rows' => $rows,
-    '#attributes' => array('id' => 'lang-neg-browser'),
+    '#empty' => t('No browser language mappings available.'),
+    '#attributes' => array('id' => 'language-negotiation-browser'),
   );
   $output = drupal_render($table);
 
@@ -698,6 +703,8 @@ function theme_language_negotiation_configure_browser_form_table($variables) {
 
 /**
  * Browser language negotiation form validation.
+ *
+ * @see language_negotiation_configure_browser_form_submit()
  */
 function language_negotiation_configure_browser_form_validate($form, &$form_state) {
   // Array to check if all browser language codes are unique.
@@ -724,10 +731,10 @@ function language_negotiation_configure_browser_form_validate($form, &$form_stat
   if (!empty($data['browser_langcode'])) {
     // Make sure browser_langcode is unique.
     if (array_key_exists($data['browser_langcode'], $unique_values)) {
-      form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes must be unique.'));
+      form_set_error('mappings][new_mapping][browser_langcode', t('Browser language codes must be unique.'));
     }
     elseif (preg_match('/[^a-z\-]/', $data['browser_langcode'])) {
-      form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes can only contain lowercase letters and a hyphen(-).'));
+      form_set_error('mappings][new_mapping][browser_langcode', t('Browser language codes can only contain lowercase letters and a hyphen(-).'));
     }
     $unique_values[$data['browser_langcode']] = $data['drupal_langcode'];
   }
@@ -737,17 +744,24 @@ function language_negotiation_configure_browser_form_validate($form, &$form_stat
 
 /**
  * Browser language negotiation form submit.
+ *
+ * @see language_negotiation_configure_browser_form_validate()
  */
 function language_negotiation_configure_browser_form_submit($form, &$form_state) {
   $mappings = $form_state['mappings'];
   if (!empty($mappings)) {
     language_set_browser_drupal_langcode_mappings($mappings);
+    drupal_set_message('The configuration options have been saved.');
   }
   $form_state['redirect'] = 'admin/config/regional/language/detection';
 }
 
 /**
  * Form for deleting a browser language negotiation mapping.
+ *
+ * @see language_negotiation_configure_browser_delete_form_submit()
+ *
+ * @ingroup forms
  */
 function language_negotiation_configure_browser_delete_form($form, &$form_state, $browser_langcode) {
   $form_state['browser_langcode'] = $browser_langcode;
@@ -755,7 +769,7 @@ function language_negotiation_configure_browser_delete_form($form, &$form_state,
     '%browser_langcode' => $browser_langcode,
   ));
   $path = 'admin/config/regional/language/detection/browser';
-  return confirm_form($form, $question, $path, '');
+  return confirm_form($form, $question, $path);
 }
 
 /**
@@ -768,7 +782,6 @@ function language_negotiation_configure_browser_delete_form_submit($form, &$form
     unset($mappings[$browser_langcode]);
     language_set_browser_drupal_langcode_mappings($mappings);
   }
-  $form_state['redirect'] = 'admin/config/regional/language/detection/browser';
 }
 
 /**
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 6b45fa1..87ae484 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -40,7 +40,7 @@ function language_help($path, $arg) {
       return $output;
 
     case 'admin/config/regional/language/detection/browser':
-      $output = '<p>' . t('Browsers use different language codes to refer to the same languages. You can add and edit mappings from browser language codes to the <a href="@configure-languages">languages used by Drupal</a>.', array('@configure-languages' => url('admin/config/regional/language'))) . '</p>';
+      $output = '<p>' . t('Browsers use different language codes to refer to the same languages. You can add and edit mappings from browser language codes to the <a href="@configure-languages">languages used by Drupal</a>, without a custom mapping Drupal will make a best effort to map it.', array('@configure-languages' => url('admin/config/regional/language'))) . '</p>';
       return $output;
 
     case 'admin/config/regional/language/detection/selected':
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
index 80a835d..6bcf04d 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
@@ -149,8 +149,6 @@ function testLanguageFromBrowser() {
       'zh-mo' => 'zh-hant',
       'zh-hans' => 'zh-hans',
       'zh-hant' => 'zh-hant',
-      'zh-chs' => 'zh-hans',
-      'zh-cht' => 'zh-hant',
     );
 
     foreach ($test_cases as $accept_language => $expected_result) {
