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,