Commit 7f2a51359fc for woocommerce
commit 7f2a51359fc41c70a1113d2acce048530b2ab4b7
Author: Marco Almeida | Webdados <webdados@users.noreply.github.com>
Date: Wed Apr 8 16:02:06 2026 +0100
Show country name instead of country code in checkout address validation (#64008)
diff --git a/plugins/woocommerce/changelog/64008-fix-country-name b/plugins/woocommerce/changelog/64008-fix-country-name
new file mode 100644
index 00000000000..6371080398d
--- /dev/null
+++ b/plugins/woocommerce/changelog/64008-fix-country-name
@@ -0,0 +1,4 @@
+Significance: minor
+Type: tweak
+
+Show country name instead of country code in checkout address validation
\ No newline at end of file
diff --git a/plugins/woocommerce/includes/class-wc-checkout.php b/plugins/woocommerce/includes/class-wc-checkout.php
index a29db8c1ea4..4397f008237 100644
--- a/plugins/woocommerce/includes/class-wc-checkout.php
+++ b/plugins/woocommerce/includes/class-wc-checkout.php
@@ -957,8 +957,17 @@ class WC_Checkout {
$errors->add( 'shipping', __( 'Please enter an address to continue.', 'woocommerce' ) );
} elseif ( ! in_array( $shipping_country, array_keys( WC()->countries->get_shipping_countries() ), true ) ) {
if ( WC()->countries->country_exists( $shipping_country ) ) {
- /* translators: %s: shipping location (prefix e.g. 'to' + ISO 3166-1 alpha-2 country code) */
- $errors->add( 'shipping', sprintf( __( 'Unfortunately <strong>we do not ship %s</strong>. Please enter an alternative shipping address.', 'woocommerce' ), WC()->countries->shipping_to_prefix( $shipping_country ) . ' ' . $shipping_country ) );
+ $countries = WC()->countries->get_countries();
+ $shipping_country_name = $countries[ $shipping_country ] ?? $shipping_country;
+ $errors->add(
+ 'shipping',
+ sprintf(
+ /* translators: %1$s: shipping location prefix 'to' or 'to the', %2$s: shipping location country name */
+ __( 'Unfortunately, <strong>we do not ship %1$s %2$s</strong>. Please enter an alternative shipping address.', 'woocommerce' ),
+ WC()->countries->shipping_to_prefix( $shipping_country ),
+ $shipping_country_name
+ )
+ );
}
} else {
$chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' );
diff --git a/plugins/woocommerce/src/StoreApi/Utilities/OrderController.php b/plugins/woocommerce/src/StoreApi/Utilities/OrderController.php
index 871a75795be..e3e01789418 100644
--- a/plugins/woocommerce/src/StoreApi/Utilities/OrderController.php
+++ b/plugins/woocommerce/src/StoreApi/Utilities/OrderController.php
@@ -384,12 +384,14 @@ class OrderController {
// If only local pickup is selected, we don't need to validate the shipping country.
if ( ! $selected_shipping_rates_are_all_local_pickup && ! $this->validate_allowed_country( $shipping_country, (array) wc()->countries->get_shipping_countries() ) ) {
+ $countries = WC()->countries->get_countries();
+ $shipping_country_name = $countries[ $shipping_country ] ?? $shipping_country;
throw new RouteException(
'woocommerce_rest_invalid_address_country',
sprintf(
- /* translators: %s country code. */
+ /* translators: %s country name. */
esc_html__( 'Sorry, we do not ship orders to the provided country (%s)', 'woocommerce' ),
- esc_html( $shipping_country )
+ esc_html( $shipping_country_name )
),
400,
array(
@@ -400,12 +402,14 @@ class OrderController {
}
if ( ! $this->validate_allowed_country( $billing_country, (array) wc()->countries->get_allowed_countries() ) ) {
+ $countries = WC()->countries->get_countries();
+ $billing_country_name = $countries[ $billing_country ] ?? $billing_country;
throw new RouteException(
'woocommerce_rest_invalid_address_country',
sprintf(
- /* translators: %s country code. */
+ /* translators: %s country name. */
esc_html__( 'Sorry, we do not allow orders from the provided country (%s)', 'woocommerce' ),
- esc_html( $billing_country )
+ esc_html( $billing_country_name )
),
400,
array(
diff --git a/plugins/woocommerce/tests/php/includes/class-wc-checkout-test.php b/plugins/woocommerce/tests/php/includes/class-wc-checkout-test.php
index d95af5e925a..a5da25d9e38 100644
--- a/plugins/woocommerce/tests/php/includes/class-wc-checkout-test.php
+++ b/plugins/woocommerce/tests/php/includes/class-wc-checkout-test.php
@@ -228,7 +228,7 @@ class WC_Checkout_Test extends \WC_Unit_Test_Case {
$this->sut->validate_checkout( $data, $errors );
$this->assertEquals(
- $expect_we_dont_ship_error ? 'Unfortunately <strong>we do not ship to JP</strong>. Please enter an alternative shipping address.' : '',
+ $expect_we_dont_ship_error ? 'Unfortunately, <strong>we do not ship to Japan</strong>. Please enter an alternative shipping address.' : '',
$errors->get_error_message( 'shipping' )
);
remove_all_filters( 'woocommerce_countries_allowed_countries' );
diff --git a/plugins/woocommerce/tests/php/src/Blocks/StoreApi/Routes/Checkout.php b/plugins/woocommerce/tests/php/src/Blocks/StoreApi/Routes/Checkout.php
index 3aee672561e..1e2f930fcfa 100644
--- a/plugins/woocommerce/tests/php/src/Blocks/StoreApi/Routes/Checkout.php
+++ b/plugins/woocommerce/tests/php/src/Blocks/StoreApi/Routes/Checkout.php
@@ -1499,7 +1499,7 @@ class Checkout extends MockeryTestCase {
$response = rest_get_server()->dispatch( $request );
$this->assertEquals( 400, $response->get_status() );
$this->assertEquals( 'woocommerce_rest_invalid_address_country', $response->get_data()['code'] );
- $this->assertStringContainsString( 'Sorry, we do not allow orders from the provided country (FR)', $response->get_data()['message'] );
+ $this->assertStringContainsString( 'Sorry, we do not allow orders from the provided country (France)', $response->get_data()['message'] );
}
/**