diff --git a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php index b3593f5..1a465ac 100644 --- a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php +++ b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php @@ -7,6 +7,7 @@ namespace Drupal\views\Entity\Render; +use Drupal\Core\Entity\Sql\DefaultTableMapping; use Drupal\Core\Language\LanguageInterface; use Drupal\views\Plugin\views\query\QueryPluginBase; use Drupal\views\ResultRow; @@ -36,12 +37,12 @@ public function query(QueryPluginBase $query, $relationship = NULL) { // language, otherwise we fall back to the default entity language, which is // stored in the revision table for revisionable entity types. if ($langcode_key = $this->entityType->getKey('langcode')) { - foreach (array('data_table', 'revision_table', 'base_table') as $key) { - if ($table = $this->entityType->get($key)) { - $table_alias = $query->ensureTable($table, $relationship); - $this->langcodeAlias = $query->addField($table_alias, $langcode_key); - break; - } + $table_mapping = new DefaultTableMapping($this->entityType, + \Drupal::entityManager()->getFieldStorageDefinitions($this->entityType->id())); + $table_mapping->setFieldNames($this->entityType->getBaseTable() ?: $this->entityType->id(), [$langcode_key]); + if ($table = $table_mapping->getFieldTableName($langcode_key)) { + $table_alias = $query->ensureTable($table, $relationship); + $this->langcodeAlias = $query->addField($table_alias, $langcode_key); } } }