Flatpickr поддерживает интернационализацию через систему локалей (locales), позволяющую изменять язык интерфейса календаря, форматов дат, названий дней недели и месяцев. Языковые файлы поставляются отдельно от основного ядра библиотеки и подключаются по необходимости, что снижает общий размер бандла при сборке приложения.
Механизм локализации в Flatpickr основан на модульной структуре: каждая локаль представляет собой отдельный JavaScript-модуль, экспортирующий объект с переводами и форматами. Подключение локалей может выполняться несколькими способами в зависимости от архитектуры проекта: через ES-модули, CommonJS, CDN или динамическую загрузку.
Каждый файл локализации содержит объект с набором параметров:
Типичная структура локали:
export default {
weekdays: {
shorthand: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
longhand: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
},
months: {
shorthand: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
longhand: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
},
firstDayOfWeek: 1,
rangeSeparator: ' to ',
weekAbbreviation: 'Wk',
scrollTitle: 'Scroll to increment',
toggleTitle: 'Click to toggle'
};
При использовании сборщиков (Vite, Webpack, Rollup) предпочтительным способом является импорт нужного языка напрямую из пакета.
import flatpickr from "flatpickr";
import { Russian } from "flatpickr/dist/l10n/ru.js";
flatpickr("#datepicker", {
locale: Russian
});
В данном варианте локаль подключается как объект и передаётся через
параметр locale.
Flatpickr позволяет задать язык по умолчанию для всех экземпляров через глобальную функцию локализации.
import flatpickr from "flatpickr";
import { Russian } from "flatpickr/dist/l10n/ru.js";
flatpickr.localize(Russian);
После вызова все последующие инициализации календаря будут использовать указанный язык, если локаль не переопределена локально в конфигурации конкретного экземпляра.
В приложениях с мультиязычным интерфейсом часто требуется динамическое переключение локали.
import flatpickr from "flatpickr";
import { Russian } from "flatpickr/dist/l10n/ru.js";
import { English } from "flatpickr/dist/l10n/default.js";
let currentLocale = English;
function setLanguage(lang) {
if (lang === "ru") {
currentLocale = Russian;
} else {
currentLocale = English;
}
flatpickr.localize(currentLocale);
}
При смене языка все новые экземпляры календаря будут использовать обновлённую локализацию.
Если требуется, чтобы разные поля ввода использовали разные языки одновременно, локаль задаётся в конфигурации конкретного экземпляра:
import flatpickr from "flatpickr";
import { Russian } from "flatpickr/dist/l10n/ru.js";
import { German } from "flatpickr/dist/l10n/de.js";
flatpickr("#date-ru", {
locale: Russian
});
flatpickr("#date-de", {
locale: German
});
Такой подход используется в многоязычных интерфейсах, где язык зависит от пользователя или контекста формы.
В проектах без сборщиков локали можно подключать через CDN. В этом случае скрипт локали загружается отдельно после основного файла Flatpickr.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<script src="https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/ru.js"></script>
<script>
flatpickr("#datepicker", {
locale: "ru"
});
</script>
При использовании CDN локаль может быть доступна как строковый идентификатор, если соответствующий файл уже загружен.
Flatpickr поддерживает передачу локали в виде строки, если она зарегистрирована или подключена:
flatpickr("#datepicker", {
locale: "ru"
});
Такой способ чаще применяется при CDN-подключении или при использовании глобально зарегистрированных локалей.
В современных сборках важно учитывать влияние локалей на размер бандла. Подключение всей библиотеки локалей приводит к увеличению финального файла, поэтому рекомендуется импортировать только нужные языки:
// плохо: импорт всех локалей
import "flatpickr/dist/l10n";
// лучше: только одна локаль
import { Russian } from "flatpickr/dist/l10n/ru.js";
При использовании tree-shaking ненужные языковые файлы исключаются из финальной сборки.
В приложениях с ленивой загрузкой (lazy loading) локали можно подгружать асинхронно:
import flatpickr from "flatpickr";
async function loadRussianCalendar() {
const { Russian } = await import("flatpickr/dist/l10n/ru.js");
flatpickr("#datepicker", {
locale: Russian
});
}
Такой подход уменьшает начальный размер приложения и загружает язык только при необходимости.
Некоторые локали могут содержать дополнительные параметры:
ordinal — формат порядковых числительныхrangeSeparator — разделитель диапазона датweekAbbreviation — сокращение неделиscrollTitle и toggleTitle — текст
подсказокЭти поля влияют на визуальные элементы календаря и доступность интерфейса.
Иногда требуется использовать базовую локаль, изменив только часть параметров:
import { Russian } from "flatpickr/dist/l10n/ru.js";
const customRussian = {
...Russian,
firstDayOfWeek: 0,
rangeSeparator: " — "
};
flatpickr("#datepicker", {
locale: customRussian
});
Такой подход позволяет адаптировать стандартную локализацию под корпоративные или региональные требования без создания полной новой локали.
Локализация влияет только на отображение интерфейса, но не изменяет
внутренний формат хранения даты. Flatpickr продолжает работать с
объектами Date, а форматирование вывода регулируется
отдельно через dateFormat.
flatpickr("#datepicker", {
locale: Russian,
dateFormat: "d.m.Y"
});
Таким образом, локаль и формат даты являются независимыми слоями конфигурации.
Создание собственной локали выполняется через объект с тем же интерфейсом:
const customLocale = {
firstDayOfWeek: 1,
weekdays: {
shorthand: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
longhand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
},
months: {
shorthand: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
longhand: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
}
};
flatpickr("#datepicker", {
locale: customLocale
});
Такая модель используется при интеграции с внутренними системами перевода или CMS.
Flatpickr определяет локаль по следующему приоритету:
flatpickr.localizeЭто позволяет гибко комбинировать глобальные настройки и локальные переопределения без конфликтов.