diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index 47eea47..c44606b 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -11,6 +11,70 @@
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
 /**
+ * User interface for the language overview screen.
+ */
+function language_admin_overview_form($form, &$form_state) {
+  drupal_static_reset('language_list');
+  $form_state['languages'] = $languages = language_list();
+  $form_state['language_default'] = $default = language_default();
+
+  $form['languages'] = array(
+    '#type' => 'table',
+    '#header' => array(
+      t('Name'),
+      t('Weight'),
+      t('Operations'),
+    ),
+    '#tabledrag' => array(
+      array('order', 'sibling', 'language-order-weight'),
+    ),
+  );
+
+  foreach ($languages as $langcode => $language) {
+    $form['languages'][$langcode]['#attributes']['class'][] = 'draggable';
+    $language->weight = $form_state['values']['languages'][$langcode]['weight'];
+    language_save($language);
+    $form['languages'][$langcode]['name'] = array(
+      '#markup' => check_plain($language->name),
+    );
+    $form['languages'][$langcode]['weight'] = array(
+      '#type' => 'weight',
+      '#title' => t('Weight for @title', array('@title' => $language->name)),
+      '#title_display' => 'invisible',
+      '#default_value' => $language->weight,
+      '#attributes' => array(
+        'class' => array('language-order-weight'),
+      ),
+      '#delta' => 30,
+    );
+    $links = array();
+    $links['edit'] = array(
+      'title' => t('edit'),
+      'href' => 'admin/config/regional/language/edit/' . $langcode,
+    );
+    if ($langcode != $default->langcode) {
+      $links['delete'] = array(
+        'title' => t('delete'),
+        'href' => 'admin/config/regional/language/delete/' . $langcode,
+      );
+    }
+    $form['languages'][$langcode]['operations'] = array(
+      '#type' => 'operations',
+      '#links' => $links,
+      '#weight' => 100,
+    );
+  drupal_set_message(t('Configuration saved.'));
+  }
+
+  $form['actions'] = array('#type' => 'actions');
+  $form['actions']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save configuration'),
+  );
+
+  return $form;
+}
+
  * User interface for the language addition screen.
  */
 function language_admin_add_form($form, &$form_state) {
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 9819f18..5d376d7 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -710,7 +710,7 @@ function locale_library_info_alter(&$libraries, $module) {
  * Implements hook_form_FORM_ID_alter() for language_admin_overview_form().
  */
 function locale_form_language_admin_overview_form_alter(&$form, &$form_state) {
-  $languages = $form['languages']['#languages'];
+  $languages = $form_state['languages'];
 
   $total_strings = Drupal::service('locale.storage')->countStrings();
   $stats = array_fill_keys(array_keys($languages), array());
