.../src/Form/NodeRevisionRevertTranslationForm.php | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php b/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php index a6a4d85..eb07b7a 100644 --- a/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php +++ b/core/modules/node/src/Form/NodeRevisionRevertTranslationForm.php @@ -106,9 +106,24 @@ public function buildForm(array $form, FormStateInterface $form_state, $node_rev * {@inheritdoc} */ protected function prepareRevertedRevision(NodeInterface $revision, FormStateInterface $form_state) { - $revert_untranslated_fields = (bool) $form_state->getValue('revert_untranslated_fields'); - $translation = $revision->getTranslation($this->langcode); - return $this->nodeStorage->createRevision($translation, TRUE, $revert_untranslated_fields); + $revert_untranslated_fields = $form_state->getValue('revert_untranslated_fields'); + + /** @var \Drupal\node\NodeInterface $default_revision */ + $latest_revision = $this->nodeStorage->load($revision->id()); + $latest_revision_translation = $latest_revision->getTranslation($this->langcode); + + $revision_translation = $revision->getTranslation($this->langcode); + + foreach ($latest_revision_translation->getFieldDefinitions() as $field_name => $definition) { + if ($definition->isTranslatable() || $revert_untranslated_fields) { + $latest_revision_translation->set($field_name, $revision_translation->get($field_name)->getValue()); + } + } + + $latest_revision_translation->setNewRevision(); + $latest_revision_translation->isDefaultRevision(TRUE); + + return $latest_revision_translation; } }