diff --git a/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/LangcodeRequiredIfTranslatableValuesConstraintValidator.php b/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/LangcodeRequiredIfTranslatableValuesConstraintValidator.php
index 89a45e7b18dcd51501771691d2d894d750bd921a..160fbd1cc1249c710efe3c8983a97bd64bc961f9 100644
--- a/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/LangcodeRequiredIfTranslatableValuesConstraintValidator.php
+++ b/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/LangcodeRequiredIfTranslatableValuesConstraintValidator.php
@@ -7,7 +7,6 @@
 use Drupal\Core\Config\Schema\Mapping;
 use Symfony\Component\Validator\Constraint;
 use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\LogicException;
 
 /**
  * Validates the LangcodeRequiredIfTranslatableValues constraint.
@@ -22,8 +21,13 @@ public function validate(mixed $value, Constraint $constraint): void {
 
     $mapping = $this->context->getObject();
     assert($mapping instanceof Mapping);
-    if ($mapping !== $this->context->getRoot()) {
-      throw new LogicException('The LangcodeRequiredIfTranslatableValues constraint can only operate on the root object being validated.');
+    $root = $this->context->getRoot();
+    if ($mapping !== $root) {
+      @trigger_error(sprintf(
+        'The LangcodeRequiredIfTranslatableValues constraint can only be applied to the root object being validated, using the \'config_object\' schema type on \'%s\' is deprecated in drupal:10.3.0 and will trigger a \LogicException in drupal:11.0.0. See https://www.drupal.org/node/3459863',
+        $root->getName() . '::' . $mapping->getName()
+      ), E_USER_DEPRECATED);
+      return;
     }
 
     assert(in_array('langcode', $mapping->getValidKeys(), TRUE));
diff --git a/core/modules/config/tests/config_test/config/schema/config_test.schema.yml b/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
index 99b7cfd8f06485340e380d34c69ca1109b176dec..aeac1edea7565abdb4404fce4ea38acf6579bb68 100644
--- a/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
+++ b/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
@@ -241,6 +241,13 @@ config_test.foo:
     label:
       type: label
       label: 'Label'
+    # Note that config_object should never be used on a non-root key.
+    broken_langcode_required:
+      type: config_object
+      required: false
+      mapping:
+        foo:
+          type: string
 
 config_test.bar:
   type: config_test.foo
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php
index 6c0fcf5d42e50cff628bffda89b195f117f43934..e079a4ee90bdef0f0aafafed8b128783490d1981 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php
@@ -854,4 +854,21 @@ public function testConfigSaveWithWrappingSchemaDoubleBrackets(): void {
     ], $definition['mapping']['breed']);
   }
 
+  /**
+   * @group legacy
+   */
+  public function testLangcodeRequiredIfTranslatableValuesConstraintError(): void {
+    $config = \Drupal::configFactory()->getEditable('config_test.foo');
+
+    $config
+      ->set('broken_langcode_required.foo', 'bar')
+      ->save();
+
+    $this->expectDeprecation('The LangcodeRequiredIfTranslatableValues constraint can only be applied to the root object being validated, using the \'config_object\' schema type on \'config_test.foo::broken_langcode_required\' is deprecated in drupal:10.3.0 and will trigger a \LogicException in drupal:11.0.0. See https://www.drupal.org/node/3459863');
+    $violations = \Drupal::service('config.typed')->createFromNameAndData($config->getName(), $config->get())
+      ->validate();
+
+    $this->assertCount(0, $violations);
+  }
+
 }