Типы данных

В интернационализации JavaScript-окружений числовые значения рассматриваются как один из базовых типов данных, требующих локализационной обработки. Библиотека Globalize использует данные CLDR (Unicode Common Locale Data Repository) для формирования правил форматирования чисел в зависимости от локали.

К числовым данным относятся:

  • целые числа;
  • числа с плавающей точкой;
  • проценты;
  • числа в экспоненциальной записи;
  • числовые значения с группировкой разрядов.

Локализация разделителей

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

  • точка как десятичный разделитель (например, 1.23);
  • запятая как десятичный разделитель (например, 1,23);
  • пробел или неразрывный пробел для группировки тысяч.

Globalize применяет соответствующие правила автоматически после загрузки CLDR-данных для выбранной локали.

Форматы чисел

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

  • decimal — обычное число;
  • percent — процентное представление;
  • scientific — экспоненциальная запись;
  • compact — сокращённые формы (например, 1K, 1M в соответствующих локалях).

Каждый формат определяется набором паттернов, которые зависят от языка и региона, включая правила округления и отображения знаков.


Дата и время

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

Globalize опирается на CLDR для формирования:

  • календарных систем;
  • локализованных форматов отображения;
  • правил относительного времени;
  • временных зон (косвенно через форматирование).

Форматы представления даты

Поддерживаются различные уровни детализации:

  • короткий формат даты;
  • средний формат;
  • длинный формат;
  • полный формат.

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

Форматы времени

Временные значения форматируются с учётом:

  • 12-часового или 24-часового представления;
  • обозначений AM/PM;
  • порядка отображения часов, минут и секунд;
  • локальных разделителей.

Календарные особенности

CLDR-данные определяют:

  • первый день недели;
  • названия месяцев и дней недели;
  • локализованные сокращения;
  • особенности отображения дат в историческом и современном контексте.

Валюты

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

Globalize использует тип данных «валюта» для форматирования чисел с денежными единицами.

Основные характеристики валютных данных

  • код валюты (ISO 4217);
  • символ валюты;
  • позиция символа относительно числа;
  • правила пробелов между числом и символом;
  • формат отрицательных значений.

Локализационные различия

Разные локали по-разному отображают одну и ту же валюту:

  • $1,000.00 в англоязычных регионах;
  • 1 000,00 € в ряде европейских локалей;
  • порядок символов может изменяться (до или после числа).

Округление и точность

Финансовые значения часто требуют:

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

Множественные формы

Множественные формы (plural rules) представляют собой отдельный тип данных, связанный не с форматированием чисел напрямую, а с грамматической интерпретацией количеств.

Globalize использует правила CLDR для определения форм слов в зависимости от числа.

Категории множественных форм

В зависимости от языка могут использоваться:

  • one (единственное число);
  • few (несколько);
  • many (много);
  • other (прочие формы).

Количество категорий варьируется по языкам: некоторые языки имеют только две формы, другие — до шести и более.

Роль в форматировании сообщений

Множественные формы применяются в строковых шаблонах, где числовое значение влияет на грамматическую структуру сообщения.


Единицы измерения

Единицы измерения являются типом данных, объединяющим числовое значение и физическую или абстрактную величину.

Globalize поддерживает форматирование:

  • длины (метры, километры, мили);
  • массы (граммы, килограммы);
  • объёма (литры, миллилитры);
  • скорости;
  • температуры;
  • цифровых объёмов (байты, килобайты и т. д.).

Локализованные обозначения

Каждая единица измерения имеет:

  • полную форму (например, «километр»);
  • сокращённую форму;
  • символическое обозначение (если применимо).

Форматы представления

Поддерживаются различные стили отображения:

  • короткий;
  • средний;
  • длинный;
  • компактный.

Выбор формата зависит от контекста отображения и доступного пространства интерфейса.


Строковые сообщения

Строковые сообщения представляют собой сложный тип данных, объединяющий текст, переменные и правила локализации.

Globalize использует формат ICU MessageFormat через данные CLDR.

Структура сообщений

Сообщения могут включать:

  • плейсхолдеры для подстановки значений;
  • условия выбора формы (plural rules);
  • вложенные выражения;
  • форматирование чисел и дат внутри строки.

Переменные в сообщениях

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

  • числа;
  • даты;
  • валюты;
  • строки.

Каждая переменная может дополнительно форматироваться согласно локали.

Условная логика

MessageFormat поддерживает:

  • выбор формы в зависимости от числа;
  • выбор текста в зависимости от значения переменной;
  • комбинирование нескольких условий.

Локализованные списки

Списки данных представляют собой отдельный тип, используемый для корректного соединения элементов в строку.

Globalize применяет правила CLDR для построения списков с учётом языка.

Особенности формирования

  • разные разделители для двух и более элементов;
  • различия между «и», «или», запятыми и другими связками;
  • локальные правила пунктуации.

Относительное время

Относительное время описывает временные интервалы относительно текущего момента.

Тип данных включает выражения:

  • «1 минута назад»;
  • «через 2 часа»;
  • «3 дня назад»;
  • «через месяц».

Категории интервалов

  • секунды;
  • минуты;
  • часы;
  • дни;
  • недели;
  • месяцы;
  • годы.

Каждая категория имеет собственные правила округления и выбора словоформ.


Внутренняя модель CLDR-данных

Globalize не содержит встроенных локализационных правил. Все типы данных определяются внешними наборами CLDR:

  • числовые паттерны;
  • правила множественных форм;
  • форматы дат и времени;
  • валютные обозначения;
  • списочные конструкции;
  • единицы измерения.

Загрузка и корректная инициализация этих данных определяет полноту поддержки типов данных в приложении.


Взаимосвязь типов данных

Типы данных в Globalize не существуют изолированно. Они взаимодействуют в рамках единой системы форматирования:

  • числовые значения используются в валюте, единицах и процентах;
  • даты и время участвуют в сообщениях и относительном времени;
  • множественные формы влияют на строковые шаблоны;
  • списки объединяют любые локализованные сущности.

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