Skip to content

Commit bdff08e

Browse files
committed
Support multiple locales concurrent
This commit extends the plugin to support loading and using mutliple locales at the same time. All strings are stored with their language code. The plugins gets a new `lang` setting denoting the default locale. For each HTML tag, the plugin will lookup `lang` attribute from the tag, the configured default lang, or fallback to english. It will use the `strings` object directly, if no lang key is found at all, therefore it supports loading and running with older or custom locale files that are directly assigning strings.
1 parent 4ada92e commit bdff08e

File tree

74 files changed

+204
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+204
-112
lines changed

jquery.timeago.js

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -46,34 +46,37 @@
4646
localeTitle: false,
4747
cutoff: 0,
4848
autoDispose: true,
49+
lang: "en",
4950
strings: {
50-
prefixAgo: null,
51-
prefixFromNow: null,
52-
suffixAgo: "ago",
53-
suffixFromNow: "from now",
54-
inPast: "any moment now",
55-
seconds: "less than a minute",
56-
minute: "about a minute",
57-
minutes: "%d minutes",
58-
hour: "about an hour",
59-
hours: "about %d hours",
60-
day: "a day",
61-
days: "%d days",
62-
month: "about a month",
63-
months: "%d months",
64-
year: "about a year",
65-
years: "%d years",
66-
wordSeparator: " ",
67-
numbers: []
51+
en: {
52+
prefixAgo: null,
53+
prefixFromNow: null,
54+
suffixAgo: "ago",
55+
suffixFromNow: "from now",
56+
inPast: "any moment now",
57+
seconds: "less than a minute",
58+
minute: "about a minute",
59+
minutes: "%d minutes",
60+
hour: "about an hour",
61+
hours: "about %d hours",
62+
day: "a day",
63+
days: "%d days",
64+
month: "about a month",
65+
months: "%d months",
66+
year: "about a year",
67+
years: "%d years",
68+
wordSeparator: " ",
69+
numbers: []
70+
}
6871
}
6972
},
7073

71-
inWords: function(distanceMillis) {
74+
inWords: function(distanceMillis, lang) {
7275
if (!this.settings.allowPast && ! this.settings.allowFuture) {
7376
throw 'timeago allowPast and allowFuture settings can not both be set to false.';
7477
}
7578

76-
var $l = this.settings.strings;
79+
var $l = this.settings.strings[lang] || this.settings.strings[this.settings.lang] || this.settings.strings["en"] || this.settings.strings;
7780
var prefix = $l.prefixAgo;
7881
var suffix = $l.suffixAgo;
7982
if (this.settings.allowFuture) {
@@ -84,7 +87,7 @@
8487
}
8588

8689
if (!this.settings.allowPast && distanceMillis >= 0) {
87-
return this.settings.strings.inPast;
90+
return $l.inPast;
8891
}
8992

9093
var seconds = Math.abs(distanceMillis) / 1000;
@@ -194,7 +197,7 @@
194197

195198
if (!isNaN(data.datetime)) {
196199
if ( $s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
197-
$(this).text(inWords(data.datetime));
200+
$(this).text(inWords(data.datetime, ($(this).attr('lang') ? $(this).attr('lang') : $t.settings.lang)));
198201
} else {
199202
if ($(this).attr('title').length > 0) {
200203
$(this).text($(this).attr('title'));
@@ -218,8 +221,8 @@
218221
return element.data("timeago");
219222
}
220223

221-
function inWords(date) {
222-
return $t.inWords(distance(date));
224+
function inWords(date, lang) {
225+
return $t.inWords(distance(date), lang);
223226
}
224227

225228
function distance(date) {

locales/jquery.timeago.af.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Afrikaans
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["af"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "gelede",

locales/jquery.timeago.am.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Amharic
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["am"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "በፊት",

locales/jquery.timeago.ar.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
return a[plural=n===0 ? 0 : n===1 ? 1 : n===2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5];
1212
}
1313

14-
jQuery.timeago.settings.strings = {
14+
jQuery.timeago.settings.strings["ar"] = {
1515
prefixAgo: "منذ",
1616
prefixFromNow: "بعد",
1717
suffixAgo: null,

locales/jquery.timeago.az-short.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Azerbaijani shortened
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["az-short"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "",

locales/jquery.timeago.az.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Azerbaijani
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["az"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: 'əvvəl',

locales/jquery.timeago.be.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
}
2424
}
2525

26-
jQuery.timeago.settings.strings = {
26+
jQuery.timeago.settings.strings["be"] = {
2727
prefixAgo: null,
2828
prefixFromNow: "праз",
2929
suffixAgo: "таму",

locales/jquery.timeago.bg.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Bulgarian
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["bg"] = {
1212
prefixAgo: "преди",
1313
prefixFromNow: "след",
1414
suffixAgo: null,

locales/jquery.timeago.bs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
}
2121
};
2222

23-
jQuery.timeago.settings.strings = {
23+
jQuery.timeago.settings.strings["bs"] = {
2424
prefixAgo: "prije",
2525
prefixFromNow: "za",
2626
suffixAgo: null,

locales/jquery.timeago.ca.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Catalan
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["ca"] = {
1212
prefixAgo: "fa",
1313
prefixFromNow: "d'aquí",
1414
suffixAgo: null,

locales/jquery.timeago.cs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
return a[d>=0 ? 0 : a.length===2 || n<5 ? 1 : 2];
1414
}
1515

16-
jQuery.timeago.settings.strings = {
16+
jQuery.timeago.settings.strings["cs"] = {
1717
prefixAgo: 'před',
1818
prefixFromNow: 'za',
1919
suffixAgo: null,

locales/jquery.timeago.cy.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Welsh
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["cy"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "yn ôl",

locales/jquery.timeago.da.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Danish
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["da"] = {
1212
prefixAgo: "for",
1313
prefixFromNow: "om",
1414
suffixAgo: "siden",

locales/jquery.timeago.de-short.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// German shortened
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["de-short"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "",

locales/jquery.timeago.de.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// German
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["de"] = {
1212
prefixAgo: "vor",
1313
prefixFromNow: "in",
1414
suffixAgo: "",

locales/jquery.timeago.dv.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/**
1111
* Dhivehi time in Thaana for timeago.js
1212
**/
13-
jQuery.timeago.settings.strings = {
13+
jQuery.timeago.settings.strings["dv"] = {
1414
prefixAgo: null,
1515
prefixFromNow: null,
1616
suffixAgo: "ކުރިން",

locales/jquery.timeago.el.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Greek
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["el"] = {
1212
prefixAgo: "πριν",
1313
prefixFromNow: "σε",
1414
suffixAgo: "",

locales/jquery.timeago.en-short.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// English shortened
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["en-short"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "",

locales/jquery.timeago.en.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// English (Template)
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["en"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "ago",

locales/jquery.timeago.eo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// English (Template) -> Esperanto
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["eo"] = {
1212
prefixAgo: "antaŭ",
1313
prefixFromNow: null,
1414
suffixAgo: null,

locales/jquery.timeago.es-short.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Spanish shortened
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["es-short"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "",

locales/jquery.timeago.es.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Spanish
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["es"] = {
1212
prefixAgo: "hace",
1313
prefixFromNow: "dentro de",
1414
suffixAgo: "",

locales/jquery.timeago.et.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Estonian
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["et"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "tagasi",

locales/jquery.timeago.eu.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
factory(jQuery);
88
}
99
}(function (jQuery) {
10-
jQuery.timeago.settings.strings = {
10+
jQuery.timeago.settings.strings["eu"] = {
1111
prefixAgo: "duela",
1212
prefixFromNow: "hemendik",
1313
suffixAgo: "",

locales/jquery.timeago.fa-short.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// persian shortened
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["fa-short"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "",

locales/jquery.timeago.fa.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// Persian
1111
// Use DIR attribute for RTL text in Persian Language for ABBR tag .
1212
// By MB.seifollahi@gmail.com
13-
jQuery.timeago.settings.strings = {
13+
jQuery.timeago.settings.strings["fa"] = {
1414
prefixAgo: null,
1515
prefixFromNow: null,
1616
suffixAgo: "پیش",

locales/jquery.timeago.fi.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Finnish
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["fi"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "sitten",

locales/jquery.timeago.fr-short.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// French shortened
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["fr-short"] = {
1212
prefixAgo: "il y a",
1313
prefixFromNow: "d'ici",
1414
seconds: "moins d'une minute",

locales/jquery.timeago.fr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// French
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["fr"] = {
1212
// environ ~= about, it's optional
1313
prefixAgo: "il y a",
1414
prefixFromNow: "d'ici",

locales/jquery.timeago.gl.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Galician
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["gl"] = {
1212
prefixAgo: "hai",
1313
prefixFromNow: "dentro de",
1414
suffixAgo: "",

locales/jquery.timeago.he.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Hebrew
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["he"] = {
1212
prefixAgo: "לפני",
1313
prefixFromNow: "עוד",
1414
seconds: "פחות מדקה",

locales/jquery.timeago.hr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
}
2121
};
2222

23-
jQuery.timeago.settings.strings = {
23+
jQuery.timeago.settings.strings["hr"] = {
2424
prefixAgo: "prije",
2525
prefixFromNow: "za",
2626
suffixAgo: null,

locales/jquery.timeago.hu.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Hungarian
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["hu"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: null,

locales/jquery.timeago.hy.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Armenian
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["hy"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "առաջ",

locales/jquery.timeago.id.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}(function (jQuery) {
1010
// Indonesian
11-
jQuery.timeago.settings.strings = {
11+
jQuery.timeago.settings.strings["id"] = {
1212
prefixAgo: null,
1313
prefixFromNow: null,
1414
suffixAgo: "yang lalu",

0 commit comments

Comments
 (0)