В библиотеке Pikaday параметр i18n отвечает за
локализацию интерфейса календаря: названия месяцев, дней недели, кнопок
навигации и вспомогательных текстов. Он позволяет адаптировать компонент
под любой язык без изменения внутренней логики работы datepicker.
i18nПараметр i18n представляет собой объект, содержащий
набор строковых полей. Каждое поле соответствует элементу интерфейса
календаря.
Базовая структура:
i18n: {
previousMonth: '',
nextMonth: '',
months: [],
weekdays: [],
weekdaysShort: []
}
Каждое свойство имеет строго определённое назначение.
previousMonth и
nextMonthЭти поля задают текст кнопок навигации между месяцами.
previousMonth — подпись для кнопки перехода к
предыдущему месяцуnextMonth — подпись для кнопки перехода к следующему
месяцуПример:
i18n: {
previousMonth: 'Предыдущий месяц',
nextMonth: 'Следующий месяц'
}
Эти строки используются также в атрибутах доступности (ARIA-label), что делает календарь более удобным для вспомогательных технологий.
months — названия
месяцевМассив months содержит полные названия месяцев в
календарном порядке от января до декабря.
Требования:
Пример для русского языка:
i18n: {
months: [
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь'
]
}
Эти значения отображаются в верхней части календаря при смене месяца.
weekdays —
полные названия дней неделиМассив weekdays определяет полные названия дней недели,
используемые в некоторых режимах отображения или при расширенной
кастомизации.
Требования:
Пример:
i18n: {
weekdays: [
'Воскресенье',
'Понедельник',
'Вторник',
'Среда',
'Четверг',
'Пятница',
'Суббота'
]
}
Важно учитывать, что порядок всегда фиксирован и не зависит от
настройки firstDay.
weekdaysShort
— сокращённые дни неделиweekdaysShort используется в шапке календаря (там, где
отображаются обозначения дней недели в сетке дат).
Требования:
weekdaysПример:
i18n: {
weekdaysShort: [
'Вс',
'Пн',
'Вт',
'Ср',
'Чт',
'Пт',
'Сб'
]
}
Эти значения отображаются над колонками календарной сетки.
На практике i18n используется как единый объект,
объединяющий все локализационные строки.
Пример полной конфигурации для русского языка:
const picker = new Pikaday({
field: document.getElementById('date'),
i18n: {
previousMonth: 'Предыдущий месяц',
nextMonth: 'Следующий месяц',
months: [
'Январь', 'Февраль', 'Март', 'Апрель',
'Май', 'Июнь', 'Июль', 'Август',
'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
],
weekdays: [
'Воскресенье', 'Понедельник', 'Вторник',
'Среда', 'Четверг', 'Пятница', 'Суббота'
],
weekdaysShort: [
'Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'
]
}
});
i18n внутри PikadayБиблиотека не выполняет строгую валидацию массива i18n.
При отсутствии некоторых полей возможны:
i18n применяется при инициализации экземпляра календаря.
Изменение объекта после создания пикера не приводит к обновлению
интерфейса автоматически.
Пример поведения:
const picker = new Pikaday({ i18n: {...} });
picker.i18n.months = [...]; // не обновит UI
Для изменения языка требуется пересоздание экземпляра.
Хотя i18n отвечает за текст, он косвенно взаимодействует
с другими настройками:
firstDay — влияет на порядок отображения недель, но не
на weekdaysShortformat — влияет на формат вывода даты, но не на
локализацию интерфейсаtoString — может использоваться для полной кастомизации
вывода с учётом локалиЕсли i18n не задан, используется встроенная английская
локализация.
Русская локализация требует полного переопределения всех массивов, так как встроенного русского набора в базовой версии библиотеки нет.
Для языков с направлением справа налево i18n часто
используется совместно с параметром isRTL. При этом:
i18n остаётся в логическом порядке языкаНекоторые локали используют формат:
weekdaysShort: ['Вс.', 'Пн.', 'Вт.', 'Ср.', 'Чт.', 'Пт.', 'Сб.']
Это не влияет на функциональность, но может улучшать визуальную согласованность интерфейса в плотных макетах.
В некоторых интерфейсах применяются сокращённые формы месяцев:
months: [
'Янв', 'Фев', 'Мар', 'Апр',
'Май', 'Июн', 'Июл', 'Авг',
'Сен', 'Окт', 'Ноя', 'Дек'
]
Это особенно актуально для компактных календарей.
i18nЧастая ошибка — передача массивов неправильной длины:
months меньше или больше 12 элементовweekdays или weekdaysShort не равны 7
элементамПоследствия:
weekdays и weekdaysShortЕсли массивы не синхронизированы по порядку, календарь будет показывать некорректные подписи, несмотря на отсутствие ошибок в консоли.
Все поля i18n должны содержать строки. Передача чисел,
null или объектов приводит к некорректному рендерингу
интерфейса.
При использовании кастомных функций рендеринга (onDraw,
модификации DOM) значения из i18n часто используются как
источник данных для:
i18n в
архитектуре Pikadayi18n является полностью изолированным слоем
представления. Он не влияет на:
minDate и maxDateЕго задача ограничивается текстовым представлением интерфейса, что делает локализацию предсказуемой и легко заменяемой без изменения ядра библиотеки.