diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
index c8d554c..c43b1e3 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
@@ -246,6 +246,13 @@ function testTranslationRendering() {
     $this->rebuildContainer();
     $this->doTestTranslations('node', $values);
 
+    // Test that the frontpage view displays all translated nodes correctly by
+    // checking that the title for each translation is present.
+    $this->drupalGet('node');
+    foreach ($this->langcodes as $langcode) {
+      $this->assertText($values[$langcode]['title'][0]['value']);
+    }
+
     // Test that the node page displays the correct translations.
     $this->doTestTranslations('node/' . $node->id(), $values);
   }
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php b/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php
index 31d9e17..6fa4f21 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/row/EntityRow.php
@@ -9,6 +9,7 @@
 
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
+use Drupal\views\ResultRow;
 use Drupal\views\ViewExecutable;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -58,6 +59,13 @@ class EntityRow extends RowPluginBase {
   protected $build = array();
 
   /**
+   * Stores the field alias of the langcode column.
+   *
+   * @var string
+   */
+  protected $langcodeAlias;
+
+  /**
    * {@inheritdoc}
    *
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
@@ -143,20 +151,65 @@ public function summaryTitle() {
   /**
    * {@inheritdoc}
    */
+  public function query() {
+    parent::query();
+
+    /** @var $query \Drupal\views\Plugin\views\query\Sql */
+    $query = $this->view->getQuery();
+
+    if (isset($this->entityInfo['data_table'])) {
+      $data_table = $this->entityInfo['data_table'];
+      $data_table_alias = $query->ensureTable($data_table);
+      $this->langcodeAlias = $query->addField($data_table_alias, 'langcode');
+    }
+    else {
+      $base_table = $this->entityInfo['base_table'];
+      $this->langcodeAlias = $query->addField($base_table, 'langcode');
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function preRender($result) {
     parent::preRender($result);
 
+    $view_builder = \Drupal::entityManager()->getViewBuilder($this->entityType);
+
     if ($result) {
       // Get all entities which will be used to render in rows.
+      /** @var \Drupal\Core\Entity\ContentEntityInterface[] $entities */
       $entities = array();
+      $langcodes = array();
+      /** @var \Drupal\views\ResultRow $row */
       foreach ($result as $row) {
         $entity = $row->_entity;
         $entity->view = $this->view;
-        $entities[$entity->id()] = $entity;
+        $langcodes[] = $langcode = $row->{$this->langcodeAlias};
+        $entities[$entity->id()][$langcode] = $entity;
+      }
+      $count_langcodes = count(array_unique($langcodes));
+
+      if ($count_langcodes > 1) {
+        // Render each entity separate if we do have more than one translation.
+        // @todo It should be possible to use viewMultiple even if you get
+        //   more than one language.
+        foreach ($entities as $entity_translation) {
+          foreach ($entity_translation as $langcode => $entity) {
+            $entity = $entity->getTranslation($langcode);
+            $this->build[$entity->id()][$langcode] = $view_builder->view($entity, $this->options['view_mode'], $langcode);
+          }
+        }
+      }
+      else {
+        $langcode = reset($langcodes);
+        $entity_translations = array();
+        foreach ($entities as $entity_translation) {
+          $entity = $entity_translation[$langcode];
+          $entity_translations[$entity->id()] = $entity->getTranslation($langcode);
+        }
+        $this->build = $view_builder->viewMultiple($entity_translations, $this->options['view_mode'], $langcode);
       }
-
-      // Prepare the render arrays for all rows.
-      $this->build = entity_view_multiple($entities, $this->options['view_mode']);
     }
   }
 
@@ -164,7 +217,14 @@ public function preRender($result) {
    * Overrides Drupal\views\Plugin\views\row\RowPluginBase::render().
    */
   public function render($row) {
+    $langcode = $row->{$this->langcodeAlias};
     $entity_id = $row->{$this->field_alias};
-    return $this->build[$entity_id];
+    if (isset($this->build[$entity_id][$langcode])) {
+      return $this->build[$entity_id][$langcode];
+    }
+    else {
+      return $this->build[$entity_id];
+    }
   }
+
 }
