Make WordPress Core

Ticket #58317: l10n.php.patch

File l10n.php.patch, 1.6 KB (added by Cybr, 2 years ago)

Refactorization of determine_locale

  • wp-includes/l10n.php

     
    132132         */
    133133        $determined_locale = apply_filters( 'pre_determine_locale', null );
    134134
    135         if ( ! empty( $determined_locale ) && is_string( $determined_locale ) ) {
     135        if ( $determined_locale && is_string( $determined_locale ) ) {
    136136                return $determined_locale;
    137137        }
    138138
    139         $determined_locale = get_locale();
    140 
    141         if ( is_admin() ) {
     139        if (
     140                   is_admin()
     141                || ( isset( $_GET['_locale'] ) && 'user' === $_GET['_locale'] && wp_is_json_request() )
     142        ) {
    142143                $determined_locale = get_user_locale();
     144        } else {
     145                $determined_locale = get_locale();
    143146        }
    144147
    145         if ( isset( $_GET['_locale'] ) && 'user' === $_GET['_locale'] && wp_is_json_request() ) {
    146                 $determined_locale = get_user_locale();
     148        if ( isset( $GLOBALS['pagenow'] ) && 'wp-login.php' === $GLOBALS['pagenow'] ) {
     149                if ( ! empty( $_GET['wp_lang'] ) ) {
     150                        $determined_locale = sanitize_text_field( $_GET['wp_lang'] ) ?: $determined_locale;
     151                } elseif ( ! empty( $_COOKIE['wp_lang'] ) ) {
     152                        $determined_locale = sanitize_text_field( $_COOKIE['wp_lang'] ) ?: $determined_locale;
     153                }
    147154        }
    148155
    149         $wp_lang = '';
    150 
    151         if ( ! empty( $_GET['wp_lang'] ) ) {
    152                 $wp_lang = sanitize_text_field( $_GET['wp_lang'] );
    153         } elseif ( ! empty( $_COOKIE['wp_lang'] ) ) {
    154                 $wp_lang = sanitize_text_field( $_COOKIE['wp_lang'] );
    155         }
    156 
    157         if ( ! empty( $wp_lang ) && ! empty( $GLOBALS['pagenow'] ) && 'wp-login.php' === $GLOBALS['pagenow'] ) {
    158                 $determined_locale = $wp_lang;
    159         }
    160 
    161156        /**
    162157         * Filters the locale for the current request.
    163158         *