diff --git a/core/lib/Drupal/Core/Entity/EntityNG.php b/core/lib/Drupal/Core/Entity/EntityNG.php
index 4dcc1f0..b8d8370 100644
--- a/core/lib/Drupal/Core/Entity/EntityNG.php
+++ b/core/lib/Drupal/Core/Entity/EntityNG.php
@@ -448,6 +448,7 @@ public function getTranslation($langcode, $strict = TRUE) {
     if (isset($this->translations[$langcode])) {
       $this->translationInit = TRUE;
       $translation = clone $this;
+      unset($translation->bcEntity);
       $translation->activeLangcode = $langcode;
       // Ensure that changes to fields, values and translations are propagated
       // to all the translation objects.
@@ -461,8 +462,15 @@ public function getTranslation($langcode, $strict = TRUE) {
       return $translation;
     }
 
+    // If we were given a valid language and there is no translation for it, we
+    // return a new one.
+    $languages = language_list();
+    if (isset($languages[$langcode])) {
+      return $this->addTranslation($langcode);
+    }
+
     // TODO Do we want to return $this instead?
-    throw new InvalidArgumentException("The '$langcode' translation does not exist.");
+    throw new InvalidArgumentException("Invalid '$langcode' specified.");
   }
 
   /**
