diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php index 75ec244..7729c62 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php @@ -11,6 +11,7 @@ use Drupal\Core\Entity\Plugin\DataType\EntityReference; use Drupal\Core\Entity\TypedData\EntityDataDefinition; use Drupal\Core\Language\Language; +use Drupal\Core\Language\LanguageInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\TypedData\TypedDataInterface; @@ -574,9 +575,16 @@ protected function setDefaultLangcode() { if ($this->hasField('langcode') && ($item = $this->get('langcode')) && isset($item->language)) { $this->defaultLangcode = $item->language->id; } + if (empty($this->defaultLangcode)) { - // Make sure we return a proper language object. - $this->defaultLangcode = $this->languageManager()->getCurrentLanguage()->getId(); + // Make sure we return a proper language object, if the entity has a + // langcode field, default to the current language. + if ($this->hasField('langcode')) { + $this->defaultLangcode = $this->languageManager()->getCurrentLanguage()->getId(); + } + else { + $this->defaultLangcode = LanguageInterface::LANGCODE_NOT_SPECIFIED; + } } // This needs to be initialized manually as it is skipped when instantiating // the language field object to avoid infinite recursion.