Об этом проекте

Locale — это рабочее пространство Rust, предоставляющее строго типизированные идентификаторы локалей, генерируемые из набора данных Unicode CLDR (Common Locale Data Repository). В README указано, что оно охватывает 766 локалей Unicode на основе CLDR 48.1.0, а данные берутся из официального репозитория CLDR-JSON. Рабочее пространство содержит два крейта. locale-rs — это производственная библиотека для управления локалями и форматирования. locale-dev — инструмент генерации кода, который проверяет GitHub на наличие последнего выпуска CLDR-JSON, загружает или повторно использует кэшированные данные, заново генерирует код locale-rs, а затем форматирует и выполняет линтинг результата. Такая архитектура поддерживает синхронизацию библиотеки с новыми выпусками Unicode вместо опоры на жёстко заданные строки. Основные возможности, описанные в README, включают типобезопасные локали в виде проверяемых на этапе компиляции вариантов перечислений, форматирование чисел с учётом локали с использованием национальных цифр, совместимые с ICU шаблоны валют и локализованные названия месяцев и дней недели для форматирования даты и времени. Разбор принимает дефисы, подчёркивания или смешанный регистр. Согласование локалей находит наилучшее соответствие среди доступных вариантов с использованием цепочек отката, а нечёткие подсказки предлагают исправления для опечаток или неизвестных локалей. В README также перечислены многие поддерживаемые системы цифр, такие как латиница, арабо-индийские, деванагари, бенгальские, тамильские, тайские и тибетские. Примеры использования показывают прямой доступ к перечислениям, например Locale::en_GB, разбор через FromStr или from_flexible, извлечение подтегов языка и региона, а также получение резервной локали. Форматирование чисел демонстрируется через трейт ToFormattedString, создающий сгруппированный вывод, например 1,234,567 для английского и 1.234.567 для немецкого. Также приведены примеры согласования и подсказок. В README заявлены абстракции с нулевой стоимостью и варианты перечислений локалей нулевого размера. Отмечается, что архитектурным вдохновением послужил крейт num-format. Лицензирование является двойным: MIT или Apache-2.0 для кода проекта, тогда как данные локалей происходят из Unicode CLDR под лицензией Unicode License V3. Вклад в основном направляется в логику генерации в locale-dev или в вспомогательные методы, тесты и примеры в locale-rs.