diff --git a/src/wp-includes/l10n.php b/src/wp-includes/l10n.php index 915fa72701..39aa6d498e 100644 --- a/src/wp-includes/l10n.php +++ b/src/wp-includes/l10n.php @@ -1364,6 +1364,7 @@ function wp_get_pomo_file_data( $po_file ) { * @since 4.0.0 * @since 4.3.0 Introduced the `echo` argument. * @since 4.7.0 Introduced the `show_option_site_default` argument. + * @since 5.1.0 Introduced the `show_option_en_us` argument. * * @see get_available_languages() * @see wp_get_available_translations() @@ -1382,6 +1383,7 @@ function wp_get_pomo_file_data( $po_file ) { * boolean equivalents. Default 1. * @type bool $show_available_translations Whether to show available translations. Default true. * @type bool $show_option_site_default Whether to show an option to fall back to the site's locale. Default false. + * @type bool $show_option_en_us Whether to show an option for English (United States). Default true. * } * @return string HTML content */ @@ -1398,6 +1400,7 @@ function wp_dropdown_languages( $args = array() ) { 'echo' => 1, 'show_available_translations' => true, 'show_option_site_default' => false, + 'show_option_en_us' => true, ) ); @@ -1461,11 +1464,12 @@ function wp_dropdown_languages( $args = array() ) { ); } - // Always show English. - $structure[] = sprintf( - '', - selected( '', $parsed_args['selected'], false ) - ); + if ( $parsed_args['show_option_en_us'] ) { + $structure[] = sprintf( + '', + selected( '', $parsed_args['selected'], false ) + ); + } // List installed languages. foreach ( $languages as $language ) { diff --git a/tests/phpunit/tests/l10n.php b/tests/phpunit/tests/l10n.php index 5173621d2c..930108228a 100644 --- a/tests/phpunit/tests/l10n.php +++ b/tests/phpunit/tests/l10n.php @@ -124,6 +124,24 @@ class Tests_L10n extends WP_UnitTestCase { $this->assertContains( '', $actual ); } + /** + * @ticket 44494 + */ + function test_wp_dropdown_languages_exclude_en_us() { + $args = array( + 'id' => 'foo', + 'name' => 'bar', + 'languages' => array( 'de_DE' ), + 'translations' => $this->wp_dropdown_languages_filter(), + 'selected' => 'de_DE', + 'echo' => false, + 'show_option_en_us' => false, + ); + $actual = wp_dropdown_languages( $args ); + + $this->assertNotContains( '', $actual ); + } + /** * @ticket 38632 */