Globalize представляет собой библиотеку для интернационализации (i18n), построенную на данных CLDR (Unicode Common Locale Data Repository). Архитектура ориентирована на строгую разделённость кода и локализованных данных, что позволяет гибко управлять загрузкой ресурсов и минимизировать размер клиентских сборок.
Основой работы служат данные CLDR, содержащие стандартизированную информацию о локалях:
CLDR не встраивается в библиотеку напрямую. Данные подключаются отдельно, что обеспечивает:
Одной из ключевых возможностей является форматирование числовых значений с учётом локали.
Поддерживаются:
Пример использования:
Globalize.numberFormatter()(1234567.89);
// "1,234,567.89" (для en)
Разделение логики форматирования и локальных правил позволяет применять одинаковый код для разных языков без модификации бизнес-логики.
Функциональность валютного форматирования опирается на те же CLDR-данные:
Пример:
Globalize.currencyFormatter("USD")(1234.5);
// "$1,234.50"
Поддерживается единый интерфейс для различных валют, что упрощает финансовые интерфейсы и международные приложения.
Библиотека предоставляет гибкую систему форматирования дат:
Пример:
Globalize.dateFormatter({ datetime: "medium" })(new Date());
// "May 27, 2026, 10:30:00 AM"
Разделение шаблонов и данных локали позволяет адаптировать отображение под конкретный регион без изменения кода.
Помимо форматирования, Globalize поддерживает обратные операции:
Пример:
Globalize.numberParser()("1,234.56");
// 1234.56
Парсинг учитывает локальные особенности, включая нестандартные разделители и порядок символов.
Поддерживается форматирование сообщений с параметризацией:
Пример:
const message = Globalize.messageFormatter("en")(
"{count, plural, one {# item} other {# items}}"
);
message({ count: 3 });
// "3 items"
Эта система основана на ICU MessageFormat, что обеспечивает совместимость с индустриальными стандартами локализации.
Языки различаются правилами склонения. Globalize использует CLDR для определения корректных форм:
Это позволяет избегать ручного написания условий в коде приложения.
Одним из ключевых преимуществ является модульная структура:
Такой подход снижает нагрузку на клиентскую часть и улучшает производительность веб-приложений.
Локальные данные могут загружаться динамически:
Это позволяет не включать все языки в начальный бандл и уменьшать время загрузки приложения.
Использование CLDR обеспечивает единые правила форматирования на разных уровнях:
Одинаковые данные обеспечивают предсказуемость отображения независимо от окружения выполнения.
Архитектура позволяет:
Это делает систему устойчивой к масштабированию многоязычных проектов.
В отличие от нативных механизмов интернационализации, библиотека не зависит от реализации среды выполнения:
Использование единого источника данных и строгих правил обеспечивает:
За счёт разделения данных и кода достигаются следующие эффекты:
Система подходит для приложений с динамическим переключением языков:
Такая модель особенно эффективна в интерфейсах с высокой степенью персонализации.