diff -u b/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php --- b/core/lib/Drupal/Core/Entity/ContentEntityBase.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php @@ -1109,18 +1109,17 @@ $values = $this->values; $this->values = &$values; - unset($values); - foreach ($this->fields as $name => $values) { + foreach ($this->fields as $name => $fields_by_langcode) { $this->fields[$name] = []; // Untranslatable fields may have multiple references for the same field // object keyed by language. To avoid creating different field objects // we retain just the original value, as references will be recreated // later as needed. - if (!$definitions[$name]->isTranslatable() && count($values) > 1) { - $values = array_intersect_key($values, [LanguageInterface::LANGCODE_DEFAULT => TRUE]); + if (!$definitions[$name]->isTranslatable() && count($fields_by_langcode) > 1) { + $fields_by_langcode = array_intersect_key($fields_by_langcode, [LanguageInterface::LANGCODE_DEFAULT => TRUE]); } - foreach ($values as $langcode => $items) { + foreach ($fields_by_langcode as $langcode => $items) { $this->fields[$name][$langcode] = clone $items; $this->fields[$name][$langcode]->setContext($name, $this->getTranslation($langcode)->getTypedData()); }