diff --git a/core/modules/language/src/Tests/LanguageViewsTest.php b/core/modules/language/src/Tests/LanguageViewsTest.php
new file mode 100644
index 0000000..e0d1711
--- /dev/null
+++ b/core/modules/language/src/Tests/LanguageViewsTest.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Tests\LanguageViewsTest.
+ */
+
+namespace Drupal\language\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests the view creation of test language entities.
+ *
+ * @group language
+ */
+class LanguageViewsTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array(
+    'entity_test',
+    'content_translation',
+    'language_test',
+    'views_ui',
+  );
+
+  /**
+   * The user with administrator privileges.
+   *
+   * @var \Drupal\user\Entity\User;
+   */
+  public $administrator;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    // Create user and set permissions.
+    $this->administrator = $this->drupalCreateUser([
+      'administer views',
+      'administer languages'
+    ], 'administrator');
+    $this->drupalLogin($this->administrator);
+  }
+
+  /**
+   * Tests displaying a view of entities without language entity key.
+   */
+  public function testViewNoLanguageKeyEntity() {
+    // Add another language.
+    $edit = array('predefined_langcode' => 'sr');
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
+
+    // Add a view for an entity type that does not have a language entity key.
+    $edit = [
+      'label' => 'No language entity test view',
+      'id' => 'no_lang_test',
+      'show[wizard_key]' => 'standard:no_language_entity_test',
+      'page[create]' => TRUE,
+      'page[title]' => 'No language entity test view',
+      'page[path]' => 'no-lang',
+    ];
+    $this->drupalPostForm('admin/structure/views/add', $edit, t('Save and edit'));
+    $this->drupalPostForm(NULL, [], t('Save'));
+
+    // Visit the view page and assert it is displayed properly.
+    $this->drupalGet('/no-lang');
+    $this->assertResponse(200);
+    $this->assertText('No language entity test view');
+  }
+
+}
diff --git a/core/modules/language/tests/language_test/src/Entity/NoLanguageEntityTest.php b/core/modules/language/tests/language_test/src/Entity/NoLanguageEntityTest.php
index 5018784..8fda7fe 100644
--- a/core/modules/language/tests/language_test/src/Entity/NoLanguageEntityTest.php
+++ b/core/modules/language/tests/language_test/src/Entity/NoLanguageEntityTest.php
@@ -17,6 +17,9 @@
  * @ContentEntityType(
  *   id = "no_language_entity_test",
  *   label = @Translation("Test entity without language support"),
+ *   handlers = {
+ *     "views_data" = "Drupal\entity_test\EntityTestViewsData"
+ *   },
  *   base_table = "no_language_entity_test",
  *   persistent_cache = FALSE,
  *   entity_keys = {
diff --git a/core/modules/views/src/Entity/Render/RendererBase.php b/core/modules/views/src/Entity/Render/RendererBase.php
index 19f98c3..b8b242a 100644
--- a/core/modules/views/src/Entity/Render/RendererBase.php
+++ b/core/modules/views/src/Entity/Render/RendererBase.php
@@ -37,7 +37,7 @@
   /**
    * The type of the entity being rendered.
    *
-   * @var string
+   * @var \Drupal\Core\Entity\EntityTypeInterface
    */
   protected $entityType;
 
diff --git a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php
index c94243b..d64e836 100644
--- a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php
+++ b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php
@@ -35,12 +35,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 ($this->entityType->hasKey('langcode')) {
+      $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);
-        break;
       }
     }
   }
