diff --git a/core/drupalci.yml b/core/drupalci.yml
index 82edd46046..503cf652a0 100644
--- a/core/drupalci.yml
+++ b/core/drupalci.yml
@@ -15,32 +15,9 @@ build:
       # halt-on-fail can be set on the run_tests tasks in order to fail fast.
       # suppress-deprecations is false in order to be alerted to usages of
       # deprecated code.
-      run_tests.phpunit:
-        types: 'PHPUnit-Unit'
-        testgroups: '--all'
-        suppress-deprecations: false
-        halt-on-fail: false
       run_tests.kernel:
         types: 'PHPUnit-Kernel'
-        testgroups: '--all'
-        suppress-deprecations: false
-        halt-on-fail: false
-      run_tests.build:
-        # Limit concurrency due to disk space concerns.
-        concurrency: 15
-        types: 'PHPUnit-Build'
-        testgroups: '--all'
-        suppress-deprecations: false
-        halt-on-fail: false
-      run_tests.functional:
-        types: 'PHPUnit-Functional'
-        testgroups: '--all'
-        suppress-deprecations: false
-        halt-on-fail: false
-      run_tests.javascript:
-        concurrency: 15
-        types: 'PHPUnit-FunctionalJavascript'
-        testgroups: '--all'
+        testgroups: '--class "Drupal\KernelTests\Core\Entity\EntityReferenceFieldTest"'
         suppress-deprecations: false
         halt-on-fail: false
       # Run nightwatch testing.
diff --git a/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php b/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php
index 35e024dd50..0462db1904 100644
--- a/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php
+++ b/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\TypedData\TranslatableInterface;
 
 /**
  * Defines an item list class for entity reference fields.
@@ -23,7 +24,7 @@ public function getConstraints() {
   /**
    * {@inheritdoc}
    */
-  public function referencedEntities() {
+  public function referencedEntities(string $langcode = NULL) {
     if ($this->isEmpty()) {
       return [];
     }
@@ -53,6 +54,15 @@ public function referencedEntities() {
       ksort($target_entities);
     }
 
+    if (isset($langcode)) {
+      foreach ($target_entities as $delta => $target_entity) {
+        if (!($target_entity instanceof TranslatableInterface)) {
+          break;
+        }
+        $target_entities[$delta] = \Drupal::service('entity.repository')->getTranslationFromContext($target_entity, $langcode);
+      }
+    }
+
     return $target_entities;
   }
 
diff --git a/core/lib/Drupal/Core/Field/EntityReferenceFieldItemListInterface.php b/core/lib/Drupal/Core/Field/EntityReferenceFieldItemListInterface.php
index 4a088bfb0d..ed2f3c7acc 100644
--- a/core/lib/Drupal/Core/Field/EntityReferenceFieldItemListInterface.php
+++ b/core/lib/Drupal/Core/Field/EntityReferenceFieldItemListInterface.php
@@ -10,9 +10,13 @@ interface EntityReferenceFieldItemListInterface extends FieldItemListInterface {
   /**
    * Gets the entities referenced by this field, preserving field item deltas.
    *
+   * @param string $langcode
+   *   The language to return the referenced entities in. Defaults to the
+   *   default language for each entity if not defined.
+   *
    * @return \Drupal\Core\Entity\EntityInterface[]
    *   An array of entity objects keyed by field item deltas.
    */
-  public function referencedEntities();
+  public function referencedEntities(string $langcode);
 
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php
index 9c459aa432..b50a685fe6 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php
@@ -10,6 +10,7 @@
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\Tests\field\Traits\EntityReferenceTestTrait;
+use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\user\Entity\Role;
 use Drupal\user\Entity\User;
 use Drupal\user\RoleInterface;
@@ -240,6 +241,86 @@ public function testReferencedEntitiesStringId() {
     $this->assertEquals($target_entity->id(), $entities[0]->id());
   }
 
+  /**
+   * Tests handling of translated entities.
+   */
+  public function testReferencedEntitiesTranslations() {
+    $this->enableModules(['language', 'content_translation']);
+    $this->installConfig(['language']);
+    ConfigurableLanguage::createFromLangcode('es')->save();
+    ConfigurableLanguage::createFromLangcode('pt-br')->save();
+
+    $field = FieldConfig::loadByName($this->entityType, $this->bundle, $this->fieldName);
+    $field->setTranslatable(TRUE);
+    $field->save();
+
+    // Rebuild the container now that we've enabled the new modules, added
+    // languages, and changed the field config.
+    $this->container->get('kernel')->rebuildContainer();
+
+    // Create the parent entity.
+    $entity = $this->container->get('entity_type.manager')
+      ->getStorage($this->entityType)
+      ->create([
+        'type' => $this->bundle,
+        'name' => 'en-parent',
+      ]);
+    $entity->save();
+
+    // Create translations of the parent entity.
+    $es_parent = $entity->addTranslation('es');
+    $es_parent->set('name', 'es-parent');
+    $es_parent->save();
+
+    $pt_br_parent = $entity->addTranslation('pt-br');
+    $pt_br_parent->set('name', 'pt-br-parent');
+    $pt_br_parent->save();
+
+    // Create three target entities and attach them to parent field.
+    $target_entities = [];
+    $reference_field = [];
+    for ($i = 0; $i < 3; $i++) {
+      $target_entity = $this->container->get('entity_type.manager')
+        ->getStorage($this->referencedEntityType)
+        ->create(['type' => $this->bundle]);
+
+      $target_entity->set('name', "en-target-$i");
+      $target_entity->save();
+
+      $target_entities[] = $target_entity;
+      $reference_field[]['target_id'] = $target_entity->id();
+
+      $es_translation = $target_entity->addTranslation('es');
+      $es_translation->set('name', "es-target-$i");
+      $es_translation->save();
+      $this->assertTrue($target_entity->hasTranslation('es'));
+
+      $pt_br_translation = $target_entity->addTranslation('pt-br');
+      $pt_br_translation->set('name', "pt-br-target-$i");
+      $pt_br_translation->save();
+      $this->assertTrue($target_entity->hasTranslation('pt-br'));
+    }
+
+    // Set the field value.
+    $entity->{$this->fieldName}->setValue($reference_field);
+    $entity->save();
+
+    // Set the field value in each of the translations.
+    $es_parent->{$this->fieldName}->setValue($reference_field);
+    $es_parent->save();
+
+    $pt_br_parent->{$this->fieldName}->setValue($reference_field);
+    $pt_br_parent->save();
+
+    // Load the target entities via EntityReferenceField::referencedEntities().
+    $entities = $entity->{$this->fieldName}->referencedEntities();
+    foreach ($entities as $referenced_entity) {
+      $this->assertEquals('en', $referenced_entity->language()->getId());
+      $this->assertStringStartsWith('en-target-', $referenced_entity->name->value);
+    }
+
+  }
+
   /**
    * Tests all the possible ways to autocreate an entity via the API.
    */
