diff --git a/wp-includes/class-wp-locale-switcher.php b/wp-includes/class-wp-locale-switcher.php
index 8a9bbc3903..9f2893d35e 100644
--- a/wp-includes/class-wp-locale-switcher.php
+++ b/wp-includes/class-wp-locale-switcher.php
@@ -189,11 +189,12 @@ class WP_Locale_Switcher {
 	 * @param string $locale The locale to load translations for.
 	 */
 	private function load_translations( $locale ) {
-		global $l10n;
+		global $l10n, $wp_textdomain_registry;
 
 		$domains = $l10n ? array_keys( $l10n ) : array();
 
 		load_default_textdomain( $locale );
+		$wp_textdomain_registry->reset();
 
 		foreach ( $domains as $domain ) {
 			// The default text domain is handled by `load_default_textdomain()`.
diff --git a/wp-includes/l10n.php b/wp-includes/l10n.php
index 6bca550e98..af647c0f52 100644
--- a/wp-includes/l10n.php
+++ b/wp-includes/l10n.php
@@ -740,6 +740,7 @@ function load_textdomain( $domain, $mofile ) {
 	$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );
 
 	if ( ! is_readable( $mofile ) ) {
+		$wp_textdomain_registry->set( $domain, false );
 		return false;
 	}
 
