diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 734ad6938d..0ce68d7d94 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -15,7 +15,6 @@ use Drupal\Core\Language\LanguageInterface; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Session\AccountInterface; -use Drupal\language\ConfigurableLanguageInterface; use Drupal\language\Entity\ContentLanguageSettings; use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI; use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl; @@ -346,38 +345,6 @@ function language_modules_uninstalled($modules) { language_modules_installed($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. - $config = \Drupal::configFactory()->getEditable('language.negotiation'); - $domains = $config->get('url.domains'); - $domains[$language->id()] = ''; - $config->set('url.domains', $domains)->save(); -} - -/** - * Implements hook_ENTITY_TYPE_delete() for 'configurable_language'. - */ -function language_configurable_language_delete(ConfigurableLanguageInterface $language) { - // Remove language from language prefix list. - $config = \Drupal::configFactory()->getEditable('language.negotiation'); - $prefixes = $config->get('url.prefixes'); - unset($prefixes[$language->id()]); - $config->set('url.prefixes', $prefixes)->save(); - - // Remove language from language domain list. - $config = \Drupal::configFactory()->getEditable('language.negotiation'); - $domains = $config->get('url.domains'); - unset($domains[$language->id()]); - $config->set('url.domains', $domains)->save(); -} - /** * Implements hook_preprocess_HOOK() for block templates. */ diff --git a/core/modules/language/src/Entity/ConfigurableLanguage.php b/core/modules/language/src/Entity/ConfigurableLanguage.php index c277a85bd7..edd1f949d7 100644 --- a/core/modules/language/src/Entity/ConfigurableLanguage.php +++ b/core/modules/language/src/Entity/ConfigurableLanguage.php @@ -139,6 +139,14 @@ 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() && !$update) { + // Add language to the list of language domains. + $config = \Drupal::configFactory()->getEditable('language.negotiation'); + $domains = $config->get('url.domains'); + $domains[$this->id()] = ''; + $config->set('url.domains', $domains)->save(); + } } /** @@ -173,6 +181,18 @@ public static function postDelete(EntityStorageInterface $storage, array $entiti if (!\Drupal::languageManager()->isMultilingual()) { ConfigurableLanguageManager::rebuildServices(); } + + // Remove language from language prefix and domain list. + $config = \Drupal::configFactory()->getEditable('language.negotiation'); + $prefixes = $config->get('url.prefixes'); + $domains = $config->get('url.domains'); + unset($prefixes[$entity->id]); + unset($domains[$entity->id]); + + // Save the modified settings. + $config->set('url.prefixes', $prefixes) + ->set('url.domains', $domains) + ->save(); } /**