codigo0/node_modules/date-fns/locale/uk/_lib/localize.mjs
planetazuzu 5d7a6500fe refactor: Fase 1 - Clean Architecture, refactorización modular y eliminación de duplicidades
-  Ticket 1.1: Estructura Clean Architecture en backend
-  Ticket 1.2: Schemas Zod compartidos
-  Ticket 1.3: Refactorización drugs.ts (1362 → 8 archivos modulares)
-  Ticket 1.4: Refactorización procedures.ts (3583 → 6 archivos modulares)
-  Ticket 1.5: Eliminación de duplicidades (~50 líneas)

Cambios principales:
- Creada estructura Clean Architecture en backend/src/
- Schemas Zod compartidos en backend/src/shared/schemas/
- Refactorización modular de drugs y procedures
- Utilidades genéricas en src/utils/ (filter, validation)
- Eliminados scripts obsoletos y documentación antigua
- Corregidos errores: QueryClient, import test-error-handling
- Build verificado y funcionando correctamente
2026-01-25 21:09:47 +01:00

216 lines
4.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 = {
// ДСТУ 3582:2013
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 unit = String(options?.unit);
const number = Number(dirtyNumber);
let suffix;
if (unit === "date") {
if (number === 3 || number === 23) {
suffix = "-є";
} else {
suffix = "-е";
}
} else if (unit === "minute" || unit === "second" || unit === "hour") {
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",
}),
};