diff --git a/load.php b/load.php index ac3b786f..6d645340 100644 --- a/load.php +++ b/load.php @@ -209,7 +209,7 @@ function tsdk_translate_link( $parsed_url = wp_parse_url( $url ); // we replace the domain here based on the localized one. if ( $type === 'domain' ) { - return $parsed_url['scheme'] . '://' . $code . $parsed_url['path'] . ( isset( $parsed_url['query'] ) ? '?' . $parsed_url['query'] : '' ) . ( isset( $parsed_url['fragment'] ) ? '#' . $parsed_url['fragment'] : '' ); + return $parsed_url['scheme'] . '://' . $code . ( isset( $parsed_url['path'] ) ? $parsed_url['path'] : '' ) . ( isset( $parsed_url['query'] ) ? '?' . $parsed_url['query'] : '' ) . ( isset( $parsed_url['fragment'] ) ? '#' . $parsed_url['fragment'] : '' ); } // default is the path based approach. $new_path = isset( $parsed_url['path'] ) ? "/$code" . $parsed_url['path'] : "/$code"; diff --git a/tests/translate-link-test.php b/tests/translate-link-test.php index 4ffe2d5e..7e566f06 100644 --- a/tests/translate-link-test.php +++ b/tests/translate-link-test.php @@ -11,37 +11,49 @@ class Translate_Link extends WP_UnitTestCase { public function test_default_path() { - add_filter( 'locale', function () { - return 'de_DE'; - } ); + add_filter( + 'locale', + function () { + return 'de_DE'; + } + ); $url = 'https://example.com'; $this->assertEquals( $url . '/de', tsdk_translate_link( $url ) ); $url = 'https://example.com/some/path'; - $this->assertEquals( $url . '/de', tsdk_translate_link( $url ) ); + $this->assertEquals( 'https://example.com/de/some/path', tsdk_translate_link( $url ) ); $url = 'https://example.com/some/path/'; - $this->assertEquals( $url . 'de/', tsdk_translate_link( $url ) ); + $this->assertEquals( 'https://example.com/de/some/path/', tsdk_translate_link( $url ) ); } public function test_query() { - add_filter( 'locale', function () { - return 'de_DE'; - } ); + add_filter( + 'locale', + function () { + return 'de_DE'; + } + ); $url = 'https://example.com'; - $this->assertEquals( 'https://example.com/?lang=de', tsdk_translate_link( $url, 'query' ) ); + $this->assertEquals( 'https://example.com?lang=de', tsdk_translate_link( $url, 'query' ) ); } public function test_domain() { - add_filter( 'locale', function () { - return 'de_DE'; - } ); + add_filter( + 'locale', + function () { + return 'de_DE'; + } + ); $url = 'https://example.com'; $this->assertEquals( 'https://optimole.de', tsdk_translate_link( $url, 'domain', [ 'de_DE' => 'optimole.de' ] ) ); } public function test_non_existent() { - add_filter( 'locale', function () { - return 'da_DK'; - } ); + add_filter( + 'locale', + function () { + return 'da_DK'; + } + ); $url = 'https://example.com'; $this->assertEquals( 'https://example.com', tsdk_translate_link( $url ) ); }