react-native-inapp-inspector 2.5.9 → 2.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/components/Inspector/ConsoleExportModal.d.ts +10 -0
- package/dist/commonjs/components/Inspector/ConsoleExportModal.js +317 -0
- package/dist/commonjs/components/Inspector/ConsoleTab.js +20 -15
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +34 -20
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +49 -44
- package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +3 -3
- package/dist/commonjs/components/SkeletonPlaceholder.js +3 -3
- package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
- package/dist/commonjs/constants/telemetryConfig.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/helpers/shareFormatter.d.ts +15 -0
- package/dist/commonjs/helpers/shareFormatter.js +15 -8
- package/dist/commonjs/i18n/locales/ar.json +1 -1
- package/dist/commonjs/i18n/locales/bn.json +1 -1
- package/dist/commonjs/i18n/locales/de.json +1 -1
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/i18n/locales/es.json +1 -1
- package/dist/commonjs/i18n/locales/fr.json +1 -1
- package/dist/commonjs/i18n/locales/gu.json +1 -1
- package/dist/commonjs/i18n/locales/hi.json +1 -1
- package/dist/commonjs/i18n/locales/id.json +1 -1
- package/dist/commonjs/i18n/locales/it.json +1 -1
- package/dist/commonjs/i18n/locales/ja.json +1 -1
- package/dist/commonjs/i18n/locales/kn.json +1 -1
- package/dist/commonjs/i18n/locales/ko.json +1 -1
- package/dist/commonjs/i18n/locales/ml.json +1 -1
- package/dist/commonjs/i18n/locales/mr.json +1 -1
- package/dist/commonjs/i18n/locales/nl.json +1 -1
- package/dist/commonjs/i18n/locales/pa.json +1 -1
- package/dist/commonjs/i18n/locales/pl.json +1 -1
- package/dist/commonjs/i18n/locales/pt.json +1 -1
- package/dist/commonjs/i18n/locales/ru.json +1 -1
- package/dist/commonjs/i18n/locales/ta.json +1 -1
- package/dist/commonjs/i18n/locales/te.json +1 -1
- package/dist/commonjs/i18n/locales/tr.json +1 -1
- package/dist/commonjs/i18n/locales/vi.json +1 -1
- package/dist/commonjs/i18n/locales/zh.json +1 -1
- package/dist/esm/components/Inspector/ConsoleExportModal.d.ts +10 -0
- package/dist/esm/components/Inspector/ConsoleExportModal.js +317 -0
- package/dist/esm/components/Inspector/ConsoleTab.js +38 -33
- package/dist/esm/components/Inspector/MediaGalleryTab.js +88 -74
- package/dist/esm/components/Inspector/MediaPreviewModal.js +178 -173
- package/dist/esm/components/Inspector/SkeletonPlaceholder.js +11 -11
- package/dist/esm/components/SkeletonPlaceholder.js +11 -11
- package/dist/esm/constants/telemetryConfig.d.ts +3 -3
- package/dist/esm/constants/telemetryConfig.js +1 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/helpers/shareFormatter.d.ts +15 -0
- package/dist/esm/helpers/shareFormatter.js +15 -8
- package/dist/esm/i18n/locales/ar.json +1 -1
- package/dist/esm/i18n/locales/bn.json +1 -1
- package/dist/esm/i18n/locales/de.json +1 -1
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/i18n/locales/es.json +1 -1
- package/dist/esm/i18n/locales/fr.json +1 -1
- package/dist/esm/i18n/locales/gu.json +1 -1
- package/dist/esm/i18n/locales/hi.json +1 -1
- package/dist/esm/i18n/locales/id.json +1 -1
- package/dist/esm/i18n/locales/it.json +1 -1
- package/dist/esm/i18n/locales/ja.json +1 -1
- package/dist/esm/i18n/locales/kn.json +1 -1
- package/dist/esm/i18n/locales/ko.json +1 -1
- package/dist/esm/i18n/locales/ml.json +1 -1
- package/dist/esm/i18n/locales/mr.json +1 -1
- package/dist/esm/i18n/locales/nl.json +1 -1
- package/dist/esm/i18n/locales/pa.json +1 -1
- package/dist/esm/i18n/locales/pl.json +1 -1
- package/dist/esm/i18n/locales/pt.json +1 -1
- package/dist/esm/i18n/locales/ru.json +1 -1
- package/dist/esm/i18n/locales/ta.json +1 -1
- package/dist/esm/i18n/locales/te.json +1 -1
- package/dist/esm/i18n/locales/tr.json +1 -1
- package/dist/esm/i18n/locales/vi.json +1 -1
- package/dist/esm/i18n/locales/zh.json +1 -1
- package/package.json +1 -1
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
- package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/9.2.0/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
- package/android/build/reports/problems/problems-report.html +0 -659
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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":"Аналитика"},"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":"Закрыть"}}
|
|
1
|
+
{"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":"Закрыть"}}
|