WP_Locale. Props Sewar. fixes #2568

git-svn-id: http://svn.automattic.com/wordpress/trunk@3676 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2006-04-02 00:20:11 +00:00
parent a165dc1e5b
commit 3d2347a655
7 changed files with 179 additions and 114 deletions

View File

@ -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<option value=\"$i\"";
if ($i == $mm)
echo " selected='selected'";
if ($i < 10) {
$ii = "0".$i;
} else {
$ii = "$i";
}
echo ">".$month["$ii"]."</option>\n";
echo ' selected="selected"';
echo '>' . $wp_locale->get_month($i) . "</option>\n";
}
?>
</select>
@ -1007,7 +1002,8 @@ function touch_time($edit = 1, $for_post = 1) {
<?php
if ( $edit ) {
_e('Existing timestamp');
echo ": {$month[$mm]} $jj, $aa @ $hh:$mn";
//echo ': ' . $wp_locale->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);
}
?>
</fieldset>

View File

@ -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 "<option $default value=\"" . $arc_year.zeroise($arc_month, 2) . '">';
echo $month[zeroise($arc_month, 2)] . " $arc_year";
echo "<option $default value=\"" . $arc_year . $arc_month . '">';
echo $wp_locale->get_month($arc_month) . " $arc_year";
echo "</option>\n";
}
?>

View File

@ -94,9 +94,8 @@ foreach($wp_roles->role_names as $role => $name) {
<td><select name="start_of_week" id="start_of_week">
<?php
for ($day_index = 0; $day_index <= 6; $day_index++) :
if ($day_index == get_settings('start_of_week')) $selected = " selected='selected'";
else $selected = '';
echo "\n\t<option value='$day_index' $selected>$weekday[$day_index]</option>";
$selected = (get_settings('start_of_week') == $day_index) ? 'selected="selected"' : '';
echo "\n\t<option value='$day_index' $selected>" . $wp_locale->get_weekday($day_index) . '</option>';
endfor;
?>
</select></td>

View File

@ -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);

View File

@ -1,70 +1,131 @@
<?php
// Date and Time
// The Weekdays
$weekday[0] = __('Sunday');
$weekday[1] = __('Monday');
$weekday[2] = __('Tuesday');
$weekday[3] = __('Wednesday');
$weekday[4] = __('Thursday');
$weekday[5] = __('Friday');
$weekday[6] = __('Saturday');
class WP_Locale {
var $weekday;
var $weekday_initial;
var $weekday_abbrev;
// The first letter of each day. The _%day%_initial suffix is a hack to make
// sure the day initials are unique. They should be translated to a one
// letter initial.
$weekday_initial[__('Sunday')] = __('S_Sunday_initial');
$weekday_initial[__('Monday')] = __('M_Monday_initial');
$weekday_initial[__('Tuesday')] = __('T_Tuesday_initial');
$weekday_initial[__('Wednesday')] = __('W_Wednesday_initial');
$weekday_initial[__('Thursday')] = __('T_Thursday_initial');
$weekday_initial[__('Friday')] = __('F_Friday_initial');
$weekday_initial[__('Saturday')] = __('S_Saturday_initial');
var $month;
var $month_abbrev;
foreach ($weekday_initial as $weekday_ => $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();
}
}
?>

View File

@ -134,7 +134,7 @@ function get_bloginfo($show='') {
function wp_title($sep = '&raquo;', $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 = '&raquo;', $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 = '&nbsp;('.$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 '<table id="wp-calendar">
<caption>' . $month[zeroise($thismonth, 2)] . ' ' . date('Y', $unixmonth) . '</caption>
<caption>' . $wp_locale->get_month($thismonth) . ' ' . date('Y', $unixmonth) . '</caption>
<thead>
<tr>';
$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<th abbr=\"$wd\" scope=\"col\" title=\"$wd\">" . $day_abbrev[$wd] . '</th>';
$day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd);
echo "\n\t\t<th abbr=\"$wd\" scope=\"col\" title=\"$wd\">$day_name</th>";
}
echo '
@ -476,9 +473,9 @@ function get_calendar($daylength = 1) {
<tr>';
if ( $previous ) {
echo "\n\t\t".'<td abbr="' . $month[zeroise($previous->month, 2)] . '" colspan="3" id="prev"><a href="' .
get_month_link($previous->year, $previous->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $month[zeroise($previous->month, 2)],
date('Y', mktime(0, 0 , 0, $previous->month, 1, $previous->year))) . '">&laquo; ' . $month_abbrev[$month[zeroise($previous->month, 2)]] . '</a></td>';
echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($previous->month) . '" colspan="3" id="prev"><a href="' .
get_month_link($previous->year, $previous->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($previous->month),
date('Y', mktime(0, 0 , 0, $previous->month, 1, $previous->year))) . '">&laquo; ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '</a></td>';
} else {
echo "\n\t\t".'<td colspan="3" id="prev" class="pad">&nbsp;</td>';
}
@ -486,9 +483,9 @@ function get_calendar($daylength = 1) {
echo "\n\t\t".'<td class="pad">&nbsp;</td>';
if ( $next ) {
echo "\n\t\t".'<td abbr="' . $month[zeroise($next->month, 2)] . '" colspan="3" id="next"><a href="' .
get_month_link($next->year, $next->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $month[zeroise($next->month, 2)],
date('Y', mktime(0, 0 , 0, $next->month, 1, $next->year))) . '">' . $month_abbrev[$month[zeroise($next->month, 2)]] . ' &raquo;</a></td>';
echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($next->month) . '" colspan="3" id="next"><a href="' .
get_month_link($next->year, $next->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($next->month),
date('Y', mktime(0, 0 , 0, $next->month, 1, $next->year))) . '">' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' &raquo;</a></td>';
} else {
echo "\n\t\t".'<td colspan="3" id="next" class="pad">&nbsp;</td>';
}
@ -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;
}

View File

@ -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");