Библиотека Globalize построена вокруг набора высокоуровневых методов, которые обеспечивают форматирование и парсинг данных с учётом локали. Эти методы работают поверх данных Unicode CLDR (Common Locale Data Repository), поэтому корректная инициализация CLDR является обязательным условием их функционирования.
Перед использованием любых глобальных методов необходимо загрузить минимальный набор данных CLDR. Без этого библиотека не сможет корректно интерпретировать локали, форматы чисел, дат и валют.
Основные типы данных CLDR:
Загрузка обычно выполняется через модуль cldr-data:
import Globalize from "globalize";
import likelySubtags from "cldr-data/supplemental/likelySubtags.json";
import currencyData from "cldr-data/main/ru/currencies.json";
import numbers from "cldr-data/main/ru/numbers.json";
import timeData from "cldr-data/main/ru/timeZoneNames.json";
Globalize.load(likelySubtags, currencyData, numbers, timeData);
Globalize.locale("ru");
Ключевой момент: глобальные методы Globalize не работают без установленной локали. Локаль определяет правила форматирования и парсинга.
Методы форматирования чисел позволяют преобразовывать числовые значения в строковое представление с учётом локали.
Метод formatNumber преобразует число в локализованную
строку.
const globalize = new Globalize("ru");
globalize.formatNumber(1234567.89);
// "1 234 567,89"
Особенности поведения:
Пример компактного представления:
globalize.formatNumber(1500000, { compact: "short" });
// "1,5 млн"
Метод parseNumber выполняет обратное преобразование
строки в число.
globalize.parseNumber("1 234 567,89");
// 1234567.89
Ключевая особенность заключается в строгом соблюдении локали: строка должна соответствовать правилам форматирования текущего языка.
При несовпадении формата результат может быть NaN:
globalize.locale("ru");
globalize.parseNumber("1,234.56");
// NaN (не соответствует русскому формату)
Метод formatCurrency используется для форматирования
чисел как денежных значений.
const globalize = new Globalize("ru");
globalize.formatCurrency(1999.99, "RUB");
// "1 999,99 ₽"
Основные особенности:
Пример с другой валютой:
globalize.formatCurrency(100, "USD");
// "100,00 $"
При этом правила отображения могут отличаться:
Метод formatDate отвечает за преобразование объекта
Date в строку с учётом локали и заданного формата.
const globalize = new Globalize("ru");
globalize.formatDate(new Date(2026, 0, 15), { datetime: "short" });
// "15.01.2026, 00:00"
Поддерживаемые стили форматирования:
short — краткий формат;medium — средний;long — расширенный;full — полный формат с детализацией.Пример расширенного формата:
globalize.formatDate(new Date(), { datetime: "long" });
// "28 мая 2026 г., 14:30:00 GMT+6"
Метод parseDate преобразует строку в объект
Date.
globalize.parseDate("15.01.2026");
// Date объект
Особенность работы заключается в том, что метод ориентируется на локальные форматы. Строка должна соответствовать ожидаемому шаблону для текущей локали.
Пример с явным форматом:
globalize.parseDate("28 мая 2026 г.", { skeleton: "yMMMMd" });
Если формат не совпадает, результатом будет null.
Метод formatMessage используется для интернационализации
строк с параметрами.
Сначала определяются сообщения:
Globalize.loadMessages({
ru: {
greeting: "Привет, {name}!",
}
});
Использование:
const globalize = new Globalize("ru");
globalize.formatMessage("greeting", { name: "Алексей" });
// "Привет, Алексей!"
Метод поддерживает:
Globalize учитывает правила множественных форм, зависящие от языка.
Globalize.loadMessages({
ru: {
item: "{count, plural, one {# элемент} few {# элемента} many {# элементов} other {# элемента}}"
}
});
Использование:
globalize.formatMessage("item", { count: 5 });
// "5 элементов"
Механизм основан на CLDR-правилах, поэтому корректно работает для сложных языков с несколькими формами множественного числа.
Хотя Globalize чаще используется через экземпляры, существует концепция глобального контекста локали, влияющего на поведение форматирования.
Globalize.locale("ru");
Эта настройка влияет на все последующие вызовы, если локаль не переопределена на уровне экземпляра.
Особенности:
new Globalize("en") имеют приоритет над
глобальной настройкой;Глобальные методы Globalize работают как единая система:
formatNumber и parseNumber используют
общие числовые правила CLDR;formatDate и parseDate используют
временные схемы локали;formatCurrency объединяет числовые и валютные данные
CLDR;formatMessage использует правила плюрализации и
интерполяции.Общая архитектура строится вокруг принципа:
Это обеспечивает консистентность поведения всех методов независимо от типа данных.
Если необходимые данные не загружены, глобальные методы ведут себя непредсказуемо:
NaN или null.Поэтому корректная загрузка всех зависимостей CLDR является обязательной частью работы с библиотекой.
Globalize использует кэширование форматтеров:
formatNumber с одинаковыми параметрами
используют кеш;Это снижает накладные расходы при массовом форматировании данных, особенно в интерфейсах с большим количеством локализованных элементов.