diff --git a/core/lib/Drupal/Core/Entity/Controller/VersionHistoryController.php b/core/lib/Drupal/Core/Entity/Controller/VersionHistoryController.php
index d93140f3bbbcde0bb5da285705e34b46f165fecf..ef596202dec2b89e2da938f4fd0824dd9b40a9c7 100644
--- a/core/lib/Drupal/Core/Entity/Controller/VersionHistoryController.php
+++ b/core/lib/Drupal/Core/Entity/Controller/VersionHistoryController.php
@@ -225,7 +225,7 @@ protected function loadRevisions(RevisionableInterface $entity) {
       // Only show revisions that are affected by the language that is being
       // displayed.
       if (!$translatable || ($revision->hasTranslation($currentLangcode) && $revision->getTranslation($currentLangcode)->isRevisionTranslationAffected())) {
-        yield $revision;
+        yield ($translatable ? $revision->getTranslation($currentLangcode) : $revision);
       }
     }
   }
diff --git a/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php b/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php
index 5a17b858dc1f0bfc444d52b87617acf5a49e8181..580aa691a3b814d237bb93c5447d24c6b8a9c1c1 100644
--- a/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php
+++ b/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php
@@ -8,6 +8,18 @@
  * @ContentEntityType(
  *   id = "entity_test_mul_revlog",
  *   label = @Translation("Test entity - data table, revisions log"),
+ *   handlers = {
+ *     "access" = \Drupal\entity_test_revlog\EntityTestRevlogAccessControlHandler::class,
+ *     "form" = {
+ *       "default" = \Drupal\Core\Entity\ContentEntityForm::class,
+ *       "revision-delete" = \Drupal\Core\Entity\Form\RevisionDeleteForm::class,
+ *       "revision-revert" = \Drupal\Core\Entity\Form\RevisionRevertForm::class,
+ *     },
+ *     "route_provider" = {
+ *       "html" = \Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider::class,
+ *       "revision" = \Drupal\Core\Entity\Routing\RevisionHtmlRouteProvider::class,
+ *     },
+ *   },
  *   base_table = "entity_test_mul_revlog",
  *   data_table = "entity_test_mul_revlog_field_data",
  *   revision_table = "entity_test_mul_revlog_revision",
@@ -26,6 +38,16 @@
  *     "revision_created" = "revision_created",
  *     "revision_log_message" = "revision_log_message"
  *   },
+ *   links = {
+ *     "add-form" = "/entity_test_mul_revlog/add",
+ *     "canonical" = "/entity_test_mul_revlog/manage/{entity_test_mul_revlog}",
+ *     "delete-form" = "/entity_test/delete/entity_test_mul_revlog/{entity_test_mul_revlog}",
+ *     "edit-form" = "/entity_test_mul_revlog/manage/{entity_test_mul_revlog}/edit",
+ *     "revision" = "/entity_test_mul_revlog/{entity_test_mul_revlog}/revision/{entity_test_mul_revlog_revision}/view",
+ *     "revision-delete-form" = "/entity_test_mul_revlog/{entity_test_mul_revlog}/revision/{entity_test_mul_revlog_revision}/delete",
+ *     "revision-revert-form" = "/entity_test_mul_revlog/{entity_test_mul_revlog}/revision/{entity_test_mul_revlog_revision}/revert",
+ *     "version-history" = "/entity_test_mul_revlog/{entity_test_mul_revlog}/revisions",
+ *   }
  * )
  */
 class EntityTestMulWithRevisionLog extends EntityTestWithRevisionLog {
diff --git a/core/tests/Drupal/FunctionalTests/Entity/RevisionVersionHistoryTranslatableTest.php b/core/tests/Drupal/FunctionalTests/Entity/RevisionVersionHistoryTranslatableTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..cea79f4b55bfea851bc8d03b90135b0d629f216a
--- /dev/null
+++ b/core/tests/Drupal/FunctionalTests/Entity/RevisionVersionHistoryTranslatableTest.php
@@ -0,0 +1,90 @@
+<?php
+
+declare(strict_types = 1);
+
+namespace Drupal\FunctionalTests\Entity;
+
+use Drupal\entity_test_revlog\Entity\EntityTestMulWithRevisionLog;
+use Drupal\language\Entity\ConfigurableLanguage;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests version history page with translations.
+ *
+ * @group Entity
+ * @coversDefaultClass \Drupal\Core\Entity\Controller\VersionHistoryController
+ */
+final class RevisionVersionHistoryTranslatableTest extends BrowserTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'entity_test_revlog',
+    'content_translation',
+    'language',
+    'user',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+    ConfigurableLanguage::createFromLangcode('es')->save();
+
+    // Rebuild the container so that the new languages are picked up by services
+    // that hold a list of languages.
+    $this->rebuildContainer();
+  }
+
+  /**
+   * Tests the version history page for translations.
+   */
+  public function testVersionHistoryTranslations(): void {
+    $label = 'view all revisions,revert,delete revision';
+    $entity = EntityTestMulWithRevisionLog::create([
+      'name' => $label,
+      'type' => 'entity_test_mul_revlog',
+    ]);
+    $entity->addTranslation('es', ['label' => 'version history test translations es']);
+    $entity->save();
+
+    $firstRevisionId = $entity->getRevisionId();
+
+    $entity->setNewRevision();
+    $entity->setName($label . ',2')
+      ->save();
+
+    $this->drupalGet($entity->toUrl('version-history'));
+    $this->assertSession()->statusCodeEquals(200);
+    $this->assertSession()->elementsCount('css', 'table tbody tr', 2);
+
+    /** @var \Drupal\Core\Entity\RevisionableStorageInterface $storage */
+    $storage = $this->container->get('entity_type.manager')->getStorage($entity->getEntityTypeId());
+    $firstRevision = $storage->loadRevision($firstRevisionId);
+
+    $this->assertSession()->linkByHrefExists($firstRevision->toUrl('revision-revert-form')->toString());
+    $this->assertSession()->linkByHrefExists($firstRevision->toUrl('revision-delete-form')->toString());
+    $this->assertSession()->linkByHrefNotExists($firstRevision->getTranslation('es')->toUrl('revision-revert-form')->toString());
+    $this->assertSession()->linkByHrefNotExists($firstRevision->getTranslation('es')->toUrl('revision-delete-form')->toString());
+
+    $this->drupalGet($entity->getTranslation('es')->toUrl('version-history'));
+    // We can't use linkByHrefNotExists here because it does a "contains" match
+    // and the translated URLs contain the non translated ones.
+    // i.e /es/entity_test_mul_revlog/1/revision/1/revert contains
+    // /entity_test_mul_revlog/1/revision/1/revert.
+    $xpath = $this->assertSession()->buildXPathQuery('//a[@href=:href]', [':href' => $firstRevision->toUrl('revision-revert-form')->toString()]);
+    $this->assertEmpty($this->getSession()->getPage()->findAll('xpath', $xpath));
+    $xpath = $this->assertSession()->buildXPathQuery('//a[@href=:href]', [':href' => $firstRevision->toUrl('revision-delete-form')->toString()]);
+    $this->assertEmpty($this->getSession()->getPage()->findAll('xpath', $xpath));
+    $this->assertSession()->linkByHrefExists($firstRevision->getTranslation('es')->toUrl('revision-revert-form')->toString());
+    $this->assertSession()->linkByHrefExists($firstRevision->getTranslation('es')->toUrl('revision-delete-form')->toString());
+  }
+
+}