Библиотека Globalize построена как модульная система, в которой функциональность не поставляется единым монолитным пакетом. Такой подход позволяет подключать только те компоненты, которые действительно требуются приложению, уменьшая размер бандла и ускоряя загрузку. Выбор модулей становится ключевым этапом проектирования интернационализации, поскольку от него напрямую зависят производительность, поддерживаемые локали и доступные API.
Архитектура Globalize разделяет функциональность на независимые блоки:
Каждый из этих блоков требует как собственного кода, так и соответствующих данных из CLDR. Поэтому подключение одной функции почти всегда влечёт необходимость загрузки связанных зависимостей.
Ключевой принцип: нет глобальной автоматической инициализации — всё подключается явно.
Перед выбором функциональных модулей необходимо учитывать обязательный слой данных — Unicode CLDR.
Минимальный набор:
cldr-corecldr-localenames-* (если используются названия языков и
регионов)cldr-numbers-* (если форматируются числа)cldr-dates-* (если используются даты)Без этих данных модули Globalize остаются технически подключёнными, но не способны выполнять локализационные операции.
Важно учитывать, что каждая локаль увеличивает размер бандла, поэтому выбор языков становится частью выбора модулей.
Числовой модуль подключается, если требуется:
Типовой модуль:
globalize/numberДополнительно требуется:
cldr-numbers-fullЕсли приложение работает только с одной локалью и использует фиксированный формат (например, только отображение цен), можно ограничить набор CLDR-данных, исключив лишние регионы.
Валютный функционал не является самостоятельным слоем и опирается на числовой модуль.
Подключается:
globalize/currencyОн добавляет:
Зависимости:
Ключевая ошибка при выборе модулей — подключение валюты без числового модуля. В этом случае API будет недоступен или частично неработоспособен.
Работа с датами — один из самых тяжёлых по зависимостям модулей.
Используется:
globalize/dateОн обеспечивает:
Требуемые CLDR данные:
cldr-dates-fullДополнительно могут потребоваться:
cldr-cal-buddhistcldr-cal-gregorian (обычно включён по умолчанию)При выборе этого модуля важно учитывать, что размер данных для дат значительно превышает числовые и валютные модули вместе взятые.
Модуль:
globalize/pluralИспользуется для:
Зависимости:
Плюрализация редко используется отдельно. Обычно она является частью системы сообщений.
Один из наиболее функционально насыщенных модулей:
globalize/messageОн обеспечивает:
Требует:
Этот модуль часто становится ядром i18n-слоя приложения, вокруг которого строятся остальные функции.
Выбор модулей зависит от класса приложения.
Подходит для интерфейсов с ограниченной локализацией:
Используется в:
Типичный набор:
Подходит для:
Включает полный набор CLDR-данных и все модули Globalize:
Используется, когда:
При использовании ES Modules важно учитывать, что:
Практическое правило:
выбор модулей важнее, чем попытка оптимизации на уровне сборщика
Наиболее частые проблемы:
Модуль загружен, но данные отсутствуют → API работает частично или падает.
Подключение десятков языков без необходимости приводит к росту бандла в разы.
Globalize требует, чтобы:
Нарушение порядка приводит к ошибкам формата и отсутствию локализации.
Подключение date/currency/message одновременно без фактической необходимости увеличивает:
При выборе модулей целесообразно отталкиваться не от библиотеки, а от функциональности продукта:
Такой подход приводит к более точной конфигурации, чем механическое подключение всех возможностей Globalize.
Структура зависимостей в Globalize не линейная:
Игнорирование этой структуры приводит к частичным сбоям при локализации, особенно в динамических интерфейсах, где разные модули используются одновременно.
Эффективная схема выбора модулей строится по принципу:
Такой подход обеспечивает баланс между функциональностью и размером приложения без избыточной нагрузки на клиентскую часть.