diff --git a/src/wp-includes/class-wp-scripts.php b/src/wp-includes/class-wp-scripts.php
index 5374aa912a..b999455daa 100644
--- a/src/wp-includes/class-wp-scripts.php
+++ b/src/wp-includes/class-wp-scripts.php
@@ -511,13 +511,15 @@ class WP_Scripts extends WP_Dependencies {
 		if ( is_string( $l10n ) ) {
 			$l10n = html_entity_decode( $l10n, ENT_QUOTES, 'UTF-8' );
 		} elseif ( is_array( $l10n ) ) {
-			foreach ( $l10n as $key => $value ) {
-				if ( ! is_scalar( $value ) ) {
-					continue;
+			$l10n = map_deep(
+				$l10n,
+				function( $value ) {
+					if ( ! is_scalar( $value ) ) {
+						return;
+					}
+					return html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
 				}
-
-				$l10n[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
-			}
+			);
 		}
 
 		$script = "var $object_name = " . wp_json_encode( $l10n ) . ';';
