diff options
author | Paul Arthur <paul.arthur@flowerysong.com> | 2012-04-12 15:28:49 -0400 |
---|---|---|
committer | Paul Arthur <paul.arthur@flowerysong.com> | 2012-04-12 15:33:36 -0400 |
commit | 50e4c54558b4e93091882344876e24ff0575a6e0 (patch) | |
tree | a602f065067ac1402b6f7192399cf302c0b6ea47 /templates/show_recently_played.inc.php | |
parent | 1c2de3015039e229357a8dd724eaddf3d7a56efb (diff) | |
download | ampache-50e4c54558b4e93091882344876e24ff0575a6e0.tar.gz ampache-50e4c54558b4e93091882344876e24ff0575a6e0.tar.bz2 ampache-50e4c54558b4e93091882344876e24ff0575a6e0.zip |
Fix pluralisation issue in Recently Played
Previously we would say things like "1 seconds" and "1 hours". Using
the magic of ngettext and sprintf we can get rid of the static
concatenation order and become theoretically more translatable as well
as more correct in English.
Also changed the logic a bit, since the old looping method was
unfriendly to my brain.
Diffstat (limited to 'templates/show_recently_played.inc.php')
-rw-r--r-- | templates/show_recently_played.inc.php | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/templates/show_recently_played.inc.php b/templates/show_recently_played.inc.php index 8a4da36c..a1b08604 100644 --- a/templates/show_recently_played.inc.php +++ b/templates/show_recently_played.inc.php @@ -26,8 +26,6 @@ * @link http://www.ampache.org/ */ -/* Define the time places starting at 0 */ -$time_unit = array('',_('seconds ago'),_('minutes ago'),_('hours ago'),_('days ago'),_('weeks ago'),_('months ago'),_('years ago')); $link = Config::get('use_rss') ? ' ' . AmpacheRSS::get_display('recently_played') : ''; show_box_top(_('Recently Played') . $link, 'box box_recently_played'); ?> @@ -51,34 +49,42 @@ show_box_top(_('Recently Played') . $link, 'box box_recently_played'); <?php foreach ($data as $row) { $row_user = new User($row['user']); $song = new Song($row['object_id']); - $amount = intval(time() - $row['date']+2); - $time_place = '0'; + $interval = intval(time() - $row['date']); - while ($amount >= 1) { - $final = $amount; - $time_place++; - if ($time_place <= 2) { - $amount = floor($amount/60); - } - if ($time_place == '3') { - $amount = floor($amount/24); - } - if ($time_place == '4') { - $amount = floor($amount/7); - } - if ($time_place == '5') { - $amount = floor($amount/4); - } - if ($time_place == '6') { - $amount = floor ($amount/12); - } - if ($time_place > '6') { - $final = $amount . '+'; - break; - } + if ($interval < 60) { + $unit = 'seconds'; + } + else if ($interval < 3600) { + $interval = floor($interval / 60); + $unit = 'minutes'; + } + else if ($interval < 86400) { + $interval = floor($interval / 60); + $unit = 'hours'; + } + else if ($interval < 604800) { + $interval = floor($interval / 86400); + $unit = 'days'; + } + else if ($interval < 2592000) { + $interval = floor($interval / 604800); + $unit = 'weeks'; + } + else if ($interval < 31556926) { + $interval = floor($interval / 2592000); + $unit = 'months'; + } + else if ($interval < 631138519) { + $interval = floor($interval / 31556926); + $unit = 'years'; + } + else { + $interval = floor($interval / 315569260); + $unit = 'decades'; } - $time_string = $final . ' ' . $time_unit[$time_place]; + // I wonder how smart gettext is? + $time_string = sprintf(ngettext('%d ' . rtrim($unit, 's') . ' ago', '%d ' . $unit . ' ago', $interval), $interval); $song->format(); ?> |