WordPress.org

Make WordPress Core

Ticket #29783: 29783.patch

File 29783.patch, 4.4 KB (added by ocean90, 2 years ago)
  • src/wp-admin/includes/user.php

     
    9494                $user->rich_editing = isset( $_POST['rich_editing'] ) && 'false' == $_POST['rich_editing'] ? 'false' : 'true'; 
    9595                $user->admin_color = isset( $_POST['admin_color'] ) ? sanitize_text_field( $_POST['admin_color'] ) : 'fresh'; 
    9696                $user->show_admin_bar_front = isset( $_POST['admin_bar_front'] ) ? 'true' : 'false'; 
     97                $user->site_language = isset( $_POST['site_language'] ) ? $_POST['site_language'] : 'default'; 
    9798        } 
    9899 
    99100        $user->comment_shortcuts = isset( $_POST['comment_shortcuts'] ) && 'true' == $_POST['comment_shortcuts'] ? 'true' : ''; 
  • src/wp-admin/options-general.php

     
    340340                <th width="33%" scope="row"><label for="WPLANG"><?php _e( 'Site Language' ); ?></label></th> 
    341341                <td> 
    342342                        <?php 
    343                         $locale = get_locale(); 
     343                        add_filter( 'get_user_option_site_language', '__return_false' ); 
     344                        $locale = get_locale( false ); 
     345                        remove_filter( 'get_user_option_site_language', '__return_false' ); 
    344346                        if ( ! in_array( $locale, $languages ) ) { 
    345347                                $locale = ''; 
    346348                        } 
  • src/wp-admin/user-edit.php

     
    291291</td> 
    292292</tr> 
    293293<?php 
     294$languages = get_available_languages(); 
     295if ( $languages ) : ?> 
     296<tr class="user-language-wrap"> 
     297        <th scope="row"> 
     298                <label for="site_language"><?php _e( 'Site Language' ); ?></label> 
     299        </th> 
     300        <td> 
     301                <?php 
     302                $lang = get_user_option( 'site_language', $profileuser->ID ); 
     303                if ( '' === $lang ) { // en_US 
     304                        $lang = false; 
     305                } elseif ( 'default' === $lang || ! in_array( $lang, $languages ) ) { 
     306                        $lang = get_locale(); 
     307                } 
     308 
     309                wp_dropdown_languages( array( 
     310                        'name'         => 'site_language', 
     311                        'id'           => 'site_language', 
     312                        'selected'     => $lang, 
     313                        'languages'    => $languages, 
     314                        'show_available_translations' => false 
     315                ) ); 
     316                ?> 
     317        </td> 
     318</tr> 
     319<?php 
     320endif; 
     321 
    294322/** 
    295323 * Fires at the end of the 'Personal Options' settings table on the user editing screen. 
    296324 * 
  • src/wp-includes/l10n.php

     
    2121 * 
    2222 * @since 1.5.0 
    2323 * 
     24 * @param  bool   $cached Whether to return the cached locale. Default true. 
    2425 * @return string The locale of the blog or from the 'locale' hook. 
    2526 */ 
    26 function get_locale() { 
     27function get_locale( $cached = true ) { 
    2728        global $locale, $wp_local_package; 
    2829 
    29         if ( isset( $locale ) ) { 
     30        if ( $cached && isset( $locale ) ) { 
    3031                /** 
    3132                 * Filter WordPress install's locale ID. 
    3233                 * 
     
    6364                } 
    6465        } 
    6566 
     67        if ( is_user_logged_in() ) { 
     68                $user_language = get_user_option( 'site_language', get_current_user_id() ); 
     69 
     70                if ( false !== $user_language && 'default' !== $user_language ) { 
     71                        $locale = $user_language; 
     72                } 
     73        } 
     74 
    6675        if ( empty( $locale ) ) { 
    6776                $locale = 'en_US'; 
    6877        } 
  • src/wp-includes/user.php

     
    18691869 
    18701870        $meta['show_admin_bar_front'] = empty( $userdata['show_admin_bar_front'] ) ? 'true' : $userdata['show_admin_bar_front']; 
    18711871 
     1872        $meta['site_language'] = isset( $userdata['site_language'] ) ? $userdata['site_language']: 'default'; 
     1873 
    18721874        $user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $user_nicename, $user_login)); 
    18731875 
    18741876        if ( $user_nicename_check ) { 
     
    20412043 * @return array 
    20422044 */ 
    20432045function _get_additional_user_keys( $user ) { 
    2044         $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front' ); 
     2046        $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'site_language' ); 
    20452047        return array_merge( $keys, array_keys( wp_get_user_contact_methods( $user ) ) ); 
    20462048} 
    20472049