diff -u b/core/modules/language/language.module b/core/modules/language/language.module --- b/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -430,7 +430,6 @@ $language_entity->label = isset($language->name) ? $language->name : ''; $language_entity->direction = isset($language->direction) ? $language->direction : '0'; $language_entity->locked = !empty($language->locked); - $language_entity->default = !empty($language->default); $language_entity->weight = isset($language->weight) ? $language->weight : 0; $language_entity->save(); @@ -442,6 +441,13 @@ watchdog('language', 'The %language (%langcode) language has been updated.', $t_args); } + if (!empty($language->default)) { + // Update the config. Saving the configuration fires and event that causes + // the container to be rebuilt. + \Drupal::config('system.site')->set('langcode', $language->id)->save(); + \Drupal::service('language.default')->set($language); + } + return $language; } @@ -682,4 +688,13 @@ $language = $languages[$form_state['values']['site_default_language']]; - $language->default = TRUE; - language_save($language); + + \Drupal::config('system.site')->set('langcode', $language->id)->save(); + \Drupal::service('language.default')->set($language); + + \Drupal::languageManager()->reset(); + + // Update URL Prefixes for all languages after the new default language is + // propagated and the LanguageManagerInterface::getLanguages() cache is + // flushed. + language_negotiation_url_prefixes_update(); + } diff -u b/core/modules/language/lib/Drupal/language/Entity/Language.php b/core/modules/language/lib/Drupal/language/Entity/Language.php --- b/core/modules/language/lib/Drupal/language/Entity/Language.php +++ b/core/modules/language/lib/Drupal/language/Entity/Language.php @@ -99,13 +99,6 @@ // Save the record and inform others about the change. $multilingual = \Drupal::languageManager()->isMultilingual(); - if (!empty($this->default)) { - // Update the config. Saving the configuration fires and event that causes - // the container to be rebuilt. - \Drupal::config('system.site')->set('langcode', $this->id())->save(); - \Drupal::service('language.default')->set(\Drupal::languageManager()->getLanguage($this->id())); - } - $language_manager = \Drupal::languageManager(); $language_manager->reset(); if ($language_manager instanceof ConfigurableLanguageManagerInterface) {