Библиотека FAST Element предоставляет удобные механизмы для локализованного форматирования данных в пользовательском интерфейсе. Особое внимание уделяется числам и датам, поскольку они имеют множество вариантов представления и зависят от выбранного языка и региона.
Intl в экосистеме
FASTFAST Element опирается на встроенные возможности веб-платформы,
главным образом на API Intl. Форматирование чисел, валют,
процентов и дат выполняется через объекты Intl.NumberFormat
и Intl.DateTimeFormat. Такое решение исключает
необходимость в сторонних зависимостях и обеспечивает корректную работу
как в браузере, так и в среде веб-компонентов.
Использование Intl позволяет конфигурировать
форматирование по локали и набору опций. Например, валюта, единицы
измерения, разрядность дробной части и схема отображения времени могут
быть заданы при инициализации форматтера и переиспользованы в
компонентах FAST.
Ключевые параметры цифрового форматирования включают:
Использование этих опций позволяет отображать одно и то же число в разных контекстах, сохраняя единый источник данных внутри компонента.
Компоненты FAST Element поддерживают привязку значений через директивы. Форматирование может быть выполнено в вычисляемых свойствах либо через пользовательские конвертеры. Конвертеры выступают прослойкой между данными и шаблоном, позволяя разделять ответственность: бизнес-логика генерирует значения, а конвертер определяет способ их отображения.
Для валютных значений характерно использование
style: "currency" с явным указанием кода валюты. Проценты
же обычно выводятся через style: "percent" с динамической
точностью.
Финансовые и статистические компоненты требуют корректного
отображения больших значений. FAST Element не накладывает ограничений на
диапазон, используя возможности Intl.NumberFormat. При
необходимости сокращения (1K, 10M) применяется
опция notation: "compact", обеспечивающая лаконичное
представление без потери смысла.
Форматирование дат опирается на Intl.DateTimeFormat.
Параметры dateStyle и timeStyle задают степень
детализации: от краткого (short) до расширенного
(full). Благодаря этому дата может быть выведена как в
компактном виде для таблиц, так и в развернутом варианте для карточных
компонентов.
Локаль влияет на порядок элементов (день-месяц-год или месяц-день-год), разделители и наименования месяцев. FAST Element не вмешивается в выбор локали, передавая её напрямую в конструктор форматтера.
Опция timeZone позволяет привязать дату к конкретной
временной зоне. Для событийных компонентов это критично, поскольку одна
и та же временная метка может иметь разный смысл в зависимости от
локации пользователя. Параметры hourCycle,
hour, minute, second и
fractionalSecondDigits контролируют детализацию времени,
включая поддержку субсекундной точности.
Конвертеры часто применяются для отображения дат в относительной
форме (например: “2 часа назад”). FAST Element допускает использование
сторонних библиотек для вычисления относительных дат, однако вывод может
быть выполнен через Intl.RelativeTimeFormat, что снижает
зависимость от внешнего кода и упрощает интернационализацию.
Механизм реактивных свойств FAST гарантирует корректный пересчет форматированных значений при изменении исходных данных. Форматтеры могут храниться в свойствах компонента и кэшироваться для повышения производительности, особенно если форматирование выполняется часто.
Привязка в шаблоне FAST использует выражения, позволяя комбинировать данные и конвертеры. Например, одно и то же значение даты может быть отформатировано по-разному в разных частях компонента, без дублирования бизнес-логики.
Локаль обычно передается извне и не жестко зашивается в компонент. Это повышает переносимость и позволяет использовать компоненты в разных контекстах. FAST Element не навязывает единый подход к хранению и управлению локалью; она может поступать через контекст, параметры конструктора, глобальные настройки приложения или системные предпочтения браузера.
Поддержка дополнительных языков и региональных форматов сводится к
правильному выбору параметров Intl и созданию
унифицированных конвертеров. Такой подход упрощает тестирование и
снижает вероятность ошибок, связанных с неверным порядком элементов даты
или форматированием валют.
Инициализация Intl.NumberFormat и
Intl.DateTimeFormat относительно затратна. В компонентах
FAST принято кэшировать экземпляры форматтеров на уровне класса или
инстанса. При смене локали кэш инвалидации обязателен, иначе
форматирование останется прежним.
Кэширование также важно для списочных компонентов, например таблиц с финансовыми данными или расписаниями, где пересчет значений происходит многократно при рендере.
Проверка форматирования выполняется через фиксированную локаль и статические входные данные. Для чисел тестируются валютные, процентные и компактные формы. Для дат проверяются порядок и полнота данных, в том числе часовой пояс и локализованные названия месяцев.
Тесты не требуют сложной инфраструктуры: Intl
детерминирован при фиксированной локали, что делает проверку
предсказуемой и надежной.