Make WordPress Core

Ticket #38632: 38632.2.diff

File 38632.2.diff, 3.4 KB (added by ocean90, 5 years ago)
  • src/wp-admin/includes/user.php

     
    9898
    9999                if ( isset( $_POST['locale'] ) ) {
    100100                        $locale = sanitize_text_field( $_POST['locale'] );
    101                         if ( ! in_array( $locale, get_available_languages(), true ) ) {
     101                        if ( 'site-default' === $locale ) {
    102102                                $locale = '';
     103                        } elseif ( ! in_array( $locale, get_available_languages(), true ) ) {
     104                                $locale = 'en_US';
    103105                        }
    104106
    105                         $user->locale = ( '' === $locale ) ? 'en_US' : $locale;
     107                        $user->locale = $locale;
    106108                }
    107109        }
    108110
  • src/wp-admin/user-edit.php

     
    284284                $user_locale = $profileuser->locale;
    285285
    286286                if ( 'en_US' === $user_locale ) {
    287                         $user_locale = false;
    288                 } elseif ( ! in_array( $user_locale, $languages, true ) ) {
    289                         $user_locale = get_locale();
     287                        $user_locale = '';
     288                } elseif ( '' === $user_locale || ! in_array( $user_locale, $languages, true ) ) {
     289                        $user_locale = 'site-default';
    290290                }
    291291
    292292                wp_dropdown_languages( array(
     
    294294                        'id'                          => 'locale',
    295295                        'selected'                    => $user_locale,
    296296                        'languages'                   => $languages,
    297                         'show_available_translations' => false
     297                        'show_available_translations' => false,
     298                        'show_site_locale_default'    => true
    298299                ) );
    299300                ?>
    300301        </td>
  • src/wp-includes/l10n.php

     
    10651065 *     @type bool|int $echo                         Whether to echo the generated markup. Accepts 0, 1, or their
    10661066 *                                                  boolean equivalents. Default 1.
    10671067 *     @type bool     $show_available_translations  Whether to show available translations. Default true.
     1068 *     @type bool     $show_site_locale_default     Whether to show an option to fall back to the site's locale. Default false.
    10681069 * }
    10691070 * @return string HTML content
    10701071 */
     
    10781079                'selected'     => '',
    10791080                'echo'         => 1,
    10801081                'show_available_translations' => true,
     1082                'show_site_locale_default'    => false,
    10811083        ) );
    10821084
     1085        // English (United States) uses an empty string for the value attribute.
     1086        if ( 'en_US' === $args['selected'] ) {
     1087                $args['selected'] = '';
     1088        }
     1089
    10831090        $translations = $args['translations'];
    10841091        if ( empty( $translations ) ) {
    10851092                require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
     
    11221129        if ( $translations_available ) {
    11231130                $structure[] = '<optgroup label="' . esc_attr_x( 'Installed', 'translations' ) . '">';
    11241131        }
    1125         $structure[] = '<option value="" lang="en" data-installed="1">English (United States)</option>';
     1132
     1133        if ( $args['show_site_locale_default'] ) {
     1134                $structure[] = sprintf( '<option value="site-default" data-installed="1">%s</option>', _x( 'Site Default', 'default site language' ) );
     1135        }
     1136
     1137        $structure[] = sprintf(
     1138                '<option value="" lang="en" data-installed="1"%s>English (United States)</option>',
     1139                selected( '', $args['selected'], false )
     1140        );
     1141
    11261142        foreach ( $languages as $language ) {
    11271143                $structure[] = sprintf(
    11281144                        '<option value="%s" lang="%s"%s data-installed="1">%s</option>',