From e622346b7dca8b5da1bc67a1b5d0ec856bc07594 Mon Sep 17 00:00:00 2001 From: Ryan Boren Date: Sun, 2 Apr 2006 00:20:11 +0000 Subject: [PATCH] WP_Locale. Props Sewar. fixes #2568 git-svn-id: https://develop.svn.wordpress.org/trunk@3676 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-admin/admin-functions.php | 14 +- wp-admin/edit.php | 7 +- wp-admin/options-general.php | 5 +- wp-includes/functions.php | 35 ++-- wp-includes/locale.php | 177 ++++++++++++++------- wp-includes/template-functions-general.php | 53 +++--- wp-settings.php | 2 + 7 files changed, 179 insertions(+), 114 deletions(-) diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php index f8abec8646..3b8e843ca3 100644 --- a/wp-admin/admin-functions.php +++ b/wp-admin/admin-functions.php @@ -969,7 +969,7 @@ function get_post_meta_by_id($mid) { } function touch_time($edit = 1, $for_post = 1) { - global $month, $post, $comment; + global $wp_locale, $post, $comment; if ( $for_post ) $edit = ( ('draft' == $post->post_status) && (!$post->post_date || '0000-00-00 00:00:00' == $post->post_date) ) ? false : true; @@ -989,13 +989,8 @@ function touch_time($edit = 1, $for_post = 1) { for ($i = 1; $i < 13; $i = $i +1) { echo "\t\t\t\n"; + echo ' selected="selected"'; + echo '>' . $wp_locale->get_month($i) . "\n"; } ?> @@ -1007,7 +1002,8 @@ function touch_time($edit = 1, $for_post = 1) { get_month($mm) . "$jj, $aa @ $hh:$mn"; + echo sprintf(__(': %1$s %2$s, %3$s @ %4$s:%5$s'), $wp_locale->get_month($mm), $jj, $aa, $hh, $mn); } ?> diff --git a/wp-admin/edit.php b/wp-admin/edit.php index 19a66fcf95..f88ec9b0a4 100644 --- a/wp-admin/edit.php +++ b/wp-admin/edit.php @@ -93,14 +93,15 @@ if ( count($arc_result) ) { ?> foreach ($arc_result as $arc_row) { $arc_year = $arc_row->yyear; $arc_month = $arc_row->mmonth; + $arc_month = zeroise($arc_month, 2); - if( isset($_GET['m']) && $arc_year . zeroise($arc_month, 2) == (int) $_GET['m'] ) + if( isset($_GET['m']) && $arc_year . $arc_month == (int) $_GET['m'] ) $default = 'selected="selected"'; else $default = null; - echo "\n"; } ?> diff --git a/wp-admin/options-general.php b/wp-admin/options-general.php index 738565c9ae..5465ae5275 100644 --- a/wp-admin/options-general.php +++ b/wp-admin/options-general.php @@ -94,9 +94,8 @@ foreach($wp_roles->role_names as $role => $name) { diff --git a/wp-includes/functions.php b/wp-includes/functions.php index cb4ac0b645..c00d5081e0 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -16,7 +16,7 @@ function get_profile($field, $user = false) { } function mysql2date($dateformatstring, $mysqlstring, $translate = true) { - global $month, $weekday, $month_abbrev, $weekday_abbrev; + global $wp_locale; $m = $mysqlstring; if ( empty($m) ) { return false; @@ -29,16 +29,20 @@ function mysql2date($dateformatstring, $mysqlstring, $translate = true) { if ( -1 == $i || false == $i ) $i = 0; - if ( !empty($month) && !empty($weekday) && $translate ) { - $datemonth = $month[date('m', $i)]; - $datemonth_abbrev = $month_abbrev[$datemonth]; - $dateweekday = $weekday[date('w', $i)]; - $dateweekday_abbrev = $weekday_abbrev[$dateweekday]; + if ( !empty($wp_locale->month) && !empty($wp_locale->weekday) && $translate ) { + $datemonth = $wp_locale->get_month(date('m', $i)); + $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); + $dateweekday = $wp_locale->get_weekday(date('w', $i)); + $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); + $datemeridiem = $wp_locale->get_meridiem(date('a', $i)); + $datemeridiem_capital = $wp_locale->get_meridiem(date('A', $i)); $dateformatstring = ' '.$dateformatstring; $dateformatstring = preg_replace("/([^\\\])D/", "\${1}".backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])F/", "\${1}".backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])l/", "\${1}".backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])M/", "\${1}".backslashit($datemonth_abbrev), $dateformatstring); + $dateformatstring = preg_replace("/([^\\\])a/", "\${1}".backslashit($datemeridiem), $dateformatstring); + $dateformatstring = preg_replace("/([^\\\])A/", "\${1}".backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring)-1); } @@ -66,23 +70,28 @@ function current_time($type, $gmt = 0) { } function date_i18n($dateformatstring, $unixtimestamp) { - global $month, $weekday, $month_abbrev, $weekday_abbrev; + global $wp_locale; $i = $unixtimestamp; - if ( (!empty($month)) && (!empty($weekday)) ) { - $datemonth = $month[date('m', $i)]; - $datemonth_abbrev = $month_abbrev[$datemonth]; - $dateweekday = $weekday[date('w', $i)]; - $dateweekday_abbrev = $weekday_abbrev[$dateweekday]; + if ( (!empty($wp_locale->month)) && (!empty($wp_locale->weekday)) ) { + $datemonth = $wp_locale->get_month(date('m', $i)); + $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); + $dateweekday = $wp_locale->get_weekday(date('w', $i)); + $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); + $datemeridiem = $wp_locale->get_meridiem(date('a', $i)); + $datemeridiem_capital = $wp_locale->get_meridiem(date('A', $i)); $dateformatstring = ' '.$dateformatstring; $dateformatstring = preg_replace("/([^\\\])D/", "\${1}".backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])F/", "\${1}".backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])l/", "\${1}".backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])M/", "\${1}".backslashit($datemonth_abbrev), $dateformatstring); + $dateformatstring = preg_replace("/([^\\\])a/", "\${1}".backslashit($datemeridiem), $dateformatstring); + $dateformatstring = preg_replace("/([^\\\])A/", "\${1}".backslashit($datemeridiem_capital), $dateformatstring); + $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring)-1); } $j = @date($dateformatstring, $i); return $j; - } +} function get_weekstartend($mysqlstring, $start_of_week) { $my = substr($mysqlstring,0,4); diff --git a/wp-includes/locale.php b/wp-includes/locale.php index 7af4deac4f..b62c9285d2 100644 --- a/wp-includes/locale.php +++ b/wp-includes/locale.php @@ -1,70 +1,131 @@ $weekday_initial_) { - $weekday_initial[$weekday_] = preg_replace('/_.+_initial$/', '', $weekday_initial_); -} + var $meridiem; -// Abbreviations for each day. -$weekday_abbrev[__('Sunday')] = __('Sun'); -$weekday_abbrev[__('Monday')] = __('Mon'); -$weekday_abbrev[__('Tuesday')] = __('Tue'); -$weekday_abbrev[__('Wednesday')] = __('Wed'); -$weekday_abbrev[__('Thursday')] = __('Thu'); -$weekday_abbrev[__('Friday')] = __('Fri'); -$weekday_abbrev[__('Saturday')] = __('Sat'); + function init() { + // The Weekdays + $this->weekday[0] = __('Sunday'); + $this->weekday[1] = __('Monday'); + $this->weekday[2] = __('Tuesday'); + $this->weekday[3] = __('Wednesday'); + $this->weekday[4] = __('Thursday'); + $this->weekday[5] = __('Friday'); + $this->weekday[6] = __('Saturday'); -// The Months -$month['01'] = __('January'); -$month['02'] = __('February'); -$month['03'] = __('March'); -$month['04'] = __('April'); -$month['05'] = __('May'); -$month['06'] = __('June'); -$month['07'] = __('July'); -$month['08'] = __('August'); -$month['09'] = __('September'); -$month['10'] = __('October'); -$month['11'] = __('November'); -$month['12'] = __('December'); + // The first letter of each day. The _%day%_initial suffix is a hack to make + // sure the day initials are unique. + $this->weekday_initial[__('Sunday')] = __('S_Sunday_initial'); + $this->weekday_initial[__('Monday')] = __('M_Monday_initial'); + $this->weekday_initial[__('Tuesday')] = __('T_Tuesday_initial'); + $this->weekday_initial[__('Wednesday')] = __('W_Wednesday_initial'); + $this->weekday_initial[__('Thursday')] = __('T_Thursday_initial'); + $this->weekday_initial[__('Friday')] = __('F_Friday_initial'); + $this->weekday_initial[__('Saturday')] = __('S_Saturday_initial'); -// Abbreviations for each month. Uses the same hack as above to get around the -// 'May' duplication. -$month_abbrev[__('January')] = __('Jan_January_abbreviation'); -$month_abbrev[__('February')] = __('Feb_February_abbreviation'); -$month_abbrev[__('March')] = __('Mar_March_abbreviation'); -$month_abbrev[__('April')] = __('Apr_April_abbreviation'); -$month_abbrev[__('May')] = __('May_May_abbreviation'); -$month_abbrev[__('June')] = __('Jun_June_abbreviation'); -$month_abbrev[__('July')] = __('Jul_July_abbreviation'); -$month_abbrev[__('August')] = __('Aug_August_abbreviation'); -$month_abbrev[__('September')] = __('Sep_September_abbreviation'); -$month_abbrev[__('October')] = __('Oct_October_abbreviation'); -$month_abbrev[__('November')] = __('Nov_November_abbreviation'); -$month_abbrev[__('December')] = __('Dec_December_abbreviation'); + foreach ($this->weekday_initial as $weekday_ => $weekday_initial_) { + $this->weekday_initial[$weekday_] = preg_replace('/_.+_initial$/', '', $weekday_initial_); + } -foreach ($month_abbrev as $month_ => $month_abbrev_) { - $month_abbrev[$month_] = preg_replace('/_.+_abbreviation$/', '', $month_abbrev_); + // Abbreviations for each day. + $this->weekday_abbrev[__('Sunday')] = __('Sun'); + $this->weekday_abbrev[__('Monday')] = __('Mon'); + $this->weekday_abbrev[__('Tuesday')] = __('Tue'); + $this->weekday_abbrev[__('Wednesday')] = __('Wed'); + $this->weekday_abbrev[__('Thursday')] = __('Thu'); + $this->weekday_abbrev[__('Friday')] = __('Fri'); + $this->weekday_abbrev[__('Saturday')] = __('Sat'); + + // The Months + $this->month['01'] = __('January'); + $this->month['02'] = __('February'); + $this->month['03'] = __('March'); + $this->month['04'] = __('April'); + $this->month['05'] = __('May'); + $this->month['06'] = __('June'); + $this->month['07'] = __('July'); + $this->month['08'] = __('August'); + $this->month['09'] = __('September'); + $this->month['10'] = __('October'); + $this->month['11'] = __('November'); + $this->month['12'] = __('December'); + + // Abbreviations for each month. Uses the same hack as above to get around the + // 'May' duplication. + $this->month_abbrev[__('January')] = __('Jan_January_abbreviation'); + $this->month_abbrev[__('February')] = __('Feb_February_abbreviation'); + $this->month_abbrev[__('March')] = __('Mar_March_abbreviation'); + $this->month_abbrev[__('April')] = __('Apr_April_abbreviation'); + $this->month_abbrev[__('May')] = __('May_May_abbreviation'); + $this->month_abbrev[__('June')] = __('Jun_June_abbreviation'); + $this->month_abbrev[__('July')] = __('Jul_July_abbreviation'); + $this->month_abbrev[__('August')] = __('Aug_August_abbreviation'); + $this->month_abbrev[__('September')] = __('Sep_September_abbreviation'); + $this->month_abbrev[__('October')] = __('Oct_October_abbreviation'); + $this->month_abbrev[__('November')] = __('Nov_November_abbreviation'); + $this->month_abbrev[__('December')] = __('Dec_December_abbreviation'); + + foreach ($this->month_abbrev as $month_ => $month_abbrev_) { + $this->month_abbrev[$month_] = preg_replace('/_.+_abbreviation$/', '', $month_abbrev_); + } + + // The Meridiems + $this->meridiem['am'] = __('am'); + $this->meridiem['pm'] = __('pm'); + $this->meridiem['AM'] = __('AM'); + $this->meridiem['PM'] = __('PM'); + } + + function get_weekday($weekday_number) { + return $this->weekday[$weekday_number]; + } + + function get_weekday_initial($weekday_name) { + return $this->weekday_initial[$weekday_name]; + } + + function get_weekday_abbrev($weekday_name) { + return $this->weekday_abbrev[$weekday_name]; + } + + function get_month($month_number) { + return $this->month[zeroise($month_number, 2)]; + } + + function get_month_initial($month_name) { + return $this->month_initial[$month_name]; + } + + function get_month_abbrev($month_name) { + return $this->month_abbrev[$month_name]; + } + + function get_meridiem($meridiem) { + return $this->meridiem[$meridiem]; + } + + // Global variables are deprecated. For backwards compatibility only. + function register_globals() { + $GLOBALS['weekday'] = $this->weekday; + $GLOBALS['weekday_initial'] = $this->weekday_initial; + $GLOBALS['weekday_abbrev'] = $this->weekday_abbrev; + $GLOBALS['month'] = $this->month; + $GLOBALS['month_abbrev'] = $this->month_abbrev; + } + + function WP_Locale() { + $this->init(); + $this->register_globals(); + } } ?> \ No newline at end of file diff --git a/wp-includes/template-functions-general.php b/wp-includes/template-functions-general.php index 4a0fd89c12..c88627fcad 100644 --- a/wp-includes/template-functions-general.php +++ b/wp-includes/template-functions-general.php @@ -134,7 +134,7 @@ function get_bloginfo($show='') { function wp_title($sep = '»', $display = true) { global $wpdb; - global $m, $year, $monthnum, $day, $category_name, $month, $posts; + global $m, $year, $monthnum, $day, $category_name, $wp_locale, $posts; $cat = get_query_var('cat'); $p = get_query_var('p'); @@ -173,14 +173,14 @@ function wp_title($sep = '»', $display = true) { // If there's a month if ( !empty($m) ) { $my_year = substr($m, 0, 4); - $my_month = $month[substr($m, 4, 2)]; + $my_month = $wp_locale->get_month($m); $title = "$my_year $sep $my_month"; } if ( !empty($year) ) { $title = $year; if ( !empty($monthnum) ) - $title .= " $sep ".$month[zeroise($monthnum, 2)]; + $title .= " $sep ".$wp_locale->get_month($monthnum); if ( !empty($day) ) $title .= " $sep ".zeroise($day, 2); } @@ -240,13 +240,13 @@ function single_cat_title($prefix = '', $display = true ) { function single_month_title($prefix = '', $display = true ) { - global $m, $monthnum, $month, $year; + global $m, $monthnum, $wp_locale, $year; if ( !empty($monthnum) && !empty($year) ) { $my_year = $year; - $my_month = $month[str_pad($monthnum, 2, '0', STR_PAD_LEFT)]; + $my_month = $wp_locale->get_month($monthnum); } elseif ( !empty($m) ) { $my_year = substr($m, 0, 4); - $my_month = $month[substr($m, 4, 2)]; + $my_month = $wp_locale->get_month($m); } if ( !empty($my_month) && $display ) @@ -292,7 +292,7 @@ function wp_get_archives($args = '') { function get_archives($type='', $limit='', $format='html', $before = '', $after = '', $show_post_count = false) { - global $month, $wpdb; + global $wp_locale, $wpdb; if ( '' == $type ) $type = 'monthly'; @@ -330,10 +330,10 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after foreach ( $arcresults as $arcresult ) { $url = get_month_link($arcresult->year, $arcresult->month); if ( $show_post_count ) { - $text = sprintf('%s %d', $month[zeroise($arcresult->month,2)], $arcresult->year); + $text = sprintf('%s %d', $wp_locale->get_month($arcresult->month), $arcresult->year); $after = ' ('.$arcresult->posts.')' . $afterafter; } else { - $text = sprintf('%s %d', $month[zeroise($arcresult->month,2)], $arcresult->year); + $text = sprintf('%s %d', $wp_locale->get_month($arcresult->month), $arcresult->year); } echo get_archives_link($url, $text, $format, $before, $after); } @@ -393,8 +393,8 @@ function calendar_week_mod($num) { } -function get_calendar($daylength = 1) { - global $wpdb, $m, $monthnum, $year, $timedifference, $month, $month_abbrev, $weekday, $weekday_initial, $weekday_abbrev, $posts; +function get_calendar($initial = true) { + global $wpdb, $m, $monthnum, $year, $timedifference, $wp_locale, $posts; // Quick check. If we have no posts at all, abort! if ( !$posts ) { @@ -450,22 +450,19 @@ function get_calendar($daylength = 1) { LIMIT 1"); echo ' - + '; - $day_abbrev = $weekday_initial; - if ( $daylength > 1 ) - $day_abbrev = $weekday_abbrev; - $myweek = array(); for ( $wdcount=0; $wdcount<=6; $wdcount++ ) { - $myweek[]=$weekday[($wdcount+$week_begins)%7]; + $myweek[] = $wp_locale->get_weekday(($wdcount+$week_begins)%7); } foreach ( $myweek as $wd ) { - echo "\n\t\t'; + $day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd); + echo "\n\t\t"; } echo ' @@ -476,9 +473,9 @@ function get_calendar($daylength = 1) { '; if ( $previous ) { - echo "\n\t\t".''; + echo "\n\t\t".''; } else { echo "\n\t\t".''; } @@ -486,9 +483,9 @@ function get_calendar($daylength = 1) { echo "\n\t\t".''; if ( $next ) { - echo "\n\t\t".''; + echo "\n\t\t".''; } else { echo "\n\t\t".''; } @@ -675,19 +672,19 @@ function get_post_modified_time( $d = 'U', $gmt = false ) { // returns timestamp function the_weekday() { - global $weekday, $id, $post; - $the_weekday = $weekday[mysql2date('w', $post->post_date)]; + global $wp_locale, $id, $post; + $the_weekday = $wp_locale->get_weekday(mysql2date('w', $post->post_date)); $the_weekday = apply_filters('the_weekday', $the_weekday); echo $the_weekday; } function the_weekday_date($before='',$after='') { - global $weekday, $id, $post, $day, $previousweekday; + global $wp_locale, $id, $post, $day, $previousweekday; $the_weekday_date = ''; if ( $day != $previousweekday ) { $the_weekday_date .= $before; - $the_weekday_date .= $weekday[mysql2date('w', $post->post_date)]; + $the_weekday_date .= $wp_locale->get_weekday(mysql2date('w', $post->post_date)); $the_weekday_date .= $after; $previousweekday = $day; } diff --git a/wp-settings.php b/wp-settings.php index 5a06451b71..dfe17b2a6f 100644 --- a/wp-settings.php +++ b/wp-settings.php @@ -214,6 +214,8 @@ load_default_textdomain(); // Pull in locale data after loading text domain. require_once(ABSPATH . WPINC . '/locale.php'); +$wp_locale = new WP_Locale(); + // Load functions for active theme. if ( file_exists(TEMPLATEPATH . "/functions.php") ) include(TEMPLATEPATH . "/functions.php");
' . $month[zeroise($thismonth, 2)] . ' ' . date('Y', $unixmonth) . '' . $wp_locale->get_month($thismonth) . ' ' . date('Y', $unixmonth) . '
" . $day_abbrev[$wd] . '$day_name
« ' . $month_abbrev[$month[zeroise($previous->month, 2)]] . '« ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '  ' . $month_abbrev[$month[zeroise($next->month, 2)]] . ' »' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' »