191 lines
4.3 KiB
JavaScript
191 lines
4.3 KiB
JavaScript
const formatDistanceLocale = {
|
|
lessThanXSeconds: {
|
|
one: {
|
|
standalone: "manje od 1 sekunde",
|
|
withPrepositionAgo: "manje od 1 sekunde",
|
|
withPrepositionIn: "manje od 1 sekundu",
|
|
},
|
|
dual: "manje od {{count}} sekunde",
|
|
other: "manje od {{count}} sekundi",
|
|
},
|
|
|
|
xSeconds: {
|
|
one: {
|
|
standalone: "1 sekunda",
|
|
withPrepositionAgo: "1 sekunde",
|
|
withPrepositionIn: "1 sekundu",
|
|
},
|
|
dual: "{{count}} sekunde",
|
|
other: "{{count}} sekundi",
|
|
},
|
|
|
|
halfAMinute: "pola minute",
|
|
|
|
lessThanXMinutes: {
|
|
one: {
|
|
standalone: "manje od 1 minute",
|
|
withPrepositionAgo: "manje od 1 minute",
|
|
withPrepositionIn: "manje od 1 minutu",
|
|
},
|
|
dual: "manje od {{count}} minute",
|
|
other: "manje od {{count}} minuta",
|
|
},
|
|
|
|
xMinutes: {
|
|
one: {
|
|
standalone: "1 minuta",
|
|
withPrepositionAgo: "1 minute",
|
|
withPrepositionIn: "1 minutu",
|
|
},
|
|
dual: "{{count}} minute",
|
|
other: "{{count}} minuta",
|
|
},
|
|
|
|
aboutXHours: {
|
|
one: {
|
|
standalone: "oko 1 sat",
|
|
withPrepositionAgo: "oko 1 sat",
|
|
withPrepositionIn: "oko 1 sat",
|
|
},
|
|
dual: "oko {{count}} sata",
|
|
other: "oko {{count}} sati",
|
|
},
|
|
|
|
xHours: {
|
|
one: {
|
|
standalone: "1 sat",
|
|
withPrepositionAgo: "1 sat",
|
|
withPrepositionIn: "1 sat",
|
|
},
|
|
dual: "{{count}} sata",
|
|
other: "{{count}} sati",
|
|
},
|
|
|
|
xDays: {
|
|
one: {
|
|
standalone: "1 dan",
|
|
withPrepositionAgo: "1 dan",
|
|
withPrepositionIn: "1 dan",
|
|
},
|
|
dual: "{{count}} dana",
|
|
other: "{{count}} dana",
|
|
},
|
|
|
|
aboutXWeeks: {
|
|
one: {
|
|
standalone: "oko 1 sedmicu",
|
|
withPrepositionAgo: "oko 1 sedmicu",
|
|
withPrepositionIn: "oko 1 sedmicu",
|
|
},
|
|
dual: "oko {{count}} sedmice",
|
|
other: "oko {{count}} sedmice",
|
|
},
|
|
|
|
xWeeks: {
|
|
one: {
|
|
standalone: "1 sedmicu",
|
|
withPrepositionAgo: "1 sedmicu",
|
|
withPrepositionIn: "1 sedmicu",
|
|
},
|
|
dual: "{{count}} sedmice",
|
|
other: "{{count}} sedmice",
|
|
},
|
|
|
|
aboutXMonths: {
|
|
one: {
|
|
standalone: "oko 1 mjesec",
|
|
withPrepositionAgo: "oko 1 mjesec",
|
|
withPrepositionIn: "oko 1 mjesec",
|
|
},
|
|
dual: "oko {{count}} mjeseca",
|
|
other: "oko {{count}} mjeseci",
|
|
},
|
|
|
|
xMonths: {
|
|
one: {
|
|
standalone: "1 mjesec",
|
|
withPrepositionAgo: "1 mjesec",
|
|
withPrepositionIn: "1 mjesec",
|
|
},
|
|
dual: "{{count}} mjeseca",
|
|
other: "{{count}} mjeseci",
|
|
},
|
|
|
|
aboutXYears: {
|
|
one: {
|
|
standalone: "oko 1 godinu",
|
|
withPrepositionAgo: "oko 1 godinu",
|
|
withPrepositionIn: "oko 1 godinu",
|
|
},
|
|
dual: "oko {{count}} godine",
|
|
other: "oko {{count}} godina",
|
|
},
|
|
|
|
xYears: {
|
|
one: {
|
|
standalone: "1 godina",
|
|
withPrepositionAgo: "1 godine",
|
|
withPrepositionIn: "1 godinu",
|
|
},
|
|
dual: "{{count}} godine",
|
|
other: "{{count}} godina",
|
|
},
|
|
|
|
overXYears: {
|
|
one: {
|
|
standalone: "preko 1 godinu",
|
|
withPrepositionAgo: "preko 1 godinu",
|
|
withPrepositionIn: "preko 1 godinu",
|
|
},
|
|
dual: "preko {{count}} godine",
|
|
other: "preko {{count}} godina",
|
|
},
|
|
|
|
almostXYears: {
|
|
one: {
|
|
standalone: "gotovo 1 godinu",
|
|
withPrepositionAgo: "gotovo 1 godinu",
|
|
withPrepositionIn: "gotovo 1 godinu",
|
|
},
|
|
dual: "gotovo {{count}} godine",
|
|
other: "gotovo {{count}} godina",
|
|
},
|
|
};
|
|
|
|
export const formatDistance = (token, count, options) => {
|
|
let result;
|
|
|
|
const tokenValue = formatDistanceLocale[token];
|
|
if (typeof tokenValue === "string") {
|
|
result = tokenValue;
|
|
} else if (count === 1) {
|
|
if (options?.addSuffix) {
|
|
if (options.comparison && options.comparison > 0) {
|
|
result = tokenValue.one.withPrepositionIn;
|
|
} else {
|
|
result = tokenValue.one.withPrepositionAgo;
|
|
}
|
|
} else {
|
|
result = tokenValue.one.standalone;
|
|
}
|
|
} else if (
|
|
count % 10 > 1 &&
|
|
count % 10 < 5 && // if last digit is between 2 and 4
|
|
String(count).substr(-2, 1) !== "1" // unless the 2nd to last digit is "1"
|
|
) {
|
|
result = tokenValue.dual.replace("{{count}}", String(count));
|
|
} else {
|
|
result = tokenValue.other.replace("{{count}}", String(count));
|
|
}
|
|
|
|
if (options?.addSuffix) {
|
|
if (options.comparison && options.comparison > 0) {
|
|
return "za " + result;
|
|
} else {
|
|
return "prije " + result;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
};
|