Перевод сокращенных названий

В библиотеке Pikaday перевод и переопределение сокращённых названий календарных элементов осуществляется через объект i18n, который передаётся при инициализации календаря. Особое значение имеют массивы weekdaysShort и monthsShort, отвечающие за компактное отображение дней недели и месяцев в интерфейсе календаря.

Структура i18n для сокращённых названий

Объект локализации содержит несколько ключевых полей, связанных с текстовыми представлениями дат:

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: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']
};

Такой формат применяется, когда интерфейс требует минимального пространства, например:

  • мобильные версии календаря
  • компактные виджеты
  • встроенные формы с ограниченной шириной

Интеграция сокращённых названий в инициализацию Pikaday

Передача локализации осуществляется через параметр i18n при создании экземпляра календаря:

const picker = new Pikaday({
    field: document.getElementById('datepicker'),
    i18n: {
        previousMonth: 'Предыдущий месяц',
        nextMonth: 'Следующий месяц',
        monthsShort: [
            'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн',
            'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'
        ],
        weekdaysShort: [
            'Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'
        ]
    }
});

Приоритет значений

При рендеринге интерфейса Pikaday использует следующий порядок:

  1. Значения из i18n
  2. Встроенные дефолтные английские строки
  3. Фоллбэк-значения библиотеки

Работа с нестандартными сокращениями

В некоторых языковых системах стандартные двух- или трёхбуквенные сокращения не подходят. В таких случаях допускается произвольная длина строк.

weekdaysShort: ['Вс', 'Пн', 'Вт', 'Ср', 'Ч', 'Пт', 'Сб']

Ограничения интерфейса

  • UI календаря не ограничивает длину строк программно
  • визуальные проблемы возникают только на уровне верстки
  • длинные значения требуют адаптации CSS

Кастомизация под RTL и локальные стандарты

При работе с языками с направлением справа налево или специфическими календарными традициями сокращения могут отличаться не только по длине, но и по логике отображения.

Пример адаптации:

const i18n = {
    weekdaysShort: ['ش', 'إث', 'ث', 'ر', 'خ', 'ج', 'س']
};

В таких случаях важно сохранять индексную структуру массива, а не визуальную симметрию.


Взаимодействие сокращений с форматированием дат

Сокращённые названия не влияют на формат даты напрямую, но используются в следующих элементах интерфейса:

  • заголовок календаря
  • навигация по месяцам
  • подписи дней недели
  • компактные всплывающие панели

Типовые ошибки при локализации сокращений

1. Пропущенные элементы массива

weekdaysShort: ['Пн', 'Вт', 'Ср'] // критическая ошибка

Результат — нарушение структуры календаря.

2. Использование объектов вместо массивов

weekdaysShort: {
    mon: 'Пн',
    tue: 'Вт'
}

Pikaday не интерпретирует такой формат.

3. Несоответствие локали интерфейса

monthsShort: ['Jan', 'Feb', 'Март']

Гибридные наборы снижают читаемость и нарушают консистентность.


Системная роль сокращённых названий в Pikaday

Сокращённые формы выполняют не только визуальную функцию, но и участвуют в:

  • оптимизации пространства интерфейса
  • ускорении восприятия календаря
  • унификации отображения дат в разных компонентах
  • адаптации под ограниченные UI-контейнеры

Корректная настройка weekdaysShort и monthsShort является обязательным элементом полной локализации Pikaday, особенно в многоязычных приложениях с динамическим интерфейсом.