issue #288 allow relative_date() to be translated into languages with more than two plural forms, such as pl.

This commit is contained in:
redmatrix 2016-02-19 19:07:07 -08:00
parent 1db3409f36
commit d004017b01

View File

@ -269,15 +269,16 @@ function relative_date($posted_date, $format = null) {
return t('less than a second ago'); return t('less than a second ago');
} }
$a = array( 12 * 30 * 24 * 60 * 60 => array( t('year'), t('years')), $a = array( 12 * 30 * 24 * 60 * 60 => 'y',
30 * 24 * 60 * 60 => array( t('month'), t('months')), 30 * 24 * 60 * 60 => 'm',
7 * 24 * 60 * 60 => array( t('week'), t('weeks')), 7 * 24 * 60 * 60 => 'w',
24 * 60 * 60 => array( t('day'), t('days')), 24 * 60 * 60 => 'd',
60 * 60 => array( t('hour'), t('hours')), 60 * 60 => 'h',
60 => array( t('minute'), t('minutes')), 60 => 'i',
1 => array( t('second'), t('seconds')) 1 => 's'
); );
foreach ($a as $secs => $str) { foreach ($a as $secs => $str) {
$d = $etime / $secs; $d = $etime / $secs;
if ($d >= 1) { if ($d >= 1) {
@ -285,11 +286,43 @@ function relative_date($posted_date, $format = null) {
if (! $format) if (! $format)
$format = t('%1$d %2$s ago', 'e.g. 22 hours ago, 1 minute ago'); $format = t('%1$d %2$s ago', 'e.g. 22 hours ago, 1 minute ago');
return sprintf($format, $r, (($r == 1) ? $str[0] : $str[1])); return sprintf($format, $r, plural_dates($str,$r));
} }
} }
} }
function plural_dates($k,$n) {
switch($k) {
case 'y':
return tt('year','years',$n,'relative_date');
break;
case 'm':
return tt('month','months',$n,'relative_date');
break;
case 'w':
return tt('week','weeks',$n,'relative_date');
break;
case 'd':
return tt('day','days',$n,'relative_date');
break;
case 'h':
return tt('hour','hours',$n,'relative_date');
break;
case 'i':
return tt('minute','minutes',$n,'relative_date');
break;
case 's':
return tt('second','seconds',$n,'relative_date');
break;
default:
return;
}
}
/** /**
* @brief Returns timezone correct age in years. * @brief Returns timezone correct age in years.
* *