В библиотеке Globalize под стилями представления понимается набор предопределённых и настраиваемых режимов форматирования данных, которые определяются правилами CLDR и применяются к числам, датам, валютам и единицам измерения. Эти стили обеспечивают единообразие вывода информации в зависимости от локали без необходимости ручного форматирования строк.
Архитектурно стили представления отделены от логики данных: одна и та же числовая или временная величина может быть представлена разными способами без изменения исходного значения. Это позволяет сохранять чистую бизнес-логику и переносить ответственность за форматирование на слой интернационализации.
Числовые стили в Globalize определяются через метод форматирования чисел, который использует CLDR-шаблоны и параметры локали.
Основные категории:
Каждый стиль влияет на три ключевых аспекта:
Десятичный стиль используется как базовый и применяется для большинства числовых значений без дополнительной семантики.
const numberFormatter = Globalize.numberFormatter({ style: "decimal" });
numberFormatter(12345.678);
// "12,345.678" (в зависимости от локали)
Поведение зависит от локали:
Десятичный стиль является базой, на которой строятся остальные представления.
Процентный стиль масштабирует значение и добавляет символ процента в соответствии с локальными правилами.
const percentFormatter = Globalize.numberFormatter({ style: "percent" });
percentFormatter(0.25);
// "25%"
Особенности:
Процентный стиль часто используется в статистике, финансовых отчётах и UI-индикаторах.
Валютный стиль является наиболее сложным из числовых представлений, так как включает:
const currencyFormatter = Globalize.numberFormatter({
style: "currency",
currency: "USD"
});
currencyFormatter(1234.5);
// "$1,234.50"
Ключевые параметры:
currency — обязательный ISO-код валютыminimumFractionDigits и
maximumFractionDigits — контроль точностиround — стратегия округленияВ рамках валютного стиля существует несколько подрежимов отображения:
Использует локальный символ валюты:
Globalize.numberFormatter({
style: "currency",
currency: "EUR"
});
Результат зависит от локали:
Отображение через ISO-код:
Globalize.numberFormatter({
style: "currency",
currency: "USD",
currencyDisplay: "code"
});
Пример:
Globalize.numberFormatter({
style: "currency",
currency: "USD",
currencyDisplay: "name"
});
Результат:
Accounting-режим влияет на отображение отрицательных значений:
Globalize.numberFormatter({
style: "currency",
currency: "USD",
currencySign: "accounting"
});
Отрицательные значения могут отображаться как:
Научный стиль используется для очень больших или очень маленьких чисел.
const sciFormatter = Globalize.numberFormatter({
style: "scientific"
});
sciFormatter(1234567);
// "1.234567E6"
Особенности:
Компактный стиль предназначен для UI и визуализаций, где важна краткость представления.
const compactFormatter = Globalize.numberFormatter({
style: "decimal",
notation: "compact"
});
compactFormatter(1200);
// "1K"
Разновидности:
Компактный стиль активно используется в интерфейсах аналитики и социальных метрик.
Форматирование дат в Globalize основано на CLDR-шаблонах и поддерживает несколько стандартных уровней детализации.
const dateFormatter = Globalize.dateFormatter({ date: "short" });
dateFormatter(new Date());
// "27.05.26" (пример для локали)
Основные стили:
Временные форматы отделяются от дат:
const timeFormatter = Globalize.dateFormatter({ time: "short" });
timeFormatter(new Date());
// "14:35"
Особенности:
Можно объединять стили:
const datetimeFormatter = Globalize.dateFormatter({
datetime: "medium"
});
datetimeFormatter(new Date());
// "27 мая 2026, 14:35"
Комбинированный стиль автоматически синхронизирует формат даты и времени в соответствии с правилами локали.
Относительные стили используются для выражений типа «через 5 минут» или «2 дня назад».
const relativeFormatter = Globalize.relativeTimeFormatter("day");
relativeFormatter(-2);
// "2 дня назад"
Характеристики:
Форматирование единиц основано на CLDR units.
const unitFormatter = Globalize.unitFormatter({
unit: "kilometer-per-hour"
});
unitFormatter(120);
// "120 km/h"
Типы представления:
Все стили представления зависят от загруженных данных локали:
Без корректно загруженного CLDR-датасета стили либо не работают, либо возвращают упрощённые значения.
Хотя Globalize опирается на стандартизированные стили, допускается частичная кастомизация через параметры форматирования.
Пример изменения точности:
Globalize.numberFormatter({
style: "decimal",
minimumFractionDigits: 2,
maximumFractionDigits: 4
});
Поведение:
Округление тесно связано со стилями представления чисел:
Globalize.numberFormatter({
style: "currency",
currency: "USD",
round: "ceil"
});
Возможные стратегии:
Каждая стратегия влияет на итоговое визуальное представление, особенно в валютных и процентных стилях.
При форматировании значения применяется последовательность правил:
Эта цепочка обеспечивает предсказуемость результата при любых комбинациях настроек.
Стили представления используются в разных слоях приложения:
Единообразие достигается за счёт повторного использования одних и тех же форматтеров, а не дублирования логики форматирования в разных частях системы.