diff --git a/core/lib/Drupal/Core/Validation/DrupalTranslator.php b/core/lib/Drupal/Core/Validation/DrupalTranslator.php
index 88c78e94c3..25aa810788 100644
--- a/core/lib/Drupal/Core/Validation/DrupalTranslator.php
+++ b/core/lib/Drupal/Core/Validation/DrupalTranslator.php
@@ -42,8 +42,14 @@ public function trans($id, array $parameters = [], $domain = NULL, $locale = NUL
 
   /**
    * {@inheritdoc}
+   *
+   * @deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. Use
+   *   \Drupal\Core\Validation\DrupalTranslator::trans() instead.
+   *
+   * @see https://www.drupal.org/node/3255250
    */
   public function transChoice($id, $number, array $parameters = [], $domain = NULL, $locale = NULL) {
+    @trigger_error(__NAMESPACE__ . '\DrupalTranslator::transChoice() is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. Use DrupalTranslator::trans() instead. See https://www.drupal.org/node/3255250', E_USER_DEPRECATED);
     // Violation messages can separated singular and plural versions by "|".
     $ids = explode('|', $id);
 
diff --git a/core/tests/Drupal/KernelTests/Core/Validation/DrupalTranslatorTest.php b/core/tests/Drupal/KernelTests/Core/Validation/DrupalTranslatorTest.php
new file mode 100644
index 0000000000..69b64bdcc7
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Validation/DrupalTranslatorTest.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Validation;
+
+use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\Core\StringTranslation\PluralTranslatableMarkup;
+use Drupal\Core\StringTranslation\TranslationManager;
+use Drupal\Core\Validation\DrupalTranslator;
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * Tests the for translator.
+ *
+ * @coversDefaultClass \Drupal\Core\Validation\DrupalTranslator
+ *
+ * @group validation
+ */
+class DrupalTranslatorTest extends UnitTestCase {
+
+  /**
+   * {@inheritDoc}
+   */
+  public function setUp(): void {
+    parent::setUp();
+
+    // Set up a mock container as transChoice() will call for the
+    // 'string_translation' service.
+    $plural_translatable_markup = $this->getMockBuilder(PluralTranslatableMarkup::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+
+    $translation_manager = $this->getMockBuilder(TranslationManager::class)
+      ->onlyMethods(['formatPlural'])
+      ->disableOriginalConstructor()
+      ->getMock();
+    $translation_manager->expects($this->any())
+      ->method('formatPlural')
+      ->willReturn($plural_translatable_markup);
+
+    $container = new ContainerBuilder();
+    $container->set('string_translation', $translation_manager);
+
+    \Drupal::setContainer($container);
+  }
+
+  /**
+   * Test transChoice deprecation message.
+   *
+   * @covers ::transChoice
+   * @group legacy
+   */
+  public function testDeprecation() {
+    $this->expectDeprecation('Drupal\Core\Validation\DrupalTranslator::transChoice() is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. Use DrupalTranslator::trans() instead. See https://www.drupal.org/node/3255250');
+    $translator = new DrupalTranslator();
+    $translator->transChoice('There is one apple | There are @count apples', 1);
+  }
+
+}
