Moment.js предоставляет мощный механизм работы с локалями, позволяя отображать даты и времена в формате, соответствующем конкретному языку и региону. Глобальная локаль определяет, как будут отображаться месяцы, дни недели, форматы времени и календарные строки по умолчанию для всех объектов Moment в приложении.
По умолчанию Moment.js использует английскую локаль
(en). Для работы с другими локалями необходимо подключить
соответствующие файлы локализации. В браузере это обычно осуществляется
через отдельный скрипт, а в Node.js — через метод
require:
// Node.js
const moment = require('moment');
require('moment/locale/ru'); // Подключение русской локали
После подключения локали её можно использовать при создании объектов Moment или при установке глобальной локали.
Глобальная локаль задаётся методом moment.locale():
moment.locale('ru');
После вызова все новые объекты Moment будут использовать русскую локаль по умолчанию. Это включает:
format()) с локализованными
месяцами и днями недели.fromNow(),
from()).calendar()).Пример:
moment.locale('fr'); // Французский
console.log(moment().format('LLLL')); // "jeudi 21 mai 2026 12:34"
Метод moment.locale() без аргументов возвращает текущую
глобальную локаль:
console.log(moment.locale()); // "fr"
Это позволяет динамически проверять установленную локаль и адаптировать логику приложения при необходимости.
Иногда требуется изменить локаль для конкретного объекта Moment, не
затрагивая глобальную локаль. Для этого используется метод
.locale() на экземпляре:
moment.locale('en'); // глобальная локаль английская
let m = moment().locale('ru'); // только для этого объекта русская локаль
console.log(m.format('LLLL')); // "четверг, 21 мая 2026 г. 12:34"
console.log(moment().format('LLLL')); // "Thursday, May 21, 2026 12:34"
После установки глобальной локали форматирование дат подстраивается под региональные стандарты. Например:
moment.locale('de'); // Немецкий
console.log(moment().format('LLLL')); // "Donnerstag, 21. Mai 2026 12:34"
Методы fromNow() и calendar() также
учитывают локаль:
moment.locale('ru');
console.log(moment().subtract(2, 'days').fromNow()); // "2 дня назад"
console.log(moment().calendar()); // "Сегодня в 12:34"
Глобальная локаль может меняться во время выполнения приложения:
moment.locale('es'); // Испанский
console.log(moment().format('LLLL')); // "jueves, 21 de mayo de 2026 12:34"
moment.locale('ru'); // Смена на русскую локаль
console.log(moment().format('LLLL')); // "четверг, 21 мая 2026 г. 12:34"
Это особенно полезно в многоязычных приложениях, где пользователь может менять язык интерфейса.
.locale().require('moment/locale/fr');
require('moment/locale/ru');
moment.locale('fr');
let date1 = moment('2026-05-21T12:34');
console.log(date1.format('LLLL')); // французский формат
moment.locale('ru');
let date2 = moment('2026-05-21T12:34');
console.log(date2.format('LLLL')); // русский формат
let date3 = moment('2026-05-21T12:34').locale('de'); // временно немецкая локаль
console.log(date3.format('LLLL')); // немецкий формат
Использование глобальной локали в Moment.js позволяет унифицировать отображение дат по всему приложению и легко адаптировать интерфейс под различные языки и регионы, обеспечивая локализованный пользовательский опыт.