diff --git a/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php b/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
index 8b25f4d..ed738f0 100644
--- a/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
+++ b/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
@@ -13,6 +13,8 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\TypedData\DataReferenceDefinition;
 use Drupal\Core\TypedData\DataReferenceTargetDefinition;
 use Drupal\Core\TypedData\OptionsProviderInterface;
+use Drupal\Core\TypedData\TranslatableInterface;
+use Drupal\Core\TypedData\TranslationStatusInterface;
 use Drupal\entity_reference_revisions\EntityNeedsSaveInterface;
 
 /**
@@ -301,18 +303,54 @@ class EntityReferenceRevisionsItem extends EntityReferenceItem implements Option
       $entity->setNewRevision(FALSE);
       $entity->save();
     }
+
+    // Keep in sync the translation languages between the parent and the child.
+    // For non translatable fields we have to do this in ::preSave but for
+    // translatable fields we have all the information we need in ::delete.
+    $parent = $this->getEntity();
+    $child = $entity;
+    if (isset($parent->original) && !$this->getFieldDefinition()->isTranslatable()) {
+      $langcodes = array_keys($parent->getTranslationLanguages());
+      $original_langcodes = array_keys($parent->original->getTranslationLanguages());
+
+      if ($removed_langcodes = array_diff($original_langcodes, $langcodes)) {
+        foreach ($removed_langcodes as $removed_langcode) {
+          if ($child->hasTranslation($removed_langcode)) {
+            $child->removeTranslation($removed_langcode);
+          }
+        }
+        $child->save();
+      }
+    }
   }
 
   /**
    * {@inheritdoc}
    */
-  public function delete() {
-    parent::delete();
+  public function delete($parent_delete = TRUE) {
+    parent::delete($parent_delete);
     if ($this->entity && $this->entity->getEntityType()->get('entity_revision_parent_type_field') && $this->entity->getEntityType()->get('entity_revision_parent_id_field')) {
-      $this->entity->delete();
+
+      if ($parent_delete) {
+        if ($child = $this->entity) {
+          $child->delete();
+        }
+      }
+      elseif ($this->getFieldDefinition()->isTranslatable()) {
+        if ($child = $this->entity) {
+          $child->removeTranslation($this->getLangcode());
+          $child->save();
+        }
+      }
     }
-}
- /**
+  }
+
+  public function deleteRevision() {
+    $child = $this->entity;
+    \Drupal::entityTypeManager()->getStorage($child->getEntityTypeId())->deleteRevision($child->getRevisionId());
+  }
+
+  /**
  * {@inheritdoc}
  */
   public static function onDependencyRemoval(FieldDefinitionInterface $field_definition, array $dependencies) {
