Index: src/wp-includes/comment-template.php
===================================================================
--- src/wp-includes/comment-template.php	(revision 52573)
+++ src/wp-includes/comment-template.php	(working copy)
@@ -2357,8 +2357,9 @@
 	$required_attribute = ( $html5 ? ' required' : ' required="required"' );
 	$checked_attribute  = ( $html5 ? ' checked' : ' checked="checked"' );
 
-	// Identify required fields visually.
-	$required_indicator = ' <span class="required" aria-hidden="true">*</span>';
+	// Identify required fields visually and create a message about the indicator.
+	$required_indicator = wp_required_field_indicator();
+	$required_text      = wp_required_field_message();
 
 	$fields = array(
 		'author' => sprintf(
@@ -2423,12 +2424,6 @@
 		}
 	}
 
-	$required_text = sprintf(
-		/* translators: %s: Asterisk symbol (*). */
-		' <span class="required-field-message" aria-hidden="true">' . __( 'Required fields are marked %s' ) . '</span>',
-		trim( $required_indicator )
-	);
-
 	/**
 	 * Filters the default comment form fields.
 	 *
Index: src/wp-includes/functions.php
===================================================================
--- src/wp-includes/functions.php	(revision 52573)
+++ src/wp-includes/functions.php	(working copy)
@@ -8376,3 +8376,50 @@
 function wp_fuzzy_number_match( $expected, $actual, $precision = 1 ) {
 	return abs( (float) $expected - (float) $actual ) <= $precision;
 }
+
+/**
+ * Assign a visual indicator for required form fields.
+ *
+ * @since 6.0.0
+ *
+ * @param string $space_before Space character, entity or empty string to add before glyph. Default ' '.
+ * @param bool   $echo         Whether to output the result or instead return it. Default false.
+ * @return string Indicator glyph wrapped in a `span` tag.
+ */
+function wp_required_field_indicator( $space_before = ' ', $echo = false ) {
+	/* translators: Character to identify required form fields. */
+	$glyph     = __( '*' ); // Can be filtered, too (see #23870).
+	$indicator = sprintf(
+		'%1$s<span class="required" aria-hidden="true">%2$s</span>',
+		esc_html( $space_before ),
+		esc_html( $glyph ),
+	);
+
+	if ( ! $echo ) {
+		return $indicator;
+	}
+	echo $indicator;
+}
+
+/**
+ * Create a message to explain required form fields.
+ *
+ * @since 6.0.0
+ *
+ * @param string $space_before Space character, entity or empty string to add before glyph. Default ' '.
+ * @param bool   $echo         Whether to output the result or instead return it. Default false.
+ * @return string Message text and glyph wrapped in a `span` tag.
+ */
+function wp_required_field_message( $space_before = ' ', $echo = false ) {
+	$message = sprintf(
+		'%1$s<span class="required-field-message" aria-hidden="true">%2$s</span>',
+		esc_html( $space_before ),
+		/* translators: %s: Asterisk symbol (*). */
+		sprintf( __( 'Required fields are marked %s' ), wp_required_field_indicator( '' ) ),
+	);
+
+	if ( ! $echo ) {
+		return $message;
+	}
+	echo $message;
+}
