В Luxon локализация названий месяцев и дней недели строится вокруг
двух уровней: текущей локали DateTime и специализированного
API Info, которое возвращает справочные массивы. Поведение
зависит от установленного языка, а также от формата представления даты
(полное, сокращённое, узкое).
Каждый объект DateTime хранит локаль, которая влияет на
все текстовые представления даты:
import { DateTime } from "luxon";
const dt = DateTime.local().setLocale("ru");
dt.monthLong; // "май"
dt.weekdayLong; // "суббота"
Установка локали через setLocale() не изменяет сам
момент времени, но полностью перестраивает текстовые поля, связанные с
календарём.
Если локаль не задана явно, используется системная или дефолтная
(en-US в большинстве окружений).
Luxon предоставляет несколько уровней детализации названий месяца:
monthLong — полное название месяцаmonthShort — сокращённое названиеmonth — числовое значение месяцаconst dt = DateTime.local(2026, 5, 23).setLocale("en");
dt.monthLong; // "May"
dt.monthShort; // "May"
dt.month; // 5
Для других локалей меняется именно строковое представление:
const dt = DateTime.local(2026, 5, 23).setLocale("ru");
dt.monthLong; // "май"
dt.monthShort; // "май"
Особенность: в некоторых языках сокращённая и полная формы совпадают, поскольку система не всегда различает форматы по правилам языка.
Аналогичная модель применяется к дням недели:
weekdayLong — полное название дняweekdayShort — сокращённоеweekday — числовой индекс (1–7, ISO-8601)const dt = DateTime.local(2026, 5, 23).setLocale("ru");
dt.weekdayLong; // "суббота"
dt.weekdayShort; // "сб"
dt.weekday; // 6
В англоязычной локали:
const dt = DateTime.local(2026, 5, 23).setLocale("en");
dt.weekdayLong; // "Saturday"
dt.weekdayShort; // "Sat"
Важно, что числовая система дней недели соответствует ISO-стандарту, где понедельник имеет значение 1, а воскресенье — 7.
Модуль Info используется для получения справочных
списков независимо от конкретной даты.
import { Info } from "luxon";
Info.months("long", { locale: "ru" });
// ["январь", "февраль", ..., "декабрь"]
Info.months("short", { locale: "en" });
// ["Jan", "Feb", ..., "Dec"]
Параметр формата определяет стиль:
"long" — полные названия"short" — сокращённые"narrow" — максимально короткие обозначенияInfo.weekdays("long", { locale: "ru" });
// ["понедельник", "вторник", ..., "воскресенье"]
Info.weekdays("short", { locale: "en" });
// ["Mon", "Tue", ..., "Sun"]
Массивы возвращаются в порядке ISO (понедельник → воскресенье), что важно для построения календарных сеток и таблиц расписаний.
Помимо свойств DateTime, Luxon поддерживает
форматирование через строки-шаблоны, где названия месяцев и дней недели
выводятся автоматически.
LLLL — полное название месяцаLLL — сокращённое название месяцаconst dt = DateTime.local(2026, 5, 23).setLocale("ru");
dt.toFormat("LLLL"); // "май"
dt.toFormat("LLL"); // "май"
cccc — полное название дня неделиccc — сокращённое названиеdt.toFormat("cccc"); // "суббота"
dt.toFormat("ccc"); // "сб"
Форматирование через токены используется в ситуациях, где требуется комбинировать текстовые и числовые элементы:
dt.toFormat("cccc, d LLLL yyyy");
// "суббота, 23 май 2026"
Разные локали не только переводят слова, но и изменяют правила отображения:
Пример:
DateTime.local(2026, 1, 1).setLocale("ru").toFormat("d LLLL yyyy");
// "1 января 2026"
DateTime.local(2026, 1, 1).setLocale("en").toFormat("d LLLL yyyy");
// "1 January 2026"
Система локализации в Luxon опирается на ICU-данные, поэтому:
enПри этом числовые значения (month, weekday)
остаются неизменными вне зависимости от локали, что обеспечивает
стабильность при вычислениях и сортировках.
Названия месяцев и дней недели чаще всего применяются в интерфейсных структурах:
const days = Info.weekdays("short", { locale: "ru" });
const months = Info.months("short", { locale: "ru" });
Такие массивы используются для:
При этом DateTime остаётся источником конкретного
момента времени, а Info — источником справочных подписей
календаря.