Debug-режим в экосистеме Globalize используется для выявления проблем, связанных с локализацией: некорректно загруженные данные CLDR, отсутствующие наборы данных, ошибки форматирования дат, чисел и валют, а также неконсистентность региональных настроек. Основная задача — сделать внутреннее поведение библиотеки максимально прозрачным при разработке, сохранив при этом минимальный оверхед в production-сборке.
Ключевая особенность debug-подхода в Globalize заключается в том, что библиотека опирается на внешние данные CLDR (Unicode Common Locale Data Repository). Любая ошибка в этих данных или их загрузке приводит не к «тихому падению», а к диагностируемым предупреждениям.
Globalize не содержит встроенных локализационных правил. Вместо этого она использует внешние JSON-структуры CLDR, которые должны быть корректно загружены разработчиком:
Debug-режим становится критически важным из-за следующих факторов:
en vs
en-GB)Одним из центральных аспектов debug-режима является проверка полноты загрузки CLDR.
Типичный сценарий проблемы — попытка форматирования числа до загрузки нужных модулей:
При включённой диагностике Globalize фиксирует отсутствие необходимых блоков и генерирует предупреждения.
Поведение debug-режима в таких случаях:
Globalize опирается на текущую локаль, установленную через механизм инициализации:
Debug-режим усиливает проверки:
ru_RU вместо
ru) фиксируется отдельноОсобое внимание уделяется цепочке fallback-локалей. При отсутствии
строгих данных Globalize может попытаться использовать более общий набор
(например, fr-CA → fr). В debug-режиме такие переходы
логируются.
Форматирование чисел — один из наиболее чувствительных участков, где debug-режим проявляет себя активно.
Распространённые проблемы:
,,
.)Debug-режим фиксирует:
Особенно важно поведение при currency formatting: если отсутствуют правила валюты, Globalize может вернуть «сырой» числовой формат, но debug-режим явно сообщает о потере контекстной информации.
Работа с датами в Globalize полностью зависит от CLDR dateTime patterns.
Debug-режим отслеживает:
short, medium,
long, fullПри обнаружении проблемы система:
Plural rules — один из наиболее сложных компонентов CLDR. Debug-режим анализирует:
Ошибки проявляются особенно часто при:
supplemental/plurals.jsonDebug-вывод помогает выявить, какая именно категория не была сопоставлена.
Supplemental-данные CLDR играют ключевую роль в Globalize:
Debug-режим проверяет наличие этих блоков перед выполнением операций локализации.
Отсутствие supplemental-данных приводит к:
Логирование в debug-режиме фиксирует отсутствие конкретного блока и операцию, которая его потребовала.
В debug-конфигурации Globalize усиливает прозрачность через консольные уведомления.
Основные типы сообщений:
Особенность заключается в том, что библиотека не останавливает выполнение, но явно сигнализирует о деградации качества локализации.
Типовая логика поведения:
Debug-режим чаще всего активируется в окружении разработки:
В этом режиме Globalize:
В production-сборке большая часть этих проверок отключается ради производительности, но сохраняется базовая валидация входных данных.
Ситуация возникает при загрузке только части данных (например, только числа без дат). Debug фиксирует несогласованность и указывает отсутствующие модули.
При использовании нескольких форматов локалей (en, en-US, en-GB) debug помогает выявить неправильный fallback.
Отсутствие currency symbols или decimal rules приводит к диагностике и предупреждениям о деградации форматирования.
При отсутствии календарных шаблонов debug-режим фиксирует использование ISO-формата вместо локализованного представления.
Использование debug-режима требует дисциплины в организации загрузки CLDR:
Debug-режим фактически превращается в слой валидации i18n-данных, выявляющий ошибки ещё до попадания в пользовательский интерфейс.