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 '
- ' . $month[zeroise($thismonth, 2)] . ' ' . date('Y', $unixmonth) . '
+ ' . $wp_locale->get_month($thismonth) . ' ' . date('Y', $unixmonth) . '
';
- $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_abbrev[$wd] . ' | ';
+ $day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd);
+ echo "\n\t\t$day_name | ";
}
echo '
@@ -476,9 +473,9 @@ function get_calendar($daylength = 1) {
';
if ( $previous ) {
- echo "\n\t\t".'| « ' . $month_abbrev[$month[zeroise($previous->month, 2)]] . ' | ';
+ echo "\n\t\t".'« ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . ' | ';
} else {
echo "\n\t\t".' | ';
}
@@ -486,9 +483,9 @@ function get_calendar($daylength = 1) {
echo "\n\t\t".' | ';
if ( $next ) {
- echo "\n\t\t".'' . $month_abbrev[$month[zeroise($next->month, 2)]] . ' » | ';
+ echo "\n\t\t".'' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' » | ';
} 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");