Единицы измерения в интернационализированных интерфейсах требуют не только перевода названий, но и адаптации самой логики отображения: выбор системы измерений, масштабирование значений, согласование форм множественного числа и форматов сокращений. В Globalize эти задачи опираются на данные CLDR (Unicode Common Locale Data Repository), где описаны правила представления единиц для разных локалей, включая предпочтительные системы измерений и языковые паттерны.
Основой автоматического выбора единиц становится локаль. Она определяет не только язык интерфейса, но и культурно обусловленные соглашения о том, какие единицы считаются базовыми.
В CLDR для каждой локали могут быть заданы:
Globalize не «угадывает» единицы самостоятельно — он следует данным CLDR, обеспечивая предсказуемое поведение при смене локали.
Одним из ключевых аспектов является выбор системы измерений. В разных регионах одинаковые физические величины отображаются в различных единицах:
CLDR хранит информацию о предпочтительной системе для каждой локали. В рамках Globalize это позволяет форматировать значения так, чтобы они соответствовали ожиданиям пользователя.
Например, при локали en-US расстояния могут отображаться
в милях, а при fr-FR — в километрах. Это не просто перевод
единиц, а переключение логики представления.
Автоматический выбор единиц тесно связан с задачей нормализации значений. Число должно быть не только отображено в правильной единице, но и приведено к удобному масштабу.
Типичный пример — длина:
В CLDR описаны пороги масштабирования, при которых происходит переход между единицами. Globalize использует эти данные при форматировании через механизм unit formatting.
При этом важно, что преобразование не является произвольным: оно строго следует правилам системы единиц и их десятичным соотношениям. Это позволяет избежать расхождений между локалями и обеспечивает математическую согласованность.
Единицы измерения могут отображаться по-разному в зависимости от контекста интерфейса:
CLDR хранит отдельные шаблоны для каждой единицы и каждого стиля. Globalize выбирает нужный вариант на основе параметров форматирования.
Автоматический выбор здесь проявляется в том, что разработчику не нужно вручную определять строки для каждой локали и каждого формата. Достаточно указать стиль, а библиотека подставит соответствующий шаблон из CLDR.
Одной из наиболее сложных задач интернационализации является корректное согласование единиц с числительными.
В разных языках правила различаются:
1 mile, 2 miles1 километр, 2 километра,
5 километровCLDR содержит правила plural categories, а Globalize использует их для выбора правильной формы единицы.
Это означает, что при форматировании учитывается не только числовое значение, но и грамматическая категория числа, определяемая локалью.
В реальных интерфейсах одна и та же величина может отображаться по-разному в зависимости от контекста.
Например:
CLDR различает категории единиц (length, speed, duration и т. д.), а также предоставляет паттерны их использования. Globalize, опираясь на эти данные, обеспечивает контекстно корректное отображение.
Контекстный выбор не является эвристикой, а представляет собой применение заранее заданных правил форматирования.
Некоторые величины требуют разбиения на несколько единиц вместо одного числа.
Примеры:
CLDR описывает правила комбинирования единиц и порядок их отображения. Globalize использует эти шаблоны для построения составных выражений.
При этом автоматический выбор единиц включает:
При переходе между единицами возникает необходимость округления. Например, значение 1499 meters может быть представлено как:
CLDR определяет не только пороги перехода, но и допустимую точность отображения для каждой единицы. Globalize применяет эти правила для выбора числа десятичных знаков.
Округление здесь является частью системы форматирования, а не отдельной математической операцией, поскольку влияет на выбор единицы.
Форматирование единиц в Globalize неразрывно связано с числовыми форматами:
Таким образом, итоговая строка формируется из двух слоёв данных:
Автоматический выбор единиц учитывает оба слоя одновременно.
Процесс формирования результата можно представить как последовательность шагов:
Каждый этап опирается на данные CLDR, а не на жёстко зашитую логику библиотеки.
CLDR выступает центральным источником данных, обеспечивающим согласованность поведения Globalize в разных средах. Благодаря этому:
Автоматический выбор единиц становится следствием структурированных данных, а не алгоритмических догадок, что критически важно для предсказуемости интернационализации в сложных интерфейсах.