Буддийский календарь представляет собой календарную систему, используемую в ряде стран Юго-Восточной Азии, прежде всего в Таиланде, Лаосе, Камбодже и Мьянме. В программной локализации он рассматривается как отдельный календарный режим поверх григорианской системы с фиксированным сдвигом летоисчисления.
В JavaScript-экосистеме работа с таким календарём реализуется через стандарты Unicode CLDR (Common Locale Data Repository) и библиотеку Globalize, которая опирается на эти данные для форматирования дат, чисел и единиц измерения в соответствии с культурными нормами.
Globalize не реализует календарные алгоритмы самостоятельно. Он выступает как слой доступа к данным CLDR, где описаны:
Библиотека опирается на ICU-совместимую модель, где календарь является частью контекста локали.
Ключевой момент: календарь не выбирается напрямую в Globalize как отдельный объект, он задаётся через модификатор локали.
В CLDR буддийский календарь реализован как вариант григорианского календаря с фиксированным сдвигом:
Таким образом:
BE (Buddhist Era) = CE (Common Era) + 543
Пример:
В Globalize буддийский календарь активируется через расширенную локаль ICU:
th-TH-u-ca-buddhist
Разбор:
th — язык (тайский);TH — регион (Таиланд);u-ca-buddhist — Unicode extension, указывающая
календарную систему.Эта запись не меняет язык интерфейса, но влияет на:
Globalize требует предварительной загрузки CLDR-данных. Для поддержки буддийского календаря необходимы:
th);ca-buddhist);Пример структуры подключения:
Без этих данных библиотека не сможет корректно интерпретировать календарную систему.
После инициализации Globalize с соответствующей локалью, форматирование даты учитывает сдвиг эры.
Принцип работы:
Date;Пример логики:
2026-05-27th-TH-u-ca-buddhist2569CLDR определяет несколько уровней представления дат:
В буддийском календаре отличие проявляется прежде всего в числовом представлении года.
Пример различий:
27/05/202627/05/2569Форматирование зависит не от логики приложения, а от шаблонов CLDR.
Внутри CLDR используется правило смещения:
year_buddhist = year_gregorian + 543
Однако важно учитывать, что:
Это позволяет избежать проблем с:
Globalize не хранит состояние календаря глобально. Каждая операция форматирования выполняется в контексте выбранной локали.
Типичный сценарий:
Особенность:
Буддийский календарь в Globalize совместим с:
Во многих средах Globalize используется как полифил или расширение для Intl, особенно когда требуется:
При использовании буддийского календаря важно учитывать:
Globalize обеспечивает разделение этих слоёв:
Поддержка буддийского календаря в Globalize и CLDR имеет ряд ограничений:
Это делает модель предсказуемой, но упрощённой.
Буддийский календарь в Globalize применяется в задачах:
Основная цель — соответствие культурной норме отображения времени без изменения внутренней логики приложения.