react-native-inapp-inspector 2.4.0 → 2.4.2
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/README.ar.md +163 -0
- package/README.de.md +163 -0
- package/README.es.md +164 -0
- package/README.fr.md +163 -0
- package/README.hi.md +163 -0
- package/README.ja.md +180 -0
- package/README.ko.md +163 -0
- package/README.md +340 -243
- package/README.pt-BR.md +163 -0
- package/README.ru.md +163 -0
- package/README.zh-CN.md +387 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +82 -21
- package/assets/banner_dark.svg +186 -0
- package/assets/banner_light.svg +186 -0
- package/assets/icon_circle.svg +148 -0
- package/assets/icon_square.svg +369 -0
- package/assets/inapp_inspector_icon.gif +0 -0
- package/assets/inapp_inspector_icon_original.gif +0 -0
- package/assets/social_preview.png +0 -0
- package/assets/walkthrough.gif +0 -0
- package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
- package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
- package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
- package/dist/commonjs/components/AppHeaderLogo.js +7 -5
- package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
- package/dist/commonjs/components/BrandSquareIcon.js +139 -0
- package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
- package/dist/commonjs/components/ConsoleLogCard.js +23 -39
- package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +16 -16
- package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
- package/dist/commonjs/components/Inspector/ConfirmationModal.js +32 -0
- package/dist/commonjs/components/Inspector/ConsoleTab.js +15 -15
- package/dist/commonjs/components/Inspector/CrashTab.js +25 -23
- package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
- package/dist/commonjs/components/Inspector/FabLauncher.js +22 -30
- package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +90 -0
- package/dist/commonjs/components/Inspector/MainScreen.js +46 -33
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +21 -19
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +85 -101
- package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
- package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
- package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
- package/dist/commonjs/components/Inspector/PushCard.js +5 -4
- package/dist/commonjs/components/Inspector/PushDetail.js +32 -23
- package/dist/commonjs/components/Inspector/PushTab.js +13 -13
- package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
- package/dist/commonjs/components/Inspector/ReduxTab.js +14 -14
- package/dist/commonjs/components/Inspector/SettingsPanel.js +258 -139
- package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
- package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
- package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
- package/dist/commonjs/components/Inspector/SocketDetail.js +317 -0
- package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
- package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
- package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
- package/dist/commonjs/components/Inspector/StorageTab.js +34 -32
- package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
- package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
- package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
- package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
- package/dist/commonjs/components/Inspector/TabBar.js +24 -23
- package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
- package/dist/commonjs/components/JsonViewer.js +7 -7
- package/dist/commonjs/components/LogCard.d.ts +3 -2
- package/dist/commonjs/components/LogCard.js +17 -14
- package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
- package/dist/commonjs/components/ModuleErrorBoundary.js +2 -2
- package/dist/commonjs/components/NetworkIcons.d.ts +15 -0
- package/dist/commonjs/components/NetworkIcons.js +38 -3
- package/dist/commonjs/components/SegmentedTabs.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
- package/dist/commonjs/customHooks/socketLogger.js +2 -0
- package/dist/commonjs/helpers/index.js +3 -3
- package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
- package/dist/commonjs/helpers/memoryManager.js +1 -1
- package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
- package/dist/commonjs/helpers/searchQueryParser.js +5 -1
- package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
- package/dist/commonjs/helpers/settingsStore.js +1 -1
- package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
- package/dist/commonjs/helpers/shareFormatter.js +8 -7
- package/dist/commonjs/i18n/index.d.ts +99 -1
- package/dist/commonjs/i18n/index.js +1 -1
- package/dist/commonjs/i18n/locales/ar.json +1 -1
- package/dist/commonjs/i18n/locales/bn.json +1 -0
- 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 -0
- package/dist/commonjs/i18n/locales/hi.json +1 -1
- package/dist/commonjs/i18n/locales/id.json +1 -0
- package/dist/commonjs/i18n/locales/it.json +1 -0
- package/dist/commonjs/i18n/locales/ja.json +1 -1
- package/dist/commonjs/i18n/locales/kn.json +1 -0
- package/dist/commonjs/i18n/locales/ko.json +1 -1
- package/dist/commonjs/i18n/locales/ml.json +1 -0
- package/dist/commonjs/i18n/locales/mr.json +1 -0
- package/dist/commonjs/i18n/locales/nl.json +1 -0
- package/dist/commonjs/i18n/locales/pa.json +1 -0
- package/dist/commonjs/i18n/locales/pl.json +1 -0
- 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 -0
- package/dist/commonjs/i18n/locales/te.json +1 -0
- package/dist/commonjs/i18n/locales/tr.json +1 -0
- package/dist/commonjs/i18n/locales/vi.json +1 -0
- package/dist/commonjs/i18n/locales/zh.json +1 -1
- package/dist/commonjs/index.d.ts +13 -13
- package/dist/commonjs/index.js +5 -4
- package/dist/commonjs/native/NativeInspector.d.ts +1 -0
- package/dist/commonjs/socket.d.ts +4 -0
- package/dist/commonjs/socket.js +1 -0
- package/dist/commonjs/styles/index.d.ts +23 -0
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/enums.d.ts +40 -0
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/commonjs/types/interfaces.d.ts +122 -1
- package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
- package/dist/esm/components/AnimatedBrandOwl.js +175 -0
- package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
- package/dist/esm/components/AppHeaderLogo.js +7 -5
- package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
- package/dist/esm/components/BrandSquareIcon.js +139 -0
- package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
- package/dist/esm/components/ConsoleLogCard.js +61 -77
- package/dist/esm/components/Inspector/AboutModal.js +85 -95
- package/dist/esm/components/Inspector/AnalyticsTab.js +31 -31
- package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
- package/dist/esm/components/Inspector/ConfirmationModal.js +32 -0
- package/dist/esm/components/Inspector/ConsoleTab.js +49 -49
- package/dist/esm/components/Inspector/CrashTab.js +40 -38
- package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
- package/dist/esm/components/Inspector/FabLauncher.js +50 -58
- package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
- package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
- package/dist/esm/components/Inspector/LanguageSelectorModal.js +90 -0
- package/dist/esm/components/Inspector/MainScreen.js +123 -110
- package/dist/esm/components/Inspector/MediaGalleryTab.js +64 -62
- package/dist/esm/components/Inspector/MediaPreviewModal.js +107 -123
- package/dist/esm/components/Inspector/NetworkTab.js +90 -90
- package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
- package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
- package/dist/esm/components/Inspector/PushCard.js +23 -22
- package/dist/esm/components/Inspector/PushDetail.js +34 -25
- package/dist/esm/components/Inspector/PushTab.js +25 -25
- package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
- package/dist/esm/components/Inspector/ReduxTab.js +35 -35
- package/dist/esm/components/Inspector/SettingsPanel.js +495 -376
- package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
- package/dist/esm/components/Inspector/SocketCard.js +116 -0
- package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
- package/dist/esm/components/Inspector/SocketDetail.js +317 -0
- package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
- package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
- package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
- package/dist/esm/components/Inspector/SocketTab.js +112 -0
- package/dist/esm/components/Inspector/StorageTab.js +136 -134
- package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
- package/dist/esm/components/Inspector/SupportModal.js +125 -0
- package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
- package/dist/esm/components/Inspector/SupportPage.js +227 -0
- package/dist/esm/components/Inspector/TabBar.js +36 -35
- package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
- package/dist/esm/components/JsonViewer.js +55 -55
- package/dist/esm/components/LogCard.d.ts +3 -2
- package/dist/esm/components/LogCard.js +61 -58
- package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
- package/dist/esm/components/ModuleErrorBoundary.js +23 -23
- package/dist/esm/components/NetworkIcons.d.ts +15 -0
- package/dist/esm/components/NetworkIcons.js +38 -3
- package/dist/esm/components/SegmentedTabs.js +7 -7
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/socketLogger.d.ts +26 -0
- package/dist/esm/customHooks/socketLogger.js +2 -0
- package/dist/esm/helpers/index.js +3 -3
- package/dist/esm/helpers/memoryManager.d.ts +1 -0
- package/dist/esm/helpers/memoryManager.js +1 -1
- package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
- package/dist/esm/helpers/searchQueryParser.js +5 -1
- package/dist/esm/helpers/settingsStore.d.ts +1 -0
- package/dist/esm/helpers/settingsStore.js +1 -1
- package/dist/esm/helpers/shareFormatter.d.ts +3 -1
- package/dist/esm/helpers/shareFormatter.js +8 -7
- package/dist/esm/i18n/index.d.ts +99 -1
- package/dist/esm/i18n/index.js +1 -1
- package/dist/esm/i18n/locales/ar.json +1 -1
- package/dist/esm/i18n/locales/bn.json +1 -0
- 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 -0
- package/dist/esm/i18n/locales/hi.json +1 -1
- package/dist/esm/i18n/locales/id.json +1 -0
- package/dist/esm/i18n/locales/it.json +1 -0
- package/dist/esm/i18n/locales/ja.json +1 -1
- package/dist/esm/i18n/locales/kn.json +1 -0
- package/dist/esm/i18n/locales/ko.json +1 -1
- package/dist/esm/i18n/locales/ml.json +1 -0
- package/dist/esm/i18n/locales/mr.json +1 -0
- package/dist/esm/i18n/locales/nl.json +1 -0
- package/dist/esm/i18n/locales/pa.json +1 -0
- package/dist/esm/i18n/locales/pl.json +1 -0
- 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 -0
- package/dist/esm/i18n/locales/te.json +1 -0
- package/dist/esm/i18n/locales/tr.json +1 -0
- package/dist/esm/i18n/locales/vi.json +1 -0
- package/dist/esm/i18n/locales/zh.json +1 -1
- package/dist/esm/index.d.ts +13 -13
- package/dist/esm/index.js +8 -7
- package/dist/esm/native/NativeInspector.d.ts +1 -0
- package/dist/esm/socket.d.ts +4 -0
- package/dist/esm/socket.js +1 -0
- package/dist/esm/styles/index.d.ts +23 -0
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/enums.d.ts +40 -0
- package/dist/esm/types/enums.js +1 -1
- package/dist/esm/types/interfaces.d.ts +122 -1
- package/ios/NetworkInspectorModule.mm +102 -12
- package/package.json +204 -2
- package/src/native/NativeInspector.ts +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"common":{"cancel":"Cancelar","clear":"Limpiar","clearAll":"Limpiar todo","close":"Cerrar","loading":"Cargando...","success":"Éxito","pending":"Pendiente","failed":"Fallido","copy":"Copiar","copied":"¡Copiado!","copyJson":"Copiar JSON","collapseAll":"Contraer todo","expandAll":"Expandir todo","viewOnNpm":"Ver en NPM","later":"Más tarde","source":"ORIGEN","minimize":"Minimizar","tapToExpand":"Toca para expandir","open":"Abrir","openInBrowser":"Abrir en navegador","openInBrowserPrompt":"¿Estás seguro de que deseas abrir esta URL en tu navegador externo?","add":"Añadir"},"header":{"updateAvailableTitle":"Update Available","updateAvailableMessage":"react-native-inapp-inspector v{{version}} is available on NPM (installed: v{{installed}}).","clearEverythingTitle":"Clear Everything","clearEverythingMessage":"This clears all tabs — APIs, Logs, Analytics, Redux timeline and Crash history. Continue?","photo":"Photo","record":"Record","rec":"REC","clear":"Clear","about":"About","screenshotCaptured":"📸 Screenshot captured & saved","screenshotFailed":"Failed to capture screenshot","screenshotError":"Error taking screenshot","recordingStarted":"🔴 Video recording started","recordingSaved":"🎥 Recording saved ({{duration}}s)","recordingError":"Recording error","recordingStartFailed":"Failed to start recording","paramCount":"{{count}} param","paramCount_plural":"{{count}} params","sourceFirebase":"FB","sourceManual":"MAN","firebase":"firebase","manual":"manual"},"tabs":{"apis":"APIs","logs":"Registros","analytics":"Analítica","redux":"Redux","crash":"Bloqueos","device":"Dispositivo","storage":"Almacenamiento","media":"Captura"},"settings":{"mainTitle":"Settings & Modules","mainSubtitle":"Manage modules and preferences","requiredBadge":"REQUIRED","defaultBadge":"DEFAULT","notConnectedBadge":"NOT CONNECTED","notDetectedBadge":"NOT DETECTED","readOnlyBadge":"READ ONLY","coreBadge":"CORE","activeBadge":"ACTIVE","dormantBadge":"DORMANT","protectedBadge":"PROTECTED","modulesAndTools":"Modules & Tools","uiPreferences":"UI & Display","ramLimits":"RAM & Limits","screenVideoCapture":"Screen & Video Capture","zeroOverheadTitle":"Zero Background Overhead","zeroOverheadDesc":"Check the modules you wish to activate. Disabled modules consume 0% CPU & memory until saved.","unsavedPending":"● Unsaved selections pending","allSynchronized":"All modules synchronized","modulesActive":"{{active}} of {{total}} Modules Active","saveChanges":"Save Changes","settingsSaved":"Settings Saved","settingsSavedDesc":"Active module configurations have been successfully updated.","configure":"Configure","appearanceTheme":"APPEARANCE & THEME","windowLayout":"WINDOW & LAYOUT","startupDefault":"STARTUP & DEFAULT SCREEN","logFiltersDeduplication":"LOG FILTERS & DEDUPLICATION","resetSettings":"Reset All Settings","resetSettingsDesc":"Wipe customized preferences back to default","reset":"Reset","reduxNotConnectedTip":"Redux store is not connected. Call connectReduxStore(store) or use inspectorReduxMiddleware to enable.","analyticsNotConnectedTip":"Analytics is not initialized. Call setupAnalyticsLogger(analytics()) to enable.","tabVisibility":"Tab Visibility","tabVisibilityDescription":"Choose which modules appear in the inspector","settingsTitle":"Settings","back":"Back","apis":{"title":"APIs Settings","total":"Total: {{count}}","maxRequestLogs":"Max Request Logs","maxRequestLogsDescription":"Buffer size of network requests preserved in memory","clearNetworkLogs":"Clear Network Logs","clearNetworkLogsDescription":"{{count}} requests stored","networkLogsCleared":"Network logs cleared.","showStatusFilter":"Status Filter","showStatusFilterDescription":"Show status chips in the APIs list","showMethodFilter":"Method Filter","showMethodFilterDescription":"Show method chips in the APIs list","defaultTabDescription":"Tab the inspector opens on"},"logs":{"title":"Logs Settings","total":"Total: {{count}}","maxConsoleLogs":"Max Console Logs","maxConsoleLogsDescription":"How many console messages to retain","logLevels":"Log Severities","logLevelsDescription":"Select which severities to capture in Logs","showInfo":"Show Info logs","showInfoDesc":"Informational logs & debug prints","showWarn":"Show Warning logs","showWarnDesc":"Warning notices & deprecations","showError":"Show Error logs","showErrorDesc":"Runtime errors & exceptions","clearConsoleLogs":"Clear Console Logs","clearConsoleLogsDescription":"{{count}} logs stored","consoleLogsCleared":"Console logs cleared."},"analytics":{"title":"Analytics Settings","total":"Events: {{count}}","maxAnalyticsEvents":"Events Captured","maxAnalyticsEventsDescription":"{{count}} analytics events stored in buffer","clearAnalyticsEvents":"Clear Analytics History","clearAnalyticsEventsDescription":"Wipe all captured telemetry events","analyticsEventsCleared":"Analytics events cleared."},"redux":{"title":"Redux Settings","reducers":"Reducers: {{count}}","autoRefresh":"Auto-refresh Store","autoRefreshDescription":"Capture Redux store state tree on every dispatch","defaultJsonExpandDepth":"Default JSON Expand Depth","defaultJsonExpandDepthDescription":"Initial depth of Redux state tree to auto-expand","clearReduxState":"Clear Redux State","clearReduxStateDescription":"Reset current state snapshot in inspector","clearReduxStateEmpty":"No store snapshot recorded","reduxStateCleared":"Redux state snapshot cleared.","clearReduxTimeline":"Clear Redux Timeline","clearReduxTimelineDescription":"Remove all captured action history","reduxTimelineCleared":"Redux action history cleared."},"bundle":{"title":"Bundle Settings","sourceBundler":"Metro Source Bundler","sourceBundlerDesc":"Parses live module trees and calculates binary size breakdowns","clearCache":"Clear Bundle Cache","clearCacheDesc":"Force re-fetching and parsing of JS bundle","cacheCleared":"Bundle analysis cache cleared."},"performance":{"title":"Performance Settings","frameMeasurement":"Live Frame Measurement","frameMeasurementDesc":"Samples UI/JS frame rates & detects wasteful re-renders","clearEvents":"Clear Performance Events","clearEventsDesc":"Reset recorded jank and FPS drops history","eventsCleared":"Performance events cleared."},"crash":{"title":"Crash Settings","maxCrashLogs":"Max Crash Logs","maxCrashLogsDesc":"How many crash records to preserve in history","globalGuard":"Global Crash Guard","globalGuardDesc":"Intercepts native, JS, and render errors directly","clearHistory":"Clear Crash History","clearHistoryDesc":"{{count}} crash logs stored","historyCleared":"Crash logs cleared."},"media":{"title":"Screen & Video Capture","badge":"Native H.264 / GIF","desc":"Configure screenshot formats, quality, video FPS, audio narration, GIF recording & storage","screenshotCardTitle":"Screenshot Formats & Quality","screenshotCardDesc":"High-resolution full-window snapshot configuration","imageFormat":"Image Format","imageFormatDesc":"PNG (lossless), JPEG (compact), or WEBP","autoHide":"Auto-Hide Inspector Overlay","autoHideDesc":"Excludes inspector UI from screenshots","enabled":"ENABLED","videoCardTitle":"Video & GIF Recording","videoCardDesc":"H.264 MP4 recording & animated GIF export","audioMode":"Audio Narration Mode","audioModeDesc":"Muted, App Audio, or Voice Narration","frameRate":"Frame Rate","frameRateDesc":"Higher FPS yields smoother recordings","gifAutoOpt":"GIF Auto-Optimization","gifAutoOptDesc":"Converts video recordings for GitHub PRs & Slack","purgeAll":"Purge All Captured Media","purgeAllDesc":"Deletes all stored screenshots, videos, and GIFs","purgeCacheBtn":"Purge Cache","purgeConfirmTitle":"Purge Media Storage","purgeConfirmMessage":"This deletes all captured media files from local cache. Continue?","purgedSuccess":"Media storage purged"},"general":{"darkMode":"Dark Mode Theme","darkModeDescription":"Toggle sleek dark aesthetic or light contrast","modalHeight":"Inspector Window Height","modalHeightDescription":"Modal screen coverage percentage","modalAnimation":"Transition Animation","modalAnimationDescription":"Entrance and dismissal presentation style","duplicateLogs":"Show Duplicate Logs","duplicateLogsDescription":"Off: Identical repeated entries collapse into ×N badges","defaultOpeningTab":"Default Opening Tab","defaultOpeningTabDesc":"Initial tab active when launcher button is tapped","activeConsoleLogLevels":"Active Console Log Levels","activeConsoleLogLevelsDesc":"Select which severities to capture in Logs","resetToDefaults":"Reset to Defaults","resetToDefaultsDescription":"Restore all inspector settings","resetConfirmationTitle":"Settings Reset","resetConfirmationMessage":"All settings have been reset to default values.","storageStatus":"Persistent Storage","storageStatusEnabled":"Settings Storage: Persistent ({{type}})","storageStatusEnabledDesc":"Your preferences and module visibility persist across app reboots.","storageStatusDisabled":"Settings Storage: In-Memory (Temporary)","storageStatusDisabledDesc":"Preferences reset on app kill. Pass custom storage to <NetworkInspector storage={...} /> to persist on Android."}},"network":{"title":"APIs","searchPlaceholder":"Search by URL, status or method...","emptyTitle":"No API calls captured yet","emptySubtitle":"Network requests will appear here as you use the app.","reload":"Reload","clearTitle":"Clear Network Logs","clearMessage":"Are you sure you want to clear all captured network logs?","detailTabs":{"metadata":"Metadata","headers":"Headers","request":"Request","response":"Response"},"requestTitle":"Request","responseTitle":"Response","searchRequest":"Search request...","searchResponse":"Search response...","searchHeaders":"Search headers...","requestHeaders":"Request Headers","responseHeaders":"Response Headers","diffTitle":"Diff","noResponse":"No response body","noRequest":"No request body","statusFailed":"Failed","urlHeader":"URL","methodHeader":"Method","statusHeader":"Status","durationHeader":"Duration","sizeHeader":"Size","triggeredAt":"Triggered at","contentType":"Content-Type","sourcePage":"Source Page","sourcePageUnknown":"Unknown source","loadMore":"Load more","groupByPage":"Group by page","groupByDomain":"Group by domain","groupByNone":"List","domain":"Domain","page":"Page","requests":"{{count}} requests","requests_plural":"{{count}} requests","noFilteredResults":"No requests match the current filters","scrollToTop":"Scroll to top","copyCurl":"Copy cURL","copyFetch":"Copy fetch snippet","emptyResponse":"Empty response","bodyHidden":"{ Body hidden }","queryParams":"Query Params","fullUrl":"Full URL","open":"Open","showMore":"Show More","showLess":"Show Less","failedNetworkError":"Failed (Network Error)","noMatchingHeaders":"No matching headers","diffHidden":"{ Diff hidden }","noDiff":"No differences from previous API.","healthTitle":"Network Health & Telemetry","successRate":"Success Rate","avgLatency":"Avg Latency","p95Latency":"P95 Latency","bandwidth":"Bandwidth","fastest":"Fastest","slowest":"Slowest","timingWaterfall":"Timing Waterfall & Latency","throughput":"Throughput","performanceTier":"Performance Tier","perf":{"fast":"Fast (< 200ms)","moderate":"Moderate (200-800ms)","slow":"Slow (> 800ms)"},"jsonViewer":{"pretty":"Pretty","raw":"Raw","table":"Table","emptyObject":"Empty Object","emptyTable":"Empty Object","key":"Key","value":"Value"}},"console":{"title":"Logs","searchPlaceholder":"Search logs...","emptyTitle":"No console logs yet","emptySubtitle":"Console output from your app will appear here.","analyticsBadge":"Analytics","userLogBadge":"user-log","jsonTitle":"Log JSON","messageTitle":"Log Message","search":"Search log...","searchJson":"Search log JSON...","logMessage":"Log message","consoleLog":"Console Log","characters":"{{count}} chars","duplicates":"×{{count}} duplicates","showMore":"Show more","showLess":"Show less","clearTitle":"Clear Logs","clearMessage":"Are you sure you want to clear all console logs?","seeMore":"Show more","noResults":"No logs match the current filters","filterAll":"All","filterInfo":"Info","filterWarn":"Warn","filterError":"Error","filterUserLog":"User Log","filterAnalytics":"Analytics","tabOutput":"Output","tabArgs":"Args ({{count}})","tabStack":"Stack Trace","tabMetadata":"Metadata","callStack":"Call Stack ({{count}} frames)","errorStack":"Error Exception Stack ({{count}} frames)","callOriginStack":"Call Origin Stack","errorThrownStack":"Error Thrown Stack","appCodeScope":"🎯 App Code ({{count}})","allFramesScope":"📜 All Frames ({{count}})","cardsView":"Cards","rawTraceView":"Raw","noStackAvailable":"No call stack frames found matching the active filter.","originBadge":"#1 ORIGIN","appCodeBadge":"App Code","dependencyBadge":"Dependency","nativeBadge":"Native","hermesVmBadge":"Hermes VM","fullStackTrace":"Full Stack Trace","lineCol":"Line {{line}}, Col {{col}}","lineColShort":"L{{line}}:C{{col}}","searchInLogDetails":"Search in log details..."},"analytics":{"title":"Analytics","searchPlaceholder":"Search events...","emptyTitle":"No analytics events yet","emptySubtitle":"Analytics events will appear here as your app tracks them.","clearTitle":"Clear Analytics","clearMessage":"Are you sure you want to clear all analytics events?","eventParams":"{{count}} params","eventCount":"{{count}} events","userProperties":"User Properties","userId":"User ID","defaultParameters":"Default Parameters","collectionEnabled":"Collection Enabled","screenView":"screen_view","eventDetails":"Event Details","parameters":"Parameters","noParams":"No parameters","recentEvents":"Recent Events","analyticsError":"Analytics Error","duplicate":"Duplicate","params":"params","props":"props","item":"item","items":"items","pageViewCategory":"Page View","ecommerceCategory":"Ecommerce","systemCategory":"System","customCategory":"Custom","realtimeStream":"Realtime Activity","liveTelemetry":"Live Telemetry","eventsInWindow":"events in window","eventVelocity":"{{rate}} ev/min","peakVolume":"Peak: {{count}}","time30mAgo":"-30m","time20mAgo":"-20m","time10mAgo":"-10m","timeNow":"NOW","selectedBucket":"Bucket: {{time}} ({{count}} events)","totalRevenue":"Revenue","activeDistribution":"Category Split","allCategory":"All","screensCategory":"Screens","overviewTab":"Overview","jsonTreeTab":"JSON Tree","rawPayloadTab":"Raw Payload","sessionContext":"Session Context","userPropertiesSnapshot":"User Properties Snapshot","parameterKeys":"Parameters ({{count}})","searchParameters":"Search parameters...","noParamsFound":"No parameters match your search","sourceFirebase":"FIREBASE GA4","sourceCustom":"CUSTOM / MANUAL"},"redux":{"title":"Redux","searchPlaceholder":"Buscar estado o acciones...","emptyTitle":"Ningún almacén Redux conectado","emptySubtitle":"Conecta tu almacén para inspeccionar el estado y las acciones.","stateTab":"State","actionsTab":"Actions","clearTitle":"Clear Redux Timeline","clearMessage":"Are you sure you want to clear the dispatched action history?","noActions":"No actions dispatched yet. Trigger an action in the app to populate history.","noSearchResults":"No actions match your search.","lastAction":"Last action","actionHistory":"Action History","affectedSlices":"Affected slices","noAffectedSlices":"None","dispatchTime":"Dispatched at","prevState":"Previous State","nextState":"Next State","viewDiff":"View Diff","emptyState":"State is empty","rootState":"Root State","connectionStatus":"Connected","connectionStatusNone":"Not connected","autoRefresh":"Auto-refresh","paused":"Paused","liveState":"Live State","timeline":"Timeline","persisted":"Persisted","storage":"Storage","metadata":"Metadata","inMemory":"In-Memory","slice":"SLICE","rootKeys":"Root Keys","size":"Size","actions":"actions","keys":"Keys","last":"Last","live":"Live","loading":"Loading","error":"Error","empty":"Empty","payload":"Payload","actionPayload":"Action Payload:","stateChangesDiff":"State Changes (Diff):","tapToInspectAction":"Tap to inspect action payload & diff changes","noDispatchedActions":"No dispatched actions recorded for this slice yet.","sliceJson":"Slice JSON","originSaga":"SAGA","originThunk":"THUNK","originUi":"UI","originDirect":"DIRECT","originListener":"LISTENER","triggeredFrom":"Triggered From:","openInEditor":"Open in Editor","callStack":"Call Stack Trace","sliceOrigin":"Slice / Origin","activeSlices":"SLICES ACTIVOS","totalState":"ESTADO TOTAL","lastActionHeader":"ÚLTIMA ACCIÓN","initialState":"Estado inicial (sin acciones despachadas)","noStoreConnected":"Ningún almacén Redux conectado","connectStoreTip":"Llama a connectReduxStore(store) o usa inspectorReduxMiddleware al iniciar la app."},"device":{"title":"Dispositivo","searchPlaceholder":"Buscar especificaciones, UDID, IP, pantalla...","subTabs":{"overview":"Resumen","hardware":"Hardware","network":"Red e IP","display":"Pantalla","runtime":"Ejecución y App","security":"Seguridad e IDs"},"sections":{"overview":"RESUMEN DEL DISPOSITIVO","hardware":"ESPECIFICACIONES DE HARDWARE Y SISTEMA","network":"RED Y CONECTIVIDAD","display":"PANTALLA Y GEOMETRÍA","runtime":"EJECUCIÓN Y ENTORNO","security":"IDENTIFICADORES Y SEGURIDAD"},"copied":"Copiado {{label}}","copiedJson":"¡Informe JSON completo del dispositivo copiado!","copiedMarkdown":"¡Informe Markdown copiado al portapapeles!","live":"EN VIVO","ipAddress":"DIRECCIÓN IP","ramUsedTotal":"RAM (USADA/TOTAL)","uptime":"TIEMPO ACTIVO"},"storage":{"title":"Almacenamiento","searchPlaceholder":"Buscar claves, valores, tipos...","subTabs":{"asyncStorage":"AsyncStorage","mmkv":"MMKV"},"clearTitle":"Limpiar almacenamiento","clearMessage":"¿Estás seguro de que deseas eliminar todas las claves en {{driver}}?","clearConfirm":"Limpiar todo","emptyTitle":"Sin entradas de almacenamiento","emptySubtitle":"El almacenamiento está vacío para este controlador.","addKey":"Añadir clave","add":"Añadir","editKey":"Editar clave","createKey":"Crear clave","save":"Guardar","saveKey":"Guardar clave","keyName":"Nombre de clave","value":"Valor","valueContent":"Contenido del valor","type":"Tipo","beautifyJson":"Formatear JSON","loading":"Cargando entradas de almacenamiento...","deleteKeyTitle":"Eliminar clave","deleteKeyMessage":"¿Estás seguro de que deseas eliminar la clave \"{{key}}\"?"},"footer":{"endOfList":"Has llegado al final de la lista","loadMore":"Cargar {{count}} más","showingOf":"Mostrando {{count}} de {{total}} {{label}}"},"performance":{"title":"Performance","fpsTarget":"60 FPS Target Monitor","healthScore":"FPS Health Score","excellent":"Excellent (60 FPS)","good":"Good (Minor Janks)","needsOptimization":"Needs Optimization","liveFps":"Live FPS & Refresh Cycle","realtimeWindow":"Real-Time (1s window)","uiRenderThread":"UI Render Thread","optimalFrame":"Optimal (<16.6ms)","slowFrame":"Slow Frame (>16.6ms)","budgetUsage":"60 FPS Budget Usage","avgFrameTime":"Avg Frame Time","peakTime":"Peak Time","jsThread":"JS Thread","uiThread":"UI Thread","jsiLatency":"JSI Latency","heapImpact":"Heap Impact","optimizationTip":"Optimization Tip:","recordedEvents":"Recorded Events & Interactions","liveStream":"Live Session Stream","emptyTitle":"No performance events captured yet","emptySubtitle":"Perform actions in your app to see thread timings, render cost, and FPS tracking.","tabOverview":"Overview","tabRenders":"Renders","tabInteractions":"Interactions","tabMemory":"Memory","filterAll":"All","filterSlow":"Slow (>16ms)","filterCritical":"Critical (>33ms)","searchPlaceholder":"Search component, interaction...","avgRenderTime":"Avg Render","totalRenders":"Total Renders","renderCost":"Render Cost","slowRenders":"Slow Renders","unnecessaryRenders":"Wasteful Renders","heapAllocated":"Heap Allocated","heapLimit":"Heap Limit","gcEvents":"GC Events","leakRisk":"Leak Risk","lowRisk":"Low Risk","mediumRisk":"Medium Risk","highRisk":"High Risk","memoryTimeline":"Memory Timeline","clearPerformance":"Clear Performance Data","clearConfirmation":"Are you sure you want to clear all performance tracking data?","liveFpsDip":"Live Frame Rate Dip ({{fps}} FPS)","liveFpsDipDetail":"Main thread frame duration extended to {{duration}}ms during view update.","liveFpsDipAdvice":"Heavy JavaScript execution during frame pass delayed display presentation.","yogaLayout":"Yoga Flexbox Layout","hermesGc":"Hermes Garbage Collection","jsEngine":"JS Engine","uiReconciler":"UI Reconciler","memoryHeap":"Memory Heap","allLogs":"All Logs","jankySlow":"Janky / Slow","navigation":"Navigation","components":"Components","memoryGc":"Memory & GC","networkIo":"Network & I/O","catAll":"All","catJanky":"Janky","catNavigation":"Navigation","catRender":"Components","catMemory":"Memory","catIo":"I/O","recording":"Recording","paused":"Paused","budgetHeadroom":"~{{time}}ms Headroom ({{percent}}%)","jsExec":"JS Exec: {{time}}ms","yogaLayoutTime":"Yoga Layout: {{time}}ms","uiRenderTime":"UI Render: {{time}}ms","freeTime":"Free: {{time}}ms","heapAllocatedSub":"{{allocated}} MB allocated","hermesAot":"Hermes (AOT)","v8Jit":"V8 (JIT)","jscEngine":"JSC","bytecodeCompiled":"Bytecode compiled","jitEngine":"JIT Engine","webkitEngine":"Webkit Engine","fabricJsi":"Fabric / JSI","paperBridge":"Paper / Bridge","directCppBindings":"Direct C++ bindings","asyncJsonBridge":"Async JSON Bridge","fpsUnit":"FPS","jsLag":"JS Lag","jankRate":"Jank Rate","fpsAreaChartTitle":"Real-Time FPS Stream & Jitter (30s)","fpsAreaChartSub":"Live 60 FPS target with continuous frame variance measurement","frameLatencyDistTitle":"Frame Latency Distribution","frameLatencyDistSub":"Proportion of frames delivered within 16.6ms budget","optimalBucket":"< 16.6ms (60 FPS)","minorJankBucket":"16.7 - 33.3ms (30-60 FPS)","noticeableJankBucket":"33.4 - 50.0ms (20-30 FPS)","severeFreezeBucket":"> 50.0ms (< 20 FPS)","hermesHeapTrendTitle":"Memory & Hermes Heap Dynamics","hermesHeapTrendSub":"Live allocation vs generational GC scavenge cycles","live":"Live","msTotal":"{{duration}}ms total • {{time}}","droppedFrames":"{{count}} Dropped","zeroDropped":"0 Dropped","frameBudgetMs":"{{time}}ms / frame ({{budget}}% budget)","target60Fps":"Target 60 FPS • Actual {{fps}} FPS","frameDuration":"Frame Duration","frameDurationVal":"{{time}} ms (16.67ms budget)","frameUtilization":"Frame Budget Exceeded","frameBudgetOk":"Frame Budget Headroom","bottleneck":"Bottleneck","jsBound":"JS Thread Bound","uiBound":"UI Thread Bound","balanced":"Balanced","smooth":"Smooth 60 FPS","minorJank":"Minor Stutter","noticeableJank":"Noticeable Jank","severeFreeze":"Severe Freeze","screenContext":"Screen Context","profileReason1":"Inline arrow function props passed to children (onAddToCart={() => ...})","profileReason2":"Unmemoized Redux selector creating new object reference on every dispatch","profileReason3":"Dynamic style object created in render body ({ marginTop: insets.top + 10 })","profileReason4":"FlatList missing getItemLayout causing async layout measuring passes","profileReason5":"renderItem function defined anonymously inside JSX body","profileReason6":"List item components not wrapped with React.memo","profileReason7":"Parent screen re-rendered on keyboard show/hide event","profileReason8":"Unstable callback reference passed into checkout button","profileReason9":"TextInput value state triggers parent re-render on every keystroke without debouncing","profileReason10":"Passing unmemoized filter object ({ category, minPrice }) down to child chips","profileReason11":"Avatar image cache re-validation on auth session refresh","fixUseCallbackTitle":"Wrap Event Handlers in useCallback","fixUseCallbackDesc":"Inline functions recreate a new memory reference on every render, invalidating React.memo on child components.","fixCreateSelectorTitle":"Memoize Redux / Zustand Selectors with shallowEqual","fixCreateSelectorDesc":"Returning new object or array references inside useSelector forces an automatic re-render on every state dispatch.","fixUseMemoStylesTitle":"Hoist Styles or Use useMemo for Dynamic Dimensions","fixUseMemoStylesDesc":"Inline style objects create new object identities on every frame pass, causing Yoga Flexbox reconciliation diffs.","fixGetItemLayoutTitle":"Implement getItemLayout for Fixed-Height Items","fixGetItemLayoutDesc":"Supplying getItemLayout allows FlatList to immediately compute scroll offsets and virtual windows without measuring views asynchronously.","fixReactMemoTitle":"Wrap List Items in React.memo","fixReactMemoDesc":"Prevents all 50+ visible list items from re-rendering when parent list state (e.g. scroll position or pagination) updates.","fixComponentSplittingTitle":"Isolate Fast-Changing State in Leaf Components","fixComponentSplittingDesc":"Move keyboard listeners and modal animation state into self-contained subcomponents so the parent does not re-render.","fixDebouncedInputTitle":"Debounce Search Input or Use Local Controlled State","fixDebouncedInputDesc":"Do not propagate keystroke state into global store immediately. Use a 250ms debounce or uncontrolled ref.","fixPrimitivePropsTitle":"Pass Primitive Props Instead of Large Objects","fixPrimitivePropsDesc":"Passing only categoryId string instead of whole category object prevents re-renders when other category metadata updates.","fixUseRefForTrackingTitle":"Use useRef for Non-Visual Tracking Values","fixUseRefForTrackingDesc":"Do not store analytics timers, scroll offsets, or tracking IDs in useState if they do not directly alter the JSX tree.","highImpact":"High Impact","mediumImpact":"Medium Impact","bestPractice":"Best Practice","beforeUseCallback":"// ❌ Before in <{{comp}} /> (re-creates function reference on every render):","afterUseCallback":"// ✅ After (stable memoized callback reference):","beforeCreateSelector":"// ❌ Before in <{{comp}} /> (returns new object reference every render):","afterCreateSelector":"// ✅ After (shallowEqual prevents re-render unless values change):","beforeMemo":"// ❌ Before (<{{comp}} />):","afterMemo":"// ✅ After (skips render if props are shallowly identical):","flatListOptimization":"// FlatList Optimization for <{{comp}} />","customComparator":"// Custom equality function for <{{comp}} />","debounceInput":"// Debounce input inside <{{comp}} /> to prevent per-keystroke renders:","isolateState":"// Isolate rapidly changing state from <{{comp}} /> to child sub-tree\n// ✅ Encapsulate animated layout inside isolated component:","beforeUseRef":"// ❌ Before in <{{comp}} /> (triggers whole component re-render on value change):","afterUseRef":"// ✅ After (preserves mutable reference across renders without re-rendering):","fixInteractionManagerTitle":"Defer Offscreen Logic with InteractionManager","fixInteractionManagerDesc":"Heavy data processing during screen animations drops frames. Defer until transition finishes.","beforeInteractionManager":"// ❌ Before in <{{comp}} /> (runs heavy computation while transition animates):\nuseEffect(() => {\n loadHeavyData();\n}, []);","afterInteractionManager":"// ✅ After (waits until transition completes smoothly):\nuseEffect(() => {\n const task = InteractionManager.runAfterInteractions(() => {\n loadHeavyData();\n });\n return () => task.cancel();\n}, []);","fixFlatListWindowingTitle":"Tune FlatList Windowing Properties","fixFlatListWindowingDesc":"Configure maxToRenderPerBatch and windowSize to minimize offscreen virtualized view allocations.","beforeFlatListWindowing":"// FlatList Windowing Optimization for <{{comp}} />:\n<FlatList\n data={items}\n maxToRenderPerBatch={10}\n windowSize={5}\n initialNumToRender={8}\n removeClippedSubviews={true}\n/>","fixImageCachingTitle":"Optimize Image Caching and Downscaling","fixImageCachingDesc":"Use priority headers or resizeMode downscaling to avoid massive bitmap allocations in the Hermes heap.","beforeImageCaching":"// Image Optimization for <{{comp}} />:\n<Image\n source={{ uri: imageUrl, cache: 'force-cache' }}\n resizeMode=\"cover\"\n fadeDuration={100}\n/>","fixContextSplittingTitle":"Split Monolithic Context into Granular Providers","fixContextSplittingDesc":"Components subscribing to a large context re-render even when unused state properties change.","beforeContextSplitting":"// ❌ Before (<{{comp}} /> consumes entire AppContext):\nconst { user, cart, theme } = useAppContext();","afterContextSplitting":"// ✅ After (subscribe to dedicated slice context):\nconst theme = useThemeContext();","fixInlineStylesHoistTitle":"Hoist Static Styles with StyleSheet.create","fixInlineStylesHoistDesc":"Inline style objects allocate new memory references on each render pass, causing Yoga reconciliation overhead.","beforeInlineStyles":"// ❌ Before (<{{comp}} /> allocates inline object every frame):\n<View style={{ flex: 1, padding: 16, backgroundColor: '#ffffff' }} />","afterInlineStyles":"// ✅ After (hoisted StyleSheet reference):\nconst styles = StyleSheet.create({ container: { flex: 1, padding: 16, backgroundColor: '#ffffff' } });\n<View style={styles.container} />","transitionEventLabel":"Screen Transition: {{screen}}","transitionEventDetail":"Transition completed in {{duration}}ms (TTI: {{tti}}ms).","transitionEventAdvice":"Interaction completed within 60 FPS target budget.","heavyTaskEventLabel":"Heavy Synchronous Task: {{taskName}}","heavyTaskEventDetail":"JS thread blocked for {{duration}}ms during task execution.","heavyTaskEventAdvice":"Consider offloading to web worker, InteractionManager, or batching in chunks.","asyncOpEventLabel":"Slow Async Operation: {{opName}}","asyncOpEventDetail":"Async task took {{duration}}ms to resolve.","renderLoopWarningLabel":"Rapid Re-render Spike in <{{comp}} />","renderLoopWarningDetail":"Component re-rendered {{count}} times in 500ms. Potential infinite loop or unstable dependencies.","renderLoopWarningAdvice":"Check useEffect / useCallback dependency arrays for unstable object or function references.","event1Label":"Main Thread Spike during Navigation","event1Detail":"Screen transition triggered heavy layout reconciliation and simultaneous component mounts.","event1Advice":"Defer non-critical offscreen hooks with InteractionManager.runAfterInteractions to preserve 60 FPS.","event2Label":"FlatList Virtualization Re-render Pass","event2Detail":"FlatList rendered 25 items simultaneously on orientation change without memoized row component.","event2Advice":"Implement getItemLayout and React.memo(LogCard) to skip redundant diffing passes.","event3Label":"Native Modal Slide-Up Transition","event3Detail":"Hardware accelerated native driver animated transform running smoothly at sustained 60 FPS.","event3Advice":"Using nativeDriver: true successfully prevents JS thread blocking during animations.","event4Label":"Hermes Generational Garbage Collection","event4Detail":"Minor generational GC cycle scavenged 4.2 MB ephemeral heap objects with sub-millisecond thread pause.","event4Advice":"Hermes generational garbage collector is operating within optimal sub-5ms limits.","gcCycleLabel":"Manual Garbage Collection Cycle","gcCycleDetail":"Reclaimed ~{{amount}} MB unreferenced heap objects and compacted memory nursery.","gcCycleAdvice":"Heap usage optimized. Generational nursery cleared.","liveFpsDropLabel":"Live Frame Rate Dip ({{fps}} FPS)","liveFpsDropDetail":"Main thread frame duration extended to {{duration}}ms during view update.","liveFpsDropAdvice":"Heavy JavaScript execution during frame pass delayed display presentation.","event5Label":"Large JSON Payload Deserialization","event5Detail":"50-item API response parse overhead in network adapter (185 KB JSON raw string).","event5Advice":"Consider paginating API payloads or streaming responses if payload size exceeds 250 KB.","event6Label":"Image Bitmap Decode & Rasterization","event6Detail":"Retina raster decode for banner_dark.png (1200×630px raster buffer allocation).","event6Advice":"Downscale asset dimensions or convert to WebP to reduce decode latency by ~65%.","event7Label":"Native TurboModule JSI Invocation","event7Detail":"AsyncStorage / MMKV preferences transaction read across 32 configuration keys.","event7Advice":"Direct C++ JSI Turbomodule bindings completely bypass legacy JSON bridge serialization overhead.","event8Label":"Redux Action State Tree Diffing","event8Detail":"Redux dispatch pass evaluated 6 reducer slices and emitted state notification in 4.8ms.","event8Advice":"State tree immutability preserved. Memoized selectors prevented redundant component renders.","event9Label":"Touch-to-Render Event Latency","event9Detail":"Gesture responder dispatched tap event to TabBar button with immediate 60 FPS response.","event9Advice":"Touch responder latency is well within standard 16.67ms frame budget.","event10Label":"C++ Yoga Flexbox Layout Pass","event10Detail":"Inspector UI multi-tab card layout recalculation and font metrics pass in C++ Yoga engine.","event10Advice":"Flexbox layout constraints are cached and computed efficiently with zero reflow penalties."},"bundle":{"heroTitle":"Bundle & Asset Architecture","heroSubtitle":"Real-time size breakdown across all assets, code, and dependencies","heroSubtitleLive":"Live analysis of {{scriptUrl}}","liveAnalysisUnavailable":"Live bundle analysis unavailable","liveAnalysisUnavailableSub":"Could not reach the Metro dev server, so values are estimates. Make sure the app runs in development via `npx react-native start` and the Inspector can reach your Metro port (8081, 8082, ...).","bundleOverviewJson":"Bundle Overview JSON","devBundleSize":"DEV BUNDLE SIZE","devBundleHint":"{{kb}} KB • {{modules}} modules","trackedFilesHint":"{{count}} Tracked files","imagesMedia":"IMAGES & MEDIA","pctOfTrackedAssets":"{{pct}}% of tracked assets","tsJsSource":"TS / JS SOURCE","jsEngine":"JS ENGINE","bytecodeAot":"Bytecode AOT","standard":"Standard","splitUpTitle":"Development Bundle Split-Up","splitUpSub":"Measured {{mb}} MB JS bundle • {{files}} files • {{packages}} packages","splitUpJson":"Split-Up JSON","splitAppSource":"App Source Code","splitNodeModules":"node_modules Dependencies","splitAssetsMedia":"Assets & Media","splitMetroOverhead":"Metro Dev Overhead","splitSize":"{{kb}} KB • {{mb}} MB","productionFootprint":"PRODUCTION FOOTPRINT","productionValue":"iOS {{ios}} MB • Android {{android}} MB","productionDownload":"Download: iOS ~{{ios}} MB • AAB ~{{aab}} MB • APK ~{{apk}} MB","treemapTitle":"Asset & File Type Ratio Treemap","treemapSub":"Total ~{{mb}} MB","treemapJson":"Ratio Treemap JSON","legendImages":"Images:","legendTs":"TS/TSX:","legendJs":"JS Libs:","legendFonts":"Fonts:","legendJson":"JSON:","categoryBreakdown":"Category Breakdown","categoriesJson":"Categories Breakdown JSON","catImagesTitle":"Images & Media Assets","catImagesDesc":"PNG, WebP, SVG, and JPG assets in bundle","catJsTitle":"Compiled Node Modules & JS","catJsDesc":"Third-party dependencies and native bridges","catFontsTitle":"Custom Fonts & Vector Glyphs","catFontsDesc":"Font assets in bundle","catTsTitle":"TypeScript & JSX Components","catTsDesc":"App screen components, hooks, and business logic","catJsonTitle":"JSON Data & Localizations","catJsonDesc":"i18n translation dictionaries and static configs","totalBundleAssets":"TOTAL HOST PROJECT FILES","totalBundleValue":"{{kb}} KB (~{{mb}} MB)","totalFormula":"Sum of host source files: {{images}} KB + {{js}} KB + {{fonts}} KB + {{ts}} KB + {{json}} KB = {{total}} KB ({{count}} items)","prodIosApp":"iOS App (.ipa)","prodAndroidAab":"Android AAB (.aab)","prodAndroidApk":"Universal APK (.apk)","prodHeroTitleIos":"iOS Production Binary Footprint","prodHeroTitleAab":"Google Play App Bundle (.aab)","prodHeroTitleApk":"Universal Standalone APK (.apk)","prodHeroSubIos":"App Store install & over-the-air cellular download estimates","prodHeroSubAab":"Optimized per-device dynamic delivery split APK architecture","prodHeroSubApk":"Multi-ABI universal install archive for sideloading & direct distribution","prodInstallSize":"INSTALL SIZE","prodInstallHint":"On-device uncompressed footprint","prodDownloadSize":"DOWNLOAD SIZE","prodDownloadHint":"Store network transfer payload","prodCompression":"COMPRESSION","prodCompressionHint":"Bytecode & asset ratio","prodFormatArch":"FORMAT ARCHITECTURE","prodFormatHintIos":"Apple ARM64 runtime","prodFormatHintAab":"Dynamic Google Play delivery","prodFormatHintApk":"Sideload universal package","prodArchTitle":"Binary Component Architecture","prodArchSub":"Compiled native libraries, runtime bytecodes, assets, and signature blocks","prodTotalIos":"TOTAL IOS APP BINARY","prodTotalAab":"TOTAL ANDROID AAB BUNDLE","prodTotalApk":"TOTAL UNIVERSAL APK","prodTotalFormula":"From {{devKb}} KB (~{{devMb}} MB • {{count}} total assets) dev source bundle → {{installMb}} MB optimized native binary ({{pct}}% bytecode/asset compression).","tabOverview":"Overview","tabProduction":"Production ({{count}})","tabFiles":"Files ({{count}})","tabPackages":"Packages ({{count}})","tabMedia":"Media ({{count}})","tabOptimizer":"Optimizer","analyzingTitle":"Analyzing host app bundle from Metro…","analyzingHint":"Fetching bundle & extracting real modules","searchFilesPlaceholder":"Search by file name (.png, .tsx, .ttf, path)...","filteredFilesJson":"Filtered Files JSON","catAll":"All Files","catUnused":"Not Consumed (Dead)","catConsumed":"In-Use / Active","catImages":"Images & Media","catTypescript":"TypeScript / TSX","catJavascript":"JS & Node Modules","catFonts":"Fonts & Glyphs","catJson":"JSON & Data","treeView":"Tree View","flatList":"Flat List","expand":"Expand","collapse":"Collapse","showingFilesOf":"Showing {{shown}} of {{total}} files","filesOf":"{{count}} of {{total}} Files","notConsumed":"Not Consumed","consumed":"Consumed","copyFileInfo":"Copy {{name}} Info","fileDetailsJson":"File Details JSON","file":"file","files":"files","fileSizeKb":"{{size}} KB","fileSizeMb":"{{size}} MB","mbValue":"~{{size}} MB","kbMbValue":"{{kb}} KB ({{mb}} MB)","legendValue":"{{kb}} KB ({{pct}}%)","mediaSavings":"{{size}} KB","searchPackagesPlaceholder":"Search package (react-native, axios, navigation)...","dependenciesJson":"Dependencies JSON","showingDependencies":"Showing {{count}} dependencies","versionPrefix":"v{{version}}","bundled":"bundled","deprecated":"DEPRECATED","updateAvailable":"Update: v{{version}}","upToDate":"Up to date","bundledBadge":"Bundled","packageDetailsJson":"Package Details JSON","direct":"Direct","transitive":"Transitive","minified":"~{{size}} KB minified","npmLink":"npm ↗","dependenciesCount":"{{count}} Dependencies","mediaAuditorTitle":"Media Compression Auditor","mediaAssetsJson":"Media Assets JSON","mediaAuditorPrefix":"Images & Fonts constitute","mediaAuditorMid":"of total assets (~{{kb}} KB). Converting PNGs to WebP and font subsetting can reduce size by up to","mediaAuditorSuffix":"KB.","mediaAssetsList":"Media Assets & Fonts ({{count}} items)","mediaItemJson":"Media Item JSON","mediaAndFonts":"{{count}} Media & Fonts","optimizerTitle":"React Native Bundle Optimization Checklist","optimizationChecklist":"Optimization Checklist","optTip1Title":"Convert Heavy PNGs to WebP / SVGs","optTip1Desc":"Images account for >40% of final app download size. Converting 2x/3x raster PNGs to WebP saves 60-70% size with no visible fidelity loss.","optTip2Title":"Enable Hermes Bytecode Engine","optTip2DescActive":"Hermes is active! JavaScript is compiled into optimized bytecode Ahead-Of-Time.","optTip2DescInactive":"Hermes is disabled. Enable hermes in your app config for ~40% smaller payload and instant TTI startup.","optTip3Title":"Font Subsetting & Weight Pruning","optTip3Desc":"Include only the font weights you actively use (e.g. Regular & Bold). Remove unused glyph ranges to save 100KB+ per font file.","optTip4Title":"Selective Path Imports (Tree-shaking)","optTip4Desc":"Import from specific subpaths (e.g. lodash/get or specific vector icon sets) instead of importing large monolithic packages.","optTip5Title":"Screen Lazy-Loading","optTip5Desc":"Lazy load secondary screens and heavy modal sheets using dynamic imports and InteractionManager to reduce initial bundle evaluation.","highImpact":"High Impact","mediumImpact":"Medium Impact","bestPractice":"Best Practice","actionRequired":"Action Required","active":"Active","tipDetails":"Tip Details","iosComp1Name":"Frameworks & Dynamic Pods","iosComp1Desc":"React, Hermes, and {{count}} native pod frameworks.","iosComp1Advice":"Ensure Dead Code Stripping (STRIP_INSTALLED_PRODUCT = YES) in Release mode.","iosComp2Name":"Mach-O Executable (ARM64)","iosComp2Desc":"Host App compiled Swift/Objective-C and C++ native bridges.","iosComp2Advice":"Enable Monolithic LTO (Link-Time Optimization) in Xcode Scheme.","iosComp3Name":"Asset Catalog (Assets.car)","iosComp3Desc":"AppIcons, splash screens, vector glyphs, and bundled fonts.","iosComp3Advice":"Compile images into Xcode Asset Catalog for automatic App Thinning.","iosComp4Name":"Hermes Bytecode (main.jsbundle)","iosComp4Desc":"Host app JavaScript compiled AOT into Hermes bytecode ({{count}} files).","iosComp4Advice":"AOT bytecode loads with 0ms compile latency on device launch.","iosComp5Name":"Metadata & Code Signatures","iosComp5Desc":"_CodeSignature, Info.plist, and entitlements block.","iosComp5Advice":"Standard Apple Code Signing & provisioning signature.","andComp1Name":"Native C++ Libraries (.so)","andComp1Desc":"libhermes.so, libfbjni.so, and {{count}} C++ native adapters.","andComp1Advice":"Deploy with Android App Bundle (.aab) to deliver per-ABI split APKs.","andComp2Name":"Compiled DEX (classes.dex)","andComp2Desc":"Compiled Java & Kotlin runtime, AndroidX, and React Native bridges.","andComp2Advice":"Enable R8 / ProGuard shrinking (minifyEnabled true) in build.gradle.","andComp3Name":"Android Resources (res/)","andComp3Desc":"Drawables, vector XMLs, mipmap densities, resources.arsc, fonts.","andComp3Advice":"Use WebP and VectorDrawables to avoid multi-density asset duplication.","andComp4Name":"Hermes Bytecode (Android)","andComp4Desc":"Host app JavaScript compiled into Hermes bytecode ({{count}} files).","andComp4Advice":"Pre-compiled bytecode during assembleRelease gradle task.","andComp5Name":"Manifest & Signatures (META-INF)","andComp5Desc":"AndroidManifest.xml, signing certs, v2/v3/v4 APK Signature Scheme blocks.","andComp5Advice":"Official Google Play signing & signature block.","apkComp1Name":"Multi-ABI C++ Libraries (.so)","apkComp1Desc":"Universal multi-architecture shared libraries (.so) bundled for direct sideloading.","apkComp1Advice":"Use Android App Bundle (.aab) for Google Play to reduce install size by 60%.","apkComp2Name":"Compiled DEX Bytecode (classes.dex)","apkComp2Desc":"Compiled Java & Kotlin runtime, AndroidX libraries, and native bridge modules.","apkComp2Advice":"Enable R8 / ProGuard shrinking (minifyEnabled true) and shrinkResources true.","apkComp3Name":"Android Resources & Assets (res/)","apkComp3Desc":"Drawables, vector XMLs, mipmap densities, resources.arsc, fonts.","apkComp3Advice":"Use WebP and VectorDrawables to avoid multi-density asset duplication.","apkComp4Name":"Hermes Bytecode Bundle (Android)","apkComp4Desc":"Host app JavaScript compiled into Hermes bytecode ({{count}} files).","apkComp4Advice":"Pre-compiled bytecode during assembleRelease gradle task.","apkComp5Name":"Manifest & Signatures (META-INF)","apkComp5Desc":"AndroidManifest.xml, signing certs, JAR & v2/v3/v4 APK Signature Scheme.","apkComp5Advice":"Enterprise sideload & direct install signature block."},"errors":{"title":"Something went wrong","message":"An unexpected error occurred.","retry":"Try Again","reset":"Reset","close":"Close","errorReport":"Error report","modalTitle":"Inspector crashed","modalMessage":"The inspector hit an unexpected error. You can reset it below.","inlineTitle":"Inspector error","inlineMessage":"An unexpected error occurred inside the inspector.","networkError":"Network request failed","crashIntercepted":"CRASH INTERCEPTED","protected":"PROTECTED","rootCauseTitle":"Root Cause Diagnostics","rootCauseSubtitle":"Inspector caught this runtime error to prevent app termination","exactLocation":"EXACT SOURCE LOCATION","file":"File:","lineCol":"Line / Col:","lineColVal":"Line {{line}}, Col {{col}}","function":"Function:","callStack":"CALL STACK FRAMES","framesCount":"{{count}} frames","tryAgainRecover":"Try Again / Recover","copyDiagnostics":"Copy Diagnostics","appTag":"APP","copy":"Copy"},"jsonViewer":{"pretty":"Estructurado","raw":"Crudo","table":"Tabla","emptyObject":"Objeto vacío","emptyPayload":"Carga útil vacía","emptyTable":"Objeto vacío","fold":"Plegar","expand":"Expandir","min":"Min","indent":"Indentar","wrap":"Ajustar","copied":"¡Copiado!","copy":"Copiar JSON","key":"Clave","value":"Valor","lines":"líneas","line":"línea"},"codeSnippet":{"copy":"Copy","copied":"Copied!","matchCount":"{{count}} match","matchCount_plural":"{{count}} matches","noMatches":"No matches","searchPlaceholder":"Search...","prevMatch":"Previous match","nextMatch":"Next match","clearSearch":"Clear search"},"diffViewer":{"added":"added","removed":"removed","changed":"changed","noDiff":"No differences","emptyTitle":"No differences found","emptySubtitle":"The two payloads are identical."},"logCard":{"seeMore":"Show more","seeLess":"Show less","copy":"Copy","copied":"Copied!"},"emptyState":{"title":"Nothing here yet","subtitle":"Data will appear here as you use the app.","reload":"Reload"},"errorBoundary":{"title":"Something went wrong","message":"An unexpected error occurred.","retry":"Try Again","reset":"Reset","close":"Close"},"crash":{"title":"Crash","searchPlaceholder":"Search error, message, stack...","searchDetailPlaceholder":"Search in trace or JSON...","statCrashes":"Crashes","statFatal":"Fatal","statJsErrors":"JS Errors","statPromises":"Promises","statRender":"Render","statNative":"Native","filterAll":"All","filterFatal":"Fatal","filterJsError":"JS Error","filterPromise":"Promise","filterRender":"Render","filterNative":"Native","fatalBadge":"FATAL","handledBadge":"HANDLED","fatalCrash":"FATAL CRASH","handledException":"HANDLED EXCEPTION","unknownException":"Unknown Exception","report":"Report","inspect":"Inspect","copyReport":"Copy Report","copied":"Copied","clearTitle":"Clear Crash History","clearMessage":"Are you sure you want to clear all intercepted crash records?","clearCancel":"Cancel","clearConfirm":"Clear All","emptyTitle":"Zero Crashes Detected","emptySubtitle":"Global crash guard is active. All native and JavaScript exceptions are intercepted and protected.","emptySearchSubtitle":"No crash entries matched your search query.","tabStack":"Stack ({{count}})","tabDiagnostics":"Diagnostics","tabTrail":"Trail ({{count}})","tabRawJson":"Raw JSON","appFrames":"App Frames ({{count}})","allFrames":"All Frames ({{count}})","frameApp":"APP","frameLib":"LIB","anonymous":"<anonymous>","noStackTrace":"No stack trace captured for this event.","deviceEnvironment":"Device & Environment","platform":"Platform","osVersion":"OS Version","reactNative":"React Native","jsEngine":"JS Engine","hermesEngine":"Hermes Engine","jsc":"JSC","architecture":"Architecture","fabricNewArch":"Fabric (New Arch)","paperLegacy":"Paper (Legacy)","appState":"App State","jsHeapMemory":"JS Heap Memory","usedHeap":"Used Heap","totalHeap":"Total Heap","noBreadcrumbs":"No breadcrumb events recorded prior to this crash.","simNativeMessage":"Simulated native fatal exception","simPromiseMessage":"Simulated unhandled promise rejection","simRenderMessage":"Simulated React component render error","simJsMessage":"Simulated JavaScript exception","reportTitle":"CRASH DIAGNOSTIC REPORT","reportErrorName":"Error Name:","reportMessage":"Message:","reportType":"Type:","reportFatalYes":"YES (Fatal)","reportFatalNo":"NO (Caught/Handled)","reportFatal":"Fatal:","reportTimestamp":"Timestamp:","reportUptime":"App Uptime:","reportUptimeValue":"{{seconds}} seconds","reportPlatform":"Platform:","reportReactNative":"React Native:","reportHermes":"Hermes:","reportEnabled":"Enabled","reportDisabled":"Disabled","reportArchitecture":"Architecture:","reportFabricNew":"Fabric (New)","reportPaperLegacy":"Paper (Legacy)","reportScreenSize":"Screen Size:","reportAppState":"App State:","reportJsMemory":"JS Memory:","reportStackTrace":"STACK TRACE:","reportNoStackTrace":"No stack trace available","reportComponentHierarchy":"COMPONENT HIERARCHY:","reportRecentBreadcrumbs":"RECENT BREADCRUMBS:","mdReportTitle":"🚨 Crash Report: {{name}}","mdStackTrace":"📦 Stack Trace","mdComponentHierarchy":"🌲 Component Hierarchy","mdRecentBreadcrumbs":"👣 Recent Breadcrumbs","mdSeverityFatal":"FATAL","mdSeverityHandled":"HANDLED","breadcrumbNavigation":"Navigated from \"{{from}}\" to \"{{to}}\"","breadcrumbAction":"Action: {{actionType}}","unknown":"Unknown","runtimeException":"Runtime Exception","logFatalCrash":"Fatal Crash","logUnhandledError":"Unhandled Error","errorNameFatal":"FatalError","errorNameUnhandled":"UnhandledException","nativeCrashTitle":"Native Crash","nativeUncaughtException":"Native Uncaught Exception","nativeException":"Native Exception","unhandledPromiseRejection":"Unhandled Promise Rejection","filterTitle":"Crash Filters","filterSubtitle":"Diagnostics & Reports","filterReset":"Reset All","filterTypeSection":"CRASH TYPE","filterTypeAll":"All Types","filterTimeSection":"TIME HORIZON","filterTimeAll":"All Time","filterTime15m":"Last 15 mins","filterTime1h":"Last 1 hour","filterTime24h":"Last 24 hours","filterTime7d":"Last 7 days","filterPlatformSection":"PLATFORM","filterPlatformAll":"All Platforms","filterPlatformIos":"iOS","filterPlatformAndroid":"Android","filterEngineSection":"JS ENGINE","filterEngineAll":"All Engines","filterEngineHermes":"Hermes","filterSortSection":"SORT ORDER","filterSortNewest":"Newest First (Default)","filterSortOldest":"Oldest First","filterDiscard":"Discard","filterApply":"Apply ({{count}} Crashes)","frameCopy":"Copy","frameCopied":"Copied","componentHierarchy":"Component Hierarchy"},"mediaGallery":{"all":"All ({{count}})","photos":"Photos","videos":"Videos","gifs":"GIFs","purge":"Purge ({{size}})","purgeTitle":"Purge All Media","purgeMessage":"This will permanently delete all {{count}} captured screenshots, videos, and GIFs ({{size}}). Continue?","noMediaTitle":"No Captured Media","noMediaDesc":"Use the Photo or Video Record button in the toolbar to capture whole-app screenshots, screen recordings, or GIFs.","deleted":"Deleted media item","allPurged":"All captured media purged","converting":"Converting...","convertToGif":"Convert to GIF","playVideo":"Play Video","playError":"Unable to play video","convertedSuccess":"Converted to Animated GIF successfully!","convertFailed":"Failed to convert to GIF","share":"Share","copyUri":"Copy URI","uriCopied":"File URI copied to clipboard","delete":"Delete","deleteSelected":"Delete ({{count}})","deleteSelectedTitle":"Delete Selected","deleteSelectedMessage":"Are you sure you want to delete {{count}} selected media items?","deletedCount":"Deleted {{count}} media items","deleteTitle":"Delete Media","deleteMessage":"Are you sure you want to delete {{filename}}?","shareUnavailable":"Sharing not available on this device","showingResults":"Showing {{count}} results","showingFilteredResults":"Showing {{count}} of {{total}} results","selectedOfResults":"Selected {{selected}} of {{total}} results","minimize":"Minimize","expand":"Expand Fullscreen","collapse":"Exit Fullscreen","speed":"Speed","loop":"Loop","pause":"Pause","play":"Play"}}
|
|
1
|
+
{"common":{"cancel":"Cancelar","clear":"Limpiar","clearAll":"Limpiar todo","close":"Cerrar","loading":"Cargando...","success":"Éxito","pending":"Pendiente","failed":"Fallido","copy":"Copiar","copied":"¡Copiado!","copyJson":"Copiar JSON","collapseAll":"Contraer todo","expandAll":"Expandir todo","viewOnNpm":"Ver en NPM","later":"Más tarde","source":"ORIGEN","minimize":"Minimizar","tapToExpand":"Toca para expandir","open":"Abrir","share":"Compartir","openInBrowser":"Abrir en navegador","openInBrowserPrompt":"¿Estás seguro de que deseas abrir esta URL en tu navegador externo?","delete":"Eliminar","reset":"Restablecer","save":"Guardar","edit":"Editar","add":"Añadir","search":"Buscar","filter":"Filtrar","sort":"Ordenar","refresh":"Actualizar","retry":"Reintentar","confirm":"Confirmar","yes":"Sí","no":"No","ok":"Aceptar","done":"Hecho","back":"Atrás","next":"Siguiente","show":"Mostrar","hide":"Ocultar","select":"Seleccionar","selectAll":"Seleccionar todo","deselectAll":"Deseleccionar todo","noResults":"No se encontraron resultados","items":"elementos","of":"de","showing":"Mostrando","active":"Activo","inactive":"Inactivo","enabled":"Habilitado","disabled":"Deshabilitado","live":"En vivo","connected":"Conectado","disconnected":"Desconectado","version":"Versión","update":"ACTUALIZAR","unknown":"Desconocido"},"header":{"updateAvailableTitle":"Actualización disponible","updateAvailableMessage":"react-native-inapp-inspector v{{version}} está disponible en NPM (instalado: v{{installed}}).","clearEverythingTitle":"Borrar todo","clearEverythingMessage":"Esto borra todas las pestañas: API, registros, análisis, línea de tiempo de Redux e historial de fallos. ¿Continuar?","photo":"Foto","record":"Registro","rec":"REC","clear":"Borrar","about":"Acerca de","screenshotCaptured":"📸 Captura de pantalla capturada y guardada","screenshotFailed":"No se pudo realizar la captura de pantalla","screenshotError":"Error al tomar captura de pantalla","recordingStarted":"🔴 Comenzó la grabación de video","recordingSaved":"🎥 Grabación guardada ({{duration}}s)","recordingError":"Error de grabación","recordingStartFailed":"No se pudo iniciar la grabación","paramCount":"{{count}} parámetro","paramCount_plural":"{{count}} parámetros","sourceFirebase":"FB","sourceManual":"MAN","firebase":"base de fuego","manual":"manuales","aboutSpecs":"Acerca de y especificaciones","live":"En vivo","keys":"{{count}} claves","frames":"{{count}} fotogramas","sliceBadge":"REBANADA"},"tabs":{"apis":"API","logs":"Registros","analytics":"Analítica","redux":"redux","crash":"Bloqueos","push":"empujar","device":"Dispositivo","storage":"Almacenamiento","media":"Captura","debugging":"Depuración","socket":"WebSocket"},"settings":{"mainTitle":"Configuraciones y módulos","mainSubtitle":"Administrar módulos y preferencias","requiredBadge":"REQUERIDO","defaultBadge":"PREDETERMINADO","notConnectedBadge":"NO CONECTADO","notDetectedBadge":"NO DETECTADO","readOnlyBadge":"SOLO LEER","coreBadge":"NÚCLEO","activeBadge":"ACTIVO","dormantBadge":"LATENTE","protectedBadge":"PROTEGIDO","modulesAndTools":"Módulos y herramientas","uiPreferences":"Interfaz de usuario y pantalla","ramLimits":"RAM y límites","screenVideoCapture":"Captura de pantalla y vídeo","zeroOverheadTitle":"Sobrecarga de fondo cero","zeroOverheadDesc":"Marque los módulos que desea activar. Los módulos deshabilitados consumen 0% de CPU y memoria hasta que se guardan.","unsavedPending":"● Selecciones no guardadas pendientes","allSynchronized":"Todos los módulos sincronizados","modulesActive":"{{active}} de {{total}} módulos activos","saveChanges":"Guardar cambios","settingsSaved":"Configuración guardada","settingsSavedDesc":"Las configuraciones del módulo activo se han actualizado correctamente.","configure":"Configurar","appearanceTheme":"APARIENCIA Y TEMA","windowLayout":"VENTANA Y DISEÑO","startupDefault":"PANTALLA DE INICIO Y PREDETERMINADO","logFiltersDeduplication":"FILTROS DE REGISTRO Y DEDUPLICACIÓN","resetSettings":"Restablecer todas las configuraciones","resetSettingsDesc":"Borrar las preferencias personalizadas a los valores predeterminados","reset":"Reiniciar","reduxNotConnectedTip":"La tienda Redux no está conectada. Llame a connectReduxStore(store) o utilice inspectorReduxMiddleware para habilitarlo.","analyticsNotConnectedTip":"Analytics no se inicializa. Llame a setupAnalyticsLogger(analytics()) para habilitarlo.","tabVisibility":"Visibilidad de pestañas","tabVisibilityDescription":"Elija qué módulos aparecen en el inspector","settingsTitle":"Configuración","back":"Atrás","apis":{"title":"Configuración de API","maxRequestLogs":"Registros de solicitudes máximas","maxRequestLogsDescription":"Tamaño del búfer de las solicitudes de red conservadas en la memoria","clearNetworkLogs":"Borrar registros de red","clearNetworkLogsDescription":"{{count}} solicitudes almacenadas","networkLogsCleared":"Registros de red borrados.","showStatusFilter":"Filtro de estado","showStatusFilterDescription":"Mostrar chips de estado en la lista de API","showMethodFilter":"Filtro de método","showMethodFilterDescription":"Mostrar chips de método en la lista de API","defaultTabDescription":"Pestaña en la que se abre el inspector","total":"Total: {{count}}"},"logs":{"title":"Configuración de registros","maxConsoleLogs":"Registros máximos de consola","maxConsoleLogsDescription":"¿Cuántos mensajes de consola conservar?","logLevels":"Gravedades de registro","logLevelsDescription":"Seleccione qué gravedades capturar en Registros","showInfo":"Mostrar registros de información","showInfoDesc":"Registros informativos e impresiones de depuración","showWarn":"Mostrar registros de advertencia","showWarnDesc":"Avisos de advertencia y obsolescencias","showError":"Mostrar registros de errores","showErrorDesc":"Errores y excepciones en tiempo de ejecución","clearConsoleLogs":"Borrar registros de la consola","clearConsoleLogsDescription":"{{count}} registros almacenados","consoleLogsCleared":"Se borraron los registros de la consola.","total":"Total: {{count}}"},"analytics":{"title":"Configuración de análisis","total":"Eventos: {{count}}","maxAnalyticsEvents":"Eventos capturados","maxAnalyticsEventsDescription":"{{count}} eventos de análisis almacenados en el búfer","clearAnalyticsEvents":"Borrar historial de análisis","clearAnalyticsEventsDescription":"Borrar todos los eventos de telemetría capturados","analyticsEventsCleared":"Eventos de análisis borrados."},"redux":{"title":"Configuración de redux","reducers":"Reductores: {{count}}","autoRefresh":"Tienda de actualización automática","autoRefreshDescription":"Capture el árbol de estado de la tienda Redux en cada envío","defaultJsonExpandDepth":"Profundidad de expansión JSON predeterminada","defaultJsonExpandDepthDescription":"Profundidad inicial del árbol de estado de Redux para expandirse automáticamente","clearReduxState":"Borrar estado de Redux","clearReduxStateDescription":"Restablecer la instantánea del estado actual en el inspector","clearReduxStateEmpty":"No se ha registrado ninguna instantánea de la tienda","reduxStateCleared":"Se borró la instantánea del estado de Redux.","clearReduxTimeline":"Borrar línea de tiempo de Redux","clearReduxTimelineDescription":"Eliminar todo el historial de acciones capturadas","reduxTimelineCleared":"Se borró el historial de acciones de Redux."},"bundle":{"title":"Configuración del paquete","sourceBundler":"Paquete de fuente Metro","sourceBundlerDesc":"Analiza árboles de módulos activos y calcula desgloses de tamaño binario","clearCache":"Borrar caché de paquete","clearCacheDesc":"Forzar la recuperación y el análisis del paquete JS","cacheCleared":"Se borró la caché de análisis de paquetes."},"performance":{"title":"Configuración de rendimiento","frameMeasurement":"Medición de cuadros en vivo","frameMeasurementDesc":"Muestra velocidades de fotogramas UI/JS y detecta renderizados innecesarios","clearEvents":"Borrar eventos de rendimiento","clearEventsDesc":"Restablecer el historial de caídas de FPS y jank registrados","eventsCleared":"Eventos de rendimiento borrados."},"crash":{"title":"Configuración de bloqueo","maxCrashLogs":"Registros máximos de fallos","maxCrashLogsDesc":"¿Cuántos registros de accidentes preservar en la historia?","globalGuard":"Guardia global contra accidentes","globalGuardDesc":"Intercepta errores nativos, JS y de renderizado directamente","clearHistory":"Borrar historial de fallos","clearHistoryDesc":"{{count}} registros de fallas almacenados","historyCleared":"Se borraron los registros de fallos."},"media":{"title":"Captura de pantalla y vídeo","badge":"H.264 nativo/GIF","desc":"Configure formatos de captura de pantalla, calidad, FPS de video, narración de audio, grabación y almacenamiento de GIF","screenshotCardTitle":"Formatos y calidad de captura de pantalla","screenshotCardDesc":"Configuración de instantáneas de ventana completa de alta resolución","imageFormat":"Formato de imagen","imageFormatDesc":"PNG (sin pérdidas), JPEG (compacto) o WEBP","autoHide":"Superposición de inspector de ocultación automática","autoHideDesc":"Excluye la interfaz de usuario del inspector de las capturas de pantalla","enabled":"HABILITADO","videoCardTitle":"Grabación de vídeo y GIF","videoCardDesc":"Grabación MP4 H.264 y exportación de GIF animados","audioMode":"Modo de narración de audio","audioModeDesc":"Silenciado, audio de aplicación o narración de voz","frameRate":"Velocidad de fotogramas","frameRateDesc":"Un FPS más alto produce grabaciones más fluidas","gifAutoOpt":"Optimización automática de GIF","gifAutoOptDesc":"Convierte grabaciones de video para GitHub PR y Slack","purgeAll":"Purgar todos los medios capturados","purgeAllDesc":"Elimina todas las capturas de pantalla, videos y GIF almacenados","purgeCacheBtn":"Purgar caché","purgeConfirmTitle":"Purgar almacenamiento de medios","purgeConfirmMessage":"Esto elimina todos los archivos multimedia capturados del caché local. ¿Continuar?","purgedSuccess":"Almacenamiento de medios eliminado"},"general":{"darkMode":"Tema del modo oscuro","darkModeDescription":"Alternar estética elegante y oscura o contraste claro","modalHeight":"Altura de la ventana de inspección","modalHeightDescription":"Porcentaje de cobertura de pantalla modal","modalAnimation":"Animación de transición","modalAnimationDescription":"Estilo de presentación de entrada y salida.","duplicateLogs":"Mostrar registros duplicados","duplicateLogsDescription":"Desactivado: las entradas repetidas idénticas se colapsan en insignias ×N","defaultOpeningTab":"Pestaña de apertura predeterminada","defaultOpeningTabDesc":"Pestaña inicial activa cuando se toca el botón del iniciador","activeConsoleLogLevels":"Niveles de registro de consola activa","activeConsoleLogLevelsDesc":"Seleccione qué gravedades capturar en Registros","resetToDefaults":"Restablecer los valores predeterminados","resetToDefaultsDescription":"Restaurar todas las configuraciones del inspector","resetConfirmationTitle":"Restablecer configuración","resetConfirmationMessage":"Todas las configuraciones se han restablecido a los valores predeterminados.","storageStatus":"Almacenamiento persistente","storageStatusEnabled":"Almacenamiento de configuración: persistente ({{type}})","storageStatusEnabledDesc":"Sus preferencias y visibilidad del módulo persisten después de reiniciar la aplicación.","storageStatusDisabled":"Almacenamiento de configuración: en memoria (temporal)","storageStatusDisabledDesc":"Las preferencias se restablecen al cerrar la aplicación. Pase el almacenamiento personalizado a <NetworkInspector Storage={...} /> para persistir en Android.","language":"Idioma","languageDescription":"Seleccionar idioma de visualización de la interfaz","selectLanguage":"Seleccionar idioma"},"configureSubtitle":"Configurar parámetros del módulo","resetAlertTitle":"Restablecer toda la configuración","resetAlertMessage":"Esto restaura la visibilidad de módulos y preferencias de interfaz a sus valores predeterminados. ¿Continuar?","settingsReset":"Configuración restablecida","settingsResetMessage":"Toda la configuración ha sido restablecida.","pushHistoryCleared":"Historial de notificaciones push borrado","socketHistoryCleared":"Historial de WebSocket borrado","memory":{"manualTitle":"Limpieza manual de memoria","manualDescription":"Elimine las entradas más antiguas en todos los almacenes de registros y libere RAM","pruned":"{{count}} elementos eliminados de la memoria"},"simulator":{"salesforce":"Impulso simulado de Salesforce Marketing Cloud","fcm":"Empuje simulado de Firebase FCM","apns":"Empuje de APN de Apple simulado","deepLink":"Empuje de enlace profundo simulado","chat":"Sesión WebSocket de chat en tiempo real simulada","crypto":"Flujo simulado de Binance Crypto Ticker","socketio":"Sesión simulada de Socket.IO v4","echo":"Prueba simulada de eco de WebSocket","screenshotSaved":"¡Captura de pantalla capturada y guardada!"}},"network":{"title":"API","searchPlaceholder":"Buscar por URL, estado o método...","emptyTitle":"Aún no se han capturado llamadas API","emptySubtitle":"Las solicitudes de red aparecerán aquí a medida que utilice la aplicación.","reload":"recargar","clearTitle":"Borrar registros de red","clearMessage":"¿Está seguro de que desea borrar todos los registros de red capturados?","detailTabs":{"metadata":"Metadatos","headers":"Encabezados","request":"Solicitar","response":"Respuesta"},"requestTitle":"Solicitar","responseTitle":"Respuesta","searchRequest":"Solicitud de búsqueda...","searchResponse":"Respuesta de búsqueda...","searchHeaders":"Buscar encabezados...","requestHeaders":"Encabezados de solicitud","responseHeaders":"Encabezados de respuesta","diffTitle":"diferencia","noResponse":"Sin cuerpo de respuesta","noRequest":"Sin cuerpo de solicitud","statusFailed":"Fallido","urlHeader":"URL","methodHeader":"Método","statusHeader":"Estado","durationHeader":"Duración","sizeHeader":"Tamaño","triggeredAt":"Activado en","contentType":"Tipo de contenido","sourcePage":"Página fuente","sourcePageUnknown":"Fuente desconocida","loadMore":"Cargar más","groupByPage":"Agrupar por página","groupByDomain":"Agrupar por dominio","groupByNone":"Lista","domain":"Dominio","page":"Página","requests":"{{count}} solicitudes","requests_plural":"{{count}} solicitudes","noFilteredResults":"Ninguna solicitud coincide con los filtros actuales","scrollToTop":"Desplazarse hacia arriba","copyCurl":"Copiar rizo","copyFetch":"Copiar fragmento de recuperación","emptyResponse":"respuesta vacía","bodyHidden":"{Cuerpo oculto}","queryParams":"Parámetros de consulta","fullUrl":"URL completa","open":"Abierto","showMore":"Mostrar más","showLess":"Mostrar menos","failedNetworkError":"Error (error de red)","noMatchingHeaders":"No hay encabezados coincidentes","diffHidden":"{ Diferencia oculta }","noDiff":"No hay diferencias con la API anterior.","healthTitle":"Estado de la red y telemetría","successRate":"Tasa de éxito","avgLatency":"Latencia promedio","p95Latency":"Latencia P95","bandwidth":"Ancho de banda","fastest":"Más rápido","slowest":"mas lento","timingWaterfall":"Cascada de sincronización y latencia","throughput":"Rendimiento","performanceTier":"Nivel de rendimiento","perf":{"fast":"Rápido (< 200 ms)","moderate":"Moderado (200-800 ms)","slow":"Lento (> 800 ms)"},"jsonViewer":{"pretty":"bonita","raw":"Raw","table":"mesa","emptyObject":"Objeto vacío","emptyTable":"Objeto vacío","key":"Key","value":"Valor"},"showingRequests":"Mostrando {{count}} peticiones","showingFilteredRequests":"Mostrando {{filtered}} de {{total}} peticiones","status200":"200 bien","status201":"201 Creado","status204":"204 Sin contenido","status304":"304 No modificado","status400":"400 Petición incorrecta","status401":"401 No autorizado","status403":"403 Prohibido","status404":"404 No encontrado","status500":"error 500","shareError":"Error al compartir","shareErrorMessage":"No se pudo abrir la hoja de compartir"},"console":{"title":"Registros","searchPlaceholder":"Buscar registros...","emptyTitle":"Aún no hay registros de consola","emptySubtitle":"La salida de la consola de su aplicación aparecerá aquí.","analyticsBadge":"Analítica","userLogBadge":"registro de usuario","jsonTitle":"Registrar JSON","messageTitle":"Mensaje de registro","search":"Registro de búsqueda...","searchJson":"Registro de búsqueda JSON...","logMessage":"Mensaje de registro","consoleLog":"Registro de consola","characters":"{{count}} caracteres","duplicates":"×{{count}} duplicados","showMore":"Mostrar más","showLess":"Mostrar menos","clearTitle":"Borrar registros","clearMessage":"¿Está seguro de que desea borrar todos los registros de la consola?","seeMore":"Mostrar más","noResults":"Ningún registro coincide con los filtros actuales","filterAll":"All","filterInfo":"Información","filterWarn":"Advertir","filterError":"error","filterUserLog":"Registro de usuario","filterAnalytics":"Analítica","tabOutput":"Salida","tabArgs":"Argumentos ({{count}})","tabStack":"Seguimiento de pila","tabMetadata":"Metadatos","callStack":"Pila de llamadas ({{count}} fotogramas)","errorStack":"Pila de excepción de error ({{count}} marcos)","callOriginStack":"Pila de origen de llamada","errorThrownStack":"Pila de errores arrojados","appCodeScope":"🎯 Código de aplicación ({{count}})","allFramesScope":"📜 Todos los fotogramas ({{count}})","cardsView":"Tarjetas","rawTraceView":"Raw","noStackAvailable":"No se encontraron marcos de pila de llamadas que coincidan con el filtro activo.","originBadge":"#1 ORIGEN","appCodeBadge":"Código de aplicación","dependencyBadge":"dependencia","nativeBadge":"Nativo","fullStackTrace":"Seguimiento de pila completa","lineCol":"Línea {{line}}, Col {{col}}","searchInLogDetails":"Buscar en los detalles del registro...","showingLogs":"Mostrando {{count}} registros","showingFilteredLogs":"Mostrando {{filtered}} de {{total}} registros","filteredBy":"Filtrado por {{filters}} ({{filtered}} de {{total}} registros)","log":"Registro","info":"Información","warning":"Advertencia","error":"error","debug":"Depuración","hermesVmBadge":"Hermes VM","lineColShort":"L{{line}}:C{{col}}"},"analytics":{"title":"Analítica","searchPlaceholder":"Buscar eventos...","emptyTitle":"Aún no hay eventos de análisis","emptySubtitle":"Los eventos de análisis aparecerán aquí a medida que su aplicación los rastree.","clearTitle":"Análisis claros","clearMessage":"¿Está seguro de que desea borrar todos los eventos de análisis?","eventParams":"{{count}} parámetros","eventCount":"{{count}} eventos","userProperties":"Propiedades de usuario","userId":"ID de usuario","defaultParameters":"Parámetros predeterminados","collectionEnabled":"Colección habilitada","screenView":"vista_pantalla","eventDetails":"Detalles del evento","parameters":"Parámetros","noParams":"Sin parámetros","recentEvents":"Eventos recientes","analyticsError":"Error de análisis","duplicate":"Duplicar","params":"parámetros","props":"accesorios","item":"artículo","items":"artículos","pageViewCategory":"Vista de página","ecommerceCategory":"Comercio electrónico","systemCategory":"Sistema","customCategory":"personalizado","realtimeStream":"Actividad en tiempo real","liveTelemetry":"Telemetría en vivo","eventsInWindow":"eventos en ventana","peakVolume":"Pico: {{count}}","timeNow":"NOW","selectedBucket":"Depósito: {{time}} ({{count}} eventos)","totalRevenue":"Ingresos","activeDistribution":"División de categoría","allCategory":"All","screensCategory":"Pantallas","overviewTab":"Descripción general","jsonTreeTab":"Árbol JSON","rawPayloadTab":"Carga útil sin procesar","sessionContext":"Contexto de la sesión","userPropertiesSnapshot":"Instantánea de propiedades de usuario","parameterKeys":"Parámetros ({{count}})","searchParameters":"Parámetros de búsqueda...","noParamsFound":"Ningún parámetro coincide con su búsqueda","sourceFirebase":"BASE DE FUEGO GA4","sourceCustom":"PERSONALIZADO / MANUAL","eventVelocity":"{{rate}} ev/min","time30mAgo":"-30m","time20mAgo":"-20m","time10mAgo":"-10m"},"redux":{"title":"redux","searchPlaceholder":"Buscar estado o acciones...","emptyTitle":"Ningún almacén Redux conectado","emptySubtitle":"Conecta tu almacén para inspeccionar el estado y las acciones.","stateTab":"Estado","actionsTab":"Acciones","clearTitle":"Borrar línea de tiempo de Redux","clearMessage":"¿Está seguro de que desea borrar el historial de acciones enviadas?","noActions":"Aún no se han enviado acciones. Activa una acción en la aplicación para completar el historial.","noSearchResults":"Ninguna acción coincide con tu búsqueda.","lastAction":"Última acción","actionHistory":"Historial de acción","affectedSlices":"Rebanadas afectadas","noAffectedSlices":"Ninguno","dispatchTime":"Enviado a","prevState":"Estado anterior","nextState":"Estado siguiente","viewDiff":"Ver diferencia","emptyState":"el estado esta vacio","rootState":"Estado raíz","connectionStatus":"Conectado","connectionStatusNone":"No conectado","autoRefresh":"Actualización automática","paused":"En pausa","liveState":"Estado vivo","timeline":"Línea de tiempo","persisted":"persistió","storage":"Almacenamiento","metadata":"Metadatos","inMemory":"En memoria","slice":"REBANADA","rootKeys":"Claves raíz","size":"Tamaño","actions":"acciones","keys":"llaves","last":"último","live":"en vivo","loading":"Cargando","error":"error","empty":"vacio","payload":"Carga útil","actionPayload":"Carga útil de acción:","stateChangesDiff":"Cambios de estado (diferenciación):","tapToInspectAction":"Toque para inspeccionar la carga útil de la acción y los cambios de diferencias","noDispatchedActions":"Aún no se han registrado acciones enviadas para este segmento.","sliceJson":"Cortar JSON","originUi":"UI","originDirect":"DIRECTO","originListener":"OYENTE","triggeredFrom":"Activado desde:","openInEditor":"Abrir en el editor","callStack":"Seguimiento de pila de llamadas","sliceOrigin":"Rebanada / Origen","activeSlices":"SLICES ACTIVOS","totalState":"ESTADO TOTAL","lastActionHeader":"ÚLTIMA ACCIÓN","initialState":"Estado inicial (sin acciones despachadas)","noStoreConnected":"Ningún almacén Redux conectado","connectStoreTip":"Llama a connectReduxStore(store) o usa inspectorReduxMiddleware al iniciar la app.","clearPersistedTitle":"Borrar estado persistido","clearPersistedMessage":"¿Está seguro de que desea eliminar el almacenamiento persistido del slice \"{{slice}}\"?","clearedPersisted":"El estado persistido ha sido borrado.","clearPersistedError":"Error al borrar el estado persistido.","originSaga":"SAGA","originThunk":"THUNK"},"device":{"title":"Dispositivo","searchPlaceholder":"Buscar especificaciones, UDID, IP, pantalla...","subTabs":{"overview":"Resumen","hardware":"Ferretería","network":"Red e IP","display":"Pantalla","runtime":"Ejecución y App","security":"Seguridad e IDs"},"sections":{"overview":"RESUMEN DEL DISPOSITIVO","hardware":"ESPECIFICACIONES DE HARDWARE Y SISTEMA","network":"RED Y CONECTIVIDAD","display":"PANTALLA Y GEOMETRÍA","runtime":"EJECUCIÓN Y ENTORNO","security":"IDENTIFICADORES Y SEGURIDAD"},"copied":"Copiado {{label}}","copiedJson":"¡Informe JSON completo del dispositivo copiado!","copiedMarkdown":"¡Informe Markdown copiado al portapapeles!","live":"EN VIVO","ipAddress":"DIRECCIÓN IP","ramUsedTotal":"RAM (USADA/TOTAL)","uptime":"TIEMPO ACTIVO"},"storage":{"title":"Almacenamiento","searchPlaceholder":"Buscar claves, valores, tipos...","subTabs":{"asyncStorage":"Almacenamiento asíncrono","mmkv":"MMKV"},"clearTitle":"Limpiar almacenamiento","clearMessage":"¿Estás seguro de que deseas eliminar todas las claves en {{driver}}?","clearConfirm":"Limpiar todo","emptyTitle":"Sin entradas de almacenamiento","emptySubtitle":"El almacenamiento está vacío para este controlador.","addKey":"Añadir clave","add":"Añadir","editKey":"Editar clave","createKey":"Crear clave","save":"Guardar","saveKey":"Guardar clave","keyName":"Nombre de clave","value":"Valor","valueContent":"Contenido del valor","type":"Tipo","beautifyJson":"Formatear JSON","loading":"Cargando entradas de almacenamiento...","deleteKeyTitle":"Eliminar clave","deleteKeyMessage":"¿Estás seguro de que deseas eliminar la clave \"{{key}}\"?","asyncStorage":"Almacenamiento asíncrono","deleteConfirm":"Eliminar","cleared":"Almacenamiento borrado","mmkv":"MMKV"},"footer":{"endOfList":"Has llegado al final de la lista","loadMore":"Cargar {{count}} más","loadMoreRequests":"Cargar {{count}} Más solicitudes","allLoaded":"Todas las {{count}} solicitudes cargadas","showingOf":"Mostrando {{count}} de {{total}} {{label}}"},"performance":{"title":"Rendimiento","fpsTarget":"Monitor de objetivo de 60 FPS","healthScore":"Puntuación de salud FPS","excellent":"Excelente (60 FPS)","good":"Bueno (janks menores)","needsOptimization":"Necesita optimización","liveFps":"FPS en vivo y ciclo de actualización","realtimeWindow":"Tiempo real (ventana de 1 s)","uiRenderThread":"Hilo de renderizado de la interfaz de usuario","optimalFrame":"Óptimo (<16,6 ms)","slowFrame":"Fotograma lento (>16,6 ms)","budgetUsage":"Uso del presupuesto de 60 FPS","avgFrameTime":"Tiempo medio de fotograma","peakTime":"Hora pico","jsThread":"Hilo JS","uiThread":"Hilo de interfaz de usuario","jsiLatency":"Latencia JSI","heapImpact":"Impacto del montón","optimizationTip":"Consejo de optimización:","recordedEvents":"Eventos e interacciones grabados","liveStream":"Transmisión de sesión en vivo","emptyTitle":"Aún no se han capturado eventos de rendimiento","emptySubtitle":"Realice acciones en su aplicación para ver los tiempos de los subprocesos, el costo de procesamiento y el seguimiento de FPS.","tabOverview":"Descripción general","tabRenders":"renderiza","tabInteractions":"Interacciones","tabMemory":"Memoria","filterAll":"All","filterSlow":"Lento (>16ms)","filterCritical":"Crítico (>33ms)","searchPlaceholder":"Componente de búsqueda, interacción...","avgRenderTime":"Promedio de renderizado","totalRenders":"Representaciones totales","renderCost":"Costo de renderizado","slowRenders":"renderizados lentos","unnecessaryRenders":"Renders derrochadores","heapAllocated":"Montón asignado","heapLimit":"Límite de montón","gcEvents":"Eventos de la general","leakRisk":"Riesgo de fuga","lowRisk":"Bajo riesgo","mediumRisk":"Riesgo medio","highRisk":"Alto riesgo","memoryTimeline":"Línea de tiempo de la memoria","clearPerformance":"Borrar datos de rendimiento","clearConfirmation":"¿Está seguro de que desea borrar todos los datos de seguimiento del rendimiento?","liveFpsDip":"Caída de la velocidad de cuadros en vivo ({{fps}} FPS)","liveFpsDipDetail":"La duración del marco del hilo principal se extendió a {{duration}}ms durante la actualización de la vista.","liveFpsDipAdvice":"Ejecución intensa de JavaScript durante la presentación de visualización retrasada del paso de fotogramas.","yogaLayout":"Diseño de caja flexible de yoga","hermesGc":"Recolección de basura de Hermes","jsEngine":"Motor JS","uiReconciler":"Conciliador de interfaz de usuario","memoryHeap":"montón de memoria","allLogs":"Todos los registros","jankySlow":"Janky / Lento","navigation":"Navegación","components":"Componentes","memoryGc":"Memoria y GC","networkIo":"Red y E/S","catAll":"All","catNavigation":"Navegación","catRender":"Componentes","catMemory":"Memoria","catIo":"I/O","recording":"Grabación","paused":"En pausa","budgetHeadroom":"~{{time}}ms de margen libre ({{percent}}%)","jsExec":"Ejecutivo de JS: {{time}}ms","yogaLayoutTime":"Diseño de yoga: {{time}}ms","uiRenderTime":"Representación de la interfaz de usuario: {{time}}ms","freeTime":"Gratis: {{time}}ms","heapAllocatedSub":"{{allocated}} MB asignados","jscEngine":"JSC","bytecodeCompiled":"Código de bytes compilado","jitEngine":"Motor JIT","webkitEngine":"Motor Webkit","fabricJsi":"Tela/JSI","paperBridge":"Papel / Puente","directCppBindings":"Enlaces directos de C++","asyncJsonBridge":"Puente JSON asíncrono","fpsUnit":"FPS","jsLag":"Retraso JS","jankRate":"Tasa de Jank","fpsAreaChartTitle":"Flujo y fluctuación de FPS en tiempo real (30 s)","fpsAreaChartSub":"Objetivo en vivo de 60 FPS con medición continua de la variación del cuadro","frameLatencyDistTitle":"Distribución de latencia de fotogramas","frameLatencyDistSub":"Proporción de fotogramas entregados dentro del presupuesto de 16,6 ms","optimalBucket":"< 16,6 ms (60 fps)","minorJankBucket":"16,7 - 33,3 ms (30-60 fotogramas por segundo)","noticeableJankBucket":"33,4 - 50,0 ms (20-30 fotogramas por segundo)","severeFreezeBucket":"> 50,0 ms (< 20 fps)","hermesHeapTrendTitle":"Memoria y dinámica del montón de Hermes","hermesHeapTrendSub":"Asignación en vivo versus ciclos de recuperación de GC generacional","live":"en vivo","msTotal":"{{duration}}ms totales • {{time}}","droppedFrames":"{{count}} Eliminado","zeroDropped":"0 caído","frameBudgetMs":"{{time}}ms/cuadro ({{budget}}% presupuesto)","target60Fps":"Objetivo 60 FPS • Real {{fps}} FPS","frameDuration":"Duración del cuadro","frameDurationVal":"{{time}} ms (presupuesto de 16,67 ms)","frameUtilization":"Presupuesto del marco excedido","frameBudgetOk":"Espacio libre económico del marco","bottleneck":"Cuello de botella","jsBound":"JS hilo enlazado","uiBound":"Hilo de interfaz de usuario vinculado","balanced":"equilibrado","smooth":"Suave 60 FPS","minorJank":"tartamudeo menor","noticeableJank":"Jank notable","severeFreeze":"Congelación severa","screenContext":"Contexto de pantalla","profileReason1":"Accesorios de función de flecha en línea pasados a los niños (onAddToCart={() => ...})","profileReason2":"Selector Redux no memorizado que crea una nueva referencia de objeto en cada envío","profileReason3":"Objeto de estilo dinámico creado en el cuerpo del renderizado ({ marginTop: insets.top + 10 })","profileReason4":"A FlatList le falta getItemLayout, lo que provoca pases de medición de diseño asíncronos","profileReason5":"Función renderItem definida de forma anónima dentro del cuerpo JSX","profileReason6":"Listar los componentes del elemento que no están incluidos en React.memo","profileReason7":"La pantalla principal se volvió a representar en el teclado para mostrar/ocultar evento","profileReason8":"Referencia de devolución de llamada inestable pasada al botón de pago","profileReason9":"El estado del valor de TextInput activa la reproducción principal con cada pulsación de tecla sin rebote","profileReason10":"Pasar un objeto de filtro no memorizado ({categoría, minPrice}) a chips secundarios","profileReason11":"Revalidación de caché de imagen de avatar al actualizar la sesión de autenticación","fixUseCallbackTitle":"Ajustar controladores de eventos en usoCallback","fixUseCallbackDesc":"Las funciones en línea recrean una nueva referencia de memoria en cada renderizado, invalidando React.memo en los componentes secundarios.","fixCreateSelectorTitle":"Memoizar selectores Redux / Zustand con superficialEqual","fixCreateSelectorDesc":"Devolver nuevas referencias a objetos o matrices dentro de useSelector fuerza una nueva representación automática en cada envío de estado.","fixUseMemoStylesTitle":"Estilos de elevación o uso useMemo para dimensiones dinámicas","fixUseMemoStylesDesc":"Los objetos de estilo en línea crean nuevas identidades de objetos en cada paso de fotograma, lo que provoca diferencias de conciliación en Yoga Flexbox.","fixGetItemLayoutTitle":"Implementar getItemLayout para elementos de altura fija","fixGetItemLayoutDesc":"Proporcionar getItemLayout permite a FlatList calcular inmediatamente los desplazamientos de desplazamiento y las ventanas virtuales sin medir las vistas de forma asincrónica.","fixReactMemoTitle":"Ajustar elementos de la lista en React.memo","fixReactMemoDesc":"Evita que los más de 50 elementos visibles de la lista se vuelvan a representar cuando se actualiza el estado de la lista principal (por ejemplo, posición de desplazamiento o paginación).","fixComponentSplittingTitle":"Aislar el estado que cambia rápidamente en los componentes de la hoja","fixComponentSplittingDesc":"Mueva los oyentes del teclado y el estado de la animación modal a subcomponentes autónomos para que el padre no se vuelva a renderizar.","fixDebouncedInputTitle":"Entrada de búsqueda antirrebote o uso del estado controlado local","fixDebouncedInputDesc":"No propague el estado de pulsación de tecla al almacén global inmediatamente. Utilice un rebote de 250 ms o una referencia incontrolada.","fixPrimitivePropsTitle":"Pase accesorios primitivos en lugar de objetos grandes","fixPrimitivePropsDesc":"Pasar solo la cadena de ID de categoría en lugar del objeto de categoría completo evita que se vuelva a representar cuando se actualizan los metadatos de otras categorías.","fixUseRefForTrackingTitle":"Utilice useRef para valores de seguimiento no visuales","fixUseRefForTrackingDesc":"No almacene temporizadores de análisis, desplazamientos de desplazamiento ni ID de seguimiento en useState si no modifican directamente el árbol JSX.","highImpact":"Alto Impacto","mediumImpact":"Impacto medio","bestPractice":"Mejores prácticas","beforeUseCallback":"// ❌ Antes en <{{comp}} /> (recrea la referencia de función en cada renderizado):","afterUseCallback":"// ✅ Después (referencia de devolución de llamada memorizada estable):","beforeCreateSelector":"// ❌ Antes en <{{comp}} /> (devuelve una nueva referencia de objeto en cada renderizado):","afterCreateSelector":"// ✅ Después (shallowEqual evita que se vuelva a renderizar a menos que los valores cambien):","beforeMemo":"// ❌ Antes (<{{comp}} />):","afterMemo":"// ✅ Después (omite el renderizado si los accesorios son superficialmente idénticos):","flatListOptimization":"// Optimización de FlatList para <{{comp}} />","customComparator":"// Función de igualdad personalizada para <{{comp}} />","debounceInput":"// Antirrebote de entrada dentro de <{{comp}} /> para evitar renderizaciones por pulsación de tecla:","isolateState":"// Aislar el estado que cambia rápidamente desde <{{comp}} /> al subárbol secundario // ✅ Encapsular el diseño animado dentro del componente aislado:","beforeUseRef":"// ❌ Antes en <{{comp}} /> (activa la renderización completa del componente al cambiar el valor):","afterUseRef":"// ✅ Después (conserva la referencia mutable entre renderizados sin volver a renderizar):","fixInteractionManagerTitle":"Aplazar la lógica fuera de la pantalla con InteractionManager","fixInteractionManagerDesc":"El procesamiento intensivo de datos durante las animaciones de la pantalla reduce los fotogramas. Aplazar hasta que finalice la transición.","beforeInteractionManager":"// ❌ Antes en <{{comp}} /> (ejecuta cálculos pesados mientras se anima la transición): useEffect(() => { loadHeavyData(); }, []);","afterInteractionManager":"// ✅ Después (espera hasta que la transición se complete sin problemas): useEffect(() => { const task = InteractionManager.runAfterInteractions(() => { loadHeavyData(); }); return () => task.cancel(); }, []);","fixFlatListWindowingTitle":"Ajustar las propiedades de ventanas FlatList","fixFlatListWindowingDesc":"Configure maxToRenderPerBatch y windowSize para minimizar las asignaciones de vistas virtualizadas fuera de la pantalla.","beforeFlatListWindowing":"// Optimización de ventanas FlatList para <{{comp}} />: <FlatList data={items} maxToRenderPerBatch={10} windowSize={5} inicialNumToRender={8} removeClippedSubviews={true} />","fixImageCachingTitle":"Optimice el almacenamiento en caché y la reducción de escala de imágenes","fixImageCachingDesc":"Utilice encabezados de prioridad o resizeMode para evitar asignaciones masivas de mapas de bits en el montón de Hermes.","beforeImageCaching":"// Optimización de imagen para <{{comp}} />: <Image source={{ uri: imageUrl, cache: 'force-cache' }} resizeMode=\"cover\" fadeDuration={100} />","fixContextSplittingTitle":"Dividir el contexto monolítico en proveedores granulares","fixContextSplittingDesc":"Los componentes que se suscriben a un contexto grande se vuelven a representar incluso cuando cambian las propiedades de estado no utilizadas.","beforeContextSplitting":"// ❌ Antes (<{{comp}} /> consume todo el AppContext): const { usuario, carrito, tema } = useAppContext();","afterContextSplitting":"// ✅ Después (suscríbete al contexto de segmento dedicado): const theme = useThemeContext();","fixInlineStylesHoistTitle":"Estilos estáticos de polipasto con StyleSheet.create","fixInlineStylesHoistDesc":"Los objetos de estilo en línea asignan nuevas referencias de memoria en cada pasada de renderizado, lo que provoca una sobrecarga de conciliación de Yoga.","beforeInlineStyles":"// ❌ Antes (<{{comp}} /> asigna objetos en línea en cada cuadro): <View style={{ flex: 1, padding: 16, backgroundColor: '#ffffff' }} />","afterInlineStyles":"// ✅ Después (referencia de hoja de estilo elevada): const estilos = StyleSheet.create({ contenedor: { flex: 1, padding: 16, backgroundColor: '#ffffff' } }); <Ver estilo={styles.container} />","transitionEventLabel":"Transición de pantalla: {{screen}}","transitionEventDetail":"La transición se completó en {{duration}}ms (TTI: {{tti}}ms).","transitionEventAdvice":"La interacción se completó dentro del presupuesto objetivo de 60 FPS.","heavyTaskEventLabel":"Tarea sincrónica pesada: {{taskName}}","heavyTaskEventDetail":"El hilo JS se bloqueó durante {{duration}}ms durante la ejecución de la tarea.","heavyTaskEventAdvice":"Considere la posibilidad de descargarlo a un trabajador web, InteractionManager o realizar lotes en partes.","asyncOpEventLabel":"Operación asincrónica lenta: {{opName}}","asyncOpEventDetail":"La tarea asincrónica tardó {{duration}}ms en resolverse.","renderLoopWarningLabel":"Pico rápido de renderizado en <{{comp}} />","renderLoopWarningDetail":"El componente se volvió a renderizar {{count}} veces en 500 ms. Potencial bucle infinito o dependencias inestables.","renderLoopWarningAdvice":"Verifique las matrices de dependencia useEffect / useCallback para referencias de funciones o objetos inestables.","event1Label":"Pico del hilo principal durante la navegación","event1Detail":"La transición de pantalla provocó una gran conciliación del diseño y montajes simultáneos de componentes.","event1Advice":"Posponga ganchos fuera de pantalla no críticos con InteractionManager.runAfterInteractions para preservar 60 FPS.","event2Label":"Pase de renderizado de virtualización FlatList","event2Detail":"FlatList representó 25 elementos simultáneamente en el cambio de orientación sin componente de fila memorizado.","event2Advice":"Implemente getItemLayout y React.memo(LogCard) para omitir pases de diferenciación redundantes.","event3Label":"Transición deslizable modal nativa","event3Detail":"La transformación animada del controlador nativo acelerada por hardware se ejecuta sin problemas a 60 FPS sostenidos.","event3Advice":"El uso de NativeDriver: true evita con éxito el bloqueo de subprocesos JS durante las animaciones.","event4Label":"Recolección de basura generacional de Hermes","event4Detail":"El ciclo de GC generacional menor rescató objetos de montón efímeros de 4,2 MB con una pausa de hilo de menos de un milisegundo.","event4Advice":"El recolector de basura generacional de Hermes funciona dentro de límites óptimos inferiores a 5 ms.","gcCycleLabel":"Ciclo de recolección de basura manual","gcCycleDetail":"~{{amount}} MB recuperados de objetos de montón sin referencia y vivero de memoria compactada.","gcCycleAdvice":"Uso del montón optimizado. Guardería generacional despejada.","liveFpsDropLabel":"Caída de la velocidad de cuadros en vivo ({{fps}} FPS)","liveFpsDropDetail":"La duración del marco del hilo principal se extendió a {{duration}}ms durante la actualización de la vista.","liveFpsDropAdvice":"Ejecución intensa de JavaScript durante la presentación de visualización retrasada del paso de fotogramas.","event5Label":"Deserialización de carga útil JSON grande","event5Detail":"Gastos generales de análisis de respuesta API de 50 elementos en el adaptador de red (cadena sin formato JSON de 185 KB).","event5Advice":"Considere paginar cargas útiles de API o transmitir respuestas si el tamaño de la carga supera los 250 KB.","event6Label":"Decodificación y rasterización de mapas de bits de imágenes","event6Detail":"Decodificación de ráster Retina para banner_dark.png (asignación de búfer de ráster de 1200 × 630 px).","event6Advice":"Reduzca las dimensiones de los activos o conviértalos a WebP para reducir la latencia de decodificación en aproximadamente un 65 %.","event7Label":"Invocación nativa de TurboModule JSI","event7Detail":"Transacción de preferencias de AsyncStorage/MMKV leída en 32 claves de configuración.","event7Advice":"Los enlaces directos de C++ JSI Turbomodule evitan por completo la sobrecarga de serialización del puente JSON heredado.","event8Label":"Diferenciación del árbol de estado de acción de Redux","event8Detail":"El pase de envío de Redux evaluó 6 sectores reductores y emitió una notificación de estado en 4,8 ms.","event8Advice":"Se conserva la inmutabilidad del árbol de estado. Los selectores memorizados impidieron renderizaciones de componentes redundantes.","event9Label":"Latencia de eventos de tocar para renderizar","event9Detail":"El respondedor de gestos envió un evento de toque al botón TabBar con una respuesta inmediata de 60 FPS.","event9Advice":"La latencia del respondedor táctil está dentro del presupuesto de fotograma estándar de 16,67 ms.","event10Label":"Pase de diseño de C++ Yoga Flexbox","event10Detail":"El recálculo del diseño de la tarjeta de varias pestañas de la interfaz de usuario del inspector y las métricas de fuentes pasan en el motor C++ Yoga.","event10Advice":"Las restricciones de diseño de Flexbox se almacenan en caché y se calculan de manera eficiente sin penalizaciones por reflujo.","catJanky":"Janky","hermesAot":"Hermes (AOT)","v8Jit":"V8 (JIT)"},"bundle":{"heroTitle":"Arquitectura de paquetes y activos","heroSubtitle":"Desglose del tamaño en tiempo real de todos los activos, códigos y dependencias","heroSubtitleLive":"Análisis en vivo de {{scriptUrl}}","liveAnalysisUnavailable":"Análisis de paquetes en vivo no disponible","liveAnalysisUnavailableSub":"No se pudo conectar con el servidor de desarrollo de Metro, por lo que los valores son estimaciones. Asegúrese de que la aplicación se ejecute en desarrollo a través de `npx react-native start` y que el Inspector pueda llegar a su puerto Metro (8081, 8082, ...).","bundleOverviewJson":"Descripción general del paquete JSON","devBundleSize":"TAMAÑO DEL PAQUETE DE DESARROLLO","devBundleHint":"{{kb}} KB • {{modules}} módulos","trackedFilesHint":"{{count}} Archivos rastreados","imagesMedia":"IMÁGENES Y MEDIOS","pctOfTrackedAssets":"{{pct}}% de los activos rastreados","tsJsSource":"FUENTE TS/JS","jsEngine":"MOTOR JS","bytecodeAot":"Código de bytes AOT","standard":"Estándar","splitUpTitle":"División del paquete de desarrollo","splitUpSub":"{{mb}} paquete MB JS medido • {{files}} archivos • {{packages}} paquetes","splitUpJson":"JSON dividido","splitAppSource":"Código fuente de la aplicación","splitNodeModules":"node_modules Dependencias","splitAssetsMedia":"Activos y medios","splitMetroOverhead":"Gastos generales de desarrollo de Metro","productionFootprint":"HUELLA DE PRODUCCIÓN","productionDownload":"Descargar: iOS ~{{ios}} MB • AAB ~{{aab}} MB • APK ~{{apk}} MB","treemapTitle":"Mapa de árbol de proporción de tipos de archivos y activos","treemapJson":"Mapa de árbol de proporciones JSON","legendImages":"Imágenes:","legendJs":"Bibliotecas JS:","legendFonts":"Fuentes:","categoryBreakdown":"Desglose de categorías","categoriesJson":"Categorías Desglose JSON","catImagesTitle":"Imágenes y recursos multimedia","catImagesDesc":"Recursos PNG, WebP, SVG y JPG en paquete","catJsTitle":"Módulos de nodo compilados y JS","catJsDesc":"Dependencias de terceros y puentes nativos","catFontsTitle":"Fuentes personalizadas y glifos vectoriales","catFontsDesc":"Recursos de fuentes en paquete","catTsTitle":"Componentes TypeScript y JSX","catTsDesc":"Componentes de la pantalla de la aplicación, enlaces y lógica empresarial","catJsonTitle":"Datos JSON y localizaciones","catJsonDesc":"Diccionarios de traducción i18n y configuraciones estáticas","totalBundleAssets":"TOTAL DE ARCHIVOS DE PROYECTO HOST","totalFormula":"Suma de archivos fuente del host: {{images}} KB + {{js}} KB + {{fonts}} KB + {{ts}} KB + {{json}} KB = {{total}} KB ({{count}} elementos)","prodIosApp":"Aplicación iOS (.ipa)","prodAndroidApk":"APK universal (.apk)","prodHeroTitleIos":"Huella binaria de producción de iOS","prodHeroTitleAab":"Paquete de aplicaciones de Google Play (.aab)","prodHeroTitleApk":"APK independiente universal (.apk)","prodHeroSubIos":"Estimaciones de instalación de App Store y descargas móviles inalámbricas","prodHeroSubAab":"Arquitectura de APK dividida de entrega dinámica optimizada por dispositivo","prodHeroSubApk":"Archivo de instalación universal Multi-ABI para descarga y distribución directa","prodInstallSize":"TAMAÑO DE INSTALACIÓN","prodInstallHint":"Huella sin comprimir en el dispositivo","prodDownloadSize":"DESCARGAR TAMAÑO","prodDownloadHint":"Almacenar carga útil de transferencia de red","prodCompression":"COMPRESIÓN","prodCompressionHint":"Código de bytes y proporción de activos","prodFormatArch":"ARQUITECTURA DE FORMATO","prodFormatHintIos":"Tiempo de ejecución de Apple ARM64","prodFormatHintAab":"Entrega dinámica de Google Play","prodFormatHintApk":"Paquete universal de carga lateral","prodArchTitle":"Arquitectura de componentes binarios","prodArchSub":"Bibliotecas nativas compiladas, códigos de bytes en tiempo de ejecución, activos y bloques de firmas","prodTotalIos":"TOTAL APLICACIÓN IOS BINARIO","prodTotalAab":"PAQUETE TOTAL DE ANDROID AAB","prodTotalFormula":"Desde {{devKb}} KB (~{{devMb}} MB • {{count}} activos totales) paquete fuente de desarrollo → {{installMb}} MB binario nativo optimizado ({{pct}}% de código de bytes/compresión de activos).","tabOverview":"Descripción general","tabProduction":"Producción ({{count}})","tabFiles":"Archivos ({{count}})","tabPackages":"Paquetes ({{count}})","tabMedia":"Medios ({{count}})","tabOptimizer":"Optimizador","analyzingTitle":"Analizando el paquete de aplicaciones host de Metro...","analyzingHint":"Obteniendo paquete y extrayendo módulos reales","searchFilesPlaceholder":"Buscar por nombre de archivo (.png, .tsx, .ttf, ruta)...","filteredFilesJson":"Archivos filtrados JSON","catAll":"Todos los archivos","catUnused":"No consumido (muerto)","catConsumed":"En uso/activo","catImages":"Imágenes y medios","catTypescript":"Mecanografiado/TSX","catJavascript":"JS y módulos de nodo","catFonts":"Fuentes y glifos","catJson":"JSON y datos","treeView":"Vista de árbol","flatList":"Lista plana","expand":"Expandir","collapse":"Colapso","showingFilesOf":"Mostrando {{shown}} de {{total}} archivos","filesOf":"{{count}} de {{total}} Archivos","notConsumed":"No consumido","consumed":"consumido","copyFileInfo":"Copiar {{name}} información","fileDetailsJson":"Detalles del archivo JSON","file":"archivo","files":"archivos","mbValue":"~{{size}}MB","searchPackagesPlaceholder":"Paquete de búsqueda (react-native, axios, navegación)...","dependenciesJson":"Dependencias JSON","showingDependencies":"Mostrando {{count}} dependencias","bundled":"incluido","deprecated":"DESPRECADO","updateAvailable":"Actualización: v{{version}}","upToDate":"actualizado","bundledBadge":"incluido","packageDetailsJson":"Detalles del paquete JSON","direct":"directo","transitive":"transitivo","minified":"~{{size}} KB minimizados","npmLink":"mpn ↗","dependenciesCount":"{{count}} Dependencias","mediaAuditorTitle":"Auditor de Compresión de Medios","mediaAssetsJson":"Recursos de medios JSON","mediaAuditorPrefix":"Imágenes y fuentes constituyen","mediaAuditorMid":"de activos totales (~{{kb}} KB). La conversión de PNG a WebP y el subconjunto de fuentes pueden reducir el tamaño hasta","mediaAuditorSuffix":"KB.","mediaAssetsList":"Recursos multimedia y fuentes ({{count}} elementos)","mediaItemJson":"Elemento multimedia JSON","mediaAndFonts":"{{count}} Medios y fuentes","optimizerTitle":"Lista de verificación de optimización del paquete React Native","optimizationChecklist":"Lista de verificación de optimización","optTip1Title":"Convierta archivos PNG pesados a WebP/SVG","optTip1Desc":"Las imágenes representan >40% del tamaño final de descarga de la aplicación. La conversión de archivos PNG rasterizados 2x/3x a WebP ahorra entre un 60% y un 70% de tamaño sin pérdida visible de fidelidad.","optTip2Title":"Habilitar el motor de código de bytes de Hermes","optTip2DescActive":"¡Hermes está activo! JavaScript se compila en un código de bytes optimizado con antelación.","optTip2DescInactive":"Hermes está discapacitado. Habilite Hermes en la configuración de su aplicación para obtener una carga útil aproximadamente un 40 % más pequeña y un inicio instantáneo de TTI.","optTip3Title":"Subconjunto de fuentes y poda de peso","optTip3Desc":"Incluya solo los pesos de fuente que utiliza activamente (por ejemplo, Regular y Negrita). Elimine los rangos de glifos no utilizados para ahorrar más de 100 KB por archivo de fuente.","optTip4Title":"Importaciones de ruta selectivas (sacudida de árboles)","optTip4Desc":"Importe desde subrutas específicas (por ejemplo, lodash/get o conjuntos de iconos vectoriales específicos) en lugar de importar grandes paquetes monolíticos.","optTip5Title":"Carga diferida de pantalla","optTip5Desc":"Cargue de forma diferida pantallas secundarias y hojas modales pesadas mediante importaciones dinámicas e InteractionManager para reducir la evaluación inicial del paquete.","highImpact":"Alto Impacto","mediumImpact":"Impacto medio","bestPractice":"Mejores prácticas","actionRequired":"Acción requerida","active":"Activo","tipDetails":"Detalles de la propina","iosComp1Name":"Marcos y pods dinámicos","iosComp1Desc":"Marcos de trabajo nativos de React, Hermes y {{count}}.","iosComp1Advice":"Asegúrese de eliminar el código muerto (STRIP_INSTALLED_PRODUCT = YES) en el modo de lanzamiento.","iosComp2Name":"Ejecutable Mach-O (ARM64)","iosComp2Desc":"La aplicación host compiló puentes nativos Swift/Objective-C y C++.","iosComp2Advice":"Habilite LTO monolítico (optimización del tiempo de enlace) en el esquema Xcode.","iosComp3Name":"Catálogo de activos (Assets.car)","iosComp3Desc":"AppIcons, pantallas de presentación, glifos vectoriales y fuentes empaquetadas.","iosComp3Advice":"Compile imágenes en Xcode Asset Catalog para la reducción automática de aplicaciones.","iosComp4Name":"Código de bytes de Hermes (main.jsbundle)","iosComp4Desc":"La aplicación host JavaScript compiló AOT en código de bytes de Hermes (archivos {{count}}).","iosComp4Advice":"El código de bytes AOT se carga con una latencia de compilación de 0 ms al iniciar el dispositivo.","iosComp5Name":"Metadatos y firmas de código","iosComp5Desc":"_CodeSignature, Info.plist y bloque de derechos.","iosComp5Advice":"Firma de aprovisionamiento y firma de código Apple estándar.","andComp1Name":"Bibliotecas nativas de C++ (.so)","andComp1Desc":"Adaptadores nativos libhermes.so, libfbjni.so y {{count}} C++.","andComp1Advice":"Implemente con Android App Bundle (.aab) para entregar APK divididos por ABI.","andComp2Name":"DEX compilado (classes.dex)","andComp2Desc":"Compilé puentes en tiempo de ejecución de Java y Kotlin, AndroidX y React Native.","andComp2Advice":"Habilite la reducción de R8/ProGuard (minifyEnabled true) en build.gradle.","andComp3Name":"Recursos de Android (res/)","andComp3Desc":"Dibujables, XML vectoriales, densidades de mapas mip, recursos.arsc, fuentes.","andComp3Advice":"Utilice WebP y VectorDrawables para evitar la duplicación de activos de densidad múltiple.","andComp4Name":"Código de bytes de Hermes (Android)","andComp4Desc":"JavaScript de la aplicación host compilado en código de bytes de Hermes (archivos {{count}}).","andComp4Advice":"Código de bytes precompilado durante la tarea de gradle ensamblarRelease.","andComp5Name":"Manifiesto y firmas (META-INF)","andComp5Desc":"AndroidManifest.xml, firma de certificados, bloques del esquema de firma APK v2/v3/v4.","andComp5Advice":"Bloqueo de firma y firma oficial de Google Play.","apkComp1Name":"Bibliotecas C++ multi-ABI (.so)","apkComp1Desc":"Bibliotecas universales compartidas de arquitectura múltiple (.so) incluidas para descarga directa.","apkComp1Advice":"Utilice Android App Bundle (.aab) para Google Play para reducir el tamaño de la instalación en un 60 %.","apkComp2Name":"Código de bytes DEX compilado (classes.dex)","apkComp2Desc":"Tiempo de ejecución compilado de Java y Kotlin, bibliotecas de AndroidX y módulos puente nativos.","apkComp2Advice":"Habilite la reducción de R8/ProGuard (minifyEnabled verdadero) y reducirResources verdadero.","apkComp3Name":"Recursos y activos de Android (res/)","apkComp3Desc":"Dibujables, XML vectoriales, densidades de mapas mip, recursos.arsc, fuentes.","apkComp3Advice":"Utilice WebP y VectorDrawables para evitar la duplicación de activos de densidad múltiple.","apkComp4Name":"Paquete de código de bytes de Hermes (Android)","apkComp4Desc":"JavaScript de la aplicación host compilado en código de bytes de Hermes (archivos {{count}}).","apkComp4Advice":"Código de bytes precompilado durante la tarea de gradle ensamblarRelease.","apkComp5Name":"Manifiesto y firmas (META-INF)","apkComp5Desc":"AndroidManifest.xml, firma de certificados, esquema de firma de APK JAR y v2/v3/v4.","apkComp5Advice":"Bloque de firma de instalación directa y carga local empresarial.","splitSize":"{{kb}} KB • {{mb}} MB","productionValue":"iOS {{ios}} MB • Android {{android}} MB","treemapSub":"Total ~{{mb}} MB","legendTs":"TS/TSX:","legendJson":"JSON:","totalBundleValue":"{{kb}} KB (~{{mb}} MB)","prodAndroidAab":"Android AAB (.aab)","prodTotalApk":"TOTAL UNIVERSAL APK","fileSizeKb":"{{size}} KB","fileSizeMb":"{{size}} MB","kbMbValue":"{{kb}} KB ({{mb}} MB)","legendValue":"{{kb}} KB ({{pct}}%)","mediaSavings":"{{size}} KB","versionPrefix":"v{{version}}"},"errors":{"title":"algo salió mal","message":"Se produjo un error inesperado.","retry":"Inténtalo de nuevo","reset":"Reiniciar","close":"Cerrar","errorReport":"Informe de errores","modalTitle":"El inspector se estrelló","modalMessage":"El inspector cometió un error inesperado. Puedes restablecerlo a continuación.","inlineTitle":"error del inspector","inlineMessage":"Se produjo un error inesperado dentro del inspector.","networkError":"Error en la solicitud de red","crashIntercepted":"ACCIDENTE INTERCEPTADO","protected":"PROTEGIDO","rootCauseTitle":"Diagnóstico de causa raíz","rootCauseSubtitle":"El inspector detectó este error de tiempo de ejecución para evitar la finalización de la aplicación","exactLocation":"UBICACIÓN EXACTA DE LA FUENTE","file":"Archivo:","lineCol":"Línea/Col:","lineColVal":"Línea {{line}}, Col {{col}}","function":"Función:","callStack":"MARCOS DE PILA DE LLAMADA","framesCount":"{{count}} cuadros","tryAgainRecover":"Inténtalo de nuevo/Recuperar","copyDiagnostics":"Copiar diagnóstico","appTag":"APP","copy":"Copiar"},"jsonViewer":{"pretty":"Estructurado","raw":"Crudo","table":"Tabla","emptyObject":"Objeto vacío","emptyPayload":"Carga útil vacía","emptyTable":"Objeto vacío","fold":"Plegar","expand":"Expandir","min":"Min","indent":"Indentar","wrap":"Ajustar","copied":"¡Copiado!","copy":"Copiar JSON","key":"Clave","value":"Valor","lines":"líneas","line":"línea"},"codeSnippet":{"copy":"Copiar","copied":"¡Copiado!","matchCount":"{{count}} coincide","matchCount_plural":"{{count}} coincidencias","noMatches":"No hay coincidencias","searchPlaceholder":"Buscar...","prevMatch":"Partido anterior","nextMatch":"Próximo partido","clearSearch":"Borrar búsqueda"},"diffViewer":{"added":"añadido","removed":"eliminado","changed":"cambiado","noDiff":"Sin diferencias","emptyTitle":"No se encontraron diferencias","emptySubtitle":"Las dos cargas útiles son idénticas."},"logCard":{"seeMore":"Mostrar más","seeLess":"Mostrar menos","copy":"Copiar","copied":"¡Copiado!"},"emptyState":{"title":"Nada aquí todavía","subtitle":"Los datos aparecerán aquí a medida que utilice la aplicación.","reload":"recargar"},"errorBoundary":{"title":"algo salió mal","message":"Se produjo un error inesperado.","retry":"Inténtalo de nuevo","reset":"Reiniciar","close":"Cerrar"},"crash":{"title":"Choque","searchPlaceholder":"Error de búsqueda, mensaje, pila...","searchDetailPlaceholder":"Buscar en trace o JSON...","statCrashes":"Accidentes","statFatal":"fatal","statJsErrors":"Errores de JS","statPromises":"Promesas","statRender":"renderizar","statNative":"Nativo","filterAll":"All","filterFatal":"fatal","filterJsError":"Error JS","filterPromise":"Promesa","filterRender":"renderizar","filterNative":"Nativo","handledBadge":"MANEJADO","fatalCrash":"ACCIDENTE FATAL","handledException":"EXCEPCIÓN MANEJADA","unknownException":"Excepción desconocida","report":"Informe","inspect":"inspeccionar","copyReport":"Copiar informe","copied":"copiado","clearTitle":"Borrar historial de fallos","clearMessage":"¿Está seguro de que desea borrar todos los registros de accidentes interceptados?","clearCancel":"Cancelar","clearConfirm":"Borrar todo","emptyTitle":"Cero accidentes detectados","emptySubtitle":"La protección global contra accidentes está activa. Todas las excepciones nativas y de JavaScript son interceptadas y protegidas.","emptySearchSubtitle":"Ninguna entrada de bloqueo coincidió con su consulta de búsqueda.","tabStack":"Pila ({{count}})","tabDiagnostics":"Diagnóstico","tabTrail":"Ruta ({{count}})","tabRawJson":"JSON sin formato","appFrames":"Marcos de aplicaciones ({{count}})","allFrames":"Todos los fotogramas ({{count}})","frameApp":"APP","frameLib":"LIB","anonymous":"<anónimo>","noStackTrace":"No se ha capturado ningún seguimiento de pila para este evento.","deviceEnvironment":"Dispositivo y entorno","platform":"Plataforma","osVersion":"Versión del sistema operativo","reactNative":"Reaccionar nativo","jsEngine":"Motor JS","hermesEngine":"Motor Hermes","jsc":"JSC","architecture":"Arquitectura","fabricNewArch":"Tela (Nuevo Arco)","paperLegacy":"Papel (heredado)","appState":"Estado de la aplicación","jsHeapMemory":"Memoria de montón JS","usedHeap":"Montón usado","totalHeap":"montón total","noBreadcrumbs":"No se registraron eventos de ruta de navegación antes de este bloqueo.","simNativeMessage":"Excepción fatal nativa simulada","simPromiseMessage":"Rechazo de promesa no controlado simulado","simRenderMessage":"Error de representación del componente React simulado","simJsMessage":"Excepción de JavaScript simulada","reportTitle":"INFORME DE DIAGNÓSTICO DE ACCIDENTE","reportErrorName":"Nombre del error:","reportMessage":"Mensaje:","reportType":"Tipo:","reportFatalYes":"SÍ (Fatal)","reportFatalNo":"NO (Atrapado/Manejado)","reportFatal":"fatal:","reportTimestamp":"Marca de tiempo:","reportUptime":"Tiempo de actividad de la aplicación:","reportUptimeValue":"{{seconds}} segundos","reportPlatform":"Plataforma:","reportReactNative":"Reaccionar nativo:","reportEnabled":"Habilitado","reportDisabled":"Discapacitado","reportArchitecture":"Arquitectura:","reportFabricNew":"Tela (nueva)","reportPaperLegacy":"Papel (heredado)","reportScreenSize":"Tamaño de pantalla:","reportAppState":"Estado de la aplicación:","reportJsMemory":"Memoria JS:","reportStackTrace":"SEGUIMIENTO DE PILA:","reportNoStackTrace":"No hay seguimiento de pila disponible","reportComponentHierarchy":"JERARQUÍA DE COMPONENTES:","reportRecentBreadcrumbs":"MIGAS DE PAN RECIENTES:","mdReportTitle":"🚨 Informe de fallo: {{name}}","mdStackTrace":"📦 Seguimiento de pila","mdComponentHierarchy":"🌲 Jerarquía de componentes","mdRecentBreadcrumbs":"👣 Migas de pan recientes","mdSeverityHandled":"MANEJADO","breadcrumbNavigation":"Navegó de \"{{from}}\" a \"{{to}}\"","breadcrumbAction":"Acción: {{actionType}}","unknown":"Desconocido","runtimeException":"Excepción de tiempo de ejecución","logFatalCrash":"Accidente fatal","logUnhandledError":"Error no controlado","errorNameFatal":"Error fatal","errorNameUnhandled":"Excepción no controlada","nativeCrashTitle":"Accidente nativo","nativeUncaughtException":"Excepción nativa no detectada","nativeException":"Excepción nativa","unhandledPromiseRejection":"Rechazo de promesa no controlado","filterTitle":"Filtros de fallos","filterSubtitle":"Diagnósticos e informes","filterReset":"Restablecer todo","filterTypeSection":"TIPO DE ACCIDENTE","filterTypeAll":"Todos los tipos","filterTimeSection":"HORIZONTE DEL TIEMPO","filterTimeAll":"Todo el tiempo","filterTime15m":"Últimos 15 minutos","filterTime1h":"Última 1 hora","filterTime24h":"Últimas 24 horas","filterTime7d":"últimos 7 días","filterPlatformSection":"PLATAFORMA","filterPlatformAll":"Todas las plataformas","filterPlatformIos":"iOS","filterPlatformAndroid":"androide","filterEngineSection":"MOTOR JS","filterEngineAll":"Todos los motores","filterSortSection":"ORDEN DE CLASIFICACIÓN","filterSortNewest":"Más reciente primero (predeterminado)","filterSortOldest":"El más viejo primero","filterDiscard":"Descartar","filterApply":"Aplicar ({{count}} fallas)","frameCopy":"Copiar","frameCopied":"copiado","componentHierarchy":"Jerarquía de componentes","fatalBadge":"FATAL","reportHermes":"Hermes:","mdSeverityFatal":"FATAL","filterEngineHermes":"Hermes"},"mediaGallery":{"all":"Todos ({{count}})","photos":"Fotos","videos":"Vídeos","gifs":"GIF","purge":"Purgar ({{size}})","purgeTitle":"Purgar todos los medios","purgeMessage":"Esto eliminará permanentemente todas las {{count}} capturas de pantalla, videos y GIF capturados ({{size}}). ¿Continuar?","noMediaTitle":"Sin medios capturados","noMediaDesc":"Utilice el botón Grabar foto o vídeo en la barra de herramientas para capturar capturas de pantalla de toda la aplicación, grabaciones de pantalla o GIF.","deleted":"Elemento multimedia eliminado","allPurged":"Todos los medios capturados eliminados","converting":"Convirtiendo...","convertToGif":"Convertir a GIF","playVideo":"Reproducir vídeo","playError":"No se puede reproducir el vídeo","convertedSuccess":"¡Convertido a GIF animado con éxito!","convertFailed":"No se pudo convertir a GIF","share":"Compartir","copyUri":"Copiar URI","uriCopied":"URI del archivo copiado al portapapeles","delete":"Eliminar","deleteSelected":"Eliminar ({{count}})","deleteSelectedTitle":"Eliminar seleccionado","deleteSelectedMessage":"¿Estás seguro de que deseas eliminar {{count}} elementos multimedia seleccionados?","deletedCount":"{{count}} elementos multimedia eliminados","deleteTitle":"Eliminar medios","deleteMessage":"¿Estás seguro de que deseas eliminar {{filename}}?","shareUnavailable":"Compartir no está disponible en este dispositivo","showingResults":"Mostrando resultados de {{count}}","showingFilteredResults":"Mostrando {{count}} de {{total}} resultados","selectedOfResults":"{{selected}} seleccionado de {{total}} resultados","minimize":"minimizar","expand":"Expandir pantalla completa","collapse":"Salir de pantalla completa","speed":"Velocidad","loop":"Bucle","pause":"Pausa","play":"Jugar"},"socket":{"messages":"Mensajes","overview":"Descripción general","params":"parámetros","rawAndCode":"Sin formato y código","totalFrames":"MARCOS TOTALES","sentRecv":"ENVIADO / RECV","dataTransferred":"DATOS TRANSFERIDOS","searchFramesPlaceholder":"Buscar cargas útiles de fotogramas o nombres de eventos...","sent":"Enviado","recv":"recv","emptyFrames":"No se capturaron fotogramas para esta conexión","searchSocketsPlaceholder":"Buscar URL o mensajes de WebSocket...","noSockets":"Sin conexiones WebSocket","noSocketsDesc":"Las conexiones WebSocket, Socket.IO y WSS capturadas aparecerán aquí en tiempo real.","noMatching":"No hay WebSockets coincidentes","adjustSearchFilter":"Intente ajustar su consulta de búsqueda o filtrar chips.","simulateTraffic":"Simular el tráfico de WebSocket de demostración","clearTitle":"Borrar todos los registros de WebSocket","clearMessage":"¿Está seguro de que desea eliminar todas las sesiones de WebSocket grabadas?","cleared":"Todos los registros de WebSocket borrados","deleteSelectedTitle":"Eliminar WebSockets seleccionados","deleteSelectedMsg":"¿Está seguro de que desea eliminar {{count}} registros de WebSocket seleccionados?","filterTitle":"Filtrar conexiones WebSocket","showingConnections":"Mostrando {{count}} conexiones","showingFilteredConnections":"Mostrando {{filtered}} de {{total}} conexiones","deletedCount":"{{count}} registros de WebSocket eliminados","copiedUrls":"{{count}} URLs copiadas","webSocketTraffic":"Tráfico WebSocket ({{count}} conexiones)","title":"WebSocket"},"push":{"title":"Notificaciones push","preview":"Vista previa","payload":"Carga útil personalizada","deliveryMetadata":"Metadatos de entrega y mensajes","rawPayload":"Carga útil sin procesar","link":"Enlace","appNotification":"Notificación de aplicación","now":"ahora","domainFields":"Campos específicos del dominio","searchPlaceholder":"Buscar notificaciones push...","noNotifications":"Sin notificaciones automáticas","noNotificationsDesc":"Los eventos push capturados de Firebase FCM, Apple APN, OneSignal y personalizados aparecerán aquí en tiempo real.","filterTitle":"Filtrar notificaciones push","clearTitle":"Borrar historial de push","clearMessage":"¿Está seguro de que desea borrar todos los registros de notificaciones push?","cleared":"Historial de notificaciones push borrado","foreground":"Primer plano","background":"Segundo plano","quit":"Cerrado"},"debugging":{"title":"Depuración y herramientas","buildSuccess":"¡Compilación de APK generada con éxito!","buildFailed":"Error de compilación: {{error}}","buildCancelled":"Construcción cancelada por el usuario"},"about":{"title":"Acerca de y especificaciones","subtitle":"Información del paquete, especificaciones de ejecución y diagnóstico","heroTitle":"Inspector integrado","heroDescription":"La herramienta todo-en-uno de depuración, registro y QA en el dispositivo para aplicaciones React Native y Expo.","upToDate":"Actualizado","versionAvailable":"v{{version}} Disponible","copyUpgradeCommand":"Copiar comando de actualización (v{{version}})","copiedUpgradeCommand":"¡Comando npm copiado!","appInformation":"INFORMACIÓN DE LA APP","appName":"Nombre de la app","packageIdentifier":"Identificador del paquete","appVersion":"Versión de la app","environment":"Entorno","developmentDebug":"Desarrollo (Depuración)","productionRelease":"Producción (Release)","platform":"Plataforma","googleAndroid":"android","features":"QUÉ HACE EL INSPECTOR","featureNetwork":"Monitor de tráfico de red","featureNetworkDesc":"Inspecciona peticiones HTTP y HTTPS, respuestas, encabezados y latencia del servidor.","featureConsole":"Registro de consola","featureConsoleDesc":"Ve registros de consola, advertencias y errores en tiempo real con trazas de pila formateadas.","featureAnalytics":"Telemetría analítica","featureAnalyticsDesc":"Rastrea eventos de Firebase y analíticos personalizados en vivo en el dispositivo.","featureRedux":"Estado y acciones de Redux","featureReduxDesc":"Inspecciona acciones despachadas, cargas útiles y diferencias del árbol de estado.","featureCapture":"Captura de pantalla y video","featureCaptureDesc":"Toma capturas de pantalla y graba sesiones de prueba para compartir con equipos de QA.","featureCrash":"Captura de fallos y diagnóstico","featureCrashDesc":"Protege contra fallos nativos y proporciona métricas de salud del dispositivo.","githubSub":"Estrella y código fuente","npmRegistry":"Registro NPM","npmRegistrySub":"Actualizaciones del paquete","documentation":"Documentación","documentationSub":"Guía de integración","reportIssue":"Reportar problema","reportIssueSub":"Ayuda y soporte","releaseNotes":"Notas de la versión","releaseNotesSub":"Novedades","copyInstall":"Copiar instalación","copyInstallSub":"comando npm / yarn","copiedInstallCommand":"¡Comando de instalación copiado!","footerLicense":"React Native In-App Inspector · Licencia MIT","footerTagline":"Herramienta de depuración sin configuración","appleIos":"Apple iOS","github":"GitHub"}}
|