diff --git a/modules/ppcp-api-client/src/Repository/class-applicationcontextrepository.php b/modules/ppcp-api-client/src/Repository/class-applicationcontextrepository.php index a50d934b5..bfc28b25a 100644 --- a/modules/ppcp-api-client/src/Repository/class-applicationcontextrepository.php +++ b/modules/ppcp-api-client/src/Repository/class-applicationcontextrepository.php @@ -67,12 +67,16 @@ class ApplicationContextRepository { */ protected function valid_bcp47_code() { $locale = str_replace( '_', '-', get_user_locale() ); - $parts = explode( '-', $locale ); - if ( count( $parts ) < 3 ) { + if ( preg_match( '/^[a-z]{2}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}))?$/', $locale ) ) { return $locale; } - return substr( $locale, 0, strrpos( $locale, '-' ) ); + $parts = explode( '-', $locale ); + if ( count( $parts ) === 3 ) { + return substr( $locale, 0, strrpos( $locale, '-' ) ); + } + + return 'en'; } } diff --git a/modules/ppcp-button/src/Assets/class-smartbutton.php b/modules/ppcp-button/src/Assets/class-smartbutton.php index 508150c29..c1dfa38c9 100644 --- a/modules/ppcp-button/src/Assets/class-smartbutton.php +++ b/modules/ppcp-button/src/Assets/class-smartbutton.php @@ -726,7 +726,6 @@ class SmartButton implements SmartButtonInterface { $params = array( 'client-id' => $this->client_id, 'currency' => get_woocommerce_currency(), - 'locale' => $this->valid_locale_code(), 'integration-date' => PAYPAL_INTEGRATION_DATE, 'components' => implode( ',', $this->components() ), 'vault' => $this->can_save_vault_token() ? @@ -957,20 +956,4 @@ class SmartButton implements SmartButtonInterface { } return false; } - - /** - * Returns a PayPal-supported locale code, for example de_DE_formal becomes de_DE. - * - * @return string - */ - protected function valid_locale_code(): string { - $locale = get_user_locale(); - $parts = explode( '_', $locale ); - - if ( count( $parts ) < 3 ) { - return $locale; - } - - return substr( $locale, 0, strrpos( $locale, '_' ) ); - } } diff --git a/tests/PHPUnit/ApiClient/Repository/ApplicationContextRepositoryTest.php b/tests/PHPUnit/ApiClient/Repository/ApplicationContextRepositoryTest.php index 00d892142..477efc585 100644 --- a/tests/PHPUnit/ApiClient/Repository/ApplicationContextRepositoryTest.php +++ b/tests/PHPUnit/ApiClient/Repository/ApplicationContextRepositoryTest.php @@ -31,6 +31,8 @@ class ApplicationContextRepositoryTest extends TestCase return [ 'de-DE' => ['de-DE', 'de-DE'], 'de-DE-formal' => ['de-DE-formal', 'de-DE'], + 'de' => ['de', 'de'], + 'ceb' => ['ceb', 'en'], ]; } } diff --git a/tests/PHPUnit/Button/Assets/SmartButtonTest.php b/tests/PHPUnit/Button/Assets/SmartButtonTest.php deleted file mode 100644 index 264b73886..000000000 --- a/tests/PHPUnit/Button/Assets/SmartButtonTest.php +++ /dev/null @@ -1,35 +0,0 @@ -getMockBuilder(SmartButton::class) - ->disableOriginalConstructor() - ->getMock(); - - $method = new \ReflectionMethod($testee, 'valid_locale_code'); - $method->setAccessible(true); - - when('get_user_locale')->justReturn($input); - - $this->assertSame($output, $method->invoke($testee)); - } - - public function provider() - { - return [ - 'de_DE' => ['de_DE', 'de_DE'], - 'de_DE_formal' => ['de_DE_formal', 'de_DE'], - ]; - } -}