diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 4e7f017..ea1dbd0 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -399,35 +399,6 @@ function language_modules_uninstalled($modules) {
 }
 
 /**
- * Implements hook_ENTITY_TYPE_insert() for 'configurable_language'.
- */
-function language_configurable_language_insert(ConfigurableLanguageInterface $language) {
-  if ($language->isLocked()) {
-    return;
-  }
-
-  // Add language to the list of language domains.
-  $domains = language_negotiation_url_domains();
-  $domains[$language->id()] = '';
-  language_negotiation_url_domains_save($domains);
-}
-
-/**
- * Implements hook_ENTITY_TYPE_delete() for 'configurable_language'.
- */
-function language_configurable_language_delete(ConfigurableLanguageInterface $language) {
-  // Remove language from language prefix list.
-  $prefixes = language_negotiation_url_prefixes();
-  unset($prefixes[$language->id()]);
-  language_negotiation_url_prefixes_save($prefixes);
-
-  // Remove language from language domain list.
-  $domains = language_negotiation_url_domains();
-  unset($domains[$language->id()]);
-  language_negotiation_url_domains_save($domains);
-}
-
-/**
  * Implements hook_preprocess_HOOK() for block templates.
  */
 function language_preprocess_block(&$variables) {
diff --git a/core/modules/language/src/Entity/ConfigurableLanguage.php b/core/modules/language/src/Entity/ConfigurableLanguage.php
index 89cc167..da4f839 100644
--- a/core/modules/language/src/Entity/ConfigurableLanguage.php
+++ b/core/modules/language/src/Entity/ConfigurableLanguage.php
@@ -144,6 +144,15 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
       // Install any available language configuration overrides for the language.
       \Drupal::service('language.config_factory_override')->installLanguageOverrides($this->id());
     }
+
+    if ($this->isLocked()) {
+      return;
+    }
+
+    // Add language to the list of language domains.
+    $domains = language_negotiation_url_domains();
+    $domains[$this->id()] = '';
+    language_negotiation_url_domains_save($domains);
   }
 
   /**
@@ -178,6 +187,18 @@ public static function postDelete(EntityStorageInterface $storage, array $entiti
     if (!\Drupal::languageManager()->isMultilingual()) {
       ConfigurableLanguageManager::rebuildServices();
     }
+
+    if ($language_manager instanceof ConfigurableLanguageManagerInterface) {
+      // Remove language from language prefix list.
+      $prefixes = language_negotiation_url_prefixes();
+      unset($prefixes[$language_manager->getid()]);
+      language_negotiation_url_prefixes_save($prefixes);
+
+      // Remove language from language domain list.
+      $domains = language_negotiation_url_domains();
+      unset($domains[$language_manager->id()]);
+      language_negotiation_url_domains_save($domains);
+    }
   }
 
   /**
