diff --git a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php
index c94243b..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;
@@ -35,12 +36,13 @@ public function query(QueryPluginBase $query, $relationship = NULL) {
     // If the data table is defined, we use the translation language as render
     // language, otherwise we fall back to the default entity language, which is
     // stored in the revision table for revisionable entity types.
-    $langcode_key = $this->entityType->getKey('langcode');
-    foreach (array('data_table', 'revision_table', 'base_table') as $key) {
-      if ($table = $this->entityType->get($key)) {
+    if ($langcode_key = $this->entityType->getKey('langcode')) {
+      $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);
-        break;
       }
     }
   }
