diff --git a/package-lock.json b/package-lock.json
index ef2de62c43..fa9476cd38 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3931,6 +3931,14 @@
"tar-fs": "^2.0.0",
"unbzip2-stream": "^1.3.3",
"ws": "^7.2.3"
+ },
+ "dependencies": {
+ "devtools-protocol": {
+ "version": "0.0.818844",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.818844.tgz",
+ "integrity": "sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==",
+ "dev": true
+ }
}
},
"rimraf": {
@@ -8058,12 +8066,6 @@
"integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
"dev": true
},
- "devtools-protocol": {
- "version": "0.0.818844",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.818844.tgz",
- "integrity": "sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==",
- "dev": true
- },
"diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php
index ce4c99e2ea..cde954418b 100644
--- a/src/wp-includes/script-loader.php
+++ b/src/wp-includes/script-loader.php
@@ -267,6 +267,18 @@ function wp_default_packages_scripts( $scripts ) {
if ( in_array( 'wp-i18n', $dependencies, true ) ) {
$scripts->set_translations( $handle );
}
+
+ // Manually set the text direction localization after wp-i18n is
+ // printed. This ensures that wp.i18n.isRTL() returns true in RTL
+ // languages. We cannot use $scripts->set_translations( 'wp-i18n' ) to
+ // do this because WordPress prints a script's translations *before*
+ // printing the script, which means, in the case of wp-i18n, that
+ // wp.i18n.setLocaleData() is called before wp.i18n is defined.
+ if ( 'wp-i18n' === $handle ) {
+ $ltr = _x( 'ltr', 'text direction', 'default' );
+ $script = sprintf( "wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ '%s' ] } );", $ltr );
+ $scripts->add_inline_script( $handle, $script, 'after' );
+ }
}
}
diff --git a/tests/phpunit/tests/dependencies/scripts.php b/tests/phpunit/tests/dependencies/scripts.php
index cfc3540f84..2b6778954e 100644
--- a/tests/phpunit/tests/dependencies/scripts.php
+++ b/tests/phpunit/tests/dependencies/scripts.php
@@ -723,6 +723,9 @@ JS;
$expected .= "\n";
$expected .= "\n";
$expected .= "\n";
+ $expected .= "\n";
$expected .= "