mirror of
https://github.com/scratchfoundation/jquery-timeago.git
synced 2024-11-23 15:57:54 -05:00
Added language (aka i18n, aka locale) support.
* Use $.timeago.settings.strings to override the default english verbiage
This commit is contained in:
parent
72fc2cecdc
commit
b30865ba11
2 changed files with 57 additions and 20 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* timeago: a jQuery plugin, version: 0.4 (08/05/2008)
|
* timeago: a jQuery plugin, version: 0.5 (08/19/2008)
|
||||||
* @requires jQuery v1.2 or later
|
* @requires jQuery v1.2 or later
|
||||||
*
|
*
|
||||||
* Timeago is a jQuery plugin that makes it easy to support automatically
|
* Timeago is a jQuery plugin that makes it easy to support automatically
|
||||||
|
@ -19,16 +19,33 @@
|
||||||
else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp));
|
else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp));
|
||||||
else return inWords($.timeago.parse($(timestamp).attr("title")));
|
else return inWords($.timeago.parse($(timestamp).attr("title")));
|
||||||
};
|
};
|
||||||
|
var $t = $.timeago;
|
||||||
|
|
||||||
$.extend($.timeago, {
|
$.extend($.timeago, {
|
||||||
settings: {
|
settings: {
|
||||||
refreshMillis: 60000,
|
refreshMillis: 60000,
|
||||||
allowFuture: false
|
allowFuture: false,
|
||||||
|
strings: {
|
||||||
|
ago: "ago",
|
||||||
|
fromNow: "from now",
|
||||||
|
seconds: "less than a minute",
|
||||||
|
minute: "about a minute",
|
||||||
|
minutes: "%d minutes",
|
||||||
|
hour: "about an hour",
|
||||||
|
hours: "about %d hours",
|
||||||
|
day: "a day",
|
||||||
|
days: "%d days",
|
||||||
|
month: "about a month",
|
||||||
|
months: "%d months",
|
||||||
|
year: "about a year",
|
||||||
|
years: "%d years"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
inWords: function(distanceMillis) {
|
inWords: function(distanceMillis) {
|
||||||
var suffix = " ago";
|
var $l = this.settings.strings;
|
||||||
|
var suffix = $l.ago;
|
||||||
if (this.settings.allowFuture) {
|
if (this.settings.allowFuture) {
|
||||||
if (distanceMillis < 0) suffix = " from now";
|
if (distanceMillis < 0) suffix = $l.fromNow;
|
||||||
distanceMillis = Math.abs(distanceMillis);
|
distanceMillis = Math.abs(distanceMillis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,19 +55,19 @@
|
||||||
var days = hours / 24;
|
var days = hours / 24;
|
||||||
var years = days / 365;
|
var years = days / 365;
|
||||||
|
|
||||||
var words = seconds < 45 && "less than a minute" ||
|
var words = seconds < 45 && sprintf($l.seconds, Math.round(seconds)) ||
|
||||||
seconds < 90 && "about a minute" ||
|
seconds < 90 && $l.minute ||
|
||||||
minutes < 45 && Math.round(minutes) + " minutes" ||
|
minutes < 45 && sprintf($l.minutes, Math.round(minutes)) ||
|
||||||
minutes < 90 && "about an hour" ||
|
minutes < 90 && $l.hour ||
|
||||||
hours < 24 && "about " + Math.round(hours) + " hours" ||
|
hours < 24 && sprintf($l.hours, Math.round(hours)) ||
|
||||||
hours < 48 && "a day" ||
|
hours < 48 && $l.day ||
|
||||||
days < 30 && Math.floor(days) + " days" ||
|
days < 30 && sprintf($l.days, Math.floor(days)) ||
|
||||||
days < 60 && "about a month" ||
|
days < 60 && $l.month ||
|
||||||
days < 365 && Math.floor(days / 30) + " months" ||
|
days < 365 && sprintf($l.months, Math.floor(days / 30)) ||
|
||||||
years < 2 && "about a year" ||
|
years < 2 && $l.year ||
|
||||||
Math.floor(years) + " years";
|
sprintf($l.years, Math.floor(years));
|
||||||
|
|
||||||
return words + suffix;
|
return words + " " + suffix;
|
||||||
},
|
},
|
||||||
parse: function(iso8601) {
|
parse: function(iso8601) {
|
||||||
var s = $.trim(iso8601);
|
var s = $.trim(iso8601);
|
||||||
|
@ -65,7 +82,7 @@
|
||||||
var self = this;
|
var self = this;
|
||||||
self.each(refresh);
|
self.each(refresh);
|
||||||
|
|
||||||
var $s = $.timeago.settings;
|
var $s = $t.settings;
|
||||||
if ($s.refreshMillis > 0) {
|
if ($s.refreshMillis > 0) {
|
||||||
setInterval(function() { self.each(refresh); }, $s.refreshMillis);
|
setInterval(function() { self.each(refresh); }, $s.refreshMillis);
|
||||||
}
|
}
|
||||||
|
@ -73,7 +90,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
function refresh() {
|
function refresh() {
|
||||||
var date = $.timeago.parse(this.title);
|
var date = $t.parse(this.title);
|
||||||
if (!isNaN(date)) {
|
if (!isNaN(date)) {
|
||||||
$(this).text(inWords(date));
|
$(this).text(inWords(date));
|
||||||
}
|
}
|
||||||
|
@ -81,11 +98,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function inWords(date) {
|
function inWords(date) {
|
||||||
return $.timeago.inWords(distance(date));
|
return $t.inWords(distance(date));
|
||||||
}
|
}
|
||||||
|
|
||||||
function distance(date) {
|
function distance(date) {
|
||||||
return (new Date().getTime() - date.getTime());
|
return (new Date().getTime() - date.getTime());
|
||||||
}
|
}
|
||||||
})(jQuery);
|
|
||||||
|
|
||||||
|
// lame sprintf implementation
|
||||||
|
function sprintf(string, value) {
|
||||||
|
return string.replace(/%d/i, value);
|
||||||
|
}
|
||||||
|
})(jQuery);
|
||||||
|
|
16
test.html
16
test.html
|
@ -9,6 +9,22 @@
|
||||||
<script src="test.js" type="text/javascript"></script>
|
<script src="test.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
jQuery.timeago.settings.allowFuture = true;
|
jQuery.timeago.settings.allowFuture = true;
|
||||||
|
// jQuery.timeago.settings.strings = {
|
||||||
|
// ago: "geleden",
|
||||||
|
// fromNow: "vanaf nu",
|
||||||
|
// seconds: "iets minder dan een minute",
|
||||||
|
// minute: "ongeveer een minuut",
|
||||||
|
// minutes: "%d minuten",
|
||||||
|
// hour: "ongeveer een uur",
|
||||||
|
// hours: "ongeveer %d uren",
|
||||||
|
// day: "een dag",
|
||||||
|
// days: "%d dagen",
|
||||||
|
// month: "ongeveer een maand",
|
||||||
|
// months: "%d maanden",
|
||||||
|
// year: "ongeveer een jaar",
|
||||||
|
// years: "%d jaar"
|
||||||
|
// };
|
||||||
|
|
||||||
jQuery(document).ready(function($) {
|
jQuery(document).ready(function($) {
|
||||||
// functional tests
|
// functional tests
|
||||||
$('abbr[class*=timeago]').timeago();
|
$('abbr[class*=timeago]').timeago();
|
||||||
|
|
Loading…
Reference in a new issue