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 "ед.";
|
||
|
}
|
||
|
}
|