В Flatpickr система локализации построена вокруг объекта
locale, который управляет не только языковыми строками
интерфейса, но и правилами отображения дат, первым днем недели, форматом
месяцев, дней и рядом поведенческих параметров календаря. Подход
библиотеки заключается в разделении визуального формата
(dateFormat, altFormat) и языкового слоя
(locale), что позволяет независимо управлять представлением
данных и их интерпретацией.
Каждая локаль в Flatpickr представляет собой JavaScript-объект, содержащий набор полей:
Пример структуры:
const russian = {
weekdays: {
shorthand: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
longhand: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]
},
months: {
shorthand: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
longhand: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]
},
firstDayOfWeek: 1,
rangeSeparator: " — "
};
Flatpickr использует эти данные при построении UI календаря, не влияя напрямую на внутренние значения дат.
Библиотека поставляется с набором предустановленных локалей, которые подключаются отдельно:
import flatpickr from "flatpickr";
import { Russian } from "flatpickr/dist/l10n/ru.js";
flatpickr("#input", {
locale: Russian
});
Каждая локаль находится в отдельном файле и содержит полный набор параметров, достаточный для корректного отображения календаря без дополнительной настройки.
Важно, что подключение локали не изменяет формат хранения значения.
Внутри Flatpickr всегда используется объект Date, а локаль
влияет только на визуализацию.
В Flatpickr существует два основных параметра форматирования:
dateFormat — формат значения, сохраняемого в inputaltFormat — формат отображаемого значения (при
использовании altInput)Пример:
flatpickr("#input", {
locale: Russian,
dateFormat: "Y-m-d",
altInput: true,
altFormat: "d F Y"
});
В данном случае:
2026-05-3030 Май 2026Локаль влияет на текстовые части (F — месяц), а формат
определяет структуру строки.
Flatpickr использует собственную систему токенов:
d — день месяцаm — месяц (число)F — месяц (полное название)M — сокращённый месяцY — годH — часы (24-часовой формат)h — часы (12-часовой формат)i — минутыS — секундыПри использовании локали изменяется не сам токен, а его текстовое представление. Например:
F в русской локали → «Май»F в английской → «May»Таким образом, формат остаётся универсальным, а локаль отвечает за словарь подстановки.
Одним из ключевых параметров локали является
firstDayOfWeek. Он определяет старт календарной сетки:
Пример для европейского формата:
{
firstDayOfWeek: 1
}
Для США чаще используется:
{
firstDayOfWeek: 0
}
Этот параметр влияет на разметку календаря, но не затрагивает формат строки даты.
Некоторые локали требуют поддержки right-to-left отображения. Flatpickr не меняет направление документа автоматически, но предоставляет возможность интеграции через CSS и настройки окружения.
Пример настройки:
flatpickr("#input", {
locale: Arabic
});
Дополнительно обычно требуется CSS:
.flatpickr-calendar {
direction: rtl;
}
RTL-локали затрагивают расположение дней недели, стрелок навигации и порядка месяцев.
Flatpickr позволяет менять локаль во время выполнения через API:
const fp = flatpickr("#input", {
locale: English
});
fp.set("locale", Russian);
При смене локали пересобирается интерфейс календаря, включая:
При этом выбранная дата остается неизменной, так как хранится в
объекте Date.
При использовании режима диапазона (mode: "range")
локаль также влияет на разделитель:
{
mode: "range",
locale: {
rangeSeparator: " до "
}
}
Стандартный формат:
10 Май 2026 — 20 Май 2026
Разделитель определяется локалью, а не dateFormat, что
позволяет адаптировать строку под грамматику языка.
Создание собственной локали требует соблюдения структуры, совместимой с внутренним L10n-механизмом Flatpickr:
const customLocale = {
weekdays: {
shorthand: ["A", "B", "C", "D", "E", "F", "G"],
longhand: ["День1", "День2", "День3", "День4", "День5", "День6", "День7"]
},
months: {
shorthand: ["M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12"],
longhand: ["Месяц1", "Месяц2", "Месяц3", "Месяц4", "Месяц5", "Месяц6",
"Месяц7", "Месяц8", "Месяц9", "Месяц10", "Месяц11", "Месяц12"]
},
firstDayOfWeek: 1,
rangeSeparator: " - "
};
Такая локаль может использоваться в специализированных интерфейсах, где требуется нестандартная терминология или псевдоязыковое отображение.
Flatpickr допускает независимую комбинацию локали и формата:
flatpickr("#input", {
locale: Russian,
dateFormat: "d.m.Y",
altInput: true,
altFormat: "j F, Y"
});
В этом примере:
dateFormat задаёт технический формат храненияaltFormat управляет пользовательским отображениемlocale определяет язык текстовых элементовТакое разделение позволяет использовать единый формат данных на сервере при полностью локализованном интерфейсе.
Хотя локаль не всегда напрямую управляет форматом времени, она часто
используется совместно с параметром time_24hr:
flatpickr("#input", {
enableTime: true,
time_24hr: true,
locale: Russian
});
В разных регионах предпочтения различаются:
Flatpickr позволяет комбинировать эти параметры без привязки к локали, но типичные локали поставляются с рекомендованными настройками.
Внутри Flatpickr локаль используется через слой L10n, который подставляет строки в момент рендеринга интерфейса. Это касается:
При изменении локали происходит повторная генерация DOM-элементов календаря, что обеспечивает консистентность отображения без ручного обновления UI.
Если локаль определена неполностью, Flatpickr использует fallback на английскую локаль. Это касается любых отсутствующих полей:
Такой механизм предотвращает поломку UI при некорректных или минимальных пользовательских локалях.
Система локализации Flatpickr строится на трёх независимых уровнях:
Разделение этих уровней позволяет использовать единый механизм даты в любых языковых и региональных условиях без изменения внутренней логики работы библиотеки.