Локализация в Flatpickr построена вокруг концепции разделения логики работы компонента и представления данных пользователю. Библиотека изначально спроектирована так, чтобы все текстовые и форматные элементы интерфейса могли быть переопределены без изменения внутреннего механизма парсинга и обработки дат.
Основой локализации в Flatpickr является объект конфигурации
locale. Он содержит набор свойств, определяющих:
Каждая локаль представляет собой независимый JavaScript-объект, который подмешивается в глобальные настройки или передаётся в конкретный экземпляр календаря.
flatpickr("#input", {
locale: "ru"
});
При этом строковое значение "ru" является лишь
идентификатором, который сопоставляется с заранее загруженным объектом
локализации.
Ключевой принцип локализации Flatpickr заключается в строгом отделении:
Date);Это означает, что локализация не влияет на вычисления, сравнение дат или их сортировку. Она отвечает исключительно за отображение и ввод.
Такое разделение исключает ошибки, связанные с региональными различиями форматов, например:
Типовой объект локализации включает несколько категорий данных.
weekdays: {
shorthand: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
longhand: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]
}
Используются два варианта:
shorthand — сокращённые формы для компактных
интерфейсов;longhand — полные названия для расширенного
отображения.months: {
shorthand: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
longhand: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]
}
Месяцы также разделяются на два уровня детализации, что позволяет использовать одну локаль в разных интерфейсных сценариях без потери читаемости.
Flatpickr использует форматирование через собственную систему токенов, но локализация влияет на интерпретацию некоторых элементов:
Пример формата:
dateFormat: "d.m.Y"
В разных локалях этот формат может быть переопределён на:
"m/d/Y" для англоязычных регионов;"d/m/Y" для европейских локалей;"Y-m-d" для ISO-ориентированных систем.Важно, что сам парсер не зависит от локали напрямую — он опирается на формат строки, а локализация лишь задаёт дефолтные значения.
При включении режима времени (enableTime) локализация
начинает управлять дополнительными аспектами:
time_24hr: true
При time_24hr: false локаль может предоставлять
строки:
amPM: ["AM", "PM"]
или их эквиваленты для других языков.
Flatpickr не включает все локали в ядро по умолчанию. Они подключаются отдельно:
import { Russian } from "flatpickr/dist/l10n/ru.js";
После подключения локаль может использоваться напрямую:
flatpickr("#input", {
locale: Russian
});
Такой подход уменьшает размер основного бандла и позволяет загружать только необходимые языки.
Flatpickr поддерживает принцип переопределения локали на нескольких уровнях:
Глобальная установка:
flatpickr.localize(Russian);
После этого все новые экземпляры наследуют выбранную локаль, если не указано иное.
Локализация влияет не только на отображение, но и на UX-уровень обработки ввода:
Однако сам процесс парсинга остаётся независимым от языка. Это
предотвращает ошибки, связанные с неоднозначными датами вида
01/02/2026.
Flatpickr использует набор токенов:
d — день;m — месяц;Y — год;H — часы;i — минуты.Локаль может влиять на отображение этих токенов, но не меняет их семантику. Это обеспечивает единообразие между различными языковыми версиями.
При разработке локалей учитываются следующие различия:
Некоторые регионы используют нестандартные последовательности:
Используются различные символы:
Различие между:
Flatpickr позволяет создавать собственные локали, полностью повторяющие структуру стандартных.
const customLocale = {
weekdays: {
shorthand: [...],
longhand: [...]
},
months: {
shorthand: [...],
longhand: [...]
},
firstDayOfWeek: 1,
ordinal: (nth) => nth + "й"
};
Функция ordinal позволяет адаптировать порядковые
числительные под особенности языка.
При конфликте настроек применяется следующая иерархия:
Это обеспечивает предсказуемое поведение при любых сценариях интеграции.
Внутренний движок Flatpickr не использует локализацию для:
Все эти операции работают с объектами Date и числовыми
таймстампами. Локализация участвует только на этапе:
Если локализация неполная, Flatpickr применяет fallback-механизм:
Это предотвращает поломку интерфейса при неполных переводах.
После загрузки локаль кэшируется в памяти. Это снижает накладные расходы при:
Кэширование позволяет избежать повторного парсинга объектов локализации.
Локализация в Flatpickr также влияет на:
При этом структура DOM остаётся неизменной, что позволяет использовать одинаковые CSS-стили для всех локалей.