WordPress.org

Make WordPress Core

Changeset 37889


Ignore:
Timestamp:
06/28/16 11:52:45 (19 months ago)
Author:
ocean90
Message:

I18N: Move the WP_Locale class to its own file.

The new class-wp-locale.php file is loaded in locale.php for backward compatibility purposes.

See #26511.
Fixes #37209.

Location:
trunk/src/wp-includes
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-locale.php

    r37886 r37889  
    11<?php 
    22/** 
    3  * Date and Time Locale object 
     3 * Locale API: WP_Locale class 
    44 * 
    55 * @package WordPress 
    66 * @subpackage i18n 
     7 * @since 4.6.0 
    78 */ 
    89 
    910/** 
    10  * Class that loads the calendar locale. 
     11 * Core class used to store translated data for a locale. 
    1112 * 
    1213 * @since 2.1.0 
     14 * @since 4.6.0 Moved to its own file from wp-includes/locale.php. 
    1315 */ 
    1416class WP_Locale { 
     
    9496     */ 
    9597    public $number_format; 
     98 
     99    /** 
     100     * Constructor which calls helper methods to set up object variables. 
     101     * 
     102     * @since 2.1.0 
     103     */ 
     104    public function __construct() { 
     105        $this->init(); 
     106        $this->register_globals(); 
     107    } 
    96108 
    97109    /** 
     
    357369 
    358370    /** 
    359      * Constructor which calls helper methods to set up object variables 
    360      * 
    361      * @since 2.1.0 
    362      */ 
    363     public function __construct() { 
    364         $this->init(); 
    365         $this->register_globals(); 
    366     } 
    367  
    368     /** 
    369371     * Checks if current locale is RTL. 
    370372     * 
     
    394396    } 
    395397} 
    396  
    397 /** 
    398  * Checks if current locale is RTL. 
    399  * 
    400  * @since 3.0.0 
    401  * 
    402  * @global WP_Locale $wp_locale 
    403  * 
    404  * @return bool Whether locale is RTL. 
    405  */ 
    406 function is_rtl() { 
    407     global $wp_locale; 
    408     return $wp_locale->is_rtl(); 
    409 } 
  • trunk/src/wp-includes/locale.php

    r37674 r37889  
    11<?php 
    22/** 
    3  * Date and Time Locale object 
     3 * Locale API 
    44 * 
    55 * @package WordPress 
    66 * @subpackage i18n 
     7 * @since 1.2.0 
    78 */ 
    89 
    9 /** 
    10  * Class that loads the calendar locale. 
    11  * 
    12  * @since 2.1.0 
    13  */ 
    14 class WP_Locale { 
    15     /** 
    16      * Stores the translated strings for the full weekday names. 
    17      * 
    18      * @since 2.1.0 
    19      * @var array 
    20      */ 
    21     public $weekday; 
    22  
    23     /** 
    24      * Stores the translated strings for the one character weekday names. 
    25      * 
    26      * There is a hack to make sure that Tuesday and Thursday, as well 
    27      * as Sunday and Saturday, don't conflict. See init() method for more. 
    28      * 
    29      * @see WP_Locale::init() for how to handle the hack. 
    30      * 
    31      * @since 2.1.0 
    32      * @var array 
    33      */ 
    34     public $weekday_initial; 
    35  
    36     /** 
    37      * Stores the translated strings for the abbreviated weekday names. 
    38      * 
    39      * @since 2.1.0 
    40      * @var array 
    41      */ 
    42     public $weekday_abbrev; 
    43  
    44     /** 
    45      * Stores the default start of the week. 
    46      * 
    47      * @since 4.4.0 
    48      * @var string 
    49      */ 
    50     public $start_of_week; 
    51  
    52     /** 
    53      * Stores the translated strings for the full month names. 
    54      * 
    55      * @since 2.1.0 
    56      * @var array 
    57      */ 
    58     public $month; 
    59  
    60     /** 
    61      * Stores the translated strings for the abbreviated month names. 
    62      * 
    63      * @since 2.1.0 
    64      * @var array 
    65      */ 
    66     public $month_abbrev; 
    67  
    68     /** 
    69      * Stores the translated strings for 'am' and 'pm'. 
    70      * 
    71      * Also the capitalized versions. 
    72      * 
    73      * @since 2.1.0 
    74      * @var array 
    75      */ 
    76     public $meridiem; 
    77  
    78     /** 
    79      * The text direction of the locale language. 
    80      * 
    81      * Default is left to right 'ltr'. 
    82      * 
    83      * @since 2.1.0 
    84      * @var string 
    85      */ 
    86     public $text_direction = 'ltr'; 
    87  
    88     /** 
    89      * The thousands separator and decimal point values used for localizing numbers. 
    90      * 
    91      * @since 2.3.0 
    92      * @access public 
    93      * @var array 
    94      */ 
    95     public $number_format; 
    96  
    97     /** 
    98      * Sets up the translated strings and object properties. 
    99      * 
    100      * The method creates the translatable strings for various 
    101      * calendar elements. Which allows for specifying locale 
    102      * specific calendar names and text direction. 
    103      * 
    104      * @since 2.1.0 
    105      * @access private 
    106      * 
    107      * @global string $text_direction 
    108      * @global string $wp_version 
    109      */ 
    110     public function init() { 
    111         // The Weekdays 
    112         $this->weekday[0] = /* translators: weekday */ __('Sunday'); 
    113         $this->weekday[1] = /* translators: weekday */ __('Monday'); 
    114         $this->weekday[2] = /* translators: weekday */ __('Tuesday'); 
    115         $this->weekday[3] = /* translators: weekday */ __('Wednesday'); 
    116         $this->weekday[4] = /* translators: weekday */ __('Thursday'); 
    117         $this->weekday[5] = /* translators: weekday */ __('Friday'); 
    118         $this->weekday[6] = /* translators: weekday */ __('Saturday'); 
    119  
    120         // The first letter of each day. 
    121         $this->weekday_initial[ __( 'Sunday' ) ]    = /* translators: one-letter abbreviation of the weekday */ _x( 'S', 'Sunday initial' ); 
    122         $this->weekday_initial[ __( 'Monday' ) ]    = /* translators: one-letter abbreviation of the weekday */ _x( 'M', 'Monday initial' ); 
    123         $this->weekday_initial[ __( 'Tuesday' ) ]   = /* translators: one-letter abbreviation of the weekday */ _x( 'T', 'Tuesday initial' ); 
    124         $this->weekday_initial[ __( 'Wednesday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'W', 'Wednesday initial' ); 
    125         $this->weekday_initial[ __( 'Thursday' ) ]  = /* translators: one-letter abbreviation of the weekday */ _x( 'T', 'Thursday initial' ); 
    126         $this->weekday_initial[ __( 'Friday' ) ]    = /* translators: one-letter abbreviation of the weekday */ _x( 'F', 'Friday initial' ); 
    127         $this->weekday_initial[ __( 'Saturday' ) ]  = /* translators: one-letter abbreviation of the weekday */ _x( 'S', 'Saturday initial' ); 
    128  
    129         // Abbreviations for each day. 
    130         $this->weekday_abbrev[__('Sunday')]    = /* translators: three-letter abbreviation of the weekday */ __('Sun'); 
    131         $this->weekday_abbrev[__('Monday')]    = /* translators: three-letter abbreviation of the weekday */ __('Mon'); 
    132         $this->weekday_abbrev[__('Tuesday')]   = /* translators: three-letter abbreviation of the weekday */ __('Tue'); 
    133         $this->weekday_abbrev[__('Wednesday')] = /* translators: three-letter abbreviation of the weekday */ __('Wed'); 
    134         $this->weekday_abbrev[__('Thursday')]  = /* translators: three-letter abbreviation of the weekday */ __('Thu'); 
    135         $this->weekday_abbrev[__('Friday')]    = /* translators: three-letter abbreviation of the weekday */ __('Fri'); 
    136         $this->weekday_abbrev[__('Saturday')]  = /* translators: three-letter abbreviation of the weekday */ __('Sat'); 
    137  
    138         // The Months 
    139         $this->month['01'] = /* translators: month name */ __( 'January' ); 
    140         $this->month['02'] = /* translators: month name */ __( 'February' ); 
    141         $this->month['03'] = /* translators: month name */ __( 'March' ); 
    142         $this->month['04'] = /* translators: month name */ __( 'April' ); 
    143         $this->month['05'] = /* translators: month name */ __( 'May' ); 
    144         $this->month['06'] = /* translators: month name */ __( 'June' ); 
    145         $this->month['07'] = /* translators: month name */ __( 'July' ); 
    146         $this->month['08'] = /* translators: month name */ __( 'August' ); 
    147         $this->month['09'] = /* translators: month name */ __( 'September' ); 
    148         $this->month['10'] = /* translators: month name */ __( 'October' ); 
    149         $this->month['11'] = /* translators: month name */ __( 'November' ); 
    150         $this->month['12'] = /* translators: month name */ __( 'December' ); 
    151  
    152         // The Months, genitive 
    153         $this->month_genitive['01'] = /* translators: month name, genitive */ _x( 'January', 'genitive' ); 
    154         $this->month_genitive['02'] = /* translators: month name, genitive */ _x( 'February', 'genitive' ); 
    155         $this->month_genitive['03'] = /* translators: month name, genitive */ _x( 'March', 'genitive' ); 
    156         $this->month_genitive['04'] = /* translators: month name, genitive */ _x( 'April', 'genitive' ); 
    157         $this->month_genitive['05'] = /* translators: month name, genitive */ _x( 'May', 'genitive' ); 
    158         $this->month_genitive['06'] = /* translators: month name, genitive */ _x( 'June', 'genitive' ); 
    159         $this->month_genitive['07'] = /* translators: month name, genitive */ _x( 'July', 'genitive' ); 
    160         $this->month_genitive['08'] = /* translators: month name, genitive */ _x( 'August', 'genitive' ); 
    161         $this->month_genitive['09'] = /* translators: month name, genitive */ _x( 'September', 'genitive' ); 
    162         $this->month_genitive['10'] = /* translators: month name, genitive */ _x( 'October', 'genitive' ); 
    163         $this->month_genitive['11'] = /* translators: month name, genitive */ _x( 'November', 'genitive' ); 
    164         $this->month_genitive['12'] = /* translators: month name, genitive */ _x( 'December', 'genitive' ); 
    165  
    166         // Abbreviations for each month. 
    167         $this->month_abbrev[ __( 'January' ) ]   = /* translators: three-letter abbreviation of the month */ _x( 'Jan', 'January abbreviation' ); 
    168         $this->month_abbrev[ __( 'February' ) ]  = /* translators: three-letter abbreviation of the month */ _x( 'Feb', 'February abbreviation' ); 
    169         $this->month_abbrev[ __( 'March' ) ]     = /* translators: three-letter abbreviation of the month */ _x( 'Mar', 'March abbreviation' ); 
    170         $this->month_abbrev[ __( 'April' ) ]     = /* translators: three-letter abbreviation of the month */ _x( 'Apr', 'April abbreviation' ); 
    171         $this->month_abbrev[ __( 'May' ) ]       = /* translators: three-letter abbreviation of the month */ _x( 'May', 'May abbreviation' ); 
    172         $this->month_abbrev[ __( 'June' ) ]      = /* translators: three-letter abbreviation of the month */ _x( 'Jun', 'June abbreviation' ); 
    173         $this->month_abbrev[ __( 'July' ) ]      = /* translators: three-letter abbreviation of the month */ _x( 'Jul', 'July abbreviation' ); 
    174         $this->month_abbrev[ __( 'August' ) ]    = /* translators: three-letter abbreviation of the month */ _x( 'Aug', 'August abbreviation' ); 
    175         $this->month_abbrev[ __( 'September' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Sep', 'September abbreviation' ); 
    176         $this->month_abbrev[ __( 'October' ) ]   = /* translators: three-letter abbreviation of the month */ _x( 'Oct', 'October abbreviation' ); 
    177         $this->month_abbrev[ __( 'November' ) ]  = /* translators: three-letter abbreviation of the month */ _x( 'Nov', 'November abbreviation' ); 
    178         $this->month_abbrev[ __( 'December' ) ]  = /* translators: three-letter abbreviation of the month */ _x( 'Dec', 'December abbreviation' ); 
    179  
    180         // The Meridiems 
    181         $this->meridiem['am'] = __('am'); 
    182         $this->meridiem['pm'] = __('pm'); 
    183         $this->meridiem['AM'] = __('AM'); 
    184         $this->meridiem['PM'] = __('PM'); 
    185  
    186         // Numbers formatting 
    187         // See https://secure.php.net/number_format 
    188  
    189         /* translators: $thousands_sep argument for https://secure.php.net/number_format, default is , */ 
    190         $thousands_sep = __( 'number_format_thousands_sep' ); 
    191  
    192         if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) { 
    193             // Replace space with a non-breaking space to avoid wrapping. 
    194             $thousands_sep = str_replace( ' ', '&nbsp;', $thousands_sep ); 
    195         } else { 
    196             // PHP < 5.4.0 does not support multiple bytes in thousands separator. 
    197             $thousands_sep = str_replace( array( '&nbsp;', '&#160;' ), ' ', $thousands_sep ); 
    198         } 
    199  
    200         $this->number_format['thousands_sep'] = ( 'number_format_thousands_sep' === $thousands_sep ) ? ',' : $thousands_sep; 
    201  
    202         /* translators: $dec_point argument for https://secure.php.net/number_format, default is . */ 
    203         $decimal_point = __( 'number_format_decimal_point' ); 
    204  
    205         $this->number_format['decimal_point'] = ( 'number_format_decimal_point' === $decimal_point ) ? '.' : $decimal_point; 
    206  
    207         // Set text direction. 
    208         if ( isset( $GLOBALS['text_direction'] ) ) 
    209             $this->text_direction = $GLOBALS['text_direction']; 
    210         /* translators: 'rtl' or 'ltr'. This sets the text direction for WordPress. */ 
    211         elseif ( 'rtl' == _x( 'ltr', 'text direction' ) ) 
    212             $this->text_direction = 'rtl'; 
    213  
    214         if ( 'rtl' === $this->text_direction && strpos( $GLOBALS['wp_version'], '-src' ) ) { 
    215             $this->text_direction = 'ltr'; 
    216             add_action( 'all_admin_notices', array( $this, 'rtl_src_admin_notice' ) ); 
    217         } 
    218     } 
    219  
    220     /** 
    221      * Outputs an admin notice if the /build directory must be used for RTL. 
    222      * 
    223      * @since 3.8.0 
    224      * @access public 
    225      */ 
    226     public function rtl_src_admin_notice() { 
    227         /* translators: %s: Name of the directory (build) */ 
    228         echo '<div class="error"><p>' . sprintf( __( 'The %s directory of the develop repository must be used for RTL.' ), '<code>build</code>' ) . '</p></div>'; 
    229     } 
    230  
    231     /** 
    232      * Retrieve the full translated weekday word. 
    233      * 
    234      * Week starts on translated Sunday and can be fetched 
    235      * by using 0 (zero). So the week starts with 0 (zero) 
    236      * and ends on Saturday with is fetched by using 6 (six). 
    237      * 
    238      * @since 2.1.0 
    239      * @access public 
    240      * 
    241      * @param int $weekday_number 0 for Sunday through 6 Saturday 
    242      * @return string Full translated weekday 
    243      */ 
    244     public function get_weekday($weekday_number) { 
    245         return $this->weekday[$weekday_number]; 
    246     } 
    247  
    248     /** 
    249      * Retrieve the translated weekday initial. 
    250      * 
    251      * The weekday initial is retrieved by the translated 
    252      * full weekday word. When translating the weekday initial 
    253      * pay attention to make sure that the starting letter does 
    254      * not conflict. 
    255      * 
    256      * @since 2.1.0 
    257      * @access public 
    258      * 
    259      * @param string $weekday_name 
    260      * @return string 
    261      */ 
    262     public function get_weekday_initial($weekday_name) { 
    263         return $this->weekday_initial[$weekday_name]; 
    264     } 
    265  
    266     /** 
    267      * Retrieve the translated weekday abbreviation. 
    268      * 
    269      * The weekday abbreviation is retrieved by the translated 
    270      * full weekday word. 
    271      * 
    272      * @since 2.1.0 
    273      * @access public 
    274      * 
    275      * @param string $weekday_name Full translated weekday word 
    276      * @return string Translated weekday abbreviation 
    277      */ 
    278     public function get_weekday_abbrev($weekday_name) { 
    279         return $this->weekday_abbrev[$weekday_name]; 
    280     } 
    281  
    282     /** 
    283      * Retrieve the full translated month by month number. 
    284      * 
    285      * The $month_number parameter has to be a string 
    286      * because it must have the '0' in front of any number 
    287      * that is less than 10. Starts from '01' and ends at 
    288      * '12'. 
    289      * 
    290      * You can use an integer instead and it will add the 
    291      * '0' before the numbers less than 10 for you. 
    292      * 
    293      * @since 2.1.0 
    294      * @access public 
    295      * 
    296      * @param string|int $month_number '01' through '12' 
    297      * @return string Translated full month name 
    298      */ 
    299     public function get_month($month_number) { 
    300         return $this->month[zeroise($month_number, 2)]; 
    301     } 
    302  
    303     /** 
    304      * Retrieve translated version of month abbreviation string. 
    305      * 
    306      * The $month_name parameter is expected to be the translated or 
    307      * translatable version of the month. 
    308      * 
    309      * @since 2.1.0 
    310      * @access public 
    311      * 
    312      * @param string $month_name Translated month to get abbreviated version 
    313      * @return string Translated abbreviated month 
    314      */ 
    315     public function get_month_abbrev($month_name) { 
    316         return $this->month_abbrev[$month_name]; 
    317     } 
    318  
    319     /** 
    320      * Retrieve translated version of meridiem string. 
    321      * 
    322      * The $meridiem parameter is expected to not be translated. 
    323      * 
    324      * @since 2.1.0 
    325      * @access public 
    326      * 
    327      * @param string $meridiem Either 'am', 'pm', 'AM', or 'PM'. Not translated version. 
    328      * @return string Translated version 
    329      */ 
    330     public function get_meridiem($meridiem) { 
    331         return $this->meridiem[$meridiem]; 
    332     } 
    333  
    334     /** 
    335      * Global variables are deprecated. 
    336      * 
    337      * For backward compatibility only. 
    338      * 
    339      * @deprecated For backward compatibility only. 
    340      * @access private 
    341      * 
    342      * @global array $weekday 
    343      * @global array $weekday_initial 
    344      * @global array $weekday_abbrev 
    345      * @global array $month 
    346      * @global array $month_abbrev 
    347      * 
    348      * @since 2.1.0 
    349      */ 
    350     public function register_globals() { 
    351         $GLOBALS['weekday']         = $this->weekday; 
    352         $GLOBALS['weekday_initial'] = $this->weekday_initial; 
    353         $GLOBALS['weekday_abbrev']  = $this->weekday_abbrev; 
    354         $GLOBALS['month']           = $this->month; 
    355         $GLOBALS['month_abbrev']    = $this->month_abbrev; 
    356     } 
    357  
    358     /** 
    359      * Constructor which calls helper methods to set up object variables 
    360      * 
    361      * @since 2.1.0 
    362      */ 
    363     public function __construct() { 
    364         $this->init(); 
    365         $this->register_globals(); 
    366     } 
    367  
    368     /** 
    369      * Checks if current locale is RTL. 
    370      * 
    371      * @since 3.0.0 
    372      * @return bool Whether locale is RTL. 
    373      */ 
    374     public function is_rtl() { 
    375         return 'rtl' == $this->text_direction; 
    376     } 
    377  
    378     /** 
    379      * Register date/time format strings for general POT. 
    380      * 
    381      * Private, unused method to add some date/time formats translated 
    382      * on wp-admin/options-general.php to the general POT that would 
    383      * otherwise be added to the admin POT. 
    384      * 
    385      * @since 3.6.0 
    386      */ 
    387     public function _strings_for_pot() { 
    388         /* translators: localized date format, see https://secure.php.net/date */ 
    389         __( 'F j, Y' ); 
    390         /* translators: localized time format, see https://secure.php.net/date */ 
    391         __( 'g:i a' ); 
    392         /* translators: localized date and time format, see https://secure.php.net/date */ 
    393         __( 'F j, Y g:i a' ); 
    394     } 
    395 } 
     10/** WP_Locale class */ 
     11require_once ABSPATH . WPINC . '/class-wp-locale.php'; 
    39612 
    39713/** 
Note: See TracChangeset for help on using the changeset viewer.