diff --git a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
index be11f80049..92d58d0a5c 100644
--- a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidator.php
@@ -27,6 +27,7 @@ class PrimitiveTypeConstraintValidator extends ConstraintValidator {
    */
   public function validate($value, Constraint $constraint) {
 
+    $extra_message = "";
     if (!isset($value)) {
       return;
     }
@@ -46,6 +47,7 @@ public function validate($value, Constraint $constraint) {
       $valid = FALSE;
     }
     if ($typed_data instanceof StringInterface && !is_scalar($value) && !($value instanceof MarkupInterface)) {
+      $extra_message = t("String data cannot be an object or an array unless it is a markup object.");
       $valid = FALSE;
     }
     // Ensure that URIs comply with http://tools.ietf.org/html/rfc3986, which
@@ -72,7 +74,7 @@ public function validate($value, Constraint $constraint) {
 
     if (!$valid) {
       // @todo: Provide a good violation message for each problem.
-      $this->context->addViolation($constraint->message, [
+      $this->context->addViolation($constraint->message . " " . $extra_message, [
         '%value' => is_object($value) ? get_class($value) : (is_array($value) ? 'Array' : (string) $value),
       ]);
     }
