diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 1572129..0cdcdd5 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -134,7 +134,7 @@
   public function __construct(array $values, $entity_type, $bundle = FALSE, $translations = array()) {
     $this->entityTypeId = $entity_type;
     $this->bundle = $bundle ? $bundle : $this->entityTypeId;
-    $this->languages = language_list(Language::STATE_ALL);
+    $this->languages = \Drupal::languageManager()->getLanguages(Language::STATE_ALL);
 
     foreach ($values as $key => $value) {
       // If the key matches an existing property set the value to the property
@@ -551,7 +551,7 @@ public function language() {
     $language = NULL;
     if ($this->activeLangcode != Language::LANGCODE_DEFAULT) {
       if (!isset($this->languages[$this->activeLangcode])) {
-        $this->languages += language_list(Language::STATE_ALL);
+        $this->languages += \Drupal::languageManager()->getLanguages(Language::STATE_ALL);
       }
       $language = $this->languages[$this->activeLangcode];
     }
diff --git a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
index ca9e694..7ebf47f 100644
--- a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
+++ b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
@@ -795,7 +795,7 @@ protected function doLoadFieldItems($entities, $age) {
     }
 
     // Load field data.
-    $langcodes = array_keys(language_list(Language::STATE_ALL));
+    $langcodes = array_keys(\Drupal::languageManager()->getLanguages(Language::STATE_ALL));
     foreach ($fields as $field_name => $field) {
       $table = $load_current ? static::_fieldTableName($field) : static::_fieldRevisionTableName($field);
 
diff --git a/core/lib/Drupal/Core/Session/UserSession.php b/core/lib/Drupal/Core/Session/UserSession.php
index af33674..3358612 100644
--- a/core/lib/Drupal/Core/Session/UserSession.php
+++ b/core/lib/Drupal/Core/Session/UserSession.php
@@ -178,7 +178,7 @@ public function isAnonymous() {
    * {@inheritdoc}
    */
   function getPreferredLangcode($default = NULL) {
-    $language_list = language_list();
+    $language_list = \Drupal::languageManager()->getLanguages();
     if (!empty($this->preferred_langcode) && isset($language_list[$this->preferred_langcode])) {
       return $language_list[$this->preferred_langcode]->id;
     }
@@ -191,7 +191,7 @@ function getPreferredLangcode($default = NULL) {
    * {@inheritdoc}
    */
   function getPreferredAdminLangcode($default = NULL) {
-    $language_list = language_list();
+    $language_list = \Drupal::languageManager()->getLanguages();
     if (!empty($this->preferred_admin_langcode) && isset($language_list[$this->preferred_admin_langcode])) {
       return $language_list[$this->preferred_admin_langcode]->id;
     }
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
index 15a389c..fe86c4a 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
@@ -90,7 +90,7 @@ function testCommentLanguage() {
     // is the user language preference. This way we can ensure that node
     // language and interface language do not influence comment language, as
     // only content language has to.
-    foreach (language_list() as $node_langcode => $node_language) {
+    foreach ($this->container->get('language_manager')->getLanguages() as $node_langcode => $node_language) {
       // Create "Article" content.
       $title = $this->randomName();
       $edit = array(
@@ -103,7 +103,7 @@ function testCommentLanguage() {
       $node = $this->drupalGetNodeByTitle($title);
 
       $prefixes = language_negotiation_url_prefixes();
-      foreach (language_list() as $langcode => $language) {
+      foreach ($this->container->get('language_manager')->getLanguages() as $langcode => $language) {
         // Post a comment with content language $langcode.
         $prefix = empty($prefixes[$langcode]) ? '' : $prefixes[$langcode] . '/';
         $comment_values[$node_langcode][$langcode] = $this->randomName();
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php
index 2e9226d..c5a2d0c 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php
@@ -131,7 +131,7 @@ protected function assertPublishedStatus() {
     $entity = entity_load($this->entityTypeId, $this->entityId);
     $user = $this->drupalCreateUser(array('access comments'));
     $this->drupalLogin($user);
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
 
     // Check that simple users cannot see unpublished field translations.
     $path = $entity->getSystemPath();
diff --git a/core/modules/content_translation/content_translation.admin.inc b/core/modules/content_translation/content_translation.admin.inc
index a8a88ed..19d8d5e 100644
--- a/core/modules/content_translation/content_translation.admin.inc
+++ b/core/modules/content_translation/content_translation.admin.inc
@@ -276,7 +276,7 @@ function content_translation_form_language_content_settings_validate(array $form
 
         $values = $bundle_settings['settings']['language'];
         if (empty($values['language_show']) && \Drupal::languageManager()->isLanguageLocked($values['langcode'])) {
-          foreach (language_list(Language::STATE_LOCKED) as $language) {
+          foreach (\Drupal::languageManager()->getLanguages(Language::STATE_LOCKED) as $language) {
             $locked_languages[] = $language->name;
           }
           form_set_error($name, $form_state, t('Translation is not supported if language is always one of: @locked_languages', array('@locked_languages' => implode(', ', $locked_languages))));
diff --git a/core/modules/content_translation/content_translation.install b/core/modules/content_translation/content_translation.install
index e474d69..2d4963e 100644
--- a/core/modules/content_translation/content_translation.install
+++ b/core/modules/content_translation/content_translation.install
@@ -94,7 +94,7 @@ function content_translation_install() {
  */
 function content_translation_enable() {
   // Translation works when at least two languages are enabled.
-  if (count(language_list()) < 2) {
+  if (count(\Drupal::languageManager()->getLanguages()) < 2) {
     $t_args = array('!language_url' => url('admin/config/regional/language'));
     $message = t('Be sure to <a href="!language_url">enable at least two languages</a> to translate content.', $t_args);
     drupal_set_message($message, 'warning');
diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index aea9349..4b6aef1 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -378,7 +378,7 @@ function content_translation_add_access(EntityInterface $entity, Language $sourc
   $source = !empty($source) ? $source : $entity->language();
   $target = !empty($target) ? $target : language(Language::TYPE_CONTENT);
   $translations = $entity->getTranslationLanguages();
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   return $source->id != $target->id && isset($languages[$source->id]) && isset($languages[$target->id]) && !isset($translations[$target->id]) && content_translation_access($entity, 'create');
 }
 
@@ -394,7 +394,7 @@ function content_translation_add_access(EntityInterface $entity, Language $sourc
 function content_translation_edit_access(EntityInterface $entity, Language $language = NULL) {
   $language = !empty($language) ? $language : language(Language::TYPE_CONTENT);
   $translations = $entity->getTranslationLanguages();
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   return isset($languages[$language->id]) && $language->id != $entity->getUntranslated()->language()->id && isset($translations[$language->id]) && content_translation_access($entity, 'update');
 }
 
@@ -410,7 +410,7 @@ function content_translation_edit_access(EntityInterface $entity, Language $lang
 function content_translation_delete_access(EntityInterface $entity, Language $language = NULL) {
   $language = !empty($language) ? $language : language(Language::TYPE_CONTENT);
   $translations = $entity->getTranslationLanguages();
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   return isset($languages[$language->id]) && $language->id != $entity->getUntranslated()->language()->id && isset($translations[$language->id]) && content_translation_access($entity, 'delete');
 }
 
@@ -976,7 +976,7 @@ function content_translation_language_configuration_element_validate($element, a
   $key = $form_state['content_translation']['key'];
   $values = $form_state['values'][$key];
   if (!$values['language_show'] && $values['content_translation'] && \Drupal::languageManager()->isLanguageLocked($values['langcode'])) {
-    foreach (language_list(Language::STATE_LOCKED) as $language) {
+    foreach (\Drupal::languageManager()->getLanguages(Language::STATE_LOCKED) as $language) {
       $locked_languages[] = $language->name;
     }
     // @todo Set the correct form element name as soon as the element parents
diff --git a/core/modules/content_translation/content_translation.pages.inc b/core/modules/content_translation/content_translation.pages.inc
index 3272296..9821a9d 100644
--- a/core/modules/content_translation/content_translation.pages.inc
+++ b/core/modules/content_translation/content_translation.pages.inc
@@ -19,7 +19,7 @@
  */
 function content_translation_overview(EntityInterface $entity) {
   $controller = content_translation_controller($entity->getEntityTypeId());
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   $original = $entity->getUntranslated()->language()->id;
   $translations = $entity->getTranslationLanguages();
   $administrator = \Drupal::currentUser()->hasPermission('administer languages');
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php
index be3fe85..1c8c9eb 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php
@@ -49,7 +49,7 @@ public function access(Route $route, Request $request, AccountInterface $account
 
       // Load translation.
       $translations = $entity->getTranslationLanguages();
-      $languages = language_list();
+      $languages = \Drupal::languageManager()->getLanguages();
 
       switch ($operation) {
         case 'create':
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php b/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
index 497b01c..c123037 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
@@ -95,7 +95,7 @@ public function entityFormAlter(array &$form, array &$form_state, EntityInterfac
 
     // Adjust page title to specify the current language being edited, if we
     // have at least one translation.
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     if (isset($languages[$form_langcode]) && ($has_translations || $new_translation)) {
       $title = $this->entityFormTitle($entity);
       // When editing the original values display just the entity label.
@@ -129,7 +129,7 @@ public function entityFormAlter(array &$form, array &$form_state, EntityInterfac
           '#submit' => array(array($this, 'entityFormSourceChange')),
         ),
       );
-      foreach (language_list(Language::STATE_CONFIGURABLE) as $language) {
+      foreach (\Drupal::languageManager()->getLanguages(Language::STATE_CONFIGURABLE) as $language) {
         if (isset($translations[$language->id])) {
           $form['source_langcode']['source']['#options'][$language->id] = $language->name;
         }
@@ -142,7 +142,7 @@ public function entityFormAlter(array &$form, array &$form_state, EntityInterfac
     $language_widget = isset($form['langcode']) && $form['langcode']['#type'] == 'language_select';
     if ($language_widget && $has_translations) {
       $form['langcode']['#options'] = array();
-      foreach (language_list(Language::STATE_CONFIGURABLE) as $language) {
+      foreach (\Drupal::languageManager()->getLanguages(Language::STATE_CONFIGURABLE) as $language) {
         if (empty($translations[$language->id]) || $language->id == $entity_langcode) {
           $form['langcode']['#options'][$language->id] = $language->name;
         }
@@ -434,7 +434,7 @@ public function entityFormSourceChange($form, &$form_state) {
 
     $path = $entity->getSystemPath('drupal:content-translation-overview');
     $form_state['redirect'] = $path . '/add/' . $source . '/' . $form_controller->getFormLangcode($form_state);
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     drupal_set_message(t('Source language set to: %language', array('%language' => $languages[$source]->name)));
   }
 
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php
index 861aec9..43e5d77 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php
@@ -119,7 +119,7 @@ function testWorkflows() {
    */
   protected function assertWorkflows(UserInterface $user, $expected_status) {
     $default_langcode = $this->langcodes[0];
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
     $args = array('@user_label' => $user->getUsername());
     $this->drupalLogin($user);
 
diff --git a/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php b/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php
index 8f5a4b1..f6cbfcc 100644
--- a/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php
@@ -126,7 +126,7 @@ function testTranslatableFieldSaveLoad() {
     field_test_entity_info_translatable($entity_type_id, TRUE);
     $entity = entity_create($entity_type_id, array('type' => $this->instance->bundle));
     $field_translations = array();
-    $available_langcodes = array_keys(language_list());
+    $available_langcodes = array_keys($this->container->get('language_manager')->getLanguages());
     $entity->langcode->value = reset($available_langcodes);
     foreach ($available_langcodes as $langcode) {
       $field_translations[$langcode] = $this->_generateTestFieldValues($this->field->getCardinality());
diff --git a/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php b/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php
index 03f6e7e..a1f4950 100644
--- a/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php
@@ -103,7 +103,7 @@ function testFieldFormTranslationRevisions() {
     // Prepare the field translations.
     field_test_entity_info_translatable($this->entity_type, TRUE);
     $entity = entity_create($this->entity_type);
-    $available_langcodes = array_flip(array_keys(language_list()));
+    $available_langcodes = array_flip(array_keys($this->container->get('language_manager')->getLanguages()));
     $field_name = $this->field->getName();
 
     // Store the field translations.
diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index 3bd73f9..2c894d3 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -11,7 +11,7 @@
  * Prepare a language code list for unused predefined languages.
  */
 function language_admin_predefined_list() {
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   $predefined = LanguageManager::getStandardLanguageList();
   foreach ($predefined as $key => $value) {
     if (isset($languages[$key])) {
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 5a7218b..8ab17ff 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -205,7 +205,7 @@ function language_process_language_select($element) {
   // set the options.
   if (!isset($element['#options'])) {
     $element['#options'] = array();
-    foreach (language_list($element['#languages']) as $langcode => $language) {
+    foreach (\Drupal::languageManager()->getLanguages($element['#languages']) as $langcode => $language) {
       $element['#options'][$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name;
     }
   }
@@ -252,7 +252,7 @@ function language_configuration_element_default_options() {
     'authors_default' => t("Author's preferred language"),
   );
 
-  $languages = language_list(Language::STATE_ALL);
+  $languages = \Drupal::languageManager()->getLanguages(Language::STATE_ALL);
   foreach ($languages as $langcode => $language) {
     $language_options[$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name;
   }
@@ -506,7 +506,7 @@ function language_save($language) {
   }
 
   // Update URL Prefixes for all languages after the new default language is
-  // propagated and the language_list() cache is flushed.
+  // propagated and the \Drupal::languageManager()->getLanguages() cache is flushed.
   language_negotiation_url_prefixes_update();
 
   // If after adding this language the site will become multilingual, we need to
@@ -528,7 +528,7 @@ function language_save($language) {
  *   TRUE if language is successfully deleted. Otherwise FALSE.
  */
 function language_delete($langcode) {
-  $languages = language_list(Language::STATE_ALL);
+  $languages = \Drupal::languageManager()->getLanguages(Language::STATE_ALL);
   if (isset($languages[$langcode]) && !$languages[$langcode]->locked) {
     $language = $languages[$langcode];
 
@@ -622,7 +622,7 @@ function language_negotiation_url_prefixes() {
  */
 function language_negotiation_url_prefixes_update() {
   $prefixes = language_negotiation_url_prefixes();
-  foreach (language_list() as $language) {
+  foreach (\Drupal::languageManager()->getLanguages() as $language) {
     // The prefix for this language should be updated if it's not assigned yet
     // or the prefix is set to the empty string.
     if (empty($prefixes[$language->id])) {
@@ -750,7 +750,7 @@ function language_set_browser_drupal_langcode_mappings($mappings) {
  * @see language_system_regional_settings_form_submit()
  */
 function language_form_system_regional_settings_alter(&$form, &$form_state) {
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   $default = language_default();
   foreach ($languages as $key => $language) {
     $language_options[$key] = $language->name;
@@ -773,7 +773,7 @@ function language_form_system_regional_settings_alter(&$form, &$form_state) {
  * @see language_form_system_regional_settings_alter()
  */
 function language_system_regional_settings_form_submit($form, &$form_state) {
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   $language = $languages[$form_state['values']['site_default_language']];
   $language->default = TRUE;
   language_save($language);
diff --git a/core/modules/language/lib/Drupal/language/Form/LanguageDeleteForm.php b/core/modules/language/lib/Drupal/language/Form/LanguageDeleteForm.php
index 241bbe7..9098d69 100644
--- a/core/modules/language/lib/Drupal/language/Form/LanguageDeleteForm.php
+++ b/core/modules/language/lib/Drupal/language/Form/LanguageDeleteForm.php
@@ -96,7 +96,7 @@ public function buildForm(array $form, array &$form_state) {
     }
 
     // Throw a 404 when attempting to delete a non-existing language.
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     if (!isset($languages[$langcode])) {
       throw new NotFoundHttpException();
     }
diff --git a/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php b/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php
index 2dacdc2..d1dc457 100644
--- a/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php
+++ b/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php
@@ -48,7 +48,7 @@ public function actions(array $form, array &$form_state) {
    */
   public function submitForm(array &$form, array &$form_state) {
     // Prepare a language object for saving.
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     $langcode = $form_state['values']['langcode'];
     $language = $languages[$langcode];
     $language->name = $form_state['values']['name'];
diff --git a/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserForm.php b/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserForm.php
index 0455b7d..deba614 100644
--- a/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserForm.php
+++ b/core/modules/language/lib/Drupal/language/Form/NegotiationBrowserForm.php
@@ -60,7 +60,7 @@ public function buildForm(array $form, array &$form_state) {
     $form = array();
 
     // Initialize a language list to the ones available, including English.
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
 
     $existing_languages = array();
     foreach ($languages as $langcode => $language) {
diff --git a/core/modules/language/lib/Drupal/language/Form/NegotiationUrlForm.php b/core/modules/language/lib/Drupal/language/Form/NegotiationUrlForm.php
index 172e6b0..70a83eb 100644
--- a/core/modules/language/lib/Drupal/language/Form/NegotiationUrlForm.php
+++ b/core/modules/language/lib/Drupal/language/Form/NegotiationUrlForm.php
@@ -66,7 +66,7 @@ public function buildForm(array $form, array &$form_state) {
       ),
     );
 
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     $prefixes = language_negotiation_url_prefixes();
     $domains = language_negotiation_url_domains();
     foreach ($languages as $langcode => $language) {
@@ -95,7 +95,7 @@ public function buildForm(array $form, array &$form_state) {
    * Implements \Drupal\Core\Form\FormInterface::validateForm().
    */
   public function validateForm(array &$form, array &$form_state) {
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
 
     // Count repeated values for uniqueness check.
     $count = array_count_values($form_state['values']['prefix']);
diff --git a/core/modules/language/lib/Drupal/language/Plugin/Condition/Language.php b/core/modules/language/lib/Drupal/language/Plugin/Condition/Language.php
index 9dda571..e7e7036 100644
--- a/core/modules/language/lib/Drupal/language/Plugin/Condition/Language.php
+++ b/core/modules/language/lib/Drupal/language/Plugin/Condition/Language.php
@@ -32,7 +32,7 @@ public function buildForm(array $form, array &$form_state) {
     $form = parent::buildForm($form, $form_state);
     if (\Drupal::languageManager()->isMultilingual()) {
       // Fetch languages.
-      $languages = language_list(Lang::STATE_ALL);
+      $languages = \Drupal::languageManager()->getLanguages(Lang::STATE_ALL);
       $langcodes_options = array();
       foreach ($languages as $language) {
         $langcodes_options[$language->id] = $language->label();
@@ -66,7 +66,7 @@ public function submitForm(array &$form, array &$form_state) {
    * {@inheritdoc}
    */
   public function summary() {
-    $language_list = language_list(Lang::STATE_ALL);
+    $language_list = \Drupal::languageManager()->getLanguages(Lang::STATE_ALL);
     $selected = $this->configuration['langcodes'];
     // Reduce the language list to an array of language names.
     $language_names = array_reduce($language_list, function(&$result, $item) use ($selected) {
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageListModuleInstallTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageListModuleInstallTest.php
index d4192b6..17e433e 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageListModuleInstallTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageListModuleInstallTest.php
@@ -41,7 +41,7 @@ function testModuleInstallLanguageList() {
     $edit['modules[Multilingual][language][enable]'] = 'language';
     $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
 
-    $this->assertEqual(\Drupal::state()->get('language_test.language_count_preinstall', 0), 1, 'Using language_list() returns 1 language during Language installation.');
+    $this->assertEqual(\Drupal::state()->get('language_test.language_count_preinstall', 0), 1, 'Using LanguageManager::getLanguages() returns 1 language during Language installation.');
 
     // Get updated module list by rebuilding container.
     $this->rebuildContainer();
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
index a475c04..273850b 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
@@ -118,12 +118,12 @@ function testLanguageList() {
     $this->assertResponse(404, 'Language no longer found.');
     // Make sure the "language_count" state has been updated correctly.
     $this->container->get('language_manager')->reset();
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
     // Delete French.
     $this->drupalPostForm('admin/config/regional/language/delete/fr', array(), t('Delete'));
     // Get the count of languages.
     $this->container->get('language_manager')->reset();
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
     // We need raw here because %language and %langcode will add HTML.
     $t_args = array('%language' => 'French', '%langcode' => 'fr');
     $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), 'Disabled language has been removed.');
@@ -179,13 +179,13 @@ function testLanguageStates() {
     $expected_all_languages = array('l4' => 'l4', 'l3' => 'l3', 'l2' => 'l2', 'l1' => 'l1', 'en' => 'en', 'und' => 'und', 'zxx' => 'zxx');
     $expected_conf_languages = array('l3' => 'l3', 'l1' => 'l1', 'en' => 'en');
 
-    $locked_languages = language_list(Language::STATE_LOCKED);
+    $locked_languages = $this->container->get('language_manager')->getLanguages(Language::STATE_LOCKED);
     $this->assertEqual(array_diff_key($expected_locked_languages, $locked_languages), array(), 'Locked languages loaded correctly.');
 
-    $all_languages = language_list(Language::STATE_ALL);
+    $all_languages = $this->container->get('language_manager')->getLanguages(Language::STATE_ALL);
     $this->assertEqual(array_diff_key($expected_all_languages, $all_languages), array(), 'All languages loaded correctly.');
 
-    $conf_languages = language_list();
+    $conf_languages = $this->container->get('language_manager')->getLanguages();
     $this->assertEqual(array_diff_key($expected_conf_languages, $conf_languages), array(), 'Configurable languages loaded correctly.');
   }
 }
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
index 89376c8..e9f2e38 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
@@ -364,7 +364,7 @@ function testUrlLanguageFallback() {
       'id' => $langcode_browser_fallback,
     ));
     language_save($language);
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
 
     // Enable the path prefix for the default language: this way any unprefixed
     // URL must have a valid fallback value.
@@ -416,7 +416,7 @@ function testLanguageDomain() {
       'id' => $langcode,
     ));
     language_save($language);
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
 
     // Enable browser and URL language detection.
     $edit = array(
diff --git a/core/modules/language/tests/language_test/language_test.module b/core/modules/language/tests/language_test/language_test.module
index 3817137..dbff52b 100644
--- a/core/modules/language/tests/language_test/language_test.module
+++ b/core/modules/language/tests/language_test/language_test.module
@@ -98,5 +98,5 @@ function language_test_language_fallback_candidates_test_alter(array &$candidate
  * Implements hook_module_preinstall().
  */
 function language_test_module_preinstall() {
-  \Drupal::state()->set('language_test.language_count_preinstall', count(language_list()));
+  \Drupal::state()->set('language_test.language_count_preinstall', count(\Drupal::languageManager()->getLanguages()));
 }
diff --git a/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php b/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php
index 781af06..dd6aff8 100644
--- a/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php
+++ b/core/modules/language/tests/language_test/lib/Drupal/language_test/Controller/LanguageTestController.php
@@ -8,6 +8,7 @@
 namespace Drupal\language_test\Controller;
 
 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
+use Drupal\Core\Language\LanguageManager;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
@@ -25,20 +26,28 @@ class LanguageTestController implements ContainerInjectionInterface {
   protected $httpKernel;
 
   /**
+   * The language manager service.
+   *
+   * @var \Drupal\Core\Language\LanguageManager
+   */
+  protected $languageManager;
+
+  /**
    * Constructs a new LanguageTestController object.
    *
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $httpKernel
    *   An HTTP kernel.
    */
-  public function __construct(HttpKernelInterface $httpKernel) {
+  public function __construct(HttpKernelInterface $httpKernel, LanguageManager $language_manager) {
     $this->httpKernel = $httpKernel;
+    $this->languageManager = $language_manager;
   }
 
   /**
    * {@inheritdoc}
    */
   public static function create(ContainerInterface $container) {
-    return new static($container->get('http_kernel'));
+    return new static($container->get('http_kernel'), $container->get('language_manager'));
   }
 
   /**
@@ -48,7 +57,7 @@ public static function create(ContainerInterface $container) {
    */
   public function typeLinkActiveClass() {
     // We assume that 'en' and 'fr' have been configured.
-    $languages = language_list();
+    $languages = $this->languageManager->getLanguages();
     return array(
       'no_language' => array(
         '#type' => 'link',
diff --git a/core/modules/locale/lib/Drupal/locale/Form/TranslateEditForm.php b/core/modules/locale/lib/Drupal/locale/Form/TranslateEditForm.php
index d6e4b09..25afd6d 100644
--- a/core/modules/locale/lib/Drupal/locale/Form/TranslateEditForm.php
+++ b/core/modules/locale/lib/Drupal/locale/Form/TranslateEditForm.php
@@ -30,7 +30,7 @@ public function buildForm(array $form, array &$form_state) {
     $langcode = $filter_values['langcode'];
 
     $this->languageManager->reset();
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
 
     $langname = isset($langcode) ? $languages[$langcode]->name : "- None -";
 
diff --git a/core/modules/locale/lib/Drupal/locale/Form/TranslateFormBase.php b/core/modules/locale/lib/Drupal/locale/Form/TranslateFormBase.php
index c5447e0..c08dbf0 100644
--- a/core/modules/locale/lib/Drupal/locale/Form/TranslateFormBase.php
+++ b/core/modules/locale/lib/Drupal/locale/Form/TranslateFormBase.php
@@ -162,7 +162,7 @@ protected function translateFilters() {
 
     // Get all languages, except English.
     $this->languageManager->reset();
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     $language_options = array();
     foreach ($languages as $langcode => $language) {
       if ($langcode != 'en' || locale_translate_english()) {
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleStringTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleStringTest.php
index 59993f0..865023e 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleStringTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleStringTest.php
@@ -195,7 +195,7 @@ function buildSourceString($values = array()) {
    */
   function createAllTranslations($source, $values = array()) {
     $list = array();
-    foreach (language_list() as $language) {
+    foreach ($this->container->get('language_manager')->getLanguages() as $language) {
       $list[$language->id] = $this->createTranslation($source, $language->id, $values);
     }
     return $list;
diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc
index c0e7bbe..837d0d6 100644
--- a/core/modules/locale/locale.bulk.inc
+++ b/core/modules/locale/locale.bulk.inc
@@ -22,7 +22,7 @@
  */
 function locale_translate_import_form($form, &$form_state) {
   Drupal::languageManager()->reset();
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
 
   // Initialize a language list to the ones available, including English if we
   // are to translate Drupal to English as well.
@@ -156,7 +156,7 @@ function locale_translate_import_form_submit($form, &$form_state) {
  * @deprecated Use \Drupal\locale\Form\LocaleForm::export()
  */
 function locale_translate_export_form($form, &$form_state) {
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   $language_options = array();
   foreach ($languages as $langcode => $language) {
     if ($langcode != 'en' || locale_translate_english()) {
@@ -240,7 +240,7 @@ function locale_translate_export_form_submit($form, &$form_state) {
   if ($language != NULL) {
     $reader->setLangcode($language->id);
     $reader->setOptions($content_options);
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     $languageName = isset($languages[$language->id]) ? $languages[$language->id]->name : '';
     $filename = $language->id .'.po';
   }
@@ -313,7 +313,7 @@ function locale_translate_batch_import_files($options, $force = FALSE) {
   else {
     // If langcode was not provided, make sure to only import files for the
     // languages we have enabled.
-    $langcodes = array_keys(language_list());
+    $langcodes = array_keys(\Drupal::languageManager()->getLanguages());
   }
 
   $files = locale_translate_get_interface_translation_files(array(), $langcodes);
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 8386be5..8832eb8 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -313,7 +313,7 @@ function locale_language_delete($language) {
  *   unless it is marked as translatable.
  */
 function locale_translatable_language_list() {
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   if (!locale_translate_english()) {
     unset($languages['en']);
   }
@@ -1332,7 +1332,7 @@ function _locale_rebuild_js($langcode = NULL) {
   }
   else {
     // Get information about the locale.
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     $language = $languages[$langcode];
   }
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
index 1e9e7ff..35122b2 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
@@ -435,7 +435,7 @@ public function searchFormAlter(array &$form, array &$form_state) {
 
     // Add languages.
     $language_options = array();
-    foreach (language_list(Language::STATE_ALL) as $langcode => $language) {
+    foreach (\Drupal::languageManager()->getLanguages(Language::STATE_ALL) as $langcode => $language) {
       // Make locked languages appear special in the list.
       $language_options[$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name;
     }
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php
index d0c7663..fcee601 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Node.php
@@ -72,7 +72,7 @@ protected function renderLink($data, ResultRow $values) {
         $this->options['alter']['make_link'] = TRUE;
         $this->options['alter']['path'] = "node/" . $this->getValue($values, 'nid');
         if (isset($this->aliases['langcode'])) {
-          $languages = language_list();
+          $languages = \Drupal::languageManager()->getLanguages();
           $langcode = $this->getValue($values, 'langcode');
           if (isset($languages[$langcode])) {
             $this->options['alter']['language'] = $languages[$langcode];
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
index 6c9c6bd..4206c1c 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
@@ -112,7 +112,7 @@ protected function getFormSubmitAction(EntityInterface $entity) {
   protected function doTestPublishedStatus() {
     $entity = entity_load($this->entityTypeId, $this->entityId, TRUE);
     $path = $entity->getSystemPath('edit-form');
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
 
     $actions = array(
       array(t('Save and publish'), t('Save and keep published')),
@@ -144,7 +144,7 @@ protected function doTestPublishedStatus() {
   protected function doTestAuthoringInfo() {
     $entity = entity_load($this->entityTypeId, $this->entityId, TRUE);
     $path = $entity->getSystemPath('edit-form');
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
     $values = array();
 
     // Post different authoring information for each translation.
@@ -259,7 +259,7 @@ function testTranslationRendering() {
    *   The translation values to be found.
    */
   protected function doTestTranslations($path, array $values) {
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
     foreach ($this->langcodes as $langcode) {
       $this->drupalGet($path, array('language' => $languages[$langcode]));
       $this->assertText($values[$langcode]['title'][0]['value'], format_string('The %langcode node translation is correctly displayed.', array('%langcode' => $langcode)));
diff --git a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php
index 0653743..cc47e2d 100644
--- a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php
+++ b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php
@@ -106,7 +106,7 @@ function testAliasTranslation() {
     // Languages are cached on many levels, and we need to clear those caches.
     $this->container->get('language_manager')->reset();
     $this->rebuildContainer();
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
 
     // Ensure the node was created.
     $english_node = node_load($english_node->id(), TRUE);
@@ -120,7 +120,7 @@ function testAliasTranslation() {
     // Confirm that the alias is returned by url(). Languages are cached on
     // many levels, and we need to clear those caches.
     $this->container->get('language_manager')->reset();
-    $languages = language_list();
+    $languages = $this->container->get('language_manager')->getLanguages();
     $url = $this->container->get('url_generator')->generateFromPath('node/' . $french_node->id(), array('language' => $languages['fr']));
 
     $this->assertTrue(strpos($url, $edit['path[alias]']), 'URL contains the path alias.');
diff --git a/core/modules/path/path.admin.inc b/core/modules/path/path.admin.inc
index 6574208..3be3bad 100644
--- a/core/modules/path/path.admin.inc
+++ b/core/modules/path/path.admin.inc
@@ -159,7 +159,7 @@ function path_admin_form($form, &$form_state, $path = array('source' => '', 'ali
 
   // A hidden value unless language.module is enabled.
   if (\Drupal::moduleHandler()->moduleExists('language')) {
-    $languages = language_list();
+    $languages = \Drupal::languageManager()->getLanguages();
     foreach ($languages as $langcode => $language) {
       $language_options[$langcode] = $language->name;
     }
diff --git a/core/modules/system/entity.api.php b/core/modules/system/entity.api.php
index 1a3973d..d0843ff 100644
--- a/core/modules/system/entity.api.php
+++ b/core/modules/system/entity.api.php
@@ -354,7 +354,7 @@ function hook_entity_translation_insert(\Drupal\Core\Entity\EntityInterface $tra
  *   The original entity object.
  */
 function hook_entity_translation_delete(\Drupal\Core\Entity\EntityInterface $translation) {
-  $languages = language_list();
+  $languages = \Drupal::languageManager()->getLanguages();
   $variables = array(
     '@language' => $languages[$langcode]->name,
     '@label' => $entity->label(),
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
index f6a59f9..8f6ecb7 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
@@ -58,7 +58,7 @@ function testLanguageSelectElementOptions() {
     foreach ($ids as $id => $flags) {
       $this->assertField($id, format_string('The @id field was found on the page.', array('@id' => $id)));
       $options = array();
-      foreach (language_list($flags) as $langcode => $language) {
+      foreach ($this->container->get('language_manager')->getLanguages($flags) as $langcode => $language) {
         $options[$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name;
       }
       $this->_testLanguageSelectElementOptions($id, $options);
diff --git a/core/modules/user/lib/Drupal/user/Entity/User.php b/core/modules/user/lib/Drupal/user/Entity/User.php
index 80c44ee..74cfa0e 100644
--- a/core/modules/user/lib/Drupal/user/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/Entity/User.php
@@ -359,7 +359,7 @@ public function getTimeZone() {
    * {@inheritdoc}
    */
   function getPreferredLangcode($default = NULL) {
-    $language_list = language_list();
+    $language_list = \Drupal::languageManager()->getLanguages();
     $preferred_langcode = $this->get('preferred_langcode')->value;
     if (!empty($preferred_langcode) && isset($language_list[$preferred_langcode])) {
       return $language_list[$preferred_langcode]->id;
@@ -373,7 +373,7 @@ function getPreferredLangcode($default = NULL) {
    * {@inheritdoc}
    */
   function getPreferredAdminLangcode($default = NULL) {
-    $language_list = language_list();
+    $language_list = \Drupal::languageManager()->getLanguages();
     $preferred_langcode = $this->get('preferred_admin_langcode')->value;
     if (!empty($preferred_langcode) && isset($language_list[$preferred_langcode])) {
       return $language_list[$preferred_langcode]->id;
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php
index 924bf56..c9d8081 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Language.php
@@ -33,7 +33,7 @@ protected function renderLink($data, ResultRow $values) {
       $lang = language_default();
     }
     else {
-      $lang = language_list();
+      $lang = \Drupal::languageManager()->getLanguages();
       $lang = $lang[$data];
     }
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
index 9737c18..3eb54d7 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
@@ -1244,7 +1244,7 @@ public function optionsSummary(&$categories, &$options) {
         Language::LANGCODE_NOT_SPECIFIED => t('Language neutral'),
     );
     if (\Drupal::moduleHandler()->moduleExists('language')) {
-      $languages = array_merge($languages, language_list());
+      $languages = array_merge($languages, \Drupal::languageManager()->getLanguages());
     }
     $options['field_langcode'] = array(
       'category' => 'other',
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index b3c27ec..61582e6 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -509,7 +509,8 @@ function views_add_contextual_links(&$render_element, $location, ViewExecutable
 /**
  * Prepares a list of language names.
  *
- * This is a wrapper around language_list to return a plain key value array.
+ * This is a wrapper around \Drupal::languageManager()->getLanguages() to return
+ * a plain key value array.
  *
  * @param string $field
  *   The field of the language object which should be used as the value of the
@@ -525,7 +526,7 @@ function views_add_contextual_links(&$render_element, $location, ViewExecutable
  * @see locale_language_list()
  */
 function views_language_list($field = 'name', $flags = Language::STATE_ALL) {
-  $languages = language_list($flags);
+  $languages = \Drupal::languageManager()->getLanguages($flags);
   $list = array();
   foreach ($languages as $language) {
     $list[$language->id] = ($field == 'name') ? t($language->name) : $language->$field;
