2020-05-19 11:43:42 +03:00

62 lines
2.0 KiB
JavaScript

var en = function (n, ord) {
var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,
n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);
if (ord) return (n10 == 1 && n100 != 11) ? 'one'
: (n10 == 2 && n100 != 12) ? 'two'
: (n10 == 3 && n100 != 13) ? 'few'
: 'other';
return (n == 1 && v0) ? 'one' : 'other';
};
var fr = function (n, ord) {
if (ord) return (n == 1) ? 'one' : 'other';
return (n >= 0 && n < 2) ? 'one' : 'other';
};
var number = function (value, name, offset) {
if (!offset) return value;
if (isNaN(value)) throw new Error('Can\'t apply offset:' + offset + ' to argument `' + name +
'` with non-numerical value ' + JSON.stringify(value) + '.');
return value - offset;
};
var plural = function (value, offset, lcfunc, data, isOrdinal) {
if ({}.hasOwnProperty.call(data, value)) return data[value];
if (offset) value -= offset;
var key = lcfunc(value, isOrdinal);
if (key in data) return data[key];
return data.other;
};
(function (root, G) {
if (typeof define === "function" && define.amd) { define(G); }
else if (typeof exports === "object") { module.exports = G; }
else { root.i18n = G; }
})(this, {
en: {
colors: {
red: function(d) { return "red"; },
blue: function(d) { return "blue"; },
green: function(d) { return "green"; }
},
sub: {
folder: {
plural: {
test: function(d) { return "Your " + plural(d.NUM, 0, en, { one: "message goes", other: number(d.NUM, "NUM") + " messages go" }) + " here."; }
}
}
}
},
fr: {
colors: {
red: function(d) { return "rouge"; },
blue: function(d) { return "bleu"; },
green: function(d) { return "vert"; }
},
sub: {
folder: {
plural: {
test: function(d) { return plural(d.NUM, 0, fr, { one: "Votre message se trouve", other: "Vos " + number(d.NUM, "NUM") + " messages se trouvent" }) + " ici."; }
}
}
}
}
});