diff --git a/src/wp-includes/class.wp-scripts.php b/src/wp-includes/class.wp-scripts.php
index aa9d4261c9..0562d70bb9 100644
--- a/src/wp-includes/class.wp-scripts.php
+++ b/src/wp-includes/class.wp-scripts.php
@@ -528,7 +528,8 @@ class WP_Scripts extends WP_Dependencies {
$json_translations = load_script_textdomain( $handle, $domain, $path );
if ( ! $json_translations ) {
- return false;
+ // Register empty locale data object to ensure the domain still exists.
+ $json_translations = '{ "locale_data": { "messages": { "": {} } } }';
}
$output = '(function( translations ){' .
diff --git a/src/wp-includes/l10n.php b/src/wp-includes/l10n.php
index feaf89d653..b46607ae61 100644
--- a/src/wp-includes/l10n.php
+++ b/src/wp-includes/l10n.php
@@ -923,18 +923,14 @@ function load_script_textdomain( $handle, $domain, $path = null ) {
$relative = array_slice( $relative, 2 );
$relative = implode( '/', $relative );
- } else if (
- ! isset( $site_url['path'] ) &&
- ( ! isset( $src_url['host'] ) || $src_url['host'] !== $site_url['host'] )
- ) {
- $relative = trim( $src_url['path'], '/' );
- } else if (
- ( strpos( $src_url['path'], $site_url['path'] ) === 0 ) &&
- ( ! isset( $src_url['host'] ) || $src_url['host'] !== $site_url['host'] )
- ) {
- // Make the src relative to the WP root.
- $relative = substr( $src, strlen( $site_url['path'] ) );
- $relative = trim( $relative, '/' );
+ } elseif ( ! isset( $src_url['host'] ) || $src_url['host'] !== $site_url['host'] ) {
+ if ( ! isset( $site_url['path'] ) ) {
+ $relative = trim( $src_url['path'], '/' );
+ } elseif ( ( strpos( $src_url['path'], $site_url['path'] ) === 0 ) ) {
+ // Make the src relative to the WP root.
+ $relative = substr( $src, strlen( $site_url['path'] ) );
+ $relative = trim( $relative, '/' );
+ }
}
// If the source is not from WP.
diff --git a/tests/phpunit/tests/dependencies/scripts.php b/tests/phpunit/tests/dependencies/scripts.php
index 977d74ad12..6b84a81ae7 100644
--- a/tests/phpunit/tests/dependencies/scripts.php
+++ b/tests/phpunit/tests/dependencies/scripts.php
@@ -863,7 +863,11 @@ class Tests_Dependencies_Scripts extends WP_UnitTestCase {
wp_set_script_translations( 'test-example', 'admin', DIR_TESTDATA . '/languages/' );
$expected = "";
- $expected .= "\n\n";
+ $expected .= "\n\n";
+ $expected .= "\n";
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
}