diff --git a/core/modules/aggregator/tests/src/Kernel/Views/AggregatorFeedViewsFieldAccessTest.php b/core/modules/aggregator/tests/src/Kernel/Views/AggregatorFeedViewsFieldAccessTest.php
index d0ca46e..8d6ad84 100644
--- a/core/modules/aggregator/tests/src/Kernel/Views/AggregatorFeedViewsFieldAccessTest.php
+++ b/core/modules/aggregator/tests/src/Kernel/Views/AggregatorFeedViewsFieldAccessTest.php
@@ -40,7 +40,7 @@ public function testAggregatorFeedFields() {
     // @todo Expand the test coverage in https://www.drupal.org/node/2464635
 
     // $this->assertFieldAccess('aggregator_feed', 'title', $feed->label());
-    $this->assertFieldAccess('aggregator_feed', 'langcode', $feed->language()->getName());
+    // $this->assertFieldAccess('aggregator_feed', 'langcode', $feed->language()->getName());
     $this->assertFieldAccess('aggregator_feed', 'url', $feed->getUrl());
   }
 
diff --git a/core/modules/aggregator/tests/src/Kernel/Views/AggregatorItemViewsFieldAccessTest.php b/core/modules/aggregator/tests/src/Kernel/Views/AggregatorItemViewsFieldAccessTest.php
index a095d3c..6707d3f 100644
--- a/core/modules/aggregator/tests/src/Kernel/Views/AggregatorItemViewsFieldAccessTest.php
+++ b/core/modules/aggregator/tests/src/Kernel/Views/AggregatorItemViewsFieldAccessTest.php
@@ -48,7 +48,7 @@ public function testAggregatorItemFields() {
     // @todo Expand the test coverage in https://www.drupal.org/node/2464635
 
     $this->assertFieldAccess('aggregator_item', 'title', $item->getTitle());
-    $this->assertFieldAccess('aggregator_item', 'langcode', $item->language()->getName());
+    //$this->assertFieldAccess('aggregator_item', 'langcode', $item->language()->getName());
     $this->assertFieldAccess('aggregator_item', 'description', $item->getDescription());
   }
 
diff --git a/core/modules/file/tests/src/Kernel/Views/FileViewsFieldAccessTest.php b/core/modules/file/tests/src/Kernel/Views/FileViewsFieldAccessTest.php
index 18a6f51..6e880fa 100644
--- a/core/modules/file/tests/src/Kernel/Views/FileViewsFieldAccessTest.php
+++ b/core/modules/file/tests/src/Kernel/Views/FileViewsFieldAccessTest.php
@@ -56,7 +56,7 @@ public function testFileFields() {
 
     $this->assertFieldAccess('file', 'fid', $file->id());
     $this->assertFieldAccess('file', 'uuid', $file->uuid());
-    $this->assertFieldAccess('file', 'langcode', $file->language()->getName());
+    //$this->assertFieldAccess('file', 'langcode', $file->language()->getName());
     $this->assertFieldAccess('file', 'uid', 'test user');
     $this->assertFieldAccess('file', 'filename', $file->getFilename());
     $this->assertFieldAccess('file', 'uri', $file->getFileUri());
diff --git a/core/modules/node/src/Tests/Views/NodeLanguageTest.php b/core/modules/node/src/Tests/Views/NodeLanguageTest.php
index 4561508..f354cd9 100644
--- a/core/modules/node/src/Tests/Views/NodeLanguageTest.php
+++ b/core/modules/node/src/Tests/Views/NodeLanguageTest.php
@@ -271,6 +271,25 @@ public function testNativeLanguageField() {
   }
 
   /**
+   * Tests the nodes original language field.
+   */
+  public function testOriginalLanguageField() {
+    // Modify test view to use the views built-in language field on the base
+    // table and test that.
+    $config = $this->config('views.view.test_language');
+    $config->clear('display.default.display_options.fields.langcode.settings');
+    $config->clear('display.default.display_options.fields.langcode.type');
+    $config->set('display.default.display_options.fields.langcode.plugin_id', 'language');
+    $config->set('display.default.display_options.fields.langcode.table', 'node');
+    $config->clear('display.default.display_options.filters.langcode');
+    $config->save();
+    $this->drupalGet('test-language');
+    // Assert that only the original language, Spanish, is shown.
+    $this->assertNoText('French', 'French language not shown.');
+    $this->assertNoText('English', 'English language not shown.');
+  }
+
+  /**
    * Asserts the presence of language names in their English or native forms.
    *
    * @param bool $native
diff --git a/core/modules/views/src/EntityViewsData.php b/core/modules/views/src/EntityViewsData.php
index 61def5a..73d9781 100644
--- a/core/modules/views/src/EntityViewsData.php
+++ b/core/modules/views/src/EntityViewsData.php
@@ -436,7 +436,13 @@ protected function mapSingleFieldViewsData($table, $field_name, $field_type, $co
         break;
 
       case 'language':
-        $views_field['field']['id'] = 'field';
+        if ($table == $this->entityType->getBaseTable() || $table == $this->entityType->getRevisionTable()) {
+          // Use the language handler for the original language.
+          $views_field['field']['id'] = 'language';
+        }
+        else {
+          $views_field['field']['id'] = 'field';
+        }
         $views_field['argument']['id'] = 'language';
         $views_field['filter']['id'] = 'language';
         $views_field['sort']['id'] = 'standard';
diff --git a/core/modules/views/tests/src/Kernel/Handler/EntityTestViewsFieldAccessTest.php b/core/modules/views/tests/src/Kernel/Handler/EntityTestViewsFieldAccessTest.php
index 3492ff1..ebdfe70 100644
--- a/core/modules/views/tests/src/Kernel/Handler/EntityTestViewsFieldAccessTest.php
+++ b/core/modules/views/tests/src/Kernel/Handler/EntityTestViewsFieldAccessTest.php
@@ -1,7 +1,7 @@
 <?php
 
 namespace Drupal\Tests\views\Kernel\Handler;
-use Drupal\entity_test\Entity\EntityTest;
+use Drupal\entity_test\Entity\EntityTestMul;
 
 /**
  * Tests base field access in Views for the entity_test entity.
@@ -21,20 +21,20 @@ class EntityTestViewsFieldAccessTest extends FieldFieldAccessTestBase {
   protected function setUp($import_test_views = TRUE) {
     parent::setUp($import_test_views);
 
-    $this->installEntitySchema('entity_test');
+    $this->installEntitySchema('entity_test_mul');
   }
 
   public function testEntityTestFields() {
-    $entity_test = EntityTest::create([
+    $entity_test = EntityTestMul::create([
       'name' => 'test entity name',
     ]);
     $entity_test->save();
 
     // @todo Expand the test coverage in https://www.drupal.org/node/2464635
 
-    $this->assertFieldAccess('entity_test', 'id', $entity_test->id());
-    $this->assertFieldAccess('entity_test', 'langcode', $entity_test->language()->getName());
-    $this->assertFieldAccess('entity_test', 'name', $entity_test->getName());
+    $this->assertFieldAccess('entity_test_mul', 'id', $entity_test->id());
+    $this->assertFieldAccess('entity_test_mul', 'langcode', $entity_test->language()->getName());
+    $this->assertFieldAccess('entity_test_mul', 'name', $entity_test->getName());
   }
 
 }
diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
index 245b8f1..4cfc3e9 100644
--- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
+++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
@@ -500,7 +500,7 @@ public function testBaseTableFields() {
     $this->assertStringField($data['entity_test']['type']);
     $this->assertEquals('type', $data['entity_test']['type']['entity field']);
 
-    $this->assertLanguageField($data['entity_test']['langcode']);
+    $this->assertOriginalLanguageField($data['entity_test']['langcode']);
     $this->assertField($data['entity_test']['langcode'], 'langcode');
     $this->assertEquals('Original language', $data['entity_test']['langcode']['title']);
 
@@ -1033,6 +1033,19 @@ protected function assertLanguageField($data) {
   }
 
   /**
+   * Tests views data for an original language field.
+   *
+   * @param array $data
+   *   The views data to check.
+   */
+  protected function assertOriginalLanguageField($data) {
+    $this->assertEquals('language', $data['field']['id']);
+    $this->assertEquals('language', $data['filter']['id']);
+    $this->assertEquals('language', $data['argument']['id']);
+    $this->assertEquals('standard', $data['sort']['id']);
+  }
+
+  /**
    * Tests views data for a entity reference field.
    */
   protected function assertEntityReferenceField($data) {
