diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index f75bd00..07e8a55 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -2444,7 +2444,8 @@ function language_multilingual() {
   // The "language_count" variable stores the number of enabled languages to
   // avoid unnecessarily querying the database when building the list of
   // enabled languages on monolingual sites.
-  return variable_get('language_count', 1) > 1;
+  $language_count = state()->get('language.count') ?: 1;
+  return $language_count > 1;
 }
 
 /**
diff --git a/core/includes/update.inc b/core/includes/update.inc
index 327dce2..8bdef7a 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -489,7 +489,7 @@ function update_prepare_d8_language() {
     db_drop_field('languages', 'enabled');
 
     // Update language count.
-    variable_set('language_count', db_query('SELECT COUNT(language) FROM {languages}')->fetchField());
+    state()->set('language_count', db_query('SELECT COUNT(language) FROM {languages}')->fetchField());
 
     // Rename the languages table to language.
     db_rename_table('languages', 'language');
diff --git a/core/lib/Drupal/Core/Language/LanguageManager.php b/core/lib/Drupal/Core/Language/LanguageManager.php
index b4acc6a..4329a49 100644
--- a/core/lib/Drupal/Core/Language/LanguageManager.php
+++ b/core/lib/Drupal/Core/Language/LanguageManager.php
@@ -135,7 +135,8 @@ public function reset($type = NULL) {
    *   TRUE if more than one language is enabled, FALSE otherwise.
    */
   public function isMultilingual() {
-    return variable_get('language_count', 1) > 1;
+    $language_count = state()->get('language.count') ?: 1;
+    return $language_count > 1;
   }
 
   /**
diff --git a/core/modules/language/language.install b/core/modules/language/language.install
index 17828fd..9d5cb0c 100644
--- a/core/modules/language/language.install
+++ b/core/modules/language/language.install
@@ -33,7 +33,7 @@ function language_install() {
 function language_uninstall() {
   // Clear variables.
   variable_del('language_default');
-  variable_del('language_count');
+  state()->delete('language_count');
 
   // Clear variables.
   variable_del('language_types');
@@ -115,7 +115,7 @@ function language_disable() {
   // Force the language_count variable to be 1, so that the when checking if the
   // site is multilingual (for example in language_multilingual()), the result
   // will be FALSE, because the language module is disabled.
-  variable_set('language_count', 1);
+  state()->set('language_count', 1);
 }
 
 /**
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 6b45fa1..cb87669 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -523,7 +523,7 @@ function language_save($language) {
  * @see language_multilingual()
  */
 function language_update_count() {
-  variable_set('language_count', db_query('SELECT COUNT(langcode) FROM {language} WHERE locked = 0')->fetchField());
+  state()->set('language_count', db_query('SELECT COUNT(langcode) FROM {language} WHERE locked = 0')->fetchField());
 }
 
 /**
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
index 570ae2a..53e0e04 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
@@ -119,7 +119,8 @@ function testLanguageList() {
     // Make sure the "language_count" variable has been updated correctly.
     drupal_static_reset('language_list');
     $languages = language_list();
-    $this->assertEqual(variable_get('language_count', 1), count($languages), 'Language count is correct.');
+    $language_count = state()->get('language.count') ?: 1;
+    $this->assertEqual($language_count, count($languages), 'Language count is correct.');
     // Delete French.
     $this->drupalPost('admin/config/regional/language/delete/fr', array(), t('Delete'));
     // Get the count of languages.
@@ -133,7 +134,8 @@ function testLanguageList() {
     $this->drupalGet('admin/config/regional/language/delete/fr');
     $this->assertResponse(404, 'Language no longer found.');
     // Make sure the "language_count" variable has not changed.
-    $this->assertEqual(variable_get('language_count', 1), count($languages), 'Language count is correct.');
+    $language_count = state()->get('language.count') ?: 1;
+    $this->assertEqual($language_count, count($languages), 'Language count is correct.');
 
     // Ensure we can delete the English language. Right now English is the only
     // language so we must add a new language and make it the default before
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
index 5675229..b925087 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
@@ -121,7 +121,7 @@ function testUninstallProcess() {
     $this->assertTrue($result = !file_exists($js_file), t('JavaScript file deleted: %file', array('%file' => $result ? $js_file : t('found'))));
 
     // Check language count.
-    $language_count = variable_get('language_count', 1);
+    $language_count = state()->get('language.count') ?: 1;
     $this->assertEqual($language_count, 1, t('Language count: %count', array('%count' => $language_count)));
 
     // Check language negotiation.
