По умолчанию Day.js использует английскую локализацию. Форматирование месяцев, дней недели, относительного времени и других текстовых представлений даты выполняется на английском языке:
dayjs().format('MMMM')
Результат:
May
Для поддержки других языков библиотека использует отдельные языковые пакеты (locale packages). Каждый пакет содержит переводы месяцев, дней недели, форматов дат, правил склонения и параметров локализации.
Подключение локализации необходимо для:
fromNow();Сначала подключается сама библиотека Day.js:
<script src="https://unpkg.com/dayjs/dayjs.min.js"></script>
После этого подключается нужный языковой пакет:
<script src="https://unpkg.com/dayjs/locale/ru.js"></script>
Активация локали выполняется через метод locale():
<script>
dayjs.locale('ru')
console.log(dayjs().format('MMMM'))
</script>
Результат:
май
const dayjs = require('dayjs')
require('dayjs/locale/ru')
dayjs.locale('ru')
console.log(dayjs().format('MMMM'))
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
dayjs.locale('ru')
console.log(dayjs().format('MMMM'))
После подключения файл локали регистрируется внутри Day.js, но не становится активным автоматически.
Например:
import 'dayjs/locale/de'
Локаль загрузится, но язык останется английским до вызова:
dayjs.locale('de')
Это позволяет заранее подключать несколько языков и переключаться между ними динамически.
| Язык | Код локали |
|---|---|
| Русский | ru |
| Английский | en |
| Немецкий | de |
| Французский | fr |
| Испанский | es |
| Итальянский | it |
| Китайский | zh-cn |
| Японский | ja |
| Корейский | ko |
| Украинский | uk |
Подключение выполняется по имени файла:
import 'dayjs/locale/fr'
Метод:
dayjs.locale('ru')
устанавливает язык глобально для всех новых объектов Day.js.
Пример:
dayjs.locale('ru')
console.log(dayjs().format('dddd'))
console.log(dayjs().format('MMMM'))
Результат:
четверг
май
Day.js позволяет назначать локаль отдельному экземпляру даты без изменения глобальных настроек.
import 'dayjs/locale/ru'
import 'dayjs/locale/de'
const date = dayjs()
console.log(date.locale('ru').format('MMMM'))
console.log(date.locale('de').format('MMMM'))
Результат:
май
Mai
Исходный объект при этом не изменяется.
function setLanguage(lang) {
dayjs.locale(lang)
}
Использование:
setLanguage('ru')
console.log(dayjs().format('MMMM'))
setLanguage('fr')
console.log(dayjs().format('MMMM'))
Результат:
май
mai
Плагин RelativeTime выводит текст вида:
import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
import 'dayjs/locale/ru'
dayjs.extend(relativeTime)
dayjs.locale('ru')
Пример:
console.log(dayjs().subtract(3, 'hour').fromNow())
Результат:
3 часа назад
Day.js позволяет хранить разные языки параллельно.
import 'dayjs/locale/ru'
import 'dayjs/locale/fr'
import 'dayjs/locale/de'
После этого язык можно менять в любой момент:
dayjs.locale('fr')
или локально:
dayjs().locale('de')
Локали влияют на токены локализованных форматов.
Пример:
dayjs().format('LL')
Для работы подобных форматов требуется плагин
LocalizedFormat.
import localizedFormat from 'dayjs/plugin/localizedFormat'
dayjs.extend(localizedFormat)
Пример для русского языка:
dayjs.locale('ru')
console.log(dayjs().format('LL'))
Результат:
23 мая 2026 г.
Для английского:
dayjs.locale('en')
console.log(dayjs().format('LL'))
Результат:
May 23, 2026
Получение активного языка:
console.log(dayjs.locale())
Результат:
ru
В крупных приложениях не рекомендуется подключать все языки сразу, поскольку это увеличивает размер сборки.
async function loadLocale(lang) {
await import(`dayjs/locale/${lang}.js`)
dayjs.locale(lang)
}
Использование:
await loadLocale('ru')
Такой подход особенно полезен:
const lang = navigator.language.toLowerCase()
Пример:
import(`dayjs/locale/${lang}.js`)
.then(() => {
dayjs.locale(lang)
})
Если локаль отсутствует, желательно использовать резервный язык.
async function setLocale(lang) {
try {
await import(`dayjs/locale/${lang}.js`)
dayjs.locale(lang)
} catch {
dayjs.locale('en')
}
}
Day.js позволяет изменять существующие локали.
Для этого используется плагин updateLocale.
import updateLocale from 'dayjs/plugin/updateLocale'
dayjs.extend(updateLocale)
Изменение названий месяцев:
dayjs.updateLocale('ru', {
months: [
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь'
]
})
Можно зарегистрировать полностью новую локаль.
dayjs.locale({
name: 'custom',
weekdays: [
'День1',
'День2',
'День3',
'День4',
'День5',
'День6',
'День7'
],
months: [
'М1',
'М2',
'М3',
'М4',
'М5',
'М6',
'М7',
'М8',
'М9',
'М10',
'М11',
'М12'
]
})
Активация:
dayjs.locale('custom')
Локализация экземпляра не изменяет исходный объект:
const date = dayjs()
const ruDate = date.locale('ru')
const deDate = date.locale('de')
Изменение языка не влияет:
Локаль влияет исключительно на текстовый вывод.
Наиболее часто локали используются вместе с:
RelativeTime;LocalizedFormat;Calendar;AdvancedFormat.import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
import localizedFormat from 'dayjs/plugin/localizedFormat'
import 'dayjs/locale/ru'
import 'dayjs/locale/en'
import 'dayjs/locale/fr'
dayjs.extend(relativeTime)
dayjs.extend(localizedFormat)
function setLanguage(lang) {
dayjs.locale(lang)
}
setLanguage('ru')
console.log(dayjs().format('LL'))
console.log(dayjs().subtract(2, 'day').fromNow())
setLanguage('fr')
console.log(dayjs().format('LL'))
console.log(dayjs().subtract(2, 'day').fromNow())
Результат:
23 мая 2026 г.
2 дня назад
23 mai 2026
il y a 2 jours