aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-02-19 19:07:07 -0800
committerredmatrix <git@macgirvin.com>2016-02-19 19:07:07 -0800
commitd004017b019c80e3bcb3852f9f9a3714967dfd8a (patch)
tree83e101875a56dcb70d06ac14cf1dd69564fcb907
parent1db3409f36f408bfc49816e1fab3df4b53b8f19e (diff)
downloadvolse-hubzilla-d004017b019c80e3bcb3852f9f9a3714967dfd8a.tar.gz
volse-hubzilla-d004017b019c80e3bcb3852f9f9a3714967dfd8a.tar.bz2
volse-hubzilla-d004017b019c80e3bcb3852f9f9a3714967dfd8a.zip
issue #288 allow relative_date() to be translated into languages with more than two plural forms, such as pl.
-rw-r--r--include/datetime.php49
1 files changed, 41 insertions, 8 deletions
diff --git a/include/datetime.php b/include/datetime.php
index 1d10e7ad7..bfd806f32 100644
--- a/include/datetime.php
+++ b/include/datetime.php
@@ -269,15 +269,16 @@ function relative_date($posted_date, $format = null) {
return t('less than a second ago');
}
- $a = array( 12 * 30 * 24 * 60 * 60 => array( t('year'), t('years')),
- 30 * 24 * 60 * 60 => array( t('month'), t('months')),
- 7 * 24 * 60 * 60 => array( t('week'), t('weeks')),
- 24 * 60 * 60 => array( t('day'), t('days')),
- 60 * 60 => array( t('hour'), t('hours')),
- 60 => array( t('minute'), t('minutes')),
- 1 => array( t('second'), t('seconds'))
+ $a = array( 12 * 30 * 24 * 60 * 60 => 'y',
+ 30 * 24 * 60 * 60 => 'm',
+ 7 * 24 * 60 * 60 => 'w',
+ 24 * 60 * 60 => 'd',
+ 60 * 60 => 'h',
+ 60 => 'i',
+ 1 => 's'
);
+
foreach ($a as $secs => $str) {
$d = $etime / $secs;
if ($d >= 1) {
@@ -285,11 +286,43 @@ function relative_date($posted_date, $format = null) {
if (! $format)
$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.
*