В библиотеке Pikaday перевод и переопределение сокращённых названий
календарных элементов осуществляется через объект i18n,
который передаётся при инициализации календаря. Особое значение имеют
массивы weekdaysShort и monthsShort,
отвечающие за компактное отображение дней недели и месяцев в интерфейсе
календаря.
Объект локализации содержит несколько ключевых полей, связанных с текстовыми представлениями дат:
const i18n = {
previousMonth: 'Previous Month',
nextMonth: 'Next Month',
months: [],
weekdays: [],
weekdaysShort: [],
weekdaysAbbrev: []
};
На практике для перевода сокращённых названий основное внимание уделяется следующим массивам:
months — полные названия месяцевmonthsShort (в некоторых реализациях добавляется
вручную) — сокращённые формы месяцевweekdays — полные названия дней неделиweekdaysShort — сокращённые названия дней неделиВажно учитывать, что Pikaday по умолчанию использует либо встроенные
значения, либо переданные через i18n, поэтому отсутствие
корректных массивов приводит к отображению стандартных английских
сокращений.
Сокращённые названия месяцев задаются массивом, индекс которого соответствует порядковому номеру месяца (от 0 до 11).
const i18n = {
monthsShort: [
'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн',
'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'
]
};
0 соответствует январю11 соответствует декабрю1. Нарушение порядка элементов
// Ошибка: перепутан порядок месяцев
monthsShort: ['Фев', 'Янв', 'Мар', ...]
Такое определение приводит к некорректной визуализации календаря.
2. Использование строк с разной длиной без учета интерфейса
monthsShort: ['Январь', 'Фев', 'Март', ...]
Длинные элементы могут ломать сетку календаря.
Наиболее важный элемент локализации — массив
weekdaysShort, который используется в заголовке
календаря.
const i18n = {
weekdaysShort: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']
};
Pikaday ожидает строгую последовательность:
0 — воскресенье1 — понедельник2 — вторник3 — среда4 — четверг5 — пятница6 — субботаНарушение этого порядка приводит к смещению дней в календарной сетке.
Хотя сокращённые названия используются в интерфейсе, полные формы часто задаются параллельно:
const i18n = {
weekdays: [
'Воскресенье', 'Понедельник', 'Вторник',
'Среда', 'Четверг', 'Пятница', 'Суббота'
],
weekdaysShort: [
'Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'
]
};
Несоответствие между weekdays и
weekdaysShort не вызывает ошибок выполнения, но приводит к
логической путанице при кастомной обработке событий.
В некоторых локализациях используется дополнительный массив
weekdaysMin, содержащий максимально короткие формы:
const i18n = {
weekdaysMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']
};
Такой формат применяется, когда интерфейс требует минимального пространства, например:
Передача локализации осуществляется через параметр i18n
при создании экземпляра календаря:
const picker = new Pikaday({
field: document.getElementById('datepicker'),
i18n: {
previousMonth: 'Предыдущий месяц',
nextMonth: 'Следующий месяц',
monthsShort: [
'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн',
'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'
],
weekdaysShort: [
'Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'
]
}
});
При рендеринге интерфейса Pikaday использует следующий порядок:
i18nВ некоторых языковых системах стандартные двух- или трёхбуквенные сокращения не подходят. В таких случаях допускается произвольная длина строк.
weekdaysShort: ['Вс', 'Пн', 'Вт', 'Ср', 'Ч', 'Пт', 'Сб']
При работе с языками с направлением справа налево или специфическими календарными традициями сокращения могут отличаться не только по длине, но и по логике отображения.
Пример адаптации:
const i18n = {
weekdaysShort: ['ش', 'إث', 'ث', 'ر', 'خ', 'ج', 'س']
};
В таких случаях важно сохранять индексную структуру массива, а не визуальную симметрию.
Сокращённые названия не влияют на формат даты напрямую, но используются в следующих элементах интерфейса:
1. Пропущенные элементы массива
weekdaysShort: ['Пн', 'Вт', 'Ср'] // критическая ошибка
Результат — нарушение структуры календаря.
2. Использование объектов вместо массивов
weekdaysShort: {
mon: 'Пн',
tue: 'Вт'
}
Pikaday не интерпретирует такой формат.
3. Несоответствие локали интерфейса
monthsShort: ['Jan', 'Feb', 'Март']
Гибридные наборы снижают читаемость и нарушают консистентность.
Сокращённые формы выполняют не только визуальную функцию, но и участвуют в:
Корректная настройка weekdaysShort и
monthsShort является обязательным элементом полной
локализации Pikaday, особенно в многоязычных приложениях с динамическим
интерфейсом.