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..2a76edb 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
@@ -140,31 +148,63 @@ public function summaryTitle() {
     }
   }
 
+  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;
+        $langcode = $row->{$this->langcodeAlias};
+        $entities[$entity->id()][$langcode] = $entity;
+      }
+      $count_langcodes = count(array_unique($langcodes));
+
+      // 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);
+          }
+        }
       }
-
-      // Prepare the render arrays for all rows.
-      $this->build = entity_view_multiple($entities, $this->options['view_mode']);
-    }
   }
 
   /**
    * 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];
+    return $this->build[$entity_id][$langcode];
   }
 }
