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..f4f766c 100644 --- a/core/modules/language/src/Entity/ConfigurableLanguage.php +++ b/core/modules/language/src/Entity/ConfigurableLanguage.php @@ -144,6 +144,17 @@ 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) { + return; + } + + // Add language to the list of language domains. + $domains = \Drupal::config('language.negotiation')->get('url.domains'); + $domains[$this->id()] = ''; + \Drupal::configFactory()->getEditable('language.negotiation') + ->set('url.domains', $domains) + ->save(); } /** @@ -178,6 +189,18 @@ public static function postDelete(EntityStorageInterface $storage, array $entiti if (!\Drupal::languageManager()->isMultilingual()) { ConfigurableLanguageManager::rebuildServices(); } + + // Remove language from language prefix list. + $prefixes = \Drupal::config('language.negotiation')->get('url.prefixes'); + unset($prefixes[$language_manager->getCurrentLanguage()->getId()]); + + // Remove language from language domain list. + $domains = \Drupal::config('language.negotiation')->get('url.domains'); + unset($domains[$language_manager->getCurrentLanguage()->getId()]); + \Drupal::configFactory()->getEditable('language.negotiation') + ->set('url.prefixes', $prefixes) + ->set('url.domains', $domains) + ->save(); } /**