Index: src/wp-includes/user.php
===================================================================
--- src/wp-includes/user.php	(revision 43568)
+++ src/wp-includes/user.php	(working copy)
@@ -3368,12 +3368,25 @@
 	}

 	// Localize message content for user; fallback to site default for visitors.
+	$saved_locale = '';
 	if ( ! empty( $request->user_id ) ) {
-		$locale = get_user_locale( $request->user_id );
+		$locale       = get_user_locale( $request->user_id );
+		$saved_locale = get_user_meta( $request->user_id, 'locale', true );
 	} else {
 		$locale = get_locale();
 	}

+	$confirm_url = add_query_arg( array(
+		'action'      => 'confirmaction',
+		'request_id'  => $request_id,
+		'confirm_key' => wp_generate_user_request_key( $request_id ),
+	), wp_login_url() );
+
+	// Include locale in the confirmation URL when the user has selected one.
+	if ( ! empty( $saved_locale ) ) {
+		$confirm_url = add_query_arg( 'wp_lang', $saved_locale, $confirm_url );
+	}
+
 	$switched_locale = switch_to_locale( $locale );

 	$email_data = array(
@@ -3380,11 +3393,7 @@
 		'request'     => $request,
 		'email'       => $request->email,
 		'description' => wp_user_request_action_description( $request->action_name ),
-		'confirm_url' => add_query_arg( array(
-			'action'      => 'confirmaction',
-			'request_id'  => $request_id,
-			'confirm_key' => wp_generate_user_request_key( $request_id ),
-		), wp_login_url() ),
+		'confirm_url' => $confirm_url,
 		'sitename'    => wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ),
 		'siteurl'     => home_url(),
 	);
Index: src/wp-login.php
===================================================================
--- src/wp-login.php	(revision 43568)
+++ src/wp-login.php	(working copy)
@@ -898,6 +898,11 @@

 		login_header( __( 'User action confirmed.' ), $message );
 		login_footer();
+
+		if ( $switched_locale ) {
+			restore_previous_locale();
+		}
+
 		exit;

 	case 'login':
Index: tests/phpunit/tests/user/wpSendUserRequest.php
===================================================================
--- tests/phpunit/tests/user/wpSendUserRequest.php	(revision 43568)
+++ tests/phpunit/tests/user/wpSendUserRequest.php	(working copy)
@@ -259,6 +259,7 @@
 		$mailer = tests_retrieve_phpmailer_instance();

 		$this->assertContains( 'Confirma la', $mailer->get_sent()->subject );
+		$this->assertContains( 'wp_lang=es_ES', $mailer->get_sent()->body );
 	}

 	/**
@@ -281,6 +282,7 @@
 		$mailer = tests_retrieve_phpmailer_instance();

 		$this->assertContains( 'Aktion bestätigen', $mailer->get_sent()->subject );
+		$this->assertContains( 'wp_lang=de_DE', $mailer->get_sent()->body );
 	}

 	/**
@@ -303,6 +305,7 @@
 		$mailer = tests_retrieve_phpmailer_instance();

 		$this->assertContains( 'Confirma la', $mailer->get_sent()->subject );
+		$this->assertNotContains( 'wp_lang=', $mailer->get_sent()->body );
 	}

 	/**
@@ -327,6 +330,7 @@
 		$mailer = tests_retrieve_phpmailer_instance();

 		$this->assertContains( 'Confirm Action', $mailer->get_sent()->subject );
+		$this->assertContains( 'wp_lang=en_US', $mailer->get_sent()->body );
 	}

 	/**
@@ -346,6 +350,7 @@
 		$mailer = tests_retrieve_phpmailer_instance();

 		$this->assertContains( 'Confirm Action', $mailer->get_sent()->subject );
+		$this->assertNotContains( 'wp_lang=', $mailer->get_sent()->body );
 	}

 	/**
@@ -368,5 +373,30 @@
 		$mailer = tests_retrieve_phpmailer_instance();

 		$this->assertContains( 'Confirma la', $mailer->get_sent()->subject );
+		$this->assertNotContains( 'wp_lang=', $mailer->get_sent()->body );
 	}
+
+	/**
+	 * The function should respect the user locale settings when they have selected a specific locale on their
+	 * profile and the site's default is the same.
+	 *
+	 * @ticket 44550
+	 * @group l10n
+	 */
+	public function test_should_send_user_request_email_in_user_locale_when_user_and_site_share_locale() {
+		update_option( 'WPLANG', 'de_DE' );
+		switch_to_locale( 'de_DE' );
+
+		update_user_meta( self::$test_user->ID, 'locale', 'de_DE' );
+		update_user_meta( self::$admin_user->ID, 'locale', 'es_ES' );
+
+		wp_set_current_user( self::$admin_user->ID );
+
+		$request_id = wp_create_user_request( self::$test_user->user_email, 'erase_personal_data' );
+
+		wp_send_user_request( $request_id );
+		$mailer = tests_retrieve_phpmailer_instance();
+		$this->assertContains( 'Aktion bestätigen', $mailer->get_sent()->subject );
+		$this->assertContains( 'wp_lang=de_DE', $mailer->get_sent()->body );
+	}
 }
