diff --git a/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php b/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php
index 9db0a64..6c2a81b 100644
--- a/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php
+++ b/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php
@@ -72,13 +72,13 @@ public function view(EntityInterface $_entity, $view_mode = 'full', $langcode =
     // correctly (e.g. RDFa, in-place editing).
     if ($_entity instanceof ContentEntityInterface) {
       $label_field = $_entity->getEntityType()->getKey('label');
-      if ($label_field && $_entity->getFieldDefinition($label_field)->getDisplayOptions('view')) {
+      if ($label_field &&
+        ($translation = $this->entityManager->getTranslationFromContext($_entity)) &&
+        ($field = $translation->get($label_field))) {
         // We must render the label field, because rendering the entity may be
         // a cache hit, in which case we can't extract the rendered label field
         // from the $page renderable array.
-        $build = $this->entityManager->getTranslationFromContext($_entity)
-          ->get($label_field)
-          ->view($view_mode);
+        $build = $field->view(array('type' => 'string', 'label' => 'hidden'));
         $page['#title'] = drupal_render($build, TRUE);
       }
     }
