js ⢠Lines: 163function buildLocalizeTokenFn(schema) {
return (count, options) => {
if (count === 1) {
if (options?.addSuffix) {
return schema.one[0].replace("{{time}}", schema.one[2]);
} else {
return schema.one[0].replace("{{time}}", schema.one[1]);
}
} else {
const rem = count % 10 === 1 && count % 100 !== 11;
if (options?.addSuffix) {
return schema.other[0]
.replace("{{time}}", rem ? schema.other[3] : schema.other[4])
.replace("{{count}}", String(count));
} else {
return schema.other[0]
.replace("{{time}}", rem ? schema.other[1] : schema.other[2])
.replace("{{count}}", String(count));
}
}
};
}
const formatDistanceLocale = {
lessThanXSeconds: buildLocalizeTokenFn({
one: ["mazÄk par {{time}}", "sekundi", "sekundi"],
other: [
"mazÄk nekÄ {{count}} {{time}}",
"sekunde",
"sekundes",
"sekundes",
"sekundÄm",
],
}),
xSeconds: buildLocalizeTokenFn({
one: ["1 {{time}}", "sekunde", "sekundes"],
other: [
"{{count}} {{time}}",
"sekunde",
"sekundes",
"sekundes",
"sekundÄm",
],
}),
halfAMinute: (_count, options) => {
if (options?.addSuffix) {
return "pusminūtes";
} else {
return "pusminūte";
}
},
lessThanXMinutes: buildLocalizeTokenFn({
one: ["mazÄk par {{time}}", "minÅ«ti", "minÅ«ti"],
other: [
"mazÄk nekÄ {{count}} {{time}}",
"minūte",
"minūtes",
"minūtes",
"minÅ«tÄm",
],
}),
xMinutes: buildLocalizeTokenFn({
one: ["1 {{time}}", "minūte", "minūtes"],
other: ["{{count}} {{time}}", "minÅ«te", "minÅ«tes", "minÅ«tes", "minÅ«tÄm"],
}),
aboutXHours: buildLocalizeTokenFn({
one: ["apmÄram 1 {{time}}", "stunda", "stundas"],
other: [
"apmÄram {{count}} {{time}}",
"stunda",
"stundas",
"stundas",
"stundÄm",
],
}),
xHours: buildLocalizeTokenFn({
one: ["1 {{time}}", "stunda", "stundas"],
other: ["{{count}} {{time}}", "stunda", "stundas", "stundas", "stundÄm"],
}),
xDays: buildLocalizeTokenFn({
one: ["1 {{time}}", "diena", "dienas"],
other: ["{{count}} {{time}}", "diena", "dienas", "dienas", "dienÄm"],
}),
aboutXWeeks: buildLocalizeTokenFn({
one: ["apmÄram 1 {{time}}", "nedÄļa", "nedÄļas"],
other: [
"apmÄram {{count}} {{time}}",
"nedÄļa",
"nedÄļu",
"nedÄļas",
"nedÄļÄm",
],
}),
xWeeks: buildLocalizeTokenFn({
one: ["1 {{time}}", "nedÄļa", "nedÄļas"],
other: [
"{{count}} {{time}}", // TODO
"nedÄļa",
"nedÄļu",
"nedÄļas",
"nedÄļÄm",
],
}),
aboutXMonths: buildLocalizeTokenFn({
one: ["apmÄram 1 {{time}}", "mÄnesis", "mÄneÅ”a"],
other: [
"apmÄram {{count}} {{time}}",
"mÄnesis",
"mÄneÅ”i",
"mÄneÅ”a",
"mÄneÅ”iem",
],
}),
xMonths: buildLocalizeTokenFn({
one: ["1 {{time}}", "mÄnesis", "mÄneÅ”a"],
other: ["{{count}} {{time}}", "mÄnesis", "mÄneÅ”i", "mÄneÅ”a", "mÄneÅ”iem"],
}),
aboutXYears: buildLocalizeTokenFn({
one: ["apmÄram 1 {{time}}", "gads", "gada"],
other: ["apmÄram {{count}} {{time}}", "gads", "gadi", "gada", "gadiem"],
}),
xYears: buildLocalizeTokenFn({
one: ["1 {{time}}", "gads", "gada"],
other: ["{{count}} {{time}}", "gads", "gadi", "gada", "gadiem"],
}),
overXYears: buildLocalizeTokenFn({
one: ["ilgÄk par 1 {{time}}", "gadu", "gadu"],
other: ["vairÄk nekÄ {{count}} {{time}}", "gads", "gadi", "gada", "gadiem"],
}),
almostXYears: buildLocalizeTokenFn({
one: ["gandrīz 1 {{time}}", "gads", "gada"],
other: ["vairÄk nekÄ {{count}} {{time}}", "gads", "gadi", "gada", "gadiem"],
}),
};
export const formatDistance = (token, count, options) => {
const result = formatDistanceLocale[token](count, options);
if (options?.addSuffix) {
if (options.comparison && options.comparison > 0) {
return "pÄc " + result;
} else {
return "pirms " + result;
}
}
return result;
};