211 lines
4.2 KiB
JavaScript
211 lines
4.2 KiB
JavaScript
|
import { buildLocalizeFn } from "../../_lib/buildLocalizeFn.mjs";
|
|||
|
|
|||
|
const eraValues = {
|
|||
|
narrow: ["до н.э.", "н.э."],
|
|||
|
abbreviated: ["до н. э.", "н. э."],
|
|||
|
wide: ["до нашей эры", "нашей эры"],
|
|||
|
};
|
|||
|
|
|||
|
const quarterValues = {
|
|||
|
narrow: ["1", "2", "3", "4"],
|
|||
|
abbreviated: ["1-й кв.", "2-й кв.", "3-й кв.", "4-й кв."],
|
|||
|
wide: ["1-й квартал", "2-й квартал", "3-й квартал", "4-й квартал"],
|
|||
|
};
|
|||
|
|
|||
|
const monthValues = {
|
|||
|
narrow: ["Я", "Ф", "М", "А", "М", "И", "И", "А", "С", "О", "Н", "Д"],
|
|||
|
abbreviated: [
|
|||
|
"янв.",
|
|||
|
"фев.",
|
|||
|
"март",
|
|||
|
"апр.",
|
|||
|
"май",
|
|||
|
"июнь",
|
|||
|
"июль",
|
|||
|
"авг.",
|
|||
|
"сент.",
|
|||
|
"окт.",
|
|||
|
"нояб.",
|
|||
|
"дек.",
|
|||
|
],
|
|||
|
|
|||
|
wide: [
|
|||
|
"январь",
|
|||
|
"февраль",
|
|||
|
"март",
|
|||
|
"апрель",
|
|||
|
"май",
|
|||
|
"июнь",
|
|||
|
"июль",
|
|||
|
"август",
|
|||
|
"сентябрь",
|
|||
|
"октябрь",
|
|||
|
"ноябрь",
|
|||
|
"декабрь",
|
|||
|
],
|
|||
|
};
|
|||
|
|
|||
|
const formattingMonthValues = {
|
|||
|
narrow: ["Я", "Ф", "М", "А", "М", "И", "И", "А", "С", "О", "Н", "Д"],
|
|||
|
abbreviated: [
|
|||
|
"янв.",
|
|||
|
"фев.",
|
|||
|
"мар.",
|
|||
|
"апр.",
|
|||
|
"мая",
|
|||
|
"июн.",
|
|||
|
"июл.",
|
|||
|
"авг.",
|
|||
|
"сент.",
|
|||
|
"окт.",
|
|||
|
"нояб.",
|
|||
|
"дек.",
|
|||
|
],
|
|||
|
|
|||
|
wide: [
|
|||
|
"января",
|
|||
|
"февраля",
|
|||
|
"марта",
|
|||
|
"апреля",
|
|||
|
"мая",
|
|||
|
"июня",
|
|||
|
"июля",
|
|||
|
"августа",
|
|||
|
"сентября",
|
|||
|
"октября",
|
|||
|
"ноября",
|
|||
|
"декабря",
|
|||
|
],
|
|||
|
};
|
|||
|
|
|||
|
const dayValues = {
|
|||
|
narrow: ["В", "П", "В", "С", "Ч", "П", "С"],
|
|||
|
short: ["вс", "пн", "вт", "ср", "чт", "пт", "сб"],
|
|||
|
abbreviated: ["вск", "пнд", "втр", "срд", "чтв", "птн", "суб"],
|
|||
|
wide: [
|
|||
|
"воскресенье",
|
|||
|
"понедельник",
|
|||
|
"вторник",
|
|||
|
"среда",
|
|||
|
"четверг",
|
|||
|
"пятница",
|
|||
|
"суббота",
|
|||
|
],
|
|||
|
};
|
|||
|
|
|||
|
const dayPeriodValues = {
|
|||
|
narrow: {
|
|||
|
am: "ДП",
|
|||
|
pm: "ПП",
|
|||
|
midnight: "полн.",
|
|||
|
noon: "полд.",
|
|||
|
morning: "утро",
|
|||
|
afternoon: "день",
|
|||
|
evening: "веч.",
|
|||
|
night: "ночь",
|
|||
|
},
|
|||
|
abbreviated: {
|
|||
|
am: "ДП",
|
|||
|
pm: "ПП",
|
|||
|
midnight: "полн.",
|
|||
|
noon: "полд.",
|
|||
|
morning: "утро",
|
|||
|
afternoon: "день",
|
|||
|
evening: "веч.",
|
|||
|
night: "ночь",
|
|||
|
},
|
|||
|
wide: {
|
|||
|
am: "ДП",
|
|||
|
pm: "ПП",
|
|||
|
midnight: "полночь",
|
|||
|
noon: "полдень",
|
|||
|
morning: "утро",
|
|||
|
afternoon: "день",
|
|||
|
evening: "вечер",
|
|||
|
night: "ночь",
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
const formattingDayPeriodValues = {
|
|||
|
narrow: {
|
|||
|
am: "ДП",
|
|||
|
pm: "ПП",
|
|||
|
midnight: "полн.",
|
|||
|
noon: "полд.",
|
|||
|
morning: "утра",
|
|||
|
afternoon: "дня",
|
|||
|
evening: "веч.",
|
|||
|
night: "ночи",
|
|||
|
},
|
|||
|
abbreviated: {
|
|||
|
am: "ДП",
|
|||
|
pm: "ПП",
|
|||
|
midnight: "полн.",
|
|||
|
noon: "полд.",
|
|||
|
morning: "утра",
|
|||
|
afternoon: "дня",
|
|||
|
evening: "веч.",
|
|||
|
night: "ночи",
|
|||
|
},
|
|||
|
wide: {
|
|||
|
am: "ДП",
|
|||
|
pm: "ПП",
|
|||
|
midnight: "полночь",
|
|||
|
noon: "полдень",
|
|||
|
morning: "утра",
|
|||
|
afternoon: "дня",
|
|||
|
evening: "вечера",
|
|||
|
night: "ночи",
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
const ordinalNumber = (dirtyNumber, options) => {
|
|||
|
const number = Number(dirtyNumber);
|
|||
|
const unit = options?.unit;
|
|||
|
|
|||
|
let suffix;
|
|||
|
if (unit === "date") {
|
|||
|
suffix = "-е";
|
|||
|
} else if (unit === "week" || unit === "minute" || unit === "second") {
|
|||
|
suffix = "-я";
|
|||
|
} else {
|
|||
|
suffix = "-й";
|
|||
|
}
|
|||
|
|
|||
|
return number + suffix;
|
|||
|
};
|
|||
|
|
|||
|
export const localize = {
|
|||
|
ordinalNumber,
|
|||
|
|
|||
|
era: buildLocalizeFn({
|
|||
|
values: eraValues,
|
|||
|
defaultWidth: "wide",
|
|||
|
}),
|
|||
|
|
|||
|
quarter: buildLocalizeFn({
|
|||
|
values: quarterValues,
|
|||
|
defaultWidth: "wide",
|
|||
|
argumentCallback: (quarter) => quarter - 1,
|
|||
|
}),
|
|||
|
|
|||
|
month: buildLocalizeFn({
|
|||
|
values: monthValues,
|
|||
|
defaultWidth: "wide",
|
|||
|
formattingValues: formattingMonthValues,
|
|||
|
defaultFormattingWidth: "wide",
|
|||
|
}),
|
|||
|
|
|||
|
day: buildLocalizeFn({
|
|||
|
values: dayValues,
|
|||
|
defaultWidth: "wide",
|
|||
|
}),
|
|||
|
|
|||
|
dayPeriod: buildLocalizeFn({
|
|||
|
values: dayPeriodValues,
|
|||
|
defaultWidth: "any",
|
|||
|
formattingValues: formattingDayPeriodValues,
|
|||
|
defaultFormattingWidth: "wide",
|
|||
|
}),
|
|||
|
};
|