Короткие и длинные формы

В библиотеке Globalize короткая форма используется для отображения данных в максимально сжатом виде, ориентированном на интерфейсы с ограниченным пространством: списки, карточки, таблицы, мобильные элементы. Основная цель — передать смысл значения без избыточной детализации.

Числа в компактном формате

Для числовых значений короткая форма чаще всего реализуется через компактное представление (compact notation), где большие числа заменяются на сокращённые обозначения порядков.

Пример поведения:

  • 1 000 → 1K
  • 1 000 000 → 1M
  • 1 000 000 000 → 1B

Globalize использует CLDR-данные, поэтому правила сокращений зависят от локали.

Типичный пример:

Globalize.locale("en");

Globalize.formatNumber(1200, {
  style: "decimal",
  compactDisplay: "short"
});
// "1.2K"

Особенность короткой формы заключается в том, что она допускает потерю точности ради компактности. Например, 12 345 может быть отображено как 12.3K.

Даты в сокращённом формате

Короткая форма дат применяется для интерфейсов, где важно быстрое восприятие без лишних деталей:

  • 27.05.2026 вместо 27 мая 2026 года
  • 05/27/26 в англоязычной локали

Globalize опирается на шаблоны CLDR и форматирует даты в зависимости от локали:

Globalize.locale("ru");

Globalize.formatDate(new Date(2026, 4, 27), {
  date: "short"
});
// "27.05.2026"

Ключевой принцип: короткая форма исключает текстовые элементы (например, название месяца), заменяя их числовыми эквивалентами.

Время в кратком отображении

Для времени короткая форма минимизирует детализацию, часто исключая секунды:

  • 14:05 вместо 14:05:33
  • 9:00 вместо 09:00:00
Globalize.formatDate(new Date(), {
  time: "short"
});

Подобный формат используется в расписаниях, уведомлениях и интерфейсных панелях.


Длинная форма представления значений в Globalize

Длинная форма ориентирована на максимальную читаемость и полноту информации. Она применяется в отчётах, документах, аналитических интерфейсах и любых контекстах, где важна однозначность и отсутствие интерпретационных потерь.

Числа в полном формате

В длинной форме числа отображаются без сокращений, с сохранением всех разрядов и локализованных разделителей.

Пример:

Globalize.locale("en");

Globalize.formatNumber(1200000, {
  style: "decimal",
  useGrouping: true
});
// "1,200,000"

Здесь принципиально сохраняется точное значение, без округления до тысяч или миллионов.

В некоторых локалях дополнительно применяются специфические разделители:

  • пробел как разделитель тысяч
  • неразрывный пробел
  • специфические символы группировки

Даты в полном формате

Длинная форма дат включает полное название месяца, иногда дня недели и дополнительные элементы локализации:

Globalize.locale("ru");

Globalize.formatDate(new Date(2026, 4, 27), {
  date: "full"
});
// "среда, 27 мая 2026 г."

Такая форма исключает неоднозначность и ориентирована на человеческое чтение, а не на компактное отображение.

Время с полной детализацией

Полная форма времени может включать секунды и дополнительные уточнения:

Globalize.formatDate(new Date(), {
  time: "medium"
});
// "14:05:33"

В расширенных форматах возможно включение часового пояса:

  • 14:05:33 UTC+6
  • 14:05:33 GMT+6

Сравнение поведения форм

Различие между короткой и длинной формой проявляется не только в длине строки, но и в уровне абстракции:

  • короткая форма агрегирует и округляет
  • длинная форма раскрывает детали
  • короткая форма ориентирована на интерфейс
  • длинная форма ориентирована на смысловую точность

Использование форм в числах с локализацией

В Globalize выбор формы тесно связан с локалями CLDR, поскольку разные языки по-разному трактуют сокращения и полные представления.

Например:

  • в английской локали: 1K, 1M
  • в русской локали: 1 тыс., 1 млн
Globalize.locale("ru");

Globalize.formatNumber(1000, {
  style: "decimal",
  compactDisplay: "short"
});
// "1 тыс."

Это означает, что короткая форма не является универсальной — она семантически зависит от языкового окружения.


Поведение форм в датах и календарных представлениях

Длинные и короткие формы даты используют разные уровни шаблонов CLDR:

  • short — числовая минимизация
  • medium — смешанный формат
  • long — текстовые месяцы
  • full — максимальная детализация

Пример различий:

Globalize.formatDate(date, { date: "short" });
// 27.05.2026

Globalize.formatDate(date, { date: "medium" });
// 27 мая 2026 г.

Globalize.formatDate(date, { date: "long" });
// 27 мая 2026

Globalize.formatDate(date, { date: "full" });
// среда, 27 мая 2026 г.

Каждый уровень расширяет предыдущий, добавляя элементы контекста.


Роль форм в интерфейсной архитектуре

Выбор между короткой и длинной формой влияет на структуру интерфейса:

  • короткая форма снижает визуальную нагрузку
  • длинная форма повышает читаемость данных
  • переключение форм позволяет адаптировать интерфейс под плотность информации

В сложных системах часто используется динамическое переключение:

  • таблицы → короткая форма
  • карточки деталей → длинная форма
  • экспорт данных → длинная форма
  • виджеты → короткая форма