Локализация в Day.js обеспечивает отображение дат и времени в соответствии с правилами конкретного языка и региона. Это включает форматирование названий месяцев, дней недели, порядок отображения компонентов даты, правила относительного времени и календарные выражения.
Day.js изначально работает с базовой (английской) локалью. Для расширения функциональности используются локали и дополнительные плагины, подключающие региональные правила форматирования.
Локализация в Day.js реализуется через подключение отдельных языковых пакетов.
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
dayjs.locale('ru')
После установки локали все операции форматирования начинают учитывать региональные правила.
Каждая локаль представляет собой объект, содержащий:
Пример логической структуры:
{
name: 'ru',
months: [...],
monthsShort: [...],
weekdays: [...],
weekdaysShort: [...],
weekdaysMin: [...],
weekStart: 1,
relativeTime: {...}
}
Основной метод форматирования — format. Он использует
токены, которые интерпретируются с учётом активной локали.
dayjs().format('DD MMMM YYYY')
Для английской локали результат:
22 May 2026
Для русской локали:
22 мая 2026
Разница определяется таблицами названий месяцев внутри локали.
Локализация влияет на следующие элементы:
MMMM — полное название месяцаMMM — сокращённое название месяцаПример:
dayjs('2026-05-22').locale('ru').format('MMMM')
Результат:
мая
dddd — полное название дня неделиddd — сокращённое названиеdayjs().locale('ru').format('dddd')
Результат:
пятница
Локаль влияет только на отображение, а не на внутреннюю структуру объекта. Формат:
dayjs('2026-05-22').locale('ru').format('DD.MM.YYYY')
Результат:
22.05.2026
Локаль может изменяться динамически для отдельных вызовов.
dayjs().locale('en').format('DD MMMM YYYY')
dayjs().locale('ru').format('DD MMMM YYYY')
Каждый вызов использует свою локаль независимо от глобальной настройки.
Глобальная локаль влияет на все последующие операции форматирования.
dayjs.locale('ru')
dayjs().format('DD MMMM YYYY')
При этом локаль можно переопределить локально через
locale().
Для локализованного отображения относительного времени используется
плагин relativeTime.
import relativeTime from 'dayjs/plugin/relativeTime'
import 'dayjs/locale/ru'
dayjs.extend(relativeTime)
dayjs.locale('ru')
dayjs().subtract(3, 'day').fromNow()
Результат:
3 дня назад
Локаль определяет форматы:
relativeTime: {
future: 'через %s',
past: '%s назад',
s: 'несколько секунд',
m: 'минута',
mm: '%d минут',
h: 'час',
hh: '%d часов',
d: 'день',
dd: '%d дней',
M: 'месяц',
MM: '%d месяцев',
y: 'год',
yy: '%d лет'
}
Плагин calendar позволяет выводить даты в стиле
«сегодня», «вчера», «на следующей неделе».
import calendar from 'dayjs/plugin/calendar'
dayjs.extend(calendar)
dayjs.locale('ru')
dayjs().add(1, 'day').calendar()
Результат:
Завтра в 14:00
Локаль определяет шаблоны:
calendar: {
sameDay: '[Сегодня в] LT',
nextDay: '[Завтра в] LT',
nextWeek: 'dddd [в] LT',
lastDay: '[Вчера в] LT',
lastWeek: 'dddd [прошлой недели] LT',
sameElse: 'L'
}
Локаль может быть переопределена или расширена.
dayjs.locale('ru', {
monthsShort: ['янв', 'фев', 'мар', 'апр', 'май', 'июн',
'июл', 'авг', 'сен', 'окт', 'ноя', 'дек']
})
Локаль задаёт первый день недели:
weekStart: 1
Значение:
0 — воскресенье1 — понедельникЭто влияет на:
Некоторые локали используют 12- или 24-часовой формат.
dayjs().format('HH:mm')
или
dayjs().format('h:mm A')
Локаль определяет корректность маркеров AM/PM.
Плагин localizedFormat добавляет стандартные
форматы:
import localizedFormat from 'dayjs/plugin/localizedFormat'
dayjs.extend(localizedFormat)
dayjs.locale('ru')
dayjs().format('L')
Результат:
22.05.2026
Другие форматы:
LT — времяLTS — время с секундамиLL — полная датаLLL — дата и времяLLLL — расширенный форматЛокализация не влияет на:
Влияние распространяется только на слой отображения.
dayjs('2026-05-22T10:00:00Z').locale('ru').add(1, 'day')
Результат остаётся корректным независимо от локали.
Приложения с мультиязычностью часто переключают локали динамически.
const lang = 'ru'
dayjs.locale(lang)
или на уровне компонента:
dayjs().locale('ru').format('MMMM')
dayjs().locale('en').format('MMMM')
Если локаль не загружена:
dayjs().format('MMMM')
May
Некоторые плагины требуют локализацию для полного эффекта:
relativeTime — текстовые выражения времениcalendar — шаблоны событийlocalizedFormat — предустановленные форматыupdateLocale — модификация существующих правилПлагин updateLocale позволяет частично изменить
правила:
import updateLocale from 'dayjs/plugin/updateLocale'
dayjs.extend(updateLocale)
dayjs.updateLocale('ru', {
monthsShort: ['янв', 'фев', 'мар', 'апр', 'май', 'июн']
})
Изменения применяются без полной замены локали.