{"common":{"cancel":"Отмена","clear":"Очистить","clearAll":"Очистить все","close":"Закрыть","loading":"Загрузка...","success":"Успешно","pending":"В ожидании","failed":"Ошибка","copy":"Копировать","copied":"Скопировано!","copyJson":"Копировать JSON","collapseAll":"Свернуть все","expandAll":"Развернуть все","viewOnNpm":"Посмотреть на NPM","later":"Позже","source":"ИСТОЧНИК","minimize":"Свернуть","tapToExpand":"Нажмите, чтобы развернуть","open":"Открыть","openInBrowser":"Открыть в браузере","openInBrowserPrompt":"Вы уверены, что хотите открыть этот URL во внешнем браузере?","delete":"Удалить","reset":"Сбросить","save":"Сохранить","edit":"Редактировать","add":"Добавить","search":"Поиск","filter":"Фильтр","sort":"Сортировка","refresh":"Обновить","retry":"Повторить","confirm":"Подтвердить","yes":"Да","no":"Нет","ok":"ОК","done":"Готово","back":"Назад","next":"Далее","show":"Показать","hide":"Скрыть","select":"Выбрать","selectAll":"Выбрать всё","deselectAll":"Снять выбор","noResults":"Результаты не найдены","items":"элементов","of":"из","showing":"Показано","active":"Активно","inactive":"Неактивно","enabled":"Включено","disabled":"Отключено","live":"В реальном времени","connected":"Подключено","disconnected":"Отключено","version":"Версия","update":"ОБНОВИТЬ","unknown":"Неизвестно","share":"Поделиться","all":"Все","dragToHide":"Перетащите сюда, чтобы скрыть","releaseToHide":"Отпустите, чтобы скрыть инспектор","expand":"Развернуть","undo":"Отменить","inActiveDevelopment":"В активной разработке","inspectorDismissed":"Инспектор закрыт","noMatches":"Нет совпадающих результатов","moreFilters":"Дополнительные фильтры"},"header":{"rec":"REC","sourceFirebase":"FB","sourceManual":"MAN","aboutSpecs":"О программе и спецификации","live":"В реальном времени","keys":"{{count}} ключей","frames":"{{count}} кадров","updateAvailableTitle":"Доступно обновление","updateAvailableMessage":"response-native-inapp-inspector v{{version}} доступен в NPM (установлен: v{{installed}}).","clearEverythingTitle":"Очистить все","clearEverythingMessage":"При этом будут удалены все вкладки — API, Журналы, Аналитика, Временная шкала Redux и История сбоев. Продолжать?","photo":"Фото","record":"Запись","clear":"Очистить","about":"О","screenshotCaptured":"📸 Скриншот сделан и сохранен","screenshotFailed":"Не удалось сделать снимок экрана","screenshotError":"Ошибка при создании скриншота","recordingStarted":"🔴 Началась запись видео","recordingSaved":"🎥 Запись сохранена ({{duration}}с)","recordingError":"Ошибка записи","recordingStartFailed":"Не удалось начать запись","paramCount":"{{count}} параметр","paramCount_plural":"{{count}} параметры","firebase":"огневая база","manual":"руководство","sliceBadge":"СЛАЙС","recordScreen":"Запись экрана","newVersionAvailable":"Доступно обновление","updateAvailable":"Обновление react-native-inapp-inspector v{{latestVersion}} готово","updateAvailableSubtitle":"Новая версия react-native-inapp-inspector готова к установке","upgradeCommand":"КОМАНДА ОБНОВЛЕНИЯ","copyCommand":"Копировать","viewNpm":"Просмотр","screenshot":"Скриншот","videoCapture":"Запись"},"tabs":{"apis":"API","logs":"Логи","analytics":"Аналитика","crash":"Сбои","device":"Устройство","storage":"Хранилище","media":"Запись экрана","redux":"Редукс","push":"Нажмите","socket":"Вебсокет","debugging":"Отладка"},"settings":{"configureSubtitle":"Настроить параметры модуля","resetAlertTitle":"Сбросить все настройки","resetAlertMessage":"Это восстановит видимость модулей и настройки интерфейса по умолчанию. Продолжить?","mainTitle":"Настройки и модули","mainSubtitle":"Управление модулями и настройками","requiredBadge":"ОБЯЗАТЕЛЬНО","defaultBadge":"ПО УМОЛЧАНИЮ","notConnectedBadge":"НЕ ПОДКЛЮЧЕН","notDetectedBadge":"НЕ ОБНАРУЖЕН","readOnlyBadge":"ТОЛЬКО ЧТЕНИЕ","coreBadge":"ЯДРО","activeBadge":"АКТИВНЫЙ","dormantBadge":"СПЯЩИЙ","protectedBadge":"ЗАЩИЩЕНО","modulesAndTools":"Модули и инструменты","uiPreferences":"Пользовательский интерфейс и дисплей","ramLimits":"ОЗУ и ограничения","screenVideoCapture":"Захват экрана и видео","zeroOverheadTitle":"Нулевые фоновые издержки","zeroOverheadDesc":"Отметьте модули, которые хотите активировать. Отключенные модули потребляют 0% ресурсов ЦП и памяти до тех пор, пока не будут сохранены.","unsavedPending":"● Несохраненные выборки ожидают рассмотрения.","allSynchronized":"Все модули синхронизированы","modulesActive":"{{active}} из {{total}} модулей активны","saveChanges":"Сохранить изменения","settingsSaved":"Настройки сохранены","settingsSavedDesc":"Конфигурации активного модуля успешно обновлены.","configure":"Настроить","appearanceTheme":"ВНЕШНИЙ ВИД И ТЕМА","windowLayout":"ОКНА И ПЛАНИРОВКА","startupDefault":"ЭКРАН ЗАПУСКА И ЭКРАН ПО УМОЛЧАНИЮ","logFiltersDeduplication":"ФИЛЬТРЫ ЖУРНАЛОВ И ДЕДУПЛИКАЦИЯ","resetSettings":"Сбросить все настройки","resetSettingsDesc":"Удалить пользовательские настройки обратно к значениям по умолчанию","reset":"Сброс","reduxNotConnectedTip":"Магазин Redux не подключен. Вызовите connectReduxStore(store) или используйте инспекторReduxMiddleware для включения.","analyticsNotConnectedTip":"Аналитика не инициализируется. Вызовите setupAnalyticsLogger(analytics()), чтобы включить.","tabVisibility":"Видимость вкладки","tabVisibilityDescription":"Выберите, какие модули будут отображаться в инспекторе","settingsTitle":"Настройки","back":"Назад","apis":{"title":"Настройки API","total":"Итого: {{count}}","maxRequestLogs":"Максимальное количество журналов запросов","maxRequestLogsDescription":"Размер буфера сетевых запросов сохраняется в памяти","clearNetworkLogs":"Очистить сетевые журналы","clearNetworkLogsDescription":"{{count}} запросов сохранено","networkLogsCleared":"Сетевые журналы очищены.","showStatusFilter":"Фильтр статуса","showStatusFilterDescription":"Показывать чипы статуса в списке API","showMethodFilter":"Фильтр метода","showMethodFilterDescription":"Показывать чипы методов в списке API","defaultTabDescription":"Вкладка, на которой открывается инспектор"},"logs":{"title":"Настройки журналов","total":"Итого: {{count}}","maxConsoleLogs":"Макс. журналы консоли","maxConsoleLogsDescription":"Сколько консольных сообщений сохранять","logLevels":"Журнал серьезности","logLevelsDescription":"Выберите, какие уровни серьезности следует фиксировать в журналах.","showInfo":"Показать информационные журналы","showInfoDesc":"Информационные журналы и отладочные распечатки","showWarn":"Показать журналы предупреждений","showWarnDesc":"Предупреждения и прекращение поддержки","showError":"Показать журналы ошибок","showErrorDesc":"Ошибки и исключения времени выполнения","clearConsoleLogs":"Очистить журналы консоли","clearConsoleLogsDescription":"{{count}} журналы сохранены","consoleLogsCleared":"Журналы консоли очищены."},"analytics":{"title":"Настройки аналитики","total":"События: {{count}}","maxAnalyticsEvents":"Записанные события","maxAnalyticsEventsDescription":"{{count}} события аналитики хранятся в буфере","clearAnalyticsEvents":"Очистить историю аналитики","clearAnalyticsEventsDescription":"Удалить все записанные события телеметрии","analyticsEventsCleared":"События аналитики удалены."},"redux":{"title":"Настройки Redux","reducers":"Редукторы: {{count}}","autoRefresh":"Автообновление магазина","autoRefreshDescription":"Захват дерева состояний хранилища Redux при каждой отправке","defaultJsonExpandDepth":"Глубина расширения JSON по умолчанию","defaultJsonExpandDepthDescription":"Начальная глубина дерева состояний Redux для автоматического расширения","clearReduxState":"Очистить состояние Redux","clearReduxStateDescription":"Сбросить снимок текущего состояния в инспекторе","clearReduxStateEmpty":"Снимок магазина не записан.","reduxStateCleared":"Снимок состояния Redux очищен.","clearReduxTimeline":"Очистить временную шкалу Redux","clearReduxTimelineDescription":"Удалить всю записанную историю действий","reduxTimelineCleared":"История действий Redux очищена."},"bundle":{"title":"Настройки пакета","sourceBundler":"Пакетный комплект Metro Source","sourceBundlerDesc":"Анализирует живые деревья модулей и вычисляет разбивку по двоичному размеру.","clearCache":"Очистить кэш пакета","clearCacheDesc":"Принудительная повторная выборка и анализ пакета JS","cacheCleared":"Кэш анализа пакета очищен."},"performance":{"title":"Настройки производительности","frameMeasurement":"Измерение живого кадра","frameMeasurementDesc":"Измеряет частоту кадров пользовательского интерфейса/JS и обнаруживает ненужные повторные рендеринги","clearEvents":"Очистить события производительности","clearEventsDesc":"Сбросить записанную историю зависаний и падений FPS","eventsCleared":"События производительности удалены."},"crash":{"title":"Настройки сбоя","maxCrashLogs":"Максимальное количество журналов сбоев","maxCrashLogsDesc":"Сколько записей о сбоях нужно сохранить в истории","globalGuard":"Глобальный Crash Guard","globalGuardDesc":"Перехватывает собственные ошибки, JS и ошибки рендеринга напрямую","clearHistory":"Очистить историю сбоев","clearHistoryDesc":"{{count}} журналы сбоев сохранены","historyCleared":"Журналы сбоев очищены."},"media":{"title":"Захват экрана и видео","badge":"Родной H.264/GIF","desc":"Настройте форматы скриншотов, качество, частоту кадров видео, аудиозапись, запись и хранение GIF.","screenshotCardTitle":"Форматы и качество скриншотов","screenshotCardDesc":"Конфигурация полнооконных снимков высокого разрешения","imageFormat":"Формат изображения","imageFormatDesc":"PNG (без потерь), JPEG (компактный) или WEBP","autoHide":"Автоматическое скрытие инспектора","autoHideDesc":"Исключает пользовательский интерфейс инспектора из снимков экрана","enabled":"ВКЛЮЧЕНО","videoCardTitle":"Запись видео и GIF","videoCardDesc":"Запись в формате H.264 MP4 и экспорт анимированных GIF-файлов","audioMode":"Режим аудио повествования","audioModeDesc":"Без звука, звук приложения или голосовое сопровождение","frameRate":"Частота кадров","frameRateDesc":"Более высокий FPS обеспечивает более плавную запись","gifAutoOpt":"Автоматическая оптимизация GIF","gifAutoOptDesc":"Конвертирует видеозаписи для PR GitHub и Slack.","purgeAll":"Очистить все захваченные медиафайлы","purgeAllDesc":"Удаляет все сохраненные снимки экрана, видео и GIF-файлы.","purgeCacheBtn":"Очистить кэш","purgeConfirmTitle":"Очистка хранилища носителей","purgeConfirmMessage":"При этом все захваченные медиафайлы будут удалены из локального кэша. Продолжать?","purgedSuccess":"Хранилище носителя очищено"},"general":{"darkMode":"Темная тема режима","darkModeDescription":"Переключение гладкой темной эстетики или светлого контраста","modalHeight":"Высота окна инспектора","modalHeightDescription":"Процент покрытия модального экрана","modalAnimation":"Анимация перехода","modalAnimationDescription":"Стиль оформления входа и выхода","duplicateLogs":"Показать повторяющиеся журналы","duplicateLogsDescription":"Выкл.: идентичные повторяющиеся записи сворачиваются в значки ×N.","defaultOpeningTab":"Открытие вкладки по умолчанию","defaultOpeningTabDesc":"Начальная вкладка активна при нажатии кнопки запуска","activeConsoleLogLevels":"Уровни журнала активной консоли","activeConsoleLogLevelsDesc":"Выберите, какие уровни серьезности следует фиксировать в журналах.","resetToDefaults":"Сброс к настройкам по умолчанию","resetToDefaultsDescription":"Восстановить все настройки инспектора","resetConfirmationTitle":"Сброс настроек","resetConfirmationMessage":"Все настройки сброшены на значения по умолчанию.","storageStatus":"Постоянное хранилище","storageStatusEnabled":"Хранение настроек: постоянное ({{type}})","storageStatusEnabledDesc":"Ваши настройки и видимость модуля сохраняются после перезагрузки приложения.","storageStatusDisabled":"Хранение настроек: в памяти (временное)","storageStatusDisabledDesc":"Настройки сбрасываются при удалении приложения. Передайте пользовательское хранилище в <NetworkInspector Storage={...} />, чтобы сохранить его на Android.","language":"Язык","languageDescription":"Выбор языка отображения интерфейса","selectLanguage":"Выберите язык","peekOpacity":"Прозрачность режима просмотра","peekOpacityDescription":"Уровень прозрачности при включенном значке глаза"},"settingsReset":"Сброс настроек","settingsResetMessage":"Все настройки сброшены на значения по умолчанию.","pushHistoryCleared":"История push-уведомлений очищена.","socketHistoryCleared":"История WebSocket очищена","memory":{"manualTitle":"Ручная очистка памяти","manualDescription":"Удалить старые записи во всех хранилищах журналов и освободить оперативную память.","pruned":"Из памяти удалено {{count}} элементов."},"simulator":{"salesforce":"Имитация продвижения Salesforce Marketing Cloud","fcm":"Имитация отправки Firebase FCM","apns":"Имитация нажатия Apple APN","deepLink":"Имитация отправки Deep Link","chat":"Имитация сеанса WebSocket чата в реальном времени","crypto":"Имитация потока тикера Binance Crypto","socketio":"Имитация сеанса Socket.IO v4","echo":"Имитация эхо-теста WebSocket","screenshotSaved":"Скриншот сделан и сохранен!"},"simulatePushTitle":"СИМУЛЯЦИЯ ТЕСТОВЫХ PUSH-УВЕДОМЛЕНИЙ","simulateSocketTitle":"СИМУЛЯЦИЯ ТЕСТОВЫХ СОКЕТ-СОЕДИНЕНИЙ","directCaptureShortcuts":"БЫСТРЫЙ ЗАХВАТ ЭКРАНА"},"network":{"urlHeader":"URL","jsonViewer":{"raw":"Raw","key":"Key","pretty":"Довольно","table":"Таблица","emptyObject":"Пустой объект","emptyTable":"Пустой объект","value":"ЗНАЧЕНИЕ","keyProperty":"КЛЮЧ / СВОЙСТВО","noMatchingKeys":"Совпадающие ключи или значения не найдены","emptyPayload":"Нет данных полезной нагрузки"},"title":"API","searchPlaceholder":"Поиск по URL, статусу или методу...","emptyTitle":"Вызовы API пока не зафиксированы.","emptySubtitle":"Сетевые запросы будут появляться здесь по мере использования приложения.","reload":"Перезагрузить","clearTitle":"Очистить сетевые журналы","clearMessage":"Вы уверены, что хотите очистить все записанные сетевые журналы?","detailTabs":{"metadata":"Метаданные","headers":"Заголовки","request":"Запрос","response":"Ответ"},"requestTitle":"Запрос","responseTitle":"Ответ","searchRequest":"Поисковый запрос...","searchResponse":"Поиск ответа...","searchHeaders":"Поиск по заголовкам...","requestHeaders":"Заголовки запросов","responseHeaders":"Заголовки ответов","diffTitle":"Разница","noResponse":"Нет тела ответа","noRequest":"Нет тела запроса","statusFailed":"Не удалось","methodHeader":"Метод","statusHeader":"Статус","durationHeader":"Продолжительность","sizeHeader":"Размер","triggeredAt":"Сработало в","contentType":"Тип контента","sourcePage":"Исходная страница","sourcePageUnknown":"Неизвестный источник","loadMore":"Загрузить больше","groupByPage":"Группировать по страницам","groupByDomain":"Группировать по домену","groupByNone":"Список","domain":"Домен","page":"Страница","requests":"{{count}} запросов","requests_plural":"{{count}} запросов","noFilteredResults":"Нет запросов, соответствующих текущим фильтрам.","scrollToTop":"Прокрутить вверх","copyCurl":"Копировать URL-адрес","copyFetch":"Скопировать фрагмент фрагмента","emptyResponse":"Пустой ответ","bodyHidden":"{Тело скрыто}","queryParams":"Параметры запроса","fullUrl":"Полный URL-адрес","open":"Открыть","showMore":"Показать больше","showLess":"Показать меньше","failedNetworkError":"Не удалось (ошибка сети)","noMatchingHeaders":"Нет соответствующих заголовков","diffHidden":"{ Разница скрыта }","noDiff":"Никаких отличий от предыдущего API.","healthTitle":"Состояние сети и телеметрия","successRate":"Уровень успеха","avgLatency":"Средняя задержка","p95Latency":"P95 Задержка","bandwidth":"Пропускная способность","fastest":"Самый быстрый","slowest":"Самый медленный","timingWaterfall":"Водопад времени и задержка","throughput":"Пропускная способность","performanceTier":"Уровень производительности","perf":{"fast":"Быстро (< 200 мс)","moderate":"Умеренный (200–800 мс)","slow":"Медленно (> 800 мс)"},"showingRequests":"Показаны запросы {{count}}","showingFilteredRequests":"Показаны запросы {{filtered}} из {{total}}","status200":"200 ОК","status201":"201 Создано","status204":"204 Нет содержания","status304":"304 Не изменено","status400":"400 Неверный запрос","status401":"401 Отмена авторизации","status403":"403 Запрещено","status404":"404 Не найден","status500":"500 Ошибка","shareError":"Поделиться ошибкой","shareErrorMessage":"Не удалось открыть общий лист.","clearLogsTitle":"Очистить сетевые логи","clearLogsMsg":"Вы уверены, что хотите очистить все сетевые логи?","moreFilters":"Дополнительные фильтры"},"console":{"filterAll":"All","rawTraceView":"Raw","showingLogs":"Показано {{count}} записей","log":"Журнал","info":"Информация","warning":"Предупреждение","error":"Ошибка","debug":"Отладка","title":"Журналы","searchPlaceholder":"Поиск в журналах...","emptyTitle":"Логов консоли пока нет","emptySubtitle":"Здесь появится консольный вывод вашего приложения.","analyticsBadge":"Аналитика","userLogBadge":"пользовательский журнал","jsonTitle":"Записать JSON","messageTitle":"Сообщение журнала","search":"Журнал поиска...","searchJson":"Журнал поиска в формате JSON...","logMessage":"Записать сообщение","consoleLog":"Журнал консоли","characters":"{{count}} символов","duplicates":"×{{count}} дубликатов","showMore":"Показать больше","showLess":"Показать меньше","clearTitle":"Очистить журналы","clearMessage":"Вы уверены, что хотите очистить все журналы консоли?","seeMore":"Показать больше","noResults":"Нет журналов, соответствующих текущим фильтрам.","filterInfo":"Информация","filterWarn":"Предупреждать","filterError":"Ошибка","filterUserLog":"Журнал пользователя","filterAnalytics":"Аналитика","tabOutput":"Выход","tabArgs":"Аргументы ({{count}})","tabStack":"Трассировка стека","tabMetadata":"Метаданные","callStack":"Стек вызовов ({{count}} кадров)","errorStack":"Стек исключений ошибок ({{count}} кадров)","callOriginStack":"Стек источника вызова","errorThrownStack":"Ошибка выброшенного стека","appCodeScope":"🎯 Код приложения ({{count}})","allFramesScope":"📜 Все кадры ({{count}})","cardsView":"Карты","noStackAvailable":"Не найдено кадров стека вызовов, соответствующих активному фильтру.","originBadge":"#1 ПРОИСХОЖДЕНИЕ","appCodeBadge":"Код приложения","dependencyBadge":"Зависимость","nativeBadge":"Родной","hermesVmBadge":"Гермес ВМ","fullStackTrace":"Полная трассировка стека","lineCol":"Строка {{line}}, столбец {{col}}","lineColShort":"L{{line}}:C{{col}}","searchInLogDetails":"Поиск в деталях журнала...","showingFilteredLogs":"Показаны журналы {{filtered}} из {{total}}","filteredBy":"Отфильтровано по {{filters}} ({{filtered}} из {{total}} журналов)","clearLogsTitle":"Очистить логи консоли","clearLogsMsg":"Вы уверены, что хотите очистить все логи консоли?","analytics":"Аналитика","exportTitle":"Экспорт логов консоли","exportScope":"ИСТОЧНИК ЛОГОВ","filteredView":"Активный фильтр","allLogsScope":"Все логи","howManyLogs":"СКОЛЬКО ЛОГОВ ЭКСПОРТИРОВАТЬ?","enterCount":"Введите количество логов:","exportFormat":"ФОРМАТ ЭКСПОРТА","exportSummary":"Примерный размер экспорта","selectedLogs":"ВЫБРАННЫЕ ЛОГИ","estSize":"ПРИМЕРНЫЙ РАЗМЕР","format":"ФОРМАТ","exportLogsAction":"Экспортировать {{count}} логов ({{size}})","exportingLogs":"Экспорт логов консоли...","processingItem":"Обработка","records":"записей","exportSuccessTitle":"Экспорт логов готов!","exportSuccessDesc":"Сформирован полный файл логов, готовый для отправки или сохранения.","shareReport":"Поделиться логами","saveToDisk":"Сохранить на диск","copyToClipboard":"Копировать содержимое","exportAnother":"← Экспортировать другие","noLogsToExport":"Нет доступных логов для экспорта","savePromptOpened":"Диалог сохранения на диск открыт","copiedLogs":"Логи скопированы в буфер обмена!","ignorePatterns":"Игнорировать шаблоны (Regex)","ignorePatternsDesc":"Совпадающие логи будут исключены из экспорта.","invalidRegex":"Недопустимый синтаксис регулярного выражения","logsExcluded":"Исключено логов: {{count}}"},"analytics":{"timeNow":"NOW","allCategory":"All","title":"Аналитика","searchPlaceholder":"Поиск событий...","emptyTitle":"Аналитических событий пока нет","emptySubtitle":"События аналитики будут появляться здесь по мере того, как ваше приложение их отслеживает.","clearTitle":"Очистить аналитику","clearMessage":"Вы уверены, что хотите удалить все события аналитики?","eventParams":"{{count}} параметры","eventCount":"{{count}} события","userProperties":"Свойства пользователя","userId":"Идентификатор пользователя","defaultParameters":"Параметры по умолчанию","collectionEnabled":"Сбор включен","screenView":"screen_view","eventDetails":"Подробности мероприятия","parameters":"Параметры","noParams":"Нет параметров","recentEvents":"Недавние события","analyticsError":"Ошибка аналитики","duplicate":"Дублировать","params":"параметры","props":"реквизит","item":"предмет","items":"предметы","pageViewCategory":"Просмотр страницы","ecommerceCategory":"Электронная коммерция","systemCategory":"Система","customCategory":"Пользовательский","realtimeStream":"Активность в реальном времени","liveTelemetry":"Живая телеметрия","eventsInWindow":"события в окне","eventVelocity":"{{rate}} эв/мин","peakVolume":"Пик: {{count}}","time30mAgo":"-30м","time20mAgo":"-20 м","time10mAgo":"-10 м","selectedBucket":"Сегмент: {{time}} ({{count}} событий)","totalRevenue":"Доход","activeDistribution":"Разделение категорий","screensCategory":"Экраны","overviewTab":"Обзор","jsonTreeTab":"JSON-дерево","rawPayloadTab":"Необработанная полезная нагрузка","sessionContext":"Контекст сеанса","userPropertiesSnapshot":"Снимок свойств пользователя","parameterKeys":"Параметры ({{count}})","searchParameters":"Параметры поиска...","noParamsFound":"Нет параметров, соответствующих вашему запросу","sourceFirebase":"ПОЖАРНАЯ БАЗА GA4","sourceCustom":"ТАМОЖЕННЫЙ / РУЧНОЙ","dataVisualization":"Визуализация данных","dataTypesBreakdown":"Распределение типов данных","highestPayloadStrings":"Самые длинные строки полезной нагрузки","topLevelMetrics":"Ключевые метрики","importantDates":"Важные даты","itemPrices":"Цены товаров","sessionIdentity":"СЕССИЯ И ИДЕНТИФИКАТОРЫ","metricParams":"Параметры:","metricUserProps":"Свойства пользователя:","metricSize":"Размер:","metricItems":"{{count}} элементов","sessionId":"ID сессии","trackingId":"ID отслеживания","eventParameters":"ПАРАМЕТРЫ СОБЫТИЯ ({{count}})","keyValueAttributes":"Атрибуты ключ-значение","filterParamsPlaceholder":"Фильтр параметров по ключу или значению...","noParamsRecorded":"Для этого события нет записанных параметров.","noParamsMatching":"Нет параметров, соответствующих \"{{search}}\"","clearEventsTitle":"Очистить события аналитики","clearEventsMsg":"Вы уверены, что хотите очистить все события аналитики?"},"redux":{"searchPlaceholder":"Поиск состояния или действий...","emptyTitle":"Redux Store не подключен","emptySubtitle":"Подключите хранилище для инспекции состояния и действий.","originUi":"UI","activeSlices":"АКТИВНЫЕ СРЕЗЫ","totalState":"ОБЩИЙ РАЗМЕР STATE","lastActionHeader":"ПОСЛЕДНЕЕ ДЕЙСТВИЕ","initialState":"Начальное состояние (действия не вызывались)","noStoreConnected":"Redux Store не подключен","connectStoreTip":"Вызовите connectReduxStore(store) или используйте inspectorReduxMiddleware при запуске приложения.","title":"Редукс","stateTab":"Государство","actionsTab":"Действия","clearTitle":"Очистить временную шкалу Redux","clearMessage":"Вы уверены, что хотите очистить историю отправленных действий?","noActions":"Никаких действий пока не отправлено. Запустите действие в приложении, чтобы заполнить историю.","noSearchResults":"Нет действий, соответствующих вашему запросу.","lastAction":"Последнее действие","actionHistory":"История действий","affectedSlices":"Затронутые фрагменты","noAffectedSlices":"Нет","dispatchTime":"Отправлено в","prevState":"Предыдущее состояние","nextState":"Следующий штат","viewDiff":"Посмотреть разницу","emptyState":"Штат пуст","rootState":"Корневое состояние","connectionStatus":"Подключено","connectionStatusNone":"Не подключено","autoRefresh":"Автообновление","paused":"Приостановлено","liveState":"Живое состояние","timeline":"Хронология","persisted":"Сохранился","storage":"Хранение","metadata":"Метаданные","inMemory":"В памяти","slice":"СЛАЙС","rootKeys":"Корневые ключи","size":"Размер","actions":"действия","keys":"Ключи","last":"Последний","live":"Живи","loading":"Загрузка","error":"Ошибка","empty":"Пустой","payload":"Полезная нагрузка","actionPayload":"Полезная нагрузка действия:","stateChangesDiff":"Изменения состояния (Diff):","tapToInspectAction":"Нажмите, чтобы проверить полезную нагрузку действий и изменения в различиях.","noDispatchedActions":"Для этого фрагмента пока не зарегистрировано ни одного отправленного действия.","sliceJson":"Разрезать JSON","originSaga":"САГА","originThunk":"ТУНК","originDirect":"ПРЯМОЙ","originListener":"СЛУШАТЕЛЬ","triggeredFrom":"Запущено из:","openInEditor":"Открыть в редакторе","callStack":"Трассировка стека вызовов","sliceOrigin":"Срез/Происхождение","clearPersistedTitle":"Очистить постоянное состояние","clearPersistedMessage":"Вы уверены, что хотите удалить постоянное хранилище для фрагмента \"{{slice}}\"?","clearedPersisted":"Сохраняющееся состояние очищено.","clearPersistedError":"Не удалось очистить сохраненное состояние.","clearTimelineTitle":"Очистить таймлайн Redux","clearTimelineMsg":"Вы уверены, что хотите очистить историю отправленных действий?","diff":"Разница состояний"},"device":{"title":"Устройство","searchPlaceholder":"Поиск характеристик, UDID, IP, экрана...","subTabs":{"overview":"Обзор","hardware":"Оборудование","network":"Сеть и IP","display":"Экран","runtime":"Среда и App","security":"Безопасность и ID"},"sections":{"overview":"ОБЗОР УСТРОЙСТВА","hardware":"ХАРАКТЕРИСТИКИ ОБОРУДОВАНИЯ И СИСТЕМЫ","network":"СЕТЬ И ПОДКЛЮЧЕНИЕ","display":"ЭКРАН И ГЕОМЕТРИЯ","runtime":"СРЕДА ВЫПОЛНЕНИЯ И ПРИЛОЖЕНИЕ","security":"ИДЕНТИФИКАТОРЫ И БЕЗОПАСНОСТЬ"},"copied":"Скопировано {{label}}","copiedJson":"Полный отчет JSON об устройстве скопирован!","copiedMarkdown":"Отчет Markdown скопирован в буфер обмена!","live":"ОНЛАЙН","ipAddress":"IP-АДРЕС","ramUsedTotal":"ОЗУ (ИСПОЛЬЗОВАНО/ВСЕГО)","uptime":"ВРЕМЯ РАБОТЫ","copiedUuid":"Уникальный ID устройства скопирован (UUID)"},"storage":{"title":"Хранилище","searchPlaceholder":"Поиск ключей, значений, типов...","clearTitle":"Очистить хранилище","clearMessage":"Вы уверены, что хотите удалить все ключи в {{driver}}?","clearConfirm":"Очистить все","emptyTitle":"Нет записей в хранилище","emptySubtitle":"Хранилище для этого драйвера пусто.","addKey":"Добавить ключ","add":"Добавить","editKey":"Редактировать ключ","createKey":"Создать ключ","save":"Сохранить","saveKey":"Сохранить ключ","keyName":"Имя ключа","value":"Значение","valueContent":"Содержимое значения","type":"Тип","beautifyJson":"Форматировать JSON","loading":"Загрузка записей хранилища...","deleteKeyTitle":"Удалить ключ","deleteKeyMessage":"Вы уверены, что хотите удалить ключ \"{{key}}\"?","deleteConfirm":"Удалить","cleared":"Хранилище очищено","subTabs":{"asyncStorage":"Асинхронное хранилище","mmkv":"ММКВ"},"asyncStorage":"Асинхронное хранилище","mmkv":"ММКВ","keyNameEmpty":"Имя ключа не может быть пустым","saveError":"Ошибка сохранения ключа хранилища"},"footer":{"endOfList":"Вы достигли конца списка","loadMore":"Загрузить еще {{count}}","showingOf":"Показано {{count}} из {{total}} {{label}}","loadMoreRequests":"Загрузить еще {{count}} запросов","allLoaded":"Все запросы {{count}} загружены"},"performance":{"filterAll":"All","catAll":"All","catIo":"I/O","jscEngine":"JSC","fpsUnit":"FPS","title":"Производительность","fpsTarget":"Целевой монитор 60 кадров в секунду","healthScore":"Оценка здоровья FPS","excellent":"Отлично (60 кадров в секунду)","good":"Хорошо (незначительные рывки)","needsOptimization":"Требуется оптимизация","liveFps":"Живой FPS и цикл обновления","realtimeWindow":"В реальном времени (окно 1 с)","uiRenderThread":"Поток рендеринга пользовательского интерфейса","optimalFrame":"Оптимально (<16,6 мс)","slowFrame":"Медленный кадр (> 16,6 мс)","budgetUsage":"Использование бюджета 60 кадров в секунду","avgFrameTime":"Среднее время кадра","peakTime":"Пиковое время","jsThread":"JS-тема","uiThread":"Поток пользовательского интерфейса","jsiLatency":"Задержка JSI","heapImpact":"Воздействие кучи","optimizationTip":"Совет по оптимизации:","recordedEvents":"Записанные события и взаимодействия","liveStream":"Прямая трансляция сеанса","emptyTitle":"События производительности пока не зафиксированы.","emptySubtitle":"Выполняйте действия в своем приложении, чтобы увидеть тайминги потоков, стоимость рендеринга и отслеживание FPS.","tabOverview":"Обзор","tabRenders":"Рендеры","tabInteractions":"Взаимодействия","tabMemory":"Память","filterSlow":"Медленно (>16 мс)","filterCritical":"Критический (>33 мс)","searchPlaceholder":"Компонент поиска, взаимодействие...","avgRenderTime":"Средний рендеринг","totalRenders":"Всего рендеров","renderCost":"Стоимость рендеринга","slowRenders":"Медленный рендеринг","unnecessaryRenders":"Расточительные рендеры","heapAllocated":"Выделенная куча","heapLimit":"Предел кучи","gcEvents":"События GC","leakRisk":"Риск утечки","lowRisk":"Низкий риск","mediumRisk":"Средний риск","highRisk":"Высокий риск","memoryTimeline":"Хронология памяти","clearPerformance":"Очистить данные о производительности","clearConfirmation":"Вы уверены, что хотите удалить все данные отслеживания производительности?","liveFpsDip":"Падение частоты кадров в реальном времени ({{fps}} кадров в секунду)","liveFpsDipDetail":"Продолжительность кадра основного потока увеличена до {{duration}}мс во время обновления представления.","liveFpsDipAdvice":"Тяжелое выполнение JavaScript во время отображения с задержкой передачи кадров.","yogaLayout":"Макет Flexbox для йоги","hermesGc":"Гермес Сбор мусора","jsEngine":"JS-движок","uiReconciler":"Согласователь пользовательского интерфейса","memoryHeap":"Куча памяти","allLogs":"Все журналы","jankySlow":"Джанки / Медленный","navigation":"Навигация","components":"Компоненты","memoryGc":"Память и сборщик мусора","networkIo":"Сеть и ввод-вывод","catJanky":"Джанки","catNavigation":"Навигация","catRender":"Компоненты","catMemory":"Память","recording":"Запись","paused":"Приостановлено","budgetHeadroom":"Запас ~{{time}}мс ({{percent}}%)","jsExec":"JS Exec: {{time}}мс","yogaLayoutTime":"Макет йоги: {{time}}мс","uiRenderTime":"Рендеринг пользовательского интерфейса: {{time}}мс","freeTime":"Бесплатно: {{time}}мс","heapAllocatedSub":"{{allocated}} МБ выделено","hermesAot":"Гермес (АОТ)","v8Jit":"V8 (JIT)","bytecodeCompiled":"Байт-код скомпилирован","jitEngine":"JIT-движок","webkitEngine":"Веб-кит-движок","fabricJsi":"Ткань / JSI","paperBridge":"Бумага / Мост","directCppBindings":"Прямые привязки C++","asyncJsonBridge":"Асинхронный мост JSON","jsLag":"JS Лаг","jankRate":"Скорость Янка","fpsAreaChartTitle":"Поток кадров и дрожание в реальном времени (30 с)","fpsAreaChartSub":"Живая цель со скоростью 60 кадров в секунду и непрерывным измерением отклонений кадров","frameLatencyDistTitle":"Распределение задержки кадров","frameLatencyDistSub":"Доля кадров, доставленных в рамках бюджета 16,6 мс","optimalBucket":"< 16,6 мс (60 кадров в секунду)","minorJankBucket":"16,7–33,3 мс (30–60 кадров в секунду)","noticeableJankBucket":"33,4–50,0 мс (20–30 кадров в секунду)","severeFreezeBucket":"> 50,0 мс (< 20 кадров в секунду)","hermesHeapTrendTitle":"Динамика памяти и кучи Гермеса","hermesHeapTrendSub":"Динамическое распределение и циклы очистки GC из поколения в поколение","live":"Живи","msTotal":"Всего {{duration}}мс • {{time}}","droppedFrames":"{{count}} удалено","zeroDropped":"0 Выброшено","frameBudgetMs":"{{time}}мс/кадр ({{budget}}% бюджета)","target60Fps":"Целевое значение 60 кадров в секунду • Фактический {{fps}} кадров в секунду","frameDuration":"Продолжительность кадра","frameDurationVal":"{{time}} мс (бюджет 16,67 мс)","frameUtilization":"Бюджет кадра превышен","frameBudgetOk":"Бюджетный запас рамы","bottleneck":"Узкое место","jsBound":"JS-поток, связанный","uiBound":"Привязка потока пользовательского интерфейса","balanced":"Сбалансированный","smooth":"Плавность 60 кадров в секунду","minorJank":"Незначительное заикание","noticeableJank":"Заметный рывок","severeFreeze":"Сильная заморозка","screenContext":"Контекст экрана","profileReason1":"Свойства встроенной функции стрелки, передаваемые дочерним элементам (onAddToCart={() => ...})","profileReason2":"Немемоизированный селектор Redux, создающий новую ссылку на объект при каждой отправке","profileReason3":"Объект динамического стиля, созданный в теле рендеринга ({marginTop: insets.top + 10})","profileReason4":"В FlatList отсутствует getItemLayout, что приводит к асинхронным проходам измерения макета","profileReason5":"Функция renderItem определена анонимно внутри тела JSX","profileReason6":"Компоненты элемента списка, не обернутые React.memo","profileReason7":"Родительский экран перерисовывается при событии отображения/скрытия клавиатуры","profileReason8":"Нестабильная ссылка обратного вызова передана в кнопку оформления заказа","profileReason9":"Состояние значения TextInput запускает повторный рендеринг родительского элемента при каждом нажатии клавиши без устранения дребезга.","profileReason10":"Передача немемоизированного объекта фильтра ({category, minPrice}) дочерним чипам","profileReason11":"Повторная проверка кэша изображений аватара при обновлении сеанса аутентификации","fixUseCallbackTitle":"Обернуть обработчики событий в useCallback","fixUseCallbackDesc":"Встроенные функции воссоздают новую ссылку на память при каждом рендеринге, делая React.memo недействительным для дочерних компонентов.","fixCreateSelectorTitle":"Запомнить селекторы Redux/Zustand с помощью smallEqual","fixCreateSelectorDesc":"Возврат новых ссылок на объект или массив внутри useSelector приводит к автоматическому повторному рендерингу при каждой отправке состояния.","fixUseMemoStylesTitle":"Стили подъема или использование useMemo для динамических размеров","fixUseMemoStylesDesc":"Объекты встроенного стиля создают новые идентификаторы объектов при каждом проходе кадра, что приводит к различиям в согласовании Yoga Flexbox.","fixGetItemLayoutTitle":"Реализация getItemLayout для элементов фиксированной высоты","fixGetItemLayoutDesc":"Предоставление getItemLayout позволяет FlatList немедленно вычислять смещения прокрутки и виртуальные окна без асинхронного измерения представлений.","fixReactMemoTitle":"Перенос элементов списка в React.memo","fixReactMemoDesc":"Предотвращает повторную визуализацию всех 50+ видимых элементов списка при обновлении состояния родительского списка (например, положения прокрутки или нумерации страниц).","fixComponentSplittingTitle":"Изолируйте быстро меняющееся состояние в листовых компонентах","fixComponentSplittingDesc":"Переместите прослушиватели клавиатуры и состояние модальной анимации в автономные подкомпоненты, чтобы родительский компонент не выполнял повторную визуализацию.","fixDebouncedInputTitle":"Устранение дребезга при поиске или использование локального управляемого состояния","fixDebouncedInputDesc":"Не распространяйте состояние нажатия клавиши в глобальное хранилище немедленно. Используйте 250 мс для устранения дребезга или неконтролируемый реф.","fixPrimitivePropsTitle":"Передавайте примитивные реквизиты вместо больших объектов","fixPrimitivePropsDesc":"Передача только строки категорииId вместо всего объекта категории предотвращает повторную отрисовку при обновлении метаданных других категорий.","fixUseRefForTrackingTitle":"Используйте useRef для невизуальных значений отслеживания.","fixUseRefForTrackingDesc":"Не храните таймеры аналитики, смещения прокрутки или идентификаторы отслеживания в useState, если они не изменяют дерево JSX напрямую.","highImpact":"Высокое воздействие","mediumImpact":"Среднее воздействие","bestPractice":"Лучшая практика","beforeUseCallback":"// ❌ До в <{{comp}} /> (воссоздает ссылку на функцию при каждом рендеринге):","afterUseCallback":"// ✅ После (стабильная запоминаемая ссылка на обратный вызов):","beforeCreateSelector":"// ❌ До в <{{comp}} /> (возвращает ссылку на новый объект при каждом рендеринге):","afterCreateSelector":"// ✅ После (shallowEqual предотвращает повторный рендеринг, если значения не изменяются):","beforeMemo":"// ❌ До (<{{comp}} />):","afterMemo":"// ✅ После (пропускает рендеринг, если реквизиты практически идентичны):","flatListOptimization":"// Оптимизация FlatList для <{{comp}} />","customComparator":"// Пользовательская функция равенства для <{{comp}} />","debounceInput":"// Устранение дребезга ввода внутри <{{comp}} /> для предотвращения рендеринга по нажатию клавиши:","isolateState":"// Изолируем быстро меняющееся состояние от <{{comp}} /> до дочернего поддерева // ✅ Инкапсулируем анимированный макет внутри изолированного компонента:","beforeUseRef":"// ❌ До в <{{comp}} /> (запускает повторную визуализацию всего компонента при изменении значения):","afterUseRef":"// ✅ После (сохраняет изменяемую ссылку при рендеринге без повторного рендеринга):","fixInteractionManagerTitle":"Отложите закадровую логику с помощью InteractionManager","fixInteractionManagerDesc":"Тяжелая обработка данных во время анимации экрана приводит к потере кадров. Отложите до завершения перехода.","beforeInteractionManager":"// ❌ До в <{{comp}} /> (выполняются тяжелые вычисления во время анимации перехода): useEffect(() => { loadHeavyData(); }, []);","afterInteractionManager":"// ✅ После (ждет плавного завершения перехода): useEffect(() => { const Task = InteractionManager.runAfterInteractions(() => { loadHeavyData(); }); return () => Task.cancel(); }, []);","fixFlatListWindowingTitle":"Настройка свойств окна FlatList","fixFlatListWindowingDesc":"Настройте maxToRenderPerBatch и windowSize, чтобы минимизировать выделение виртуализированных представлений за кадром.","beforeFlatListWindowing":"// Оптимизация окон FlatList для <{{comp}} />: <FlatList data={items} maxToRenderPerBatch={10} windowSize={5} InitialNumToRender={8} RemoveClippedSubviews={true} />","fixImageCachingTitle":"Оптимизация кэширования изображений и уменьшения масштаба","fixImageCachingDesc":"Используйте заголовки приоритета или уменьшение масштаба resizeMode, чтобы избежать массивного распределения растровых изображений в куче Hermes.","beforeImageCaching":"// Оптимизация изображения для <{{comp}} />: <Image source={{ uri: imageUrl, кэш: 'force-cache' }} resizeMode=\"cover\" FadeDuration={100} />","fixContextSplittingTitle":"Разделение монолитного контекста на детальные поставщики","fixContextSplittingDesc":"Компоненты, подписывающиеся на повторную отрисовку большого контекста, даже когда изменяются неиспользуемые свойства состояния.","beforeContextSplitting":"// ❌ До того, как (<{{comp}} /> потребляет весь AppContext): const { user,cart,theme } = useAppContext();","afterContextSplitting":"// ✅ После (подписаться на выделенный контекст среза): const theme = useThemeContext();","fixInlineStylesHoistTitle":"Поднимите статические стили с помощью StyleSheet.create","fixInlineStylesHoistDesc":"Объекты встроенного стиля выделяют новые ссылки на память при каждом проходе рендеринга, что приводит к накладным расходам на согласование Yoga.","beforeInlineStyles":"// ❌ До (<{{comp}} /> выделяет встроенный объект в каждом кадре): <View style={{ flex: 1, Padding: 16, BackgroundColor: '#ffffff' }} />","afterInlineStyles":"// ✅ После (поднятая ссылка на таблицу стилей): const Styles = StyleSheet.create({Container: { flex: 1, Padding: 16, BackgroundColor: '#ffffff' } }); <View style={styles.container} />","transitionEventLabel":"Переход экрана: {{screen}}","transitionEventDetail":"Переход завершен через {{duration}}мс (TTI: {{tti}}мс).","transitionEventAdvice":"Взаимодействие завершено в рамках целевого бюджета в 60 FPS.","heavyTaskEventLabel":"Тяжелая синхронная задача: {{taskName}}","heavyTaskEventDetail":"Поток JS заблокирован на {{duration}}мс во время выполнения задачи.","heavyTaskEventAdvice":"Рассмотрите возможность выгрузки в веб-воркер, InteractionManager или пакетную обработку по частям.","asyncOpEventLabel":"Медленная асинхронная операция: {{opName}}","asyncOpEventDetail":"На решение асинхронной задачи ушло {{duration}}мс.","renderLoopWarningLabel":"Резкий скачок повторного рендеринга в <{{comp}} />","renderLoopWarningDetail":"Компонент перерисовывался {{count}} раз за 500 мс. Потенциальный бесконечный цикл или нестабильные зависимости.","renderLoopWarningAdvice":"Проверьте массивы зависимостей useEffect/useCallback на наличие нестабильных ссылок на объекты или функции.","event1Label":"Всплеск основного потока во время навигации","event1Detail":"Переход экрана вызвал сложную согласованность макета и одновременный монтаж компонентов.","event1Advice":"Отложите некритичные закадровые перехваты с помощью InteractionManager.runAfterInteractions, чтобы сохранить 60 кадров в секунду.","event2Label":"Проход повторного рендеринга виртуализации FlatList","event2Detail":"FlatList отображал 25 элементов одновременно при изменении ориентации без запоминаемого компонента строки.","event2Advice":"Реализуйте getItemLayout и React.memo(LogCard), чтобы пропустить избыточные проходы сравнения.","event3Label":"Собственный модальный скользящий переход","event3Detail":"Анимированное преобразование с аппаратным ускорением, встроенное в драйвер, работает плавно со стабильной частотой 60 кадров в секунду.","event3Advice":"Использование ownDriver: true успешно предотвращает блокировку потоков JS во время анимации.","event4Label":"Сбор мусора поколений Hermes","event4Detail":"Незначительный цикл сборки мусора поколения очищал эфемерные объекты кучи размером 4,2 МБ с паузой потока менее миллисекунды.","event4Advice":"Сборщик мусора поколения Hermes работает в оптимальных пределах менее 5 мс.","gcCycleLabel":"Цикл ручного сбора мусора","gcCycleDetail":"Восстановлены неиспользуемые объекты кучи ~{{amount}} МБ и сжата детская память.","gcCycleAdvice":"Оптимизировано использование кучи. Расчищается питомник поколений.","liveFpsDropLabel":"Падение частоты кадров в реальном времени ({{fps}} кадров в секунду)","liveFpsDropDetail":"Продолжительность кадра основного потока увеличена до {{duration}}мс во время обновления представления.","liveFpsDropAdvice":"Тяжелое выполнение JavaScript во время отображения с задержкой передачи кадров.","event5Label":"Большая десериализация полезной нагрузки JSON","event5Detail":"Затраты на анализ ответа API из 50 элементов в сетевом адаптере (необработанная строка JSON 185 КБ).","event5Advice":"Рассмотрите возможность разбивки полезных данных API на страницы или потоковой передачи ответов, если размер полезных данных превышает 250 КБ.","event6Label":"Декодирование и растеризация растрового изображения","event6Detail":"Декодирование растра Retina для Banner_dark.png (выделение буфера растра 1200×630 пикселей).","event6Advice":"Уменьшите размеры ресурсов или преобразуйте их в WebP, чтобы сократить задержку декодирования примерно на 65 %.","event7Label":"Собственный вызов TurboModule JSI","event7Detail":"Транзакции предпочтений AsyncStorage/MMKV считываются через 32 конфигурационных ключа.","event7Advice":"Прямые привязки C++ JSI Turbomodule полностью обходят устаревшие накладные расходы на сериализацию моста JSON.","event8Label":"Изменение дерева состояний действий Redux","event8Detail":"На этапе диспетчеризации Redux оценивалось 6 срезов редуктора и выдавалось уведомление о состоянии за 4,8 мс.","event8Advice":"Неизменяемость дерева состояний сохранена. Мемоизированные селекторы предотвращали повторный рендеринг компонентов.","event9Label":"Задержка события Touch-to-Render","event9Detail":"Ответчик на жесты отправил событие касания кнопке TabBar с немедленным ответом со скоростью 60 кадров в секунду.","event9Advice":"Задержка сенсорного отклика находится в пределах стандартного бюджета кадра 16,67 мс.","event10Label":"Пропуск макета Flexbox для йоги на C++","event10Detail":"Перерасчет макета карты с несколькими вкладками пользовательского интерфейса Inspector и метрики шрифта передаются в движок C++ Yoga.","event10Advice":"Ограничения макета Flexbox эффективно кэшируются и вычисляются с нулевыми штрафами за перекомпоновку."},"bundle":{"mediaAuditorSuffix":"KB.","heroTitle":"Архитектура пакетов и активов","heroSubtitle":"Разбивка размеров в реальном времени по всем ресурсам, коду и зависимостям","heroSubtitleLive":"Живой анализ {{scriptUrl}}","liveAnalysisUnavailable":"Динамический анализ пакетов недоступен.","liveAnalysisUnavailableSub":"Не удалось связаться с сервером разработки Metro, поэтому значения являются приблизительными. Убедитесь, что приложение запущено в разработке через `npx React-Native Start` и Инспектор может получить доступ к вашему порту Metro (8081, 8082, ...).","bundleOverviewJson":"Обзор пакета JSON","devBundleSize":"РАЗМЕР НАБОРА ДЛЯ РАЗРАБОТЧИКОВ","devBundleHint":"{{kb}} КБ • {{modules}} модулей","trackedFilesHint":"{{count}} Отслеживаемые файлы","imagesMedia":"ИЗОБРАЖЕНИЯ И МЕДИА","pctOfTrackedAssets":"{{pct}}% отслеживаемых объектов","tsJsSource":"ИСТОЧНИК ТС/JS","jsEngine":"JS ДВИГАТЕЛЬ","bytecodeAot":"Байт-код АОТ","standard":"Стандартный","splitUpTitle":"Разделение пакета разработки","splitUpSub":"Измерено {{mb}} MB JS-пакета • {{files}} файлов • {{packages}} пакетов","splitUpJson":"Разделенный JSON","splitAppSource":"Исходный код приложения","splitNodeModules":"node_modules Зависимости","splitAssetsMedia":"Активы и медиа","splitMetroOverhead":"Накладные расходы на разработку Metro","splitSize":"{{kb}} КБ • {{mb}} МБ","productionFootprint":"ПРОИЗВОДСТВЕННАЯ ПЛОЩАДЬ","productionValue":"iOS {{ios}} МБ • Android {{android}} МБ","productionDownload":"Скачать: iOS ~{{ios}} МБ • AAB ~{{aab}} МБ • APK ~{{apk}} МБ","treemapTitle":"Древовидная карта соотношения типов активов и файлов","treemapSub":"Всего ~{{mb}} МБ","treemapJson":"Древовидная карта отношений JSON","legendImages":"Изображения:","legendTs":"ТС/ТСХ:","legendJs":"JS-библиотеки:","legendFonts":"Шрифты:","legendJson":"JSON:","categoryBreakdown":"Разбивка по категориям","categoriesJson":"Разбивка по категориям JSON","catImagesTitle":"Изображения и медиа-активы","catImagesDesc":"Ресурсы PNG, WebP, SVG и JPG в комплекте","catJsTitle":"Скомпилированные Node-модули и JS","catJsDesc":"Сторонние зависимости и собственные мосты","catFontsTitle":"Пользовательские шрифты и векторные глифы","catFontsDesc":"Ресурсы шрифтов в комплекте","catTsTitle":"Компоненты TypeScript и JSX","catTsDesc":"Компоненты экрана приложения, перехватчики и бизнес-логика","catJsonTitle":"Данные JSON и локализация","catJsonDesc":"словари перевода i18n и статические конфигурации","totalBundleAssets":"ВСЕГО ФАЙЛОВ ХОСТ-ПРОЕКТА","totalBundleValue":"{{kb}} КБ (~{{mb}} МБ)","totalFormula":"Сумма исходных файлов хоста: {{images}} КБ + {{js}} КБ + {{fonts}} КБ + {{ts}} КБ + {{json}} КБ = {{total}} КБ ({{count}} элементов)","prodIosApp":"Приложение iOS (.ipa)","prodAndroidAab":"Android AAB (.aab)","prodAndroidApk":"Универсальный APK (.apk)","prodHeroTitleIos":"Двоичный след iOS в производстве","prodHeroTitleAab":"Пакет приложений Google Play (.aab)","prodHeroTitleApk":"Универсальный автономный APK-файл (.apk)","prodHeroSubIos":"Оценка установки в App Store и загрузки по беспроводной сети","prodHeroSubAab":"Оптимизированная архитектура APK с динамической доставкой для каждого устройства.","prodHeroSubApk":"Универсальный установочный архив Multi-ABI для загрузки и прямого распространения.","prodInstallSize":"УСТАНОВИТЬ РАЗМЕР","prodInstallHint":"Несжатый объем на устройстве","prodDownloadSize":"СКАЧАТЬ РАЗМЕР","prodDownloadHint":"Полезная нагрузка для передачи по сети магазина","prodCompression":"СЖАТИЕ","prodCompressionHint":"Байт-код и соотношение активов","prodFormatArch":"ФОРМАТНАЯ АРХИТЕКТУРА","prodFormatHintIos":"среда выполнения Apple ARM64","prodFormatHintAab":"Динамическая доставка в Google Play","prodFormatHintApk":"Универсальный пакет с боковой загрузкой","prodArchTitle":"Архитектура двоичных компонентов","prodArchSub":"Скомпилированные собственные библиотеки, байт-коды времени выполнения, ресурсы и блоки подписей.","prodTotalIos":"ОБЩИЙ БИНАРНЫЙ ПРИЛОЖЕНИЕ ДЛЯ IOS","prodTotalAab":"ПОЛНЫЙ ПАКЕТ ANDROID AAB","prodTotalApk":"ИТОГО УНИВЕРСАЛЬНЫЙ АПК","prodTotalFormula":"Из {{devKb}} КБ (~{{devMb}} МБ • {{count}} всего ресурсов) пакета исходного кода для разработчиков → {{installMb}} МБ оптимизированного собственного двоичного файла ({{pct}}% сжатия байт-кода/ресурсов).","tabOverview":"Обзор","tabProduction":"Производство ({{count}})","tabFiles":"Файлы ({{count}})","tabPackages":"Пакеты ({{count}})","tabMedia":"Медиа ({{count}})","tabOptimizer":"Оптимизатор","analyzingTitle":"Анализ пакета хост-приложений из Metro…","analyzingHint":"Получение пакета и извлечение реальных модулей","searchFilesPlaceholder":"Поиск по имени файла (.png, .tsx, .ttf, путь)...","filteredFilesJson":"Отфильтрованные файлы JSON","catAll":"Все файлы","catUnused":"Не израсходован (мертв)","catConsumed":"Используется/активен","catImages":"Изображения и медиа","catTypescript":"Типскрипт/TSX","catJavascript":"JS и Node-модули","catFonts":"Шрифты и глифы","catJson":"JSON и данные","treeView":"Вид на дерево","flatList":"Плоский список","expand":"Развернуть","collapse":"Свернуть","showingFilesOf":"Показаны файлы {{shown}} из {{total}}","filesOf":"{{count}} из {{total}} файлов","notConsumed":"Не потребляется","consumed":"Потреблено","copyFileInfo":"Скопировать информацию о {{name}}","fileDetailsJson":"Подробности файла JSON","file":"файл","files":"файлы","fileSizeKb":"{{size}} КБ","fileSizeMb":"{{size}} МБ","mbValue":"~{{size}} МБ","kbMbValue":"{{kb}} КБ ({{mb}} МБ)","legendValue":"{{kb}} КБ ({{pct}}%)","mediaSavings":"{{size}} КБ","searchPackagesPlaceholder":"Пакет поиска (react-native, axios, навигация)...","dependenciesJson":"Зависимости JSON","showingDependencies":"Показаны зависимости {{count}}","versionPrefix":"v{{version}}","bundled":"в комплекте","deprecated":"УСТАРЕЛО","updateAvailable":"Обновление: v{{version}}","upToDate":"Актуально","bundledBadge":"В комплекте","packageDetailsJson":"Подробности пакета JSON","direct":"Прямой","transitive":"Переходный","minified":"~{{size}} КБ уменьшено","npmLink":"нпм ↗","dependenciesCount":"{{count}} Зависимости","mediaAuditorTitle":"Аудитор по сжатию медиа","mediaAssetsJson":"Медиа-ресурсы JSON","mediaAuditorPrefix":"Изображения и шрифты составляют","mediaAuditorMid":"от общей суммы активов (~{{kb}} КБ). Преобразование PNG в WebP и поднабор шрифтов могут уменьшить размер до","mediaAssetsList":"Медиа-ресурсы и шрифты ({{count}} элементов)","mediaItemJson":"Медиа-элемент JSON","mediaAndFonts":"{{count}} Медиафайлы и шрифты","optimizerTitle":"Контрольный список оптимизации пакета React Native","optimizationChecklist":"Контрольный список оптимизации","optTip1Title":"Конвертируйте тяжелые PNG в WebP/SVG","optTip1Desc":"Изображения составляют >40 % от конечного размера загрузки приложения. Преобразование 2x/3x растровых PNG в WebP позволяет сэкономить 60–70 % размера без видимой потери качества.","optTip2Title":"Включить механизм байт-кода Hermes","optTip2DescActive":"Гермес активен! JavaScript заранее компилируется в оптимизированный байт-код.","optTip2DescInactive":"Гермес отключен. Включите Hermes в конфигурации вашего приложения, чтобы уменьшить полезную нагрузку примерно на 40 % и мгновенно запустить TTI.","optTip3Title":"Поднабор шрифтов и сокращение веса","optTip3Desc":"Включите только те шрифты, которые вы активно используете (например, обычный и жирный). Удалите неиспользуемые диапазоны глифов, чтобы сэкономить более 100 КБ на файл шрифта.","optTip4Title":"Выборочный импорт пути (встряхивание дерева)","optTip4Desc":"Импортируйте из определенных подпутей (например, lodash/get или определенных наборов векторных значков) вместо импорта больших монолитных пакетов.","optTip5Title":"Экран отложенной загрузки","optTip5Desc":"Ленивая загрузка дополнительных экранов и тяжелых модальных листов с использованием динамического импорта и InteractionManager, чтобы уменьшить первоначальную оценку пакета.","highImpact":"Высокое воздействие","mediumImpact":"Среднее воздействие","bestPractice":"Лучшая практика","actionRequired":"Требуется действие","active":"Активный","tipDetails":"Подробности о совете","iosComp1Name":"Фреймворки и динамические модули","iosComp1Desc":"Собственные платформы модулей React, Hermes и {{count}}.","iosComp1Advice":"Обеспечьте удаление мертвого кода (STRIP_INSTALLED_PRODUCT = YES) в режиме выпуска.","iosComp2Name":"Исполняемый файл Mach-O (ARM64)","iosComp2Desc":"Хост-приложение скомпилировало собственные мосты Swift/Objective-C и C++.","iosComp2Advice":"Включите монолитный LTO (оптимизацию времени соединения) в схеме Xcode.","iosComp3Name":"Каталог активов (Assets.car)","iosComp3Desc":"Значки приложений, экраны-заставки, векторные глифы и встроенные шрифты.","iosComp3Advice":"Компилируйте изображения в каталог ресурсов Xcode для автоматического прореживания приложений.","iosComp4Name":"Байт-код Гермеса (main.jsbundle)","iosComp4Desc":"JavaScript хост-приложения скомпилировал AOT в байт-код Hermes (файлы {{count}}).","iosComp4Advice":"Байт-код AOT загружается с задержкой компиляции 0 мс при запуске устройства.","iosComp5Name":"Метаданные и подписи кода","iosComp5Desc":"_CodeSignature, Info.plist и блок прав.","iosComp5Advice":"Стандартная подпись кода Apple и подпись обеспечения.","andComp1Name":"Собственные библиотеки C++ (.so)","andComp1Desc":"libhermes.so, libfbjni.so и {{count}} собственные адаптеры C++.","andComp1Advice":"Выполните развертывание с помощью пакета Android App Bundle (.aab), чтобы доставлять разделенные APK-файлы для каждого ABI.","andComp2Name":"Скомпилированный DEX (classes.dex)","andComp2Desc":"Скомпилированная среда выполнения Java и Kotlin, мосты AndroidX и React Native.","andComp2Advice":"Включите сжатие R8/ProGuard (minifyEnabled true) в build.gradle.","andComp3Name":"Ресурсы Android (res/)","andComp3Desc":"Drawables, векторные XML-файлы, плотности MIP-карт, resources.arsc, шрифты.","andComp3Advice":"Используйте WebP и VectorDrawables, чтобы избежать дублирования ресурсов с разной плотностью.","andComp4Name":"Байт-код Гермеса (Android)","andComp4Desc":"JavaScript хост-приложения, скомпилированный в байт-код Hermes (файлы {{count}}).","andComp4Advice":"Предварительно скомпилированный байт-код во время задачи assembleRelease gradle.","andComp5Name":"Манифест и подписи (META-INF)","andComp5Desc":"AndroidManifest.xml, сертификаты подписи, блоки схемы подписи APK v2/v3/v4.","andComp5Advice":"Официальный блок подписи и подписи Google Play.","apkComp1Name":"Библиотеки C++ с поддержкой Multi-ABI (.so)","apkComp1Desc":"Универсальные мультиархитектурные общие библиотеки (.so), объединенные для прямой загрузки неопубликованных приложений.","apkComp1Advice":"Используйте Android App Bundle (.aab) для Google Play, чтобы уменьшить размер установки на 60 %.","apkComp2Name":"Скомпилированный байт-код DEX (classes.dex)","apkComp2Desc":"Скомпилированная среда выполнения Java и Kotlin, библиотеки AndroidX и собственные модули моста.","apkComp2Advice":"Включите сжатие R8/ProGuard (minifyEnabled true) и ShrinkResources true.","apkComp3Name":"Ресурсы и активы Android (res/)","apkComp3Desc":"Drawables, векторные XML-файлы, плотности MIP-карт, resources.arsc, шрифты.","apkComp3Advice":"Используйте WebP и VectorDrawables, чтобы избежать дублирования ресурсов с разной плотностью.","apkComp4Name":"Пакет байт-кода Hermes (Android)","apkComp4Desc":"JavaScript хост-приложения, скомпилированный в байт-код Hermes (файлы {{count}}).","apkComp4Advice":"Предварительно скомпилированный байт-код во время задачи assembleRelease gradle.","apkComp5Name":"Манифест и подписи (META-INF)","apkComp5Desc":"AndroidManifest.xml, сертификаты подписи, JAR и схема подписи APK v2/v3/v4.","apkComp5Advice":"Корпоративный блок подписи и непосредственная установка."},"errors":{"appTag":"APP","title":"Что-то пошло не так","message":"Произошла непредвиденная ошибка.","retry":"Попробуйте еще раз","reset":"Сброс","close":"Закрыть","errorReport":"Отчет об ошибках","modalTitle":"Инспектор разбился","modalMessage":"Инспектор обнаружил неожиданную ошибку. Вы можете сбросить его ниже.","inlineTitle":"Ошибка инспектора","inlineMessage":"Внутри инспектора произошла непредвиденная ошибка.","networkError":"Сетевой запрос не выполнен","crashIntercepted":"Авария перехвачена","protected":"ЗАЩИЩЕНО","rootCauseTitle":"Диагностика первопричин","rootCauseSubtitle":"Инспектор обнаружил эту ошибку во время выполнения, чтобы предотвратить завершение работы приложения.","exactLocation":"ТОЧНОЕ РАСПОЛОЖЕНИЕ ИСТОЧНИКА","file":"Файл:","lineCol":"Линия/столбец:","lineColVal":"Строка {{line}}, столбец {{col}}","function":"Функция:","callStack":"КАДРЫ СТЕКА ВЫЗОВОВ","framesCount":"{{count}} кадров","tryAgainRecover":"Попробуйте еще раз/Восстановить","copyDiagnostics":"Копировать диагностику","copy":"Копировать"},"jsonViewer":{"pretty":"Дерево","raw":"Текст","table":"Таблица","emptyObject":"Пустой объект","emptyPayload":"Пустые данные","emptyTable":"Пустой объект","fold":"Свернуть","expand":"Развернуть","min":"Сжать","indent":"Отступы","wrap":"Перенос","copied":"Скопировано!","copy":"Копировать JSON","key":"Ключ","value":"Значение","lines":"строк","line":"строка"},"crash":{"filterAll":"All","frameApp":"APP","frameLib":"LIB","jsc":"JSC","filterPlatformIos":"iOS","title":"Авария","searchPlaceholder":"Ошибка поиска, сообщение, стек...","searchDetailPlaceholder":"Поиск в трассировке или JSON...","statCrashes":"Сбои","statFatal":"Фатальный","statJsErrors":"JS-ошибки","statPromises":"Обещания","statRender":"Рендеринг","statNative":"Родной","filterFatal":"Фатальный","filterJsError":"JS-ошибка","filterPromise":"Обещание","filterRender":"Рендеринг","filterNative":"Родной","fatalBadge":"ФАТАЛЬНЫЙ","handledBadge":"ОБРАЩЕНО","fatalCrash":"ФАТАЛЬНАЯ АВАРИЯ","handledException":"ОБРАБОТАННОЕ ИСКЛЮЧЕНИЕ","unknownException":"Неизвестное исключение","report":"Отчет","inspect":"Осмотреть","copyReport":"Копировать отчет","copied":"Скопировано","clearTitle":"Очистить историю сбоев","clearMessage":"Вы уверены, что хотите удалить все перехваченные записи о сбоях?","clearCancel":"Отмена","clearConfirm":"Очистить все","emptyTitle":"Обнаружено ноль сбоев","emptySubtitle":"Глобальная защита от сбоев активна. Все собственные исключения и исключения JavaScript перехватываются и защищаются.","emptySearchSubtitle":"Никакие записи о сбоях не соответствуют вашему поисковому запросу.","tabStack":"Стек ({{count}})","tabDiagnostics":"Диагностика","tabTrail":"Тропа ({{count}})","tabRawJson":"Необработанный JSON","appFrames":"Фреймы приложения ({{count}})","allFrames":"Все кадры ({{count}})","anonymous":"<анонимно>","noStackTrace":"Для этого события не записана трассировка стека.","deviceEnvironment":"Устройство и окружающая среда","platform":"Платформа","osVersion":"Версия ОС","reactNative":"Реагировать нативный","jsEngine":"JS-движок","hermesEngine":"Двигатель Гермеса","architecture":"Архитектура","fabricNewArch":"Ткань (Новая Арка)","paperLegacy":"Бумага (Устаревшая версия)","appState":"Состояние приложения","jsHeapMemory":"JS-кучная память","usedHeap":"Использованная куча","totalHeap":"Общая куча","noBreadcrumbs":"До этого сбоя не зарегистрировано никаких событий навигации.","simNativeMessage":"Имитация собственного фатального исключения","simPromiseMessage":"Имитация необработанного отклонения обещания","simRenderMessage":"Имитированная ошибка рендеринга компонента React","simJsMessage":"Имитированное исключение JavaScript","reportTitle":"ДИАГНОСТИЧЕСКИЙ ОТЧЕТ АВАРИИ","reportErrorName":"Имя ошибки:","reportMessage":"Сообщение:","reportType":"Тип:","reportFatalYes":"ДА (фатально)","reportFatalNo":"НЕТ (пойман/обработан)","reportFatal":"Фатально:","reportTimestamp":"Временная метка:","reportUptime":"Время работы приложения:","reportUptimeValue":"{{seconds}} секунд","reportPlatform":"Платформа:","reportReactNative":"Реагировать нативный:","reportHermes":"Гермес:","reportEnabled":"Включено","reportDisabled":"Отключено","reportArchitecture":"Архитектура:","reportFabricNew":"Ткань (Новая)","reportPaperLegacy":"Бумага (Устаревшая версия)","reportScreenSize":"Размер экрана:","reportAppState":"Состояние приложения:","reportJsMemory":"JS-память:","reportStackTrace":"ТРАСС СТЕКА:","reportNoStackTrace":"Трассировка стека недоступна","reportComponentHierarchy":"ИЕРАРХИЯ КОМПОНЕНТОВ:","reportRecentBreadcrumbs":"ПОСЛЕДНИЕ ХЛЕБНЫЕ КРАСКИ:","mdReportTitle":"🚨 Отчет о сбое: {{name}}","mdStackTrace":"📦 Трассировка стека","mdComponentHierarchy":"🌲 Иерархия компонентов","mdRecentBreadcrumbs":"👣 Последние хлебные крошки","mdSeverityFatal":"ФАТАЛЬНЫЙ","mdSeverityHandled":"ОБРАЩЕНО","breadcrumbNavigation":"Выполнен переход с «{{from}}» на «{{to}}»","breadcrumbAction":"Действие: {{actionType}}","unknown":"Неизвестно","runtimeException":"Исключение времени выполнения","logFatalCrash":"Фатальная авария","logUnhandledError":"Необработанная ошибка","errorNameFatal":"Фатальная ошибка","errorNameUnhandled":"Необработанное исключение","nativeCrashTitle":"Родной сбой","nativeUncaughtException":"Собственное неперехваченное исключение","nativeException":"Собственное исключение","unhandledPromiseRejection":"Необработанное отклонение обещания","filterTitle":"Сбойные фильтры","filterSubtitle":"Диагностика и отчеты","filterReset":"Сбросить все","filterTypeSection":"ТИП АВАРИИ","filterTypeAll":"Все типы","filterTimeSection":"ГОРИЗОНТ ВРЕМЕНИ","filterTimeAll":"Все время","filterTime15m":"Последние 15 минут","filterTime1h":"Последний 1 час","filterTime24h":"Последние 24 часа","filterTime7d":"Последние 7 дней","filterPlatformSection":"ПЛАТФОРМА","filterPlatformAll":"Все платформы","filterPlatformAndroid":"Андроид","filterEngineSection":"JS ДВИГАТЕЛЬ","filterEngineAll":"Все двигатели","filterEngineHermes":"Гермес","filterSortSection":"СОРТИРОВАТЬ ПОРЯДОК","filterSortNewest":"Сначала самые новые (по умолчанию)","filterSortOldest":"Сначала самый старый","filterDiscard":"Отбросить","filterApply":"Применить ({{count}} сбой)","frameCopy":"Копировать","frameCopied":"Скопировано","componentHierarchy":"Иерархия компонентов","breadcrumbTrail":"ЦЕПОЧКА СОБЫТИЙ И ЖУРНАЛ","deviceDiagnostics":"ДИАГНОСТИКА УСТРОЙСТВА В МОМЕНТ СБОЯ","openInInspector":"Открыть в инспекторе"},"push":{"foreground":"Передний план","background":"Фон","quit":"Завершено","title":"Push-уведомления","preview":"Предварительный просмотр","payload":"Пользовательская полезная нагрузка","deliveryMetadata":"Метаданные доставки и сообщения","rawPayload":"Необработанная полезная нагрузка","link":"Ссылка","appNotification":"Уведомление приложения","now":"сейчас","domainFields":"Поля, специфичные для домена","searchPlaceholder":"Поиск push-уведомлений...","noNotifications":"Нет push-уведомлений","noNotificationsDesc":"Записанные Firebase FCM, Apple APN, OneSignal и пользовательские push-события будут отображаться здесь в режиме реального времени.","filterTitle":"Фильтровать push-уведомления","clearTitle":"Очистить историю push-уведомлений","clearMessage":"Вы уверены, что хотите удалить все записи push-уведомлений?","cleared":"История push-уведомлений очищена.","messageId":"ID сообщения:","sourceDomain":"Источник / Домен:","appState":"Состояние приложения:","actionType":"Тип действия:","timestamp":"Время:","channelId":"ID канала:","sound":"Звук:","badgeCount":"Счетчик бейджа:","collapseKey":"Ключ группировки:","noCustomData":"В полезной нагрузке не найдены пользовательские данные","noMatching":"Нет совпадающих push-уведомлений","adjustSearchFilter":"Попробуйте изменить поисковый запрос или фильтры."},"about":{"title":"О программе и спецификации","subtitle":"Информация о пакете, спецификации времени выполнения и диагностика","heroTitle":"Встроенный инспектор","heroDescription":"Универсальный инструмент отладки, логирования и QA на устройстве для приложений React Native и Expo.","features":"ЧТО ДЕЛАЕТ ИНСПЕКТОР","githubSub":"Звёздочка и исходный код","footerLicense":"React Native In-App Inspector · Лицензия MIT","footerTagline":"Инструмент отладки без конфигурации","upToDate":"Актуально","versionAvailable":"v{{version}} Доступно","copyUpgradeCommand":"Копировать команду обновления (v{{version}})","copiedUpgradeCommand":"Скопирована команда обновления npm!","appInformation":"ИНФОРМАЦИЯ О ПРИЛОЖЕНИИ","appName":"Имя приложения","packageIdentifier":"Идентификатор пакета","appVersion":"Версия приложения","environment":"Окружающая среда","developmentDebug":"Разработка (Отладка)","productionRelease":"Производство (Выпуск)","platform":"Платформа","appleIos":"Apple iOS","googleAndroid":"Гугл Андроид","featureNetwork":"Монитор сетевого трафика","featureNetworkDesc":"Проверяйте запросы HTTP и HTTPS API, ответы, заголовки и задержку сервера с помощью каскадных временных диаграмм.","featureConsole":"Консольный регистратор","featureConsoleDesc":"Просматривайте журналы консоли, предупреждения и ошибки в режиме реального времени с указанием источников исходных файлов и отформатированных трассировок стека.","featureAnalytics":"Аналитика Телеметрия","featureAnalyticsDesc":"Отслеживайте события Firebase и пользовательской аналитики, просмотры экрана и свойства пользователя в реальном времени на устройстве.","featureRedux":"Состояние и действия Redux","featureReduxDesc":"Проверяйте отправленные действия, полезные данные и различия в дереве состояний без подключения сопутствующих инструментов рабочего стола.","featureCapture":"Захват экрана и видео","featureCaptureDesc":"Делайте снимки экрана и записывайте сеансы тестирования, чтобы мгновенно поделиться ими с командами контроля качества и инженерами.","featureCrash":"Уловитель сбоев и диагностика","featureCrashDesc":"Защищает от встроенных сбоев и предоставляет показатели состояния устройства, включая оперативную память, батарею и хранилище.","github":"GitHub","npmRegistry":"Реестр НПМ","npmRegistrySub":"Обновления пакетов","documentation":"Документация","documentationSub":"Руководство по интеграции","reportIssue":"Сообщить о проблеме","reportIssueSub":"Помощь и поддержка","releaseNotes":"Примечания к выпуску","releaseNotesSub":"Что нового","copyInstall":"Копировать Установить","copyInstallSub":"команда npm/пряжи","copiedInstallCommand":"Скопирована команда установки пакета!"},"codeSnippet":{"copy":"Копировать","copied":"Скопировано!","matchCount":"{{count}} совпадение","matchCount_plural":"{{count}} совпадений","noMatches":"Нет совпадений","searchPlaceholder":"Искать...","prevMatch":"Предыдущий матч","nextMatch":"Следующий матч","clearSearch":"Очистить поиск"},"diffViewer":{"added":"добавлено","removed":"удалено","changed":"изменился","noDiff":"Никаких различий","emptyTitle":"Отличий не обнаружено","emptySubtitle":"Обе полезные нагрузки идентичны."},"logCard":{"seeMore":"Показать больше","seeLess":"Показать меньше","copy":"Копировать","copied":"Скопировано!"},"emptyState":{"title":"Здесь пока ничего","subtitle":"Данные будут появляться здесь по мере использования приложения.","reload":"Перезагрузить"},"errorBoundary":{"title":"Что-то пошло не так","message":"Произошла непредвиденная ошибка.","retry":"Попробуйте еще раз","reset":"Сброс","close":"Закрыть"},"mediaGallery":{"all":"Все ({{count}})","photos":"Фотографии","videos":"Видео","gifs":"гифки","purge":"Очистить ({{size}})","purgeTitle":"Очистить все медиа","purgeMessage":"При этом будут безвозвратно удалены все {{count}} сделанные скриншоты, видео и GIF-файлы ({{size}}). Продолжать?","noMediaTitle":"Нет захваченных медиафайлов","noMediaDesc":"Используйте кнопку «Фото- или видеозапись» на панели инструментов, чтобы делать снимки экрана всего приложения, записи экрана или GIF-файлы.","deleted":"Удален медиа-элемент","allPurged":"Все захваченные медиа удалены","converting":"Преобразование...","convertToGif":"Конвертировать в GIF","playVideo":"Воспроизвести видео","playError":"Невозможно воспроизвести видео","convertedSuccess":"Преобразовано в анимированный GIF успешно!","convertFailed":"Не удалось конвертировать в GIF.","share":"Поделиться","copyUri":"Копировать URI","uriCopied":"URI файла скопирован в буфер обмена.","delete":"Удалить","deleteSelected":"Удалить ({{count}})","deleteSelectedTitle":"Удалить выбранное","deleteSelectedMessage":"Вы уверены, что хотите удалить {{count}} выбранных медиафайлов?","deletedCount":"Удалено {{count}} медиа-объекта.","deleteTitle":"Удалить медиа","deleteMessage":"Вы уверены, что хотите удалить {{filename}}?","shareUnavailable":"Совместное использование недоступно на этом устройстве.","showingResults":"Показаны результаты {{count}}","showingFilteredResults":"Показаны результаты {{count}} из {{total}}","selectedOfResults":"Выбрано {{selected}} из {{total}} результатов","minimize":"Свернуть","expand":"Развернуть полноэкранный режим","collapse":"Выход из полноэкранного режима","speed":"Скорость","loop":"Петля","pause":"Пауза","play":"Играть","hideGridlines":"Скрыть сетку Instagram (3×3)","showGridlines":"Показать сетку Instagram (3×3)","hideWatermark":"Скрыть водяной знак QA","showWatermark":"Показать водяной знак QA","exportGif":"Экспорт в анимированный GIF","snapshotFrame":"Снимок кадра (PNG)","tapToPlaceStep":"Коснитесь или перетащите для добавления шага","resetAdjustments":"Настройки сброшены","tagPlaced":"Тег добавлен","tapToAddText":"Коснитесь любого места на изображении для добавления текста","textAdded":"Текст добавлен","redone":"Повторено","undone":"Отменено","videoSaved":"Отредактированное видео сохранено в галерею","savedSuccess":"Успешно сохранено","saveFailed":"Не удалось сохранить медиа","snapshotSaved":"Кадр снимка сохранен в галерею","snapshotFailed":"Не удалось сделать снимок кадра","shareSuccess":"Медиафайл успешно отправлен","cropFailed":"Не удалось обрезать медиа","croppedSuccess":"Медиафайл успешно обрезан","resizeFailed":"Не удалось изменить размер","resizedSuccess":"Размер успешно изменен","trimFailed":"Не удалось обрезать видео","trimmedSuccess":"Видео успешно обрезано","muteFailed":"Не удалось обновить звук видео","mutedSuccess":"Звук успешно изменен","resetSuccess":"Изображение сброшено к оригиналу","openCameraRoll":"Открыть фотопленку","importPhotos":"Импортировать фото из медиатеки","importVideos":"Импортировать видео из медиатеки","importedPhoto":"Фото импортировано из фотопленки","importedVideo":"Видео импортировано из фотопленки","importFailed":"Не удалось импортировать медиа","preview":"Предпросмотр"},"socket":{"title":"Вебсокет","messages":"Сообщения","overview":"Обзор","params":"Параметры","rawAndCode":"Необработанный и код","totalFrames":"ВСЕГО КАДРОВ","sentRecv":"ОТПРАВЛЕНО/ПОЛУЧЕНО","dataTransferred":"ДАННЫЕ ПЕРЕДАЛИСЬ","searchFramesPlaceholder":"Поиск полезных данных фреймов или названий событий...","sent":"Отправлено","recv":"Получение","emptyFrames":"Для этого соединения не захватываются кадры","searchSocketsPlaceholder":"Поиск URL-адреса или сообщений WebSocket...","noSockets":"Нет подключений через веб-сокеты","noSocketsDesc":"Захваченные соединения WebSocket, Socket.IO и WSS будут отображаться здесь в режиме реального времени.","noMatching":"Нет подходящих веб-сокетов.","adjustSearchFilter":"Попробуйте изменить поисковый запрос или фильтровать чипы.","simulateTraffic":"Имитация демонстрационного трафика WebSocket","clearTitle":"Очистить все журналы WebSocket","clearMessage":"Вы уверены, что хотите удалить все записанные сеансы WebSocket?","cleared":"Все журналы WebSocket очищены.","deleteSelectedTitle":"Удалить выбранные веб-сокеты","deleteSelectedMsg":"Вы уверены, что хотите удалить {{count}} выбранных журналов WebSocket?","filterTitle":"Фильтрация соединений WebSocket","showingConnections":"Показаны соединения {{count}}","showingFilteredConnections":"Показаны соединения {{filtered}} из {{total}}","deletedCount":"Удалены журналы WebSocket {{count}}","copiedUrls":"{{count}} URL-адреса скопированы в буфер обмена","webSocketTraffic":"Трафик WebSocket (подключения {{count}})","connectionDetails":"ДЕТАЛИ ПОДКЛЮЧЕНИЯ","url":"URL","clientEngine":"Клиентский движок","readyState":"Состояние готовности","connectedAt":"Подключено в","closedAt":"Закрыто в","closeCodeReason":"Код и причина закрытия","subprotocols":"Субпротоколы","callerStack":"Стек вызовов","error":"Ошибка","handshakeHeaders":"Заголовки Handshake","handshakeParams":"ПАРАМЕТРЫ ЗАПРОСА HANDSHAKE","noQueryParams":"В URL подключения не переданы параметры запроса","jsClientCode":"КОД КЛИЕНТА JAVASCRIPT","terminalWscat":"КОМАНДА ТЕРМИНАЛА WSCAT","rawDump":"СЫРОЙ ДАМП JSON ПОДКЛЮЧЕНИЯ"},"debugging":{"title":"Отладка и инструменты","buildSuccess":"Сборка APK успешно создана!","buildFailed":"Не удалось построить: {{error}}","buildCancelled":"Сборка отменена пользователем"},"telemetry":{"fps":"FPS","liveTraffic":"СЕТЬ ОНЛАЙН","ram":"ОЗУ","active":"АКТИВЕН","networkSpeed":"Скорость сети","fpsLive":"Текущий FPS","ramUsage":"Использование ОЗУ","battery":"Батарея","livePerformanceStrip":"Индикатор производительности"},"media":{"animatedGif":"АНИМИРОВАННЫЙ GIF","cropDefect":"Обрезать дефект","rotate90":"Повернуть 90°","redactPii":"Скрыть ПДн","trim5s":"Обрезать 5с","muteAudio":"Выключить звук","toGif":"В GIF","play":"Воспроизвести","trim":"Обрезать","audio":"Аудио","speed":"Скорость","snapshot":"Снимок"},"language":{"confirmTitle":"Сменить язык?","confirmMessage":"Вы хотите переключить язык инспектора на {{newLang}}?","confirmApply":"Применить язык","current":"Текущий","new":"Новый"},"support":{"title":"Поддержка и сообщество","subtitle":"React Native In-App Inspector","heroDescription":"Создано с любовью, чтобы предоставить мобильным командам по всему миру мощный инструмент отладки на устройстве. Ваша поддержка, звёзды и отзывы вдохновляют на новые улучшения.","sponsor":"Спонсировать на GitHub","sponsorBadge":"СПОНСОР","sponsorDesc":"Поддержите развитие проекта, новые функции и частые релизы.","sponsorBtn":"Стать спонсором","copiedSponsor":"Ссылка на спонсорство GitHub скопирована!","star":"Поставить звезду на GitHub","starDesc":"Поставьте звезду репозиторию, чтобы больше разработчиков узнали о проекте.","issues":"Сообщить об ошибке / Предложение","issuesDesc":"Нашли ошибку или есть идея? Создайте issue на GitHub.","docs":"Официальная документация","docsDesc":"Интерактивный обзор функций, синтаксис поиска и руководства по настройке.","contact":"Связаться с автором","contactDesc":"vengatmacuser@gmail.com • Прямая поддержка и корпоративные запросы.","waysToSupport":"СПОСОБЫ ПОДДЕРЖКИ И УЧАСТИЯ","npmRegistry":"Реестр пакетов NPM","npmRegistryDesc":"Просматривайте примечания к выпуску, размеры архивов и статистику загрузок.","shareTitle":"РАССКАЖИТЕ ДРУГИМ","shareDesc":"Помогите коллегам-разработчикам и тестировщикам быстрее отлаживать сеть, логи и Redux.","shareWithTeam":"Поделиться с командой","copiedRepo":"Ссылка на репозиторий скопирована!","copyRepo":"Скопировать URL репозитория","maintainer":"АВТОР И МЕЙНТЕЙНЕР","sendEmail":"Отправить письмо","copiedEmail":"Email адрес скопирован!","copyEmail":"Скопировать email","close":"Закрыть"},"perf":{"title":"Performance & FPS Profiler Studio","target60Fps":"60 FPS Target","triggerGc":"GC","gcTriggered":"Garbage collection triggered","resetStats":"Reset","statsReset":"Performance counters reset","copySummary":"Copy","summaryCopied":"Performance summary copied to clipboard","exportReport":"Export","shareUnavailable":"Share unavailable","liveApm":"LIVE APM","statusExcellent":"EXCELLENT","statusGood":"GOOD","statusFair":"FAIR","statusPoor":"POOR","descExcellent":"UI and JS threads are buttery smooth. Zero performance bottlenecks detected.","descGood":"Good performance with occasional frame drops during heavy operations.","descPoor":"Performance jank detected. JS event loop is being blocked by synchronous tasks.","session":"Session","apdex":"Apdex","uiFps":"UI FPS","avg":"Avg","min":"Min","frameTime":"Frame Time","target":"Target","jsThreadLag":"JS Thread Lag","peak":"Peak","jsHeap":"JS Heap","engineProtected":"Engine Protected","vsyncBudgetConsumption":"16.6ms Vsync Budget Consumption","budgetHeadroomAvailable":"budget headroom available","budgetExceededBy":"Budget exceeded by","budgetTarget":"Budget: 16.6ms","tabOverview":"Overview & Vitals","tabPercentiles":"Percentiles & Latency","tabEngine":"Engine & Heap","tabJanks":"Janks Log","tabBenchmark":"Stress Tests","datadogVitalsTitle":"Datadog & New Relic APM Vitals","datadogVitalsDesc":"Real-time Mobile APM metrics computed via official New Relic Apdex (T=16.6ms) and Datadog RUM Mobile Vitals algorithms.","satisfiedFrames":"Satisfied (≤16.6ms)","slowFrames":"Slow Frames (17-66ms)","frozenFrames":"Frozen Frames (>66ms)","longTasks":"JS Long Tasks (>50ms)","distributionTitle":"Frame Duration Distribution (Histogram)","framesSampled":"frames sampled","ultraSmooth":"Ultra-smooth","normalUiLayout":"Normal UI Layout","minorVariance":"Minor Variance","droppedFrame":"Dropped Frame","frozenFrame":"Frozen Frame","percentilesTitle":"Latency Percentile Matrix (p50 / p90 / p95 / p99)","percentilesSubtitle":"Computed from Live Frames","percentilesDesc":"Exact mathematical distribution of frame times sampled from the active rolling window.","p50Label":"p50 (Median)","p50Sub":"50% of frames faster","p90Label":"p90","p90Sub":"90% of frames faster","p95Label":"p95","p95Sub":"95% of frames faster","p99Label":"p99 (Tail Latency)","p99Sub":"Worst 1% outlier frames","realtimeFrameTimes":"Real-Time Frame Times (50 Frames)","target60FpsLabel":"16.6ms Target (60fps)","past50Frames":"← Past 50 Frames","nowInstant":"Now (Instantaneous) →","smoothLegend":"Smooth (<18ms)","jankLegend":"Jank (18-33ms)","frozenLegend":"Frozen (>33ms)","jsResponsiveness":"JS Thread Responsiveness","instantaneous":"⚡ Instantaneous","lagUnit":"ms Lag","avgJsQueueLag":"Average JS Queue Lag","peakLagSpike":"Peak Lag Spike","engineTelemetryTitle":"Engine & Runtime Telemetry","engineTelemetryDesc":"Deep inspection of the active JavaScript Virtual Machine, memory allocations, and React Native architecture.","jsEngine":"JavaScript Engine","architectureMode":"Architecture Mode","turboModulesBridge":"TurboModules Bridge","turboModulesEnabled":"⚡ Enabled (JSI Direct)","standardBridge":"Standard Bridge","liveHeapSize":"Live Heap Size","totalHeapAllocated":"Total Heap Allocated","sessionPeakHeap":"Session Peak Heap","gcCollections":"GC Collections","gcCpuTime":"GC CPU Time","nativeManaged":"Native Managed","triggerHermesGc":"Trigger Hermes Garbage Collection","invokedHermesGc":"Invoked Hermes GC cycle","jankIncidentLog":"Jank & Frozen Frame Incident Log","janksCount":"janks","allFilter":"ALL","moderateFilter":"MODERATE","severeFilter":"SEVERE","frozenFilter":"FROZEN","zeroJanksDetected":"Zero Janks Detected","zeroJanksDesc":"All frames rendered smoothly within the target vsync budget.","inspect":"Inspect","hide":"Hide","incidentDiagnostics":"Incident Diagnostics","delayedBy":"Frame delayed by","beyondDeadline":"beyond standard vsync deadline","stressTitle":"Interactive Stress Test & Benchmark Suite","stressDesc":"Trigger synchronous workloads or render bursts to watch the live FPS and JS lag meters react dynamically.","jsStressTitle":"JS Loop Stress (120ms)","jsStressSub":"Simulates heavy compute / blocking synchronous loop","jsStressRan":"Ran 120ms synchronous JS blocking loop","renderStressTitle":"Re-render Burst (25 frames)","renderStressSub":"Simulates rapid state & layout reconciliation passes","renderStressRan":"Fired 25 rapid re-render cycles"}}