Список доступных локалей

Moment.js предоставляет мощные возможности для работы с датами и временем, включая поддержку различных локалей. Локали позволяют отображать даты, месяцы, дни недели и форматы времени в соответствии с языковыми и культурными особенностями. Библиотека поставляется с набором предустановленных локалей, и каждая из них может быть загружена и активирована по необходимости.

Подключение локалей

По умолчанию Moment.js использует английскую локаль (en). Для работы с другими локалями необходимо подключить соответствующие модули локалей:

import moment from 'moment';
import 'moment/locale/ru';  // Подключение русской локали

После подключения локали её можно активировать с помощью метода moment.locale():

moment.locale('ru');
console.log(moment().format('LLLL')); // Понедельник, 21 мая 2026 г., 15:30

Список предустановленных локалей

Moment.js включает десятки локалей для разных языков и регионов. Основные локали включают:

  • Английский (en) — стандартная локаль.
  • Русский (ru) — отображение дней недели и месяцев на русском языке.
  • Немецкий (de) — немецкая локализация.
  • Французский (fr) — французские даты и форматы времени.
  • Испанский (es) — испанская локализация.
  • Итальянский (it) — итальянский формат дат.
  • Японский (ja) — японские символы и формат времени.
  • Китайский упрощённый (zh-cn) — формат даты для континентального Китая.
  • Китайский традиционный (zh-tw) — формат даты для Тайваня.
  • Арабский (ar) — арабская локализация.
  • Португальский (pt, pt-br) — португальский язык, включая бразильский вариант.
  • Корейский (ko) — корейская локализация.

Полный список локалей можно найти в официальной документации Moment.js, а также в папке locale библиотеки, где каждая локаль представлена отдельным файлом.

Настройка локали по умолчанию

Для установки локали по умолчанию во всей библиотеке используется:

moment.locale('fr'); // Все последующие даты будут в формате французской локали

Эта установка влияет на все создаваемые объекты Moment до смены локали. Для локальной временной смены можно использовать временный контекст:

const date = moment();
console.log(date.locale('de').format('LLLL')); // Локально отображаемая дата на немецком

Создание и использование кастомных локалей

Moment.js позволяет создавать свои локали, расширяя стандартные:

moment.defineLocale('custom', {
    months: 'Месяц1_Месяц2_Месяц3_Месяц4_Месяц5_Месяц6_Месяц7_Месяц8_Месяц9_Месяц10_Месяц11_Месяц12'.split('_'),
    weekdays: 'Вс_Пн_Вт_Ср_Чт_Пт_Сб'.split('_'),
    longDateFormat: {
        LT: 'HH:mm',
        LTS: 'HH:mm:ss',
        L: 'DD/MM/YYYY',
        LL: 'D MMMM YYYY',
        LLL: 'D MMMM YYYY LT',
        LLLL: 'dddd, D MMMM YYYY LT'
    }
});

moment.locale('custom');
console.log(moment().format('LLLL'));

Это позволяет адаптировать отображение даты под специфические требования проекта или корпоративные стандарты.

Проверка доступных локалей

Moment.js предоставляет метод moment.locales(), возвращающий массив всех подключенных локалей:

console.log(moment.locales());
// ['en', 'ru', 'de', 'fr', 'es', ...]

С помощью этого метода можно динамически проверять, какие локали загружены и использовать их в интерфейсе приложения.

Итоговые рекомендации по работе с локалями

  • Всегда подключать только необходимые локали для уменьшения размера бандла.
  • Использовать moment.locale() для глобальной смены локали и moment().locale() для временной локальной.
  • Проверять поддержку форматов и названий месяцев, особенно для нестандартных или кастомных локалей.
  • Для сложных проектов использовать кастомные локали, чтобы соблюсти корпоративные стандарты отображения даты и времени.

Такой подход позволяет полностью контролировать форматирование даты и времени и обеспечивает корректное отображение данных для пользователей из разных стран и регионов.