languageManager->isMultilingual() || !$this->entityType->hasKey('langcode')) { return; } $langcode_key = $this->entityType->getKey('langcode'); $storage = \Drupal::entityManager()->getStorage($this->entityType->id()); if ($table = $storage->getTableMapping()->getFieldTableName($langcode_key)) { $table_alias = $query->ensureTable($table, $relationship); $this->langcodeAlias = $query->addField($table_alias, $langcode_key); } } /** * {@inheritdoc} */ public function preRender(array $result) { $view_builder = $this->view->rowPlugin->entityManager->getViewBuilder($this->entityType->id()); /** @var \Drupal\views\ResultRow $row */ foreach ($result as $row) { $entity = $row->_entity; $entity->view = $this->view; $langcode = $this->getLangcode($row); $this->build[$entity->id()][$langcode] = $view_builder->view($entity, $this->view->rowPlugin->options['view_mode'], $this->getLangcode($row)); } } /** * {@inheritdoc} */ public function render(ResultRow $row) { $entity_id = $row->_entity->id(); $langcode = $this->getLangcode($row); return $this->build[$entity_id][$langcode]; } /** * {@inheritdoc} */ public function getLangcode(ResultRow $row) { return isset($row->{$this->langcodeAlias}) ? $row->{$this->langcodeAlias} : $this->languageManager->getDefaultLanguage()->getId(); } /** * {@inheritdoc} */ public function getCacheContexts() { return ['languages:' . LanguageInterface::TYPE_CONTENT]; } }