Globalize предоставляет слой международной локализации поверх данных CLDR (Unicode Common Locale Data Repository), благодаря чему форматирование чисел становится зависимым от культурных правил конкретной локали. Основная задача числовых форматтеров — преобразование внутренних числовых значений в строковое представление, соответствующее региональным соглашениям: разделители групп, десятичные символы, система округления, отображение знаков и другие нюансы.
Форматирование в Globalize строится вокруг трёх ключевых элементов:
Перед использованием форматтеров требуется загрузка соответствующих данных CLDR: минимум числовых символов и правил форматирования.
После подготовки данных создаётся экземпляр форматтера, который компилирует правила один раз и далее применяется многократно, что снижает накладные расходы при массовом форматировании.
Основной метод работы с числами — formatNumber. Он
преобразует числовое значение в строку согласно локали.
Типичный сценарий:
en, de,
ru);Особенности локализации:
. или
,);В разных локалях одно и то же число может выглядеть принципиально по-разному, что делает форматтер критически важным для интерфейсов.
В основе форматирования лежат шаблоны, описывающие:
Пример логики шаблона:
0 — обязательная цифра;# — необязательная цифра;, — разделитель групп;. — десятичный разделитель.Эти символы интерпретируются в соответствии с CLDR-правилами, что позволяет адаптировать форматирование под десятки языков без ручной настройки.
Одним из ключевых аспектов числовых форматтеров является контроль точности:
При форматировании Globalize применяет правила округления, совместимые с международными стандартами, что позволяет избежать несогласованностей при отображении финансовых или статистических данных.
Особое значение имеет параметр максимального количества дробных знаков: он определяет, будет ли число сокращено или отображено полностью.
Числовые форматтеры поддерживают преобразование значений в проценты. Логика заключается в масштабировании числа и добавлении соответствующего символа.
Особенности:
В разных регионах символ процента может иметь различные пробелы или позиции относительно числа, что учитывается CLDR.
При работе с крупными значениями применяется:
Globalize не ограничивается западной системой триадной группировки, так как CLDR содержит альтернативные схемы.
Это особенно важно для финансовых и аналитических интерфейсов, где корректность визуального представления критична.
Форматтеры чисел обрабатывают отрицательные значения с учётом локальных соглашений:
CLDR определяет несколько вариантов отображения отрицательных чисел, и Globalize выбирает соответствующий локали вариант автоматически.
В сложных сценариях используются комбинированные паттерны:
Такие паттерны позволяют создавать гибкие системы отображения, где внешний вид числа зависит от его величины.
Ключевое отличие Globalize от простых форматтеров — строгая зависимость от локали:
Каждая локаль представляет собой набор правил, а не просто язык интерфейса.
Форматтеры создаются один раз и используются многократно. Это важно для производительности:
В высоконагруженных приложениях (дашборды, финансовые панели) это критический фактор оптимизации.
Форматтеры отделяют:
Это позволяет:
Такой подход исключает смешение логики данных и представления.
При передаче значений, не являющихся числами:
Это важно для обработки пользовательского ввода и внешних API.
CLDR определяет:
Globalize не реализует собственную систему локализации чисел, а полностью опирается на CLDR, что обеспечивает совместимость с международными стандартами Unicode.
Помимо стандартных шаблонов допускается создание пользовательских форматов:
Кастомные форматы позволяют адаптировать отображение чисел под предметную область без изменения исходных данных.
При работе с числовыми форматтерами следует учитывать:
Форматирование не является математической операцией, а представляет собой слой представления, зависящий от культурных правил.