34 lines
901 B
TypeScript
34 lines
901 B
TypeScript
import { PrivilegeValueType } from "@frontend/kitui";
|
|
|
|
function declension(
|
|
number: number,
|
|
declensions: string[],
|
|
cases = [2, 0, 1, 1, 1, 2],
|
|
) {
|
|
return declensions[
|
|
number % 100 > 4 && number % 100 < 20
|
|
? 2
|
|
: cases[number % 10 < 5 ? number % 10 : 5]
|
|
];
|
|
}
|
|
|
|
export function getDeclension(
|
|
number: number,
|
|
word: PrivilegeValueType | "месяц" | "год" | string,
|
|
): string {
|
|
switch (word) {
|
|
case "шаблон":
|
|
return declension(number, ["шаблон", "шаблона", "шаблонов"]);
|
|
case "день":
|
|
return declension(number, ["день", "дня", "дней"]);
|
|
case "месяц":
|
|
return declension(number, ["месяц", "месяца", "месяцев"]);
|
|
case "год":
|
|
return declension(number, ["год", "года", "лет"]);
|
|
case "МБ":
|
|
return "МБ";
|
|
default:
|
|
return "ед.";
|
|
}
|
|
}
|