diff --git a/core/lib/Drupal/Core/Entity/EntityNG.php b/core/lib/Drupal/Core/Entity/EntityNG.php
index b727a4c..d092b2c 100644
--- a/core/lib/Drupal/Core/Entity/EntityNG.php
+++ b/core/lib/Drupal/Core/Entity/EntityNG.php
@@ -558,7 +558,8 @@ protected function initializeTranslation($langcode) {
    * {@inheritdoc}
    */
   public function hasTranslation($langcode) {
-    if ($langcode == $this->language->id) {
+    $default_language = $this->language ?: $this->getDefaultLanguage();
+    if ($langcode == $default_language->id) {
       $langcode = Language::LANGCODE_DEFAULT;
     }
     return !empty($this->translations[$langcode]['status']);
diff --git a/core/modules/field/field.multilingual.inc b/core/modules/field/field.multilingual.inc
index 432677e..a2b201d 100644
--- a/core/modules/field/field.multilingual.inc
+++ b/core/modules/field/field.multilingual.inc
@@ -311,7 +311,7 @@ function field_language(EntityInterface $entity, $field_name = NULL, $langcode =
     // if the field translation is not available. It is up to translation
     // handlers to implement language fallback rules.
     foreach (field_info_instances($entity_type, $bundle) as $instance) {
-      $value = $entity->getTranslation($langcode)->{$instance['field_name']}->getValue();
+      $value = $entity->hasTranslation($langcode) ? $entity->getTranslation($langcode)->{$instance['field_name']}->getValue() : NULL;
       if (!empty($value) && is_array($value) && array_filter($value, function($value) { return array_filter($value); })) {
         $display_langcode[$instance['field_name']] = $langcode;
       }
diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php
index 6322522..aa14569 100644
--- a/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php
@@ -279,10 +279,10 @@ function testFieldAttachCache() {
     $controller->resetCache();
     $controller->load($entity->id());
     $cache = cache('field')->get($cid);
-    $this->assertEqual($cache->data[$this->field_name_2][$langcode], $values, 'Cached: correct cache entry on load');
+    $this->assertEqual($cache->data[$langcode][$this->field_name_2], $values, 'Cached: correct cache entry on load');
 
     // Update with different values, and check that the cache entry is wiped.
-    $values = $this->_generateTestFieldValues($this->field_name_2['cardinality']);
+    $values = $this->_generateTestFieldValues($this->field_2['cardinality']);
     $entity = entity_create($entity_type, array(
       'type' => $entity_type,
       'id' => $entity->id(),
@@ -295,15 +295,15 @@ function testFieldAttachCache() {
     $controller->resetCache();
     $controller->load($entity->id());
     $cache = cache('field')->get($cid);
-    $this->assertEqual($cache->data[$this->field_name_2][$langcode], $values, 'Cached: correct cache entry on load');
+    $this->assertEqual($cache->data[$langcode][$this->field_name_2], $values, 'Cached: correct cache entry on load');
 
     // Create a new revision, and check that the cache entry is wiped.
     $entity = entity_create($entity_type, array(
       'type' => $entity_type,
       'id' => $entity->id(),
     ));
-    $values = $this->_generateTestFieldValues($this->field_name_2['cardinality']);
-    $entity->{$this->field_name} = $values;
+    $values = $this->_generateTestFieldValues($this->field_2['cardinality']);
+    $entity->{$this->field_name_2} = $values;
     $entity->setNewRevision();
     $entity->save();
     $this->assertFalse(cache('field')->get($cid), 'Cached: no cache entry on new revision creation');
@@ -312,7 +312,7 @@ function testFieldAttachCache() {
     $controller->resetCache();
     $controller->load($entity->id());
     $cache = cache('field')->get($cid);
-    $this->assertEqual($cache->data[$this->field_name_2][$langcode], $values, 'Cached: correct cache entry on load');
+    $this->assertEqual($cache->data[$langcode][$this->field_name_2], $values, 'Cached: correct cache entry on load');
 
     // Delete, and check that the cache entry is wiped.
     $entity->delete();
