diff --git c/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php w/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php
index f4e2f13..437b77f 100644
--- c/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php
+++ w/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php
@@ -131,7 +131,7 @@ function testSettingsUI() {
    *   TRUE if the assertion succeeded, FALSE otherwise.
    */
   protected function assertSettings($entity_type, $bundle, $enabled, $edit) {
-    $this->drupalPost('admin/config/regional/content-language', $edit, t('Save'));
+    $this->drupalPost('admin/config/regional/content-language', $edit, t('Save configuration'));
     $args = array('@entity_type' => $entity_type, '@bundle' => $bundle, '@enabled' => $enabled ? 'enabled' : 'disabled');
     $message = format_string('Translation for entity @entity_type (@bundle) is @enabled.', $args);
     field_info_cache_clear();
diff --git c/core/modules/language/language.admin.inc w/core/modules/language/language.admin.inc
index 8bac9cf..b33fe4b 100644
--- c/core/modules/language/language.admin.inc
+++ w/core/modules/language/language.admin.inc
@@ -671,102 +671,6 @@ function language_negotiation_configure_browser_form_submit($form, &$form_state)
 }
 
 /**
- * Returns the content language settings form.
- */
-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) {
@@ -828,19 +732,6 @@ function theme_language_content_settings_table($variables) {
 }
 
 /**
- * Form submission handler for language_content_settings_form().
- */
-function language_content_settings_form_submit(array $form, array &$form_state) {
-  $settings = &$form_state['values']['settings'];
-  foreach ($settings as $entity_type => $entity_settings) {
-    foreach ($entity_settings as $bundle => $bundle_settings) {
-      language_save_default_configuration($entity_type, $bundle, $bundle_settings['settings']['language']);
-    }
-  }
-  drupal_set_message(t('Settings successfully updated.'));
-}
-
-/**
  * Helper function to disable the language switcher blocks.
  *
  * @param array $language_types
diff --git c/core/modules/language/language.module w/core/modules/language/language.module
index 2dd5e57..e11979b 100644
--- c/core/modules/language/language.module
+++ w/core/modules/language/language.module
@@ -135,9 +135,7 @@ function language_menu() {
   $items['admin/config/regional/content-language'] = array(
     'title' => 'Content language settings',
     'description' => 'Configure content language support for any multilingual element.',
-    'page callback' => 'language_content_settings_page',
-    'access arguments' => array('administer languages'),
-    'file' => 'language.admin.inc',
+    'route_name' => 'language_content_settings',
   );
 
   return $items;
@@ -183,22 +181,6 @@ function language_theme() {
 }
 
 /**
- * Returns a list of supported entity types.
- *
- * @return array
- *   An array of entity type names.
- */
-function language_entity_supported() {
-  $supported = array();
-  foreach (entity_get_info() as $entity_type => $info) {
-    if (!empty($info['translatable'])) {
-      $supported[$entity_type] = $entity_type;
-    }
-  }
-  return $supported;
-}
-
-/**
  * Implements hook_element_info_alter().
  */
 function language_element_info_alter(&$type) {
diff --git c/core/modules/language/language.routing.yml w/core/modules/language/language.routing.yml
index 5158655..9d4f0f0 100644
--- c/core/modules/language/language.routing.yml
+++ w/core/modules/language/language.routing.yml
@@ -39,3 +39,10 @@ language_negotiation_browser_delete:
     _form: '\Drupal\language\Form\NegotiationBrowserDeleteForm'
   requirements:
     _permission: 'administer languages'
+
+language_content_settings:
+  pattern: '/admin/config/regional/content-language'
+  defaults:
+    _form: 'Drupal\language\Form\ContentLanguageSettingsForm'
+  requirements:
+    _permission: 'administer languages'
diff --git c/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php w/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
index 65becdf..acdd439 100644
--- c/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
+++ w/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
@@ -82,15 +82,15 @@ public function buildForm(array $form, array &$form_state) {
     $entity_info = $this->entityManager->getDefinitions();
     $labels = array();
     $default = array();
-
-    $bundles = entity_get_bundles();
     $language_configuration = array();
+
+    $bundles = $this->entityManager->getAllBundleInfo();
     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;
@@ -101,12 +101,11 @@ public function buildForm(array $form, array &$form_state) {
 
     asort($labels);
 
+    $path = drupal_get_path('module', 'language');
     $form = array(
       '#labels' => $labels,
       '#attached' => array(
-        'library' => array(
-          array('language', 'drupal.language.admin'),
-        ),
+        'css' => array($path . '/css/language.admin.css'),
       ),
     );
 
@@ -135,7 +134,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'],
@@ -151,12 +150,6 @@ public function buildForm(array $form, array &$form_state) {
       }
     }
 
-    $form['actions'] = array('#type' => 'actions');
-    $form['actions']['submit'] = array(
-      '#type' => 'submit',
-      '#value' => $this->t('Save'),
-    );
-
     return parent::buildForm($form, $form_state);
   }
 
@@ -167,12 +160,13 @@ public function submitForm(array &$form, array &$form_state) {
     $config = $this->configFactory->get('language.settings');
     foreach ($form_state['values']['settings'] as $entity_type => $entity_settings) {
       foreach ($entity_settings as $bundle => $bundle_settings) {
-          $config->set(language_get_default_configuration_settings_key($entity_type, $bundle),
-            array(
-              'langcode' => $bundle_settings['settings']['language']['langcode'],
-              'language_show' => $bundle_settings['settings']['langcode']['language_show'],
-            )
-          );
+        $settings_key = language_get_default_configuration_settings_key($entity_type, $bundle);
+        $config->set($settings_key,
+          array(
+            'langcode' => $bundle_settings['settings']['language']['langcode'],
+            'language_show' => $bundle_settings['settings']['language']['language_show'],
+          )
+        );
       }
     }
     $config->save();
diff --git c/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php w/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php
index bd2caed..7c749aa 100644
--- c/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php
+++ w/core/modules/views/tests/Drupal/views/Tests/Controller/ViewAjaxControllerTest.php
@@ -177,7 +177,7 @@ protected function setupValidMocks() {
 namespace {
   // @todo Remove once drupal_get_destination is converted to autoloadable code.
   if (!function_exists('drupal_static')) {
-    function &drupal_static($key) {
+    function drupal_static($key) {
       return $key;
     }
   }
