diff --git a/core/includes/entity.api.php b/core/includes/entity.api.php
index dc3cb2b..78099ea 100644
--- a/core/includes/entity.api.php
+++ b/core/includes/entity.api.php
@@ -259,10 +259,8 @@ function hook_entity_translation_insert(\Drupal\Core\Entity\EntityInterface $tra
  *
  * @param \Drupal\Core\Entity\EntityInterface $entity
  *   The original entity object.
- * @param string $langcode
- *   The language code identifying the translation just removed.
  */
-function hook_entity_translation_delete(\Drupal\Core\Entity\EntityInterface $entity, $langcode) {
+function hook_entity_translation_delete(\Drupal\Core\Entity\EntityInterface $translation) {
   $languages = language_list();
   $variables = array(
     '@language' => $languages[$langcode]->name,
diff --git a/core/lib/Drupal/Core/Entity/EntityNG.php b/core/lib/Drupal/Core/Entity/EntityNG.php
index 97e271e..c3cce9b 100644
--- a/core/lib/Drupal/Core/Entity/EntityNG.php
+++ b/core/lib/Drupal/Core/Entity/EntityNG.php
@@ -740,18 +740,19 @@ public function createDuplicate() {
   public function __clone() {
     // Avoid deep-cloning when we are initializing a translation object, since
     // it will represent the same entity, only with a different active language.
-    if (!$this->translationInit) {
-      $this->bcEntity = NULL;
+    if ($this->translationInit) {
+      return;
+    }
 
-      foreach ($this->fields as $name => $properties) {
-        foreach ($properties as $langcode => $property) {
-          $this->fields[$name][$langcode] = clone $property;
-          $this->fields[$name][$langcode]->setContext($name, $this);
-        }
+    foreach ($this->fields as $name => $properties) {
+      foreach ($properties as $langcode => $property) {
+        $this->fields[$name][$langcode] = clone $property;
+        $this->fields[$name][$langcode]->setContext($name, $this);
       }
-
-      $this->clearTranslationCache();
     }
+
+    $this->bcEntity = NULL;
+    $this->clearTranslationCache();
   }
 
   /**
