diff -u b/core/modules/file/src/Element/ManagedFile.php b/core/modules/file/src/Element/ManagedFile.php
--- b/core/modules/file/src/Element/ManagedFile.php
+++ b/core/modules/file/src/Element/ManagedFile.php
@@ -372,11 +372,15 @@
if ($file->isPermanent()) {
$references = static::fileUsage()->listUsage($file);
if (empty($references)) {
+ // We expect the field name placeholder value to be wrapped in t()
+ // here, so it won't be escaped again as it's already marked safe.
$form_state->setError($element, t('The file used in the @name field may not be referenced.', ['@name' => $element['#title']]));
}
}
}
else {
+ // We expect the field name placeholder value to be wrapped in t()
+ // here, so it won't be escaped again as it's already marked safe.
$form_state->setError($element, t('The file referenced by the @name field does not exist.', ['@name' => $element['#title']]));
}
}
@@ -384,6 +388,8 @@
// Check required property based on the FID.
if ($element['#required'] && empty($element['fids']['#value']) && !in_array($clicked_button, ['upload_button', 'remove_button'])) {
+ // We expect the field name placeholder value to be wrapped in t()
+ // here, so it won't be escaped again as it's already marked safe.
$form_state->setError($element, t('@name is required.', ['@name' => $element['#title']]));
}
diff -u b/core/modules/file/tests/file_module_test/src/Form/FileModuleTestForm.php b/core/modules/file/tests/file_module_test/src/Form/FileModuleTestForm.php
--- b/core/modules/file/tests/file_module_test/src/Form/FileModuleTestForm.php
+++ b/core/modules/file/tests/file_module_test/src/Form/FileModuleTestForm.php
@@ -43,7 +43,7 @@
$form['nested']['file'] = array(
'#type' => 'managed_file',
- '#title' => $this->t('Managed @name', ['@name' => 'file & butter']),
+ '#title' => $this->t('Managed @type', ['@type' => 'file & butter']),
'#upload_location' => 'public://test',
'#progress_message' => $this->t('Please wait...'),
'#extended' => (bool) $extended,