diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index f9443c7..31bec80 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -83,7 +83,7 @@ function language_negotiation_configure_form_table(&$form, $type) {
       '#attributes' => array('class' => array('language-customization-checkbox')),
       '#attached' => array(
         'library' => array(
-          array('language', 'language.admin')
+          array('language', 'language.admin.negotiation')
         ),
       ),
     );
@@ -337,104 +337,6 @@ function theme_language_negotiation_configure_browser_form_table($variables) {
 }
 
 /**
- * Returns the content language settings form.
- *
- * @deprecated Use \Drupal\language\Controller\LanguageController::contentSettings()
- */
-function language_content_settings_page() {
-  return drupal_get_form('language_content_settings_form', language_entity_supported());
-}
-
-/**
- * Form constructor for the content language settings form.
- *
- * @param array $supported
- *   Entity types with language support.
- *
- * @see language_content_settings_form_submit()
- *
- * @ingroup forms
- */
-function language_content_settings_form(array $form, array $form_state, array $supported) {
-  $entity_info = entity_get_info();
-  $labels = array();
-  $default = array();
-
-  foreach ($supported as $entity_type) {
-    $labels[$entity_type] = isset($entity_info[$entity_type]['label']) ? $entity_info[$entity_type]['label'] : $entity_type;
-    $default[$entity_type] = FALSE;
-
-    // Check whether we have any custom setting.
-    foreach (entity_get_bundles($entity_type) as $bundle => $bundle_info) {
-      $conf = language_get_default_configuration($entity_type, $bundle);
-      if (!empty($conf['language_show']) || $conf['langcode'] != 'site_default') {
-        $default[$entity_type] = $entity_type;
-      }
-      $language_configuration[$entity_type][$bundle] = $conf;
-    }
-  }
-
-  asort($labels);
-
-  $path = drupal_get_path('module', 'language');
-  $form = array(
-    '#labels' => $labels,
-    '#attached' => array(
-      'css' => array($path . '/css/language.admin.css'),
-    ),
-  );
-
-  $form['entity_types'] = array(
-    '#title' => t('Custom language settings'),
-    '#type' => 'checkboxes',
-    '#options' => $labels,
-    '#default_value' => $default,
-  );
-
-  $form['settings'] = array('#tree' => TRUE);
-
-  foreach ($labels as $entity_type => $label) {
-    $info = $entity_info[$entity_type];
-
-    $form['settings'][$entity_type] = array(
-      '#title' => $label,
-      '#type' => 'container',
-      '#entity_type' => $entity_type,
-      '#theme' => 'language_content_settings_table',
-      '#bundle_label' => isset($info['bundle_label']) ? $info['bundle_label'] : $label,
-      '#states' => array(
-        'visible' => array(
-          ':input[name="entity_types[' . $entity_type . ']"]' => array('checked' => TRUE),
-        ),
-      ),
-    );
-
-    foreach (entity_get_bundles($entity_type) as $bundle => $bundle_info) {
-      $form['settings'][$entity_type][$bundle]['settings'] = array(
-        '#type' => 'item',
-        '#label' => $bundle_info['label'],
-        'language' => array(
-          '#type' => 'language_configuration',
-          '#entity_information' => array(
-            'entity_type' => $entity_type,
-            'bundle' => $bundle,
-          ),
-          '#default_value' => $language_configuration[$entity_type][$bundle],
-        ),
-      );
-    }
-  }
-
-  $form['actions'] = array('#type' => 'actions');
-  $form['actions']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save'),
-  );
-
-  return $form;
-}
-
-/**
  * Implements hook_preprocess_HOOK() for theme_language_content_settings_table().
  */
 function template_preprocess_language_content_settings_table(&$variables) {
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index e5aa96a..0422efe 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -538,7 +538,7 @@ function language_delete($langcode) {
  * Implements hook_library_info().
  */
 function language_library_info() {
-  $libraries['language.admin'] = array(
+  $libraries['language.admin.detection'] = array(
     'title' => 'Language detection admin',
     'version' => \Drupal::VERSION,
     'js' => array(
@@ -551,6 +551,14 @@ function language_library_info() {
     ),
   );
 
+  $libraries['language.admin.content_language'] = array(
+    'title' => 'Language content language admin',
+    'version' => \Drupal::VERSION,
+    'css' => array(
+      drupal_get_path('module', 'language') . '/css/language.admin.css' => array(),
+    ),
+  );
+
   return $libraries;
 }
 
diff --git a/core/modules/language/language.routing.yml b/core/modules/language/language.routing.yml
index 3b76d56..bc00077 100644
--- a/core/modules/language/language.routing.yml
+++ b/core/modules/language/language.routing.yml
@@ -75,6 +75,6 @@ language.content_settings_page:
   path: '/admin/config/regional/content-language'
   defaults:
     _title: 'Content language'
-    _content: '\Drupal\language\Controller\LanguageController::contentSettings'
+    _form: '\Drupal\language\Form\ContentLanguageSettingsForm'
   requirements:
     _permission: 'administer languages'
diff --git a/core/modules/language/lib/Drupal/language/Controller/LanguageController.php b/core/modules/language/lib/Drupal/language/Controller/LanguageController.php
deleted file mode 100644
index 0724471..0000000
--- a/core/modules/language/lib/Drupal/language/Controller/LanguageController.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\language\Controller\LanguageController.
- */
-
-namespace Drupal\language\Controller;
-
-/**
- * Returns responses for language routes.
- */
-class LanguageController {
-
-  /**
-   * @todo Remove language_content_settings_page().
-   */
-  public function contentSettings() {
-    module_load_include('admin.inc', 'language');
-    return language_content_settings_page();
-  }
-
-}
diff --git a/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php b/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
index 362de0c..d41104b 100644
--- a/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
+++ b/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
@@ -55,6 +55,8 @@ public static function create(ContainerInterface $container) {
   /**
    * Return a list of entity types for which language settings are supported.
    *
+   * @see language_entity_supported()
+   *
    * @return array
    *   A list of entity types which are translatable.
    */
@@ -83,14 +85,14 @@ public function buildForm(array $form, array &$form_state) {
     $labels = array();
     $default = array();
 
-    $bundles = entity_get_bundles();
+    $bundles = $this->entityManager->getAllBundleInfo();
     $language_configuration = array();
     foreach ($this->entitySupported() as $entity_type) {
       $labels[$entity_type] = isset($entity_info[$entity_type]['label']) ? $entity_info[$entity_type]['label'] : $entity_type;
       $default[$entity_type] = FALSE;
 
       // Check whether we have any custom setting.
-      foreach ($bundles as $bundle => $bundle_info) {
+      foreach ($bundles[$entity_type] as $bundle => $bundle_info) {
         $conf = language_get_default_configuration($entity_type, $bundle);
         if (!empty($conf['language_show']) || $conf['langcode'] != 'site_default') {
           $default[$entity_type] = $entity_type;
@@ -105,7 +107,7 @@ public function buildForm(array $form, array &$form_state) {
       '#labels' => $labels,
       '#attached' => array(
         'library' => array(
-          array('language', 'drupal.language.admin'),
+          array('language', 'language.admin.content_language')
         ),
       ),
     );
@@ -135,7 +137,7 @@ public function buildForm(array $form, array &$form_state) {
         ),
       );
 
-      foreach ($bundles as $bundle => $bundle_info) {
+      foreach ($bundles[$entity_type] as $bundle => $bundle_info) {
         $form['settings'][$entity_type][$bundle]['settings'] = array(
           '#type' => 'item',
           '#label' => $bundle_info['label'],
