diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php index 9308f70..6377418 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php @@ -552,13 +552,8 @@ protected function setDefaultLangcode() { $this->defaultLangcode = $item->language->id; } if (empty($this->defaultLangcode)) { - if ($this->moduleHandler()->moduleExists('language')) { - $this->defaultLangcode = language_get_default_langcode($this->getEntityTypeId(), $this->bundle()); - } - else { - // Make sure we return a proper language object. - $this->defaultLangcode = Language::LANGCODE_NOT_SPECIFIED; - } + // Make sure we return a proper language object. + $this->defaultLangcode = Language::LANGCODE_NOT_SPECIFIED; } // This needs to be initialized manually as it is skipped when instantiating // the language field object to avoid infinite recursion. diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php index 407a8c7..9519b8d 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php @@ -92,11 +92,7 @@ public function setValue($values, $notify = TRUE) { */ public function applyDefaultValue($notify = TRUE) { // Default to LANGCODE_NOT_SPECIFIED. - $langcode = Language::LANGCODE_NOT_SPECIFIED; - if (\Drupal::moduleHandler()->moduleExists('language') && $entity = $this->getEntity()) { - $langcode = language_get_default_langcode($entity->getEntityTypeId(), $entity->bundle()); - } - $this->setValue(array('value' => $langcode), $notify); + $this->setValue(array('value' => Language::LANGCODE_NOT_SPECIFIED), $notify); return $this; } diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 4d82508..6b23bc5 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -730,3 +730,11 @@ function language_system_regional_settings_form_submit($form, &$form_state) { $language->default = TRUE; language_save($language); } + +/** + * Implements hook_field_info_alter(). + */ +function language_field_info_alter(&$info) { + // Change the default behavior of language field. + $info['language']['class'] = '\Drupal\language\DefaultLanguageItem'; +} diff --git a/core/modules/language/lib/Drupal/language/DefaultLanguageItem.php b/core/modules/language/lib/Drupal/language/DefaultLanguageItem.php new file mode 100644 index 0000000..0d37a8f --- /dev/null +++ b/core/modules/language/lib/Drupal/language/DefaultLanguageItem.php @@ -0,0 +1,40 @@ +getEntity()) { + $langcode = language_get_default_langcode($entity->getEntityTypeId(), $entity->bundle()); + } + // Always notify otherwise default langcode will not be set correctly. + $this->setValue(array('value' => $langcode), TRUE); + return $this; + } + +}