В контексте международализации (i18n) локаль представляет собой формализованное описание языковых и региональных предпочтений пользователя. Она определяет правила отображения текста, чисел, дат, валют и других данных в соответствии с культурными нормами конкретного региона.
В библиотеке Globalize работа с локалями является центральным механизмом, на котором строится вся система форматирования и парсинга данных. Локаль выступает не просто строковым идентификатором, а набором правил, согласованных с глобальными стандартами, основанными на данных Unicode CLDR, поддерживаемых Unicode Consortium.
Локаль в JavaScript обычно представляется строкой формата BCP 47, например:
en — английский язык без указания регионаen-US — английский (США)en-GB — английский (Великобритания)ru-RU — русский (Россия)zh-Hans-CN — китайский (упрощённое письмо, Китай)Такая строка состоит из нескольких компонентов:
Языковой код (language subtag) Определяет базовый
язык, например ru, en, fr.
Региональный код (region subtag) Уточняет
географическую или культурную специфику, например RU,
US, FR.
Дополнительные модификаторы Могут включать:
Latn,
Cyrl)Локаль определяет правила, по которым библиотека интерпретирует и форматирует данные.
Разные локали используют различные разделители:
en-US: 1,234.56ru-RU: 1 234,56Различие касается:
Локаль влияет на:
Примеры:
$1,000.00 (en-US)1 000,00 € (ru-RU)Локаль определяет:
Примеры:
MM/DD/YYYY (en-US)DD.MM.YYYY (ru-RU)YYYY-MM-DD (ISO-ориентированные локали)В Globalize локаль задаётся как глобальный или контекстный параметр, определяющий поведение всех операций форматирования.
Основные принципы:
При обработке локалей применяется нормализация:
en-us → en-US)Если указанная локаль отсутствует, используется механизм fallback:
fr-CA)fr)Модель локалей построена на иерархии:
en-US → en → root
Каждый уровень предоставляет набор правил:
Это позволяет минимизировать дублирование и поддерживать согласованность данных.
Данные локалей в Globalize основаны на Unicode CLDR (Common Locale Data Repository) — крупнейшем хранилище культурных правил форматирования.
CLDR включает:
Одной из ключевых особенностей локали является определение правил множественного числа.
Примеры:
английский:
русский:
Локаль определяет алгоритм выбора формы слова в зависимости от числа.
В прикладных системах локаль часто изменяется в зависимости от:
Изменение локали приводит к:
Локаль влияет не только на отображение, но и на интерпретацию входных данных.
Примеры различий:
число 1,234:
дата 03/04/2025:
Это делает локаль критическим параметром при обработке пользовательского ввода.
Работа с локалями требует оптимизации:
Globalize использует предобработанные структуры данных, что уменьшает стоимость операций форматирования.
BCP 47 локали поддерживают расширения:
u-nu-latn — система чиселca-gregory — календарь Григорианскийfw-mon — начало неделиТакие расширения позволяют более точно описывать культурные предпочтения, не ограничиваясь только языком и регионом.
Несмотря на гибкость, локали имеют ограничения:
Локаль выступает фундаментальным параметром в системах, где требуется:
В архитектурном смысле локаль становится частью контекста выполнения приложения, влияя на все уровни представления данных.