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.
Files changed (231) hide show
  1. package/README.ar.md +163 -0
  2. package/README.de.md +163 -0
  3. package/README.es.md +164 -0
  4. package/README.fr.md +163 -0
  5. package/README.hi.md +163 -0
  6. package/README.ja.md +180 -0
  7. package/README.ko.md +163 -0
  8. package/README.md +340 -243
  9. package/README.pt-BR.md +163 -0
  10. package/README.ru.md +163 -0
  11. package/README.zh-CN.md +387 -0
  12. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +82 -21
  13. package/assets/banner_dark.svg +186 -0
  14. package/assets/banner_light.svg +186 -0
  15. package/assets/icon_circle.svg +148 -0
  16. package/assets/icon_square.svg +369 -0
  17. package/assets/inapp_inspector_icon.gif +0 -0
  18. package/assets/inapp_inspector_icon_original.gif +0 -0
  19. package/assets/social_preview.png +0 -0
  20. package/assets/walkthrough.gif +0 -0
  21. package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
  22. package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
  23. package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
  24. package/dist/commonjs/components/AppHeaderLogo.js +7 -5
  25. package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
  26. package/dist/commonjs/components/BrandSquareIcon.js +139 -0
  27. package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
  28. package/dist/commonjs/components/ConsoleLogCard.js +23 -39
  29. package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
  30. package/dist/commonjs/components/Inspector/AnalyticsTab.js +16 -16
  31. package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
  32. package/dist/commonjs/components/Inspector/ConfirmationModal.js +32 -0
  33. package/dist/commonjs/components/Inspector/ConsoleTab.js +15 -15
  34. package/dist/commonjs/components/Inspector/CrashTab.js +25 -23
  35. package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
  36. package/dist/commonjs/components/Inspector/FabLauncher.js +22 -30
  37. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
  38. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  39. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +90 -0
  40. package/dist/commonjs/components/Inspector/MainScreen.js +46 -33
  41. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +21 -19
  42. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +85 -101
  43. package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
  44. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
  45. package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
  46. package/dist/commonjs/components/Inspector/PushCard.js +5 -4
  47. package/dist/commonjs/components/Inspector/PushDetail.js +32 -23
  48. package/dist/commonjs/components/Inspector/PushTab.js +13 -13
  49. package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
  50. package/dist/commonjs/components/Inspector/ReduxTab.js +14 -14
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +258 -139
  52. package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
  53. package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
  54. package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
  55. package/dist/commonjs/components/Inspector/SocketDetail.js +317 -0
  56. package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
  57. package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
  58. package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
  59. package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
  60. package/dist/commonjs/components/Inspector/StorageTab.js +34 -32
  61. package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
  62. package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
  63. package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
  64. package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
  65. package/dist/commonjs/components/Inspector/TabBar.js +24 -23
  66. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
  67. package/dist/commonjs/components/JsonViewer.js +7 -7
  68. package/dist/commonjs/components/LogCard.d.ts +3 -2
  69. package/dist/commonjs/components/LogCard.js +17 -14
  70. package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
  71. package/dist/commonjs/components/ModuleErrorBoundary.js +2 -2
  72. package/dist/commonjs/components/NetworkIcons.d.ts +15 -0
  73. package/dist/commonjs/components/NetworkIcons.js +38 -3
  74. package/dist/commonjs/components/SegmentedTabs.js +1 -1
  75. package/dist/commonjs/constants/version.d.ts +1 -1
  76. package/dist/commonjs/constants/version.js +1 -1
  77. package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
  78. package/dist/commonjs/customHooks/socketLogger.js +2 -0
  79. package/dist/commonjs/helpers/index.js +3 -3
  80. package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
  81. package/dist/commonjs/helpers/memoryManager.js +1 -1
  82. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
  83. package/dist/commonjs/helpers/searchQueryParser.js +5 -1
  84. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  85. package/dist/commonjs/helpers/settingsStore.js +1 -1
  86. package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
  87. package/dist/commonjs/helpers/shareFormatter.js +8 -7
  88. package/dist/commonjs/i18n/index.d.ts +99 -1
  89. package/dist/commonjs/i18n/index.js +1 -1
  90. package/dist/commonjs/i18n/locales/ar.json +1 -1
  91. package/dist/commonjs/i18n/locales/bn.json +1 -0
  92. package/dist/commonjs/i18n/locales/de.json +1 -1
  93. package/dist/commonjs/i18n/locales/en.json +1 -1
  94. package/dist/commonjs/i18n/locales/es.json +1 -1
  95. package/dist/commonjs/i18n/locales/fr.json +1 -1
  96. package/dist/commonjs/i18n/locales/gu.json +1 -0
  97. package/dist/commonjs/i18n/locales/hi.json +1 -1
  98. package/dist/commonjs/i18n/locales/id.json +1 -0
  99. package/dist/commonjs/i18n/locales/it.json +1 -0
  100. package/dist/commonjs/i18n/locales/ja.json +1 -1
  101. package/dist/commonjs/i18n/locales/kn.json +1 -0
  102. package/dist/commonjs/i18n/locales/ko.json +1 -1
  103. package/dist/commonjs/i18n/locales/ml.json +1 -0
  104. package/dist/commonjs/i18n/locales/mr.json +1 -0
  105. package/dist/commonjs/i18n/locales/nl.json +1 -0
  106. package/dist/commonjs/i18n/locales/pa.json +1 -0
  107. package/dist/commonjs/i18n/locales/pl.json +1 -0
  108. package/dist/commonjs/i18n/locales/pt.json +1 -1
  109. package/dist/commonjs/i18n/locales/ru.json +1 -1
  110. package/dist/commonjs/i18n/locales/ta.json +1 -0
  111. package/dist/commonjs/i18n/locales/te.json +1 -0
  112. package/dist/commonjs/i18n/locales/tr.json +1 -0
  113. package/dist/commonjs/i18n/locales/vi.json +1 -0
  114. package/dist/commonjs/i18n/locales/zh.json +1 -1
  115. package/dist/commonjs/index.d.ts +13 -13
  116. package/dist/commonjs/index.js +5 -4
  117. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  118. package/dist/commonjs/socket.d.ts +4 -0
  119. package/dist/commonjs/socket.js +1 -0
  120. package/dist/commonjs/styles/index.d.ts +23 -0
  121. package/dist/commonjs/styles/index.js +1 -1
  122. package/dist/commonjs/types/enums.d.ts +40 -0
  123. package/dist/commonjs/types/enums.js +1 -1
  124. package/dist/commonjs/types/interfaces.d.ts +122 -1
  125. package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
  126. package/dist/esm/components/AnimatedBrandOwl.js +175 -0
  127. package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
  128. package/dist/esm/components/AppHeaderLogo.js +7 -5
  129. package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
  130. package/dist/esm/components/BrandSquareIcon.js +139 -0
  131. package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
  132. package/dist/esm/components/ConsoleLogCard.js +61 -77
  133. package/dist/esm/components/Inspector/AboutModal.js +85 -95
  134. package/dist/esm/components/Inspector/AnalyticsTab.js +31 -31
  135. package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
  136. package/dist/esm/components/Inspector/ConfirmationModal.js +32 -0
  137. package/dist/esm/components/Inspector/ConsoleTab.js +49 -49
  138. package/dist/esm/components/Inspector/CrashTab.js +40 -38
  139. package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
  140. package/dist/esm/components/Inspector/FabLauncher.js +50 -58
  141. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
  142. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  143. package/dist/esm/components/Inspector/LanguageSelectorModal.js +90 -0
  144. package/dist/esm/components/Inspector/MainScreen.js +123 -110
  145. package/dist/esm/components/Inspector/MediaGalleryTab.js +64 -62
  146. package/dist/esm/components/Inspector/MediaPreviewModal.js +107 -123
  147. package/dist/esm/components/Inspector/NetworkTab.js +90 -90
  148. package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
  149. package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
  150. package/dist/esm/components/Inspector/PushCard.js +23 -22
  151. package/dist/esm/components/Inspector/PushDetail.js +34 -25
  152. package/dist/esm/components/Inspector/PushTab.js +25 -25
  153. package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
  154. package/dist/esm/components/Inspector/ReduxTab.js +35 -35
  155. package/dist/esm/components/Inspector/SettingsPanel.js +495 -376
  156. package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
  157. package/dist/esm/components/Inspector/SocketCard.js +116 -0
  158. package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
  159. package/dist/esm/components/Inspector/SocketDetail.js +317 -0
  160. package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
  161. package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
  162. package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
  163. package/dist/esm/components/Inspector/SocketTab.js +112 -0
  164. package/dist/esm/components/Inspector/StorageTab.js +136 -134
  165. package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
  166. package/dist/esm/components/Inspector/SupportModal.js +125 -0
  167. package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
  168. package/dist/esm/components/Inspector/SupportPage.js +227 -0
  169. package/dist/esm/components/Inspector/TabBar.js +36 -35
  170. package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
  171. package/dist/esm/components/JsonViewer.js +55 -55
  172. package/dist/esm/components/LogCard.d.ts +3 -2
  173. package/dist/esm/components/LogCard.js +61 -58
  174. package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
  175. package/dist/esm/components/ModuleErrorBoundary.js +23 -23
  176. package/dist/esm/components/NetworkIcons.d.ts +15 -0
  177. package/dist/esm/components/NetworkIcons.js +38 -3
  178. package/dist/esm/components/SegmentedTabs.js +7 -7
  179. package/dist/esm/constants/version.d.ts +1 -1
  180. package/dist/esm/constants/version.js +1 -1
  181. package/dist/esm/customHooks/socketLogger.d.ts +26 -0
  182. package/dist/esm/customHooks/socketLogger.js +2 -0
  183. package/dist/esm/helpers/index.js +3 -3
  184. package/dist/esm/helpers/memoryManager.d.ts +1 -0
  185. package/dist/esm/helpers/memoryManager.js +1 -1
  186. package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
  187. package/dist/esm/helpers/searchQueryParser.js +5 -1
  188. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  189. package/dist/esm/helpers/settingsStore.js +1 -1
  190. package/dist/esm/helpers/shareFormatter.d.ts +3 -1
  191. package/dist/esm/helpers/shareFormatter.js +8 -7
  192. package/dist/esm/i18n/index.d.ts +99 -1
  193. package/dist/esm/i18n/index.js +1 -1
  194. package/dist/esm/i18n/locales/ar.json +1 -1
  195. package/dist/esm/i18n/locales/bn.json +1 -0
  196. package/dist/esm/i18n/locales/de.json +1 -1
  197. package/dist/esm/i18n/locales/en.json +1 -1
  198. package/dist/esm/i18n/locales/es.json +1 -1
  199. package/dist/esm/i18n/locales/fr.json +1 -1
  200. package/dist/esm/i18n/locales/gu.json +1 -0
  201. package/dist/esm/i18n/locales/hi.json +1 -1
  202. package/dist/esm/i18n/locales/id.json +1 -0
  203. package/dist/esm/i18n/locales/it.json +1 -0
  204. package/dist/esm/i18n/locales/ja.json +1 -1
  205. package/dist/esm/i18n/locales/kn.json +1 -0
  206. package/dist/esm/i18n/locales/ko.json +1 -1
  207. package/dist/esm/i18n/locales/ml.json +1 -0
  208. package/dist/esm/i18n/locales/mr.json +1 -0
  209. package/dist/esm/i18n/locales/nl.json +1 -0
  210. package/dist/esm/i18n/locales/pa.json +1 -0
  211. package/dist/esm/i18n/locales/pl.json +1 -0
  212. package/dist/esm/i18n/locales/pt.json +1 -1
  213. package/dist/esm/i18n/locales/ru.json +1 -1
  214. package/dist/esm/i18n/locales/ta.json +1 -0
  215. package/dist/esm/i18n/locales/te.json +1 -0
  216. package/dist/esm/i18n/locales/tr.json +1 -0
  217. package/dist/esm/i18n/locales/vi.json +1 -0
  218. package/dist/esm/i18n/locales/zh.json +1 -1
  219. package/dist/esm/index.d.ts +13 -13
  220. package/dist/esm/index.js +8 -7
  221. package/dist/esm/native/NativeInspector.d.ts +1 -0
  222. package/dist/esm/socket.d.ts +4 -0
  223. package/dist/esm/socket.js +1 -0
  224. package/dist/esm/styles/index.d.ts +23 -0
  225. package/dist/esm/styles/index.js +1 -1
  226. package/dist/esm/types/enums.d.ts +40 -0
  227. package/dist/esm/types/enums.js +1 -1
  228. package/dist/esm/types/interfaces.d.ts +122 -1
  229. package/ios/NetworkInspectorModule.mm +102 -12
  230. package/package.json +204 -2
  231. package/src/native/NativeInspector.ts +8 -0
@@ -1 +1 @@
1
- {"common":{"cancel":"Cancelar","clear":"Limpar","clearAll":"Limpar tudo","close":"Fechar","loading":"Carregando...","success":"Sucesso","pending":"Pendente","failed":"Falhou","copy":"Copiar","copied":"Copiado!","copyJson":"Copiar JSON","collapseAll":"Recolher tudo","expandAll":"Expandir tudo","viewOnNpm":"Ver no NPM","later":"Mais tarde","source":"ORIGEM","minimize":"Minimizar","tapToExpand":"Toque para expandir","open":"Abrir","openInBrowser":"Abrir no navegador","openInBrowserPrompt":"Tem certeza de que deseja abrir esta URL no seu navegador externo?","add":"Adicionar"},"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":"Logs","analytics":"Analítica","redux":"Redux","crash":"Falhas","device":"Dispositivo","storage":"Armazenamento","media":"Gravação"},"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":"Pesquisar estado ou ações...","emptyTitle":"Nenhuma store Redux conectada","emptySubtitle":"Conecte sua store para inspecionar a árvore de estado e ações.","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 ATIVOS","totalState":"ESTADO TOTAL","lastActionHeader":"ÚLTIMA AÇÃO","initialState":"Estado inicial (nenhuma ação disparada)","noStoreConnected":"Nenhuma store Redux conectada","connectStoreTip":"Chame connectReduxStore(store) ou use inspectorReduxMiddleware na inicialização do app."},"device":{"title":"Dispositivo","searchPlaceholder":"Pesquisar especificações, UDID, IP, tela...","subTabs":{"overview":"Visão geral","hardware":"Hardware","network":"Rede e IP","display":"Tela","runtime":"Execução e App","security":"Segurança e IDs"},"sections":{"overview":"VISÃO GERAL DO DISPOSITIVO","hardware":"ESPECIFICAÇÕES DE HARDWARE E SISTEMA","network":"REDE E CONECTIVIDADE","display":"TELA E GEOMETRIA","runtime":"EXECUÇÃO E AMBIENTE","security":"IDENTIFICADORES E SEGURANÇA"},"copied":"Copiado {{label}}","copiedJson":"Relatório JSON completo do dispositivo copiado!","copiedMarkdown":"Relatório Markdown copiado para a área de transferência!","live":"AO VIVO","ipAddress":"ENDEREÇO IP","ramUsedTotal":"RAM (USADA/TOTAL)","uptime":"TEMPO DE ATIVIDADE"},"storage":{"title":"Armazenamento","searchPlaceholder":"Pesquisar chaves, valores, tipos...","subTabs":{"asyncStorage":"AsyncStorage","mmkv":"MMKV"},"clearTitle":"Limpar armazenamento","clearMessage":"Tem certeza de que deseja excluir todas as chaves em {{driver}}?","clearConfirm":"Limpar tudo","emptyTitle":"Nenhuma entrada de armazenamento","emptySubtitle":"O armazenamento está vazio para este driver.","addKey":"Adicionar chave","add":"Adicionar","editKey":"Editar chave","createKey":"Criar chave","save":"Salvar","saveKey":"Salvar chave","keyName":"Nome da chave","value":"Valor","valueContent":"Conteúdo do valor","type":"Tipo","beautifyJson":"Formatar JSON","loading":"Carregando entradas de armazenamento...","deleteKeyTitle":"Excluir chave","deleteKeyMessage":"Tem certeza de que deseja excluir a chave \"{{key}}\"?"},"footer":{"endOfList":"Você chegou ao final da lista","loadMore":"Carregar mais {{count}}","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":"Estruturado","raw":"Bruto","table":"Tabela","emptyObject":"Objeto vazio","emptyPayload":"Carga vazia","emptyTable":"Objeto vazio","fold":"Recolher","expand":"Expandir","min":"Min","indent":"Indentar","wrap":"Quebrar linha","copied":"Copiado!","copy":"Copiar JSON","key":"Chave","value":"Valor","lines":"linhas","line":"linha"},"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":"Limpar","clearAll":"Limpar tudo","close":"Fechar","loading":"Carregando...","success":"Sucesso","pending":"Pendente","failed":"Falhou","copy":"Copiar","copied":"Copiado!","copyJson":"Copiar JSON","collapseAll":"Recolher tudo","expandAll":"Expandir tudo","viewOnNpm":"Ver no NPM","later":"Mais tarde","source":"ORIGEM","minimize":"Minimizar","tapToExpand":"Toque para expandir","open":"Abrir","openInBrowser":"Abrir no navegador","openInBrowserPrompt":"Tem certeza de que deseja abrir esta URL no seu navegador externo?","delete":"Excluir","reset":"Redefinir","save":"Salvar","edit":"Editar","add":"Adicionar","search":"Pesquisar","filter":"Filtrar","sort":"Ordenar","refresh":"Atualizar","retry":"Tentar novamente","confirm":"Confirmar","yes":"Sim","no":"Não","ok":"OK","done":"Concluído","back":"Voltar","next":"Próximo","show":"Mostrar","hide":"Ocultar","select":"Selecionar","selectAll":"Selecionar tudo","deselectAll":"Desmarcar tudo","noResults":"Nenhum resultado encontrado","items":"itens","of":"de","showing":"Exibindo","active":"Ativo","inactive":"Inativo","enabled":"Ativado","disabled":"Desativado","live":"Ao vivo","connected":"Conectado","disconnected":"Desconectado","version":"Versão","update":"ATUALIZAR","unknown":"Desconhecido","share":"Compartilhar"},"header":{"rec":"REC","sourceFirebase":"FB","sourceManual":"MAN","aboutSpecs":"Sobre e especificações","live":"Ao vivo","keys":"{{count}} chaves","frames":"{{count}} quadros","updateAvailableTitle":"Atualização disponível","updateAvailableMessage":"react-native-inapp-inspector v{{version}} está disponível no NPM (instalado: v{{installed}}).","clearEverythingTitle":"Limpar tudo","clearEverythingMessage":"Isso limpa todas as guias – APIs, Logs, Analytics, linha do tempo Redux e histórico de falhas. Continuar?","photo":"Foto","record":"Gravar","clear":"Limpar","about":"Sobre","screenshotCaptured":"📸 Captura de tela capturada e salva","screenshotFailed":"Falha ao capturar a captura de tela","screenshotError":"Erro ao tirar captura de tela","recordingStarted":"🔴 Gravação de vídeo iniciada","recordingSaved":"🎥 Gravação salva ({{duration}}s)","recordingError":"Erro de gravação","recordingStartFailed":"Falha ao iniciar a gravação","paramCount":"{{count}} parâmetro","paramCount_plural":"{{count}} parâmetros","firebase":"base de fogo","manual":"manual","sliceBadge":"FATIA"},"tabs":{"analytics":"Analítica","crash":"Falhas","device":"Dispositivo","storage":"Armazenamento","media":"Gravação","apis":"APIs","logs":"Registros","redux":"Redux","push":"Empurrar","socket":"WebSocket","debugging":"Depuração"},"settings":{"configureSubtitle":"Configurar parâmetros do módulo","resetAlertTitle":"Redefinir todas as configurações","resetAlertMessage":"Isso restaura toda a visibilidade dos módulos e preferências de interface para os padrões. Continuar?","mainTitle":"Configurações e módulos","mainSubtitle":"Gerenciar módulos e preferências","requiredBadge":"OBRIGATÓRIO","defaultBadge":"PADRÃO","notConnectedBadge":"NÃO CONECTADO","notDetectedBadge":"NÃO DETECTADO","readOnlyBadge":"LEIA SOMENTE","coreBadge":"NÚCLEO","activeBadge":"ATIVO","dormantBadge":"DORMENTE","protectedBadge":"PROTEGIDO","modulesAndTools":"Módulos e Ferramentas","uiPreferences":"IU e exibição","ramLimits":"RAM e limites","screenVideoCapture":"Captura de tela e vídeo","zeroOverheadTitle":"Zero sobrecarga de fundo","zeroOverheadDesc":"Verifique os módulos que deseja ativar. Módulos desabilitados consomem 0% de CPU e memória até serem salvos.","unsavedPending":"● Seleções não salvas pendentes","allSynchronized":"Todos os módulos sincronizados","modulesActive":"{{active}} de {{total}} Módulos ativos","saveChanges":"Salvar alterações","settingsSaved":"Configurações salvas","settingsSavedDesc":"As configurações do módulo ativo foram atualizadas com sucesso.","configure":"Configurar","appearanceTheme":"APARÊNCIA E TEMA","windowLayout":"JANELA E LAYOUT","startupDefault":"TELA DE INICIALIZAÇÃO E PADRÃO","logFiltersDeduplication":"FILTROS DE LOG E DESDUPLICAÇÃO","resetSettings":"Redefinir todas as configurações","resetSettingsDesc":"Limpe as preferências personalizadas de volta ao padrão","reset":"Redefinir","reduxNotConnectedTip":"A loja Redux não está conectada. Chame connectReduxStore(store) ou use inspectorReduxMiddleware para ativar.","analyticsNotConnectedTip":"A análise não foi inicializada. Chame setupAnalyticsLogger(analytics()) para ativar.","tabVisibility":"Visibilidade da guia","tabVisibilityDescription":"Escolha quais módulos aparecem no inspetor","settingsTitle":"Configurações","back":"Voltar","apis":{"title":"Configurações de APIs","total":"Total: {{count}}","maxRequestLogs":"Máximo de registros de solicitações","maxRequestLogsDescription":"Tamanho do buffer de solicitações de rede preservadas na memória","clearNetworkLogs":"Limpar registros de rede","clearNetworkLogsDescription":"{{count}} solicitações armazenadas","networkLogsCleared":"Registros de rede apagados.","showStatusFilter":"Filtro de status","showStatusFilterDescription":"Mostrar ícones de status na lista de APIs","showMethodFilter":"Filtro de método","showMethodFilterDescription":"Mostrar chips de método na lista de APIs","defaultTabDescription":"Guia em que o inspetor abre"},"logs":{"title":"Configurações de registros","total":"Total: {{count}}","maxConsoleLogs":"Máximo de registros do console","maxConsoleLogsDescription":"Quantas mensagens do console devem ser retidas","logLevels":"Gravidades de registro","logLevelsDescription":"Selecione quais gravidades capturar nos registros","showInfo":"Mostrar registros de informações","showInfoDesc":"Registros informativos e impressões de depuração","showWarn":"Mostrar registros de aviso","showWarnDesc":"Avisos de aviso e depreciações","showError":"Mostrar registros de erros","showErrorDesc":"Erros e exceções de tempo de execução","clearConsoleLogs":"Limpar registros do console","clearConsoleLogsDescription":"{{count}} registros armazenados","consoleLogsCleared":"Logs do console apagados."},"analytics":{"title":"Configurações de análise","total":"Eventos: {{count}}","maxAnalyticsEvents":"Eventos capturados","maxAnalyticsEventsDescription":"{{count}} eventos de análise armazenados no buffer","clearAnalyticsEvents":"Limpar histórico do Analytics","clearAnalyticsEventsDescription":"Limpe todos os eventos de telemetria capturados","analyticsEventsCleared":"Eventos de análise apagados."},"redux":{"title":"Configurações de redux","reducers":"Redutores: {{count}}","autoRefresh":"Loja de atualização automática","autoRefreshDescription":"Capture a árvore de estado da loja Redux em cada despacho","defaultJsonExpandDepth":"Profundidade de expansão JSON padrão","defaultJsonExpandDepthDescription":"Profundidade inicial da árvore de estado Redux para expansão automática","clearReduxState":"Limpar estado redux","clearReduxStateDescription":"Redefinir o instantâneo do estado atual no inspetor","clearReduxStateEmpty":"Nenhum snapshot da loja registrado","reduxStateCleared":"Instantâneo do estado Redux limpo.","clearReduxTimeline":"Limpar linha do tempo Redux","clearReduxTimelineDescription":"Remova todo o histórico de ações capturado","reduxTimelineCleared":"Histórico de ações Redux apagado."},"bundle":{"title":"Configurações do pacote","sourceBundler":"Empacotador de origem Metro","sourceBundlerDesc":"Analisa árvores de módulos ativos e calcula detalhamentos de tamanho binário","clearCache":"Limpar cache do pacote","clearCacheDesc":"Forçar a nova busca e análise do pacote JS","cacheCleared":"Cache de análise de pacote limpo."},"performance":{"title":"Configurações de desempenho","frameMeasurement":"Medição de quadros ao vivo","frameMeasurementDesc":"Amostra taxas de quadros UI/JS e detecta re-renderizações desnecessárias","clearEvents":"Limpar eventos de desempenho","clearEventsDesc":"Redefinir o histórico de interrupções registradas e quedas de FPS","eventsCleared":"Eventos de desempenho apagados."},"crash":{"title":"Configurações de falha","maxCrashLogs":"Máximo de registros de falhas","maxCrashLogsDesc":"Quantos registros de falhas preservar no histórico","globalGuard":"Guarda Global contra Acidentes","globalGuardDesc":"Intercepta erros nativos, JS e renderiza diretamente","clearHistory":"Limpar histórico de falhas","clearHistoryDesc":"{{count}} registros de falhas armazenados","historyCleared":"Registros de falhas apagados."},"media":{"title":"Captura de tela e vídeo","badge":"H.264/GIF nativo","desc":"Configure formatos de captura de tela, qualidade, FPS de vídeo, narração de áudio, gravação e armazenamento de GIF","screenshotCardTitle":"Formatos e qualidade de captura de tela","screenshotCardDesc":"Configuração de instantâneo de janela inteira de alta resolução","imageFormat":"Formato de imagem","imageFormatDesc":"PNG (sem perdas), JPEG (compacto) ou WEBP","autoHide":"Sobreposição do inspetor de ocultação automática","autoHideDesc":"Exclui a IU do inspetor das capturas de tela","enabled":"ATIVADO","videoCardTitle":"Gravação de vídeo e GIF","videoCardDesc":"Gravação H.264 MP4 e exportação de GIF animado","audioMode":"Modo de narração de áudio","audioModeDesc":"Silenciado, áudio do aplicativo ou narração por voz","frameRate":"Taxa de quadros","frameRateDesc":"FPS mais alto produz gravações mais suaves","gifAutoOpt":"Otimização automática de GIF","gifAutoOptDesc":"Converte gravações de vídeo para GitHub PRs e Slack","purgeAll":"Limpar todas as mídias capturadas","purgeAllDesc":"Exclui todas as capturas de tela, vídeos e GIFs armazenados","purgeCacheBtn":"Limpar cache","purgeConfirmTitle":"Limpar armazenamento de mídia","purgeConfirmMessage":"Isso exclui todos os arquivos de mídia capturados do cache local. Continuar?","purgedSuccess":"Armazenamento de mídia eliminado"},"general":{"darkMode":"Tema do modo escuro","darkModeDescription":"Alternar estética escura elegante ou contraste claro","modalHeight":"Altura da janela do inspetor","modalHeightDescription":"Porcentagem de cobertura de tela modal","modalAnimation":"Animação de Transição","modalAnimationDescription":"Estilo de apresentação de entrada e demissão","duplicateLogs":"Mostrar registros duplicados","duplicateLogsDescription":"Desativado: entradas repetidas idênticas são reduzidas a emblemas ×N","defaultOpeningTab":"Guia de abertura padrão","defaultOpeningTabDesc":"Guia inicial ativa quando o botão do iniciador é tocado","activeConsoleLogLevels":"Níveis de log do console ativo","activeConsoleLogLevelsDesc":"Selecione quais gravidades capturar nos registros","resetToDefaults":"Redefinir para os padrões","resetToDefaultsDescription":"Restaurar todas as configurações do inspetor","resetConfirmationTitle":"Redefinir configurações","resetConfirmationMessage":"Todas as configurações foram redefinidas para os valores padrão.","storageStatus":"Armazenamento persistente","storageStatusEnabled":"Armazenamento de configurações: persistente ({{type}})","storageStatusEnabledDesc":"Suas preferências e visibilidade do módulo persistem durante as reinicializações do aplicativo.","storageStatusDisabled":"Armazenamento de configurações: na memória (temporário)","storageStatusDisabledDesc":"As preferências são redefinidas ao encerrar o aplicativo. Passe o armazenamento personalizado para <NetworkInspector storage={...} /> para persistir no Android.","language":"Idioma","languageDescription":"Selecione o idioma de exibição da interface","selectLanguage":"Selecione o idioma"},"settingsReset":"Redefinir configurações","settingsResetMessage":"Todas as configurações foram redefinidas para os valores padrão.","pushHistoryCleared":"Histórico de notificações push limpo","socketHistoryCleared":"Histórico do WebSocket apagado","memory":{"manualTitle":"Limpeza manual de memória","manualDescription":"Remova entradas mais antigas em todos os armazenamentos de log e libere RAM","pruned":"{{count}} itens removidos da memória"},"simulator":{"salesforce":"Push simulado do Salesforce Marketing Cloud","fcm":"Push simulado do Firebase FCM","apns":"Push simulado de APNs da Apple","deepLink":"Push simulado de Deep Link","chat":"Sessão simulada de chat WebSocket em tempo real","crypto":"Fluxo simulado do Binance Crypto Ticker","socketio":"Sessão simulada do Socket.IO v4","echo":"Teste simulado de WebSocket Echo","screenshotSaved":"Captura de tela capturada e salva!"}},"network":{"urlHeader":"URL","jsonViewer":{"raw":"Raw","key":"Key","pretty":"Bonito","table":"Mesa","emptyObject":"Objeto vazio","emptyTable":"Objeto vazio","value":"Valor"},"title":"APIs","searchPlaceholder":"Pesquise por URL, status ou método...","emptyTitle":"Nenhuma chamada de API capturada ainda","emptySubtitle":"As solicitações de rede aparecerão aqui conforme você usa o aplicativo.","reload":"Recarregar","clearTitle":"Limpar registros de rede","clearMessage":"Tem certeza de que deseja limpar todos os logs de rede capturados?","detailTabs":{"metadata":"Metadados","headers":"Cabeçalhos","request":"Solicitação","response":"Resposta"},"requestTitle":"Solicitação","responseTitle":"Resposta","searchRequest":"Solicitação de pesquisa...","searchResponse":"Resposta da pesquisa...","searchHeaders":"Pesquisar cabeçalhos...","requestHeaders":"Solicitar cabeçalhos","responseHeaders":"Cabeçalhos de resposta","diffTitle":"Diferença","noResponse":"Nenhum corpo de resposta","noRequest":"Nenhum corpo de solicitação","statusFailed":"Falha","methodHeader":"Método","statusHeader":"Estado","durationHeader":"Duração","sizeHeader":"Tamanho","triggeredAt":"Acionado em","contentType":"Tipo de conteúdo","sourcePage":"Página de origem","sourcePageUnknown":"Fonte desconhecida","loadMore":"Carregar mais","groupByPage":"Agrupar por página","groupByDomain":"Agrupar por domínio","groupByNone":"Lista","domain":"Domínio","page":"Página","requests":"{{count}} solicitações","requests_plural":"{{count}} solicitações","noFilteredResults":"Nenhuma solicitação corresponde aos filtros atuais","scrollToTop":"Role para cima","copyCurl":"Copiar cURL","copyFetch":"Copiar trecho de busca","emptyResponse":"Resposta vazia","bodyHidden":"{Corpo oculto}","queryParams":"Parâmetros de consulta","fullUrl":"URL completo","open":"Abrir","showMore":"Mostrar mais","showLess":"Mostrar menos","failedNetworkError":"Falha (erro de rede)","noMatchingHeaders":"Nenhum cabeçalho correspondente","diffHidden":"{Diferença oculta}","noDiff":"Não há diferenças em relação à API anterior.","healthTitle":"Integridade da rede e telemetria","successRate":"Taxa de sucesso","avgLatency":"Latência média","p95Latency":"Latência P95","bandwidth":"Largura de banda","fastest":"Mais rápido","slowest":"Mais lento","timingWaterfall":"Cascata de tempo e latência","throughput":"Taxa de transferência","performanceTier":"Nível de desempenho","perf":{"fast":"Rápido (<200ms)","moderate":"Moderado (200-800ms)","slow":"Lento (> 800 ms)"},"showingRequests":"Mostrando {{count}} solicitações","showingFilteredRequests":"Mostrando {{filtered}} de {{total}} solicitações","status200":"200 OK","status201":"201 Criado","status204":"204 Sem conteúdo","status304":"304 não modificado","status400":"400 solicitação incorreta","status401":"401 não autorizado","status403":"403 Proibido","status404":"404 não encontrado","status500":"Erro 500","shareError":"Erro de compartilhamento","shareErrorMessage":"Falha ao abrir planilha de compartilhamento"},"console":{"filterAll":"All","rawTraceView":"Raw","showingLogs":"Exibindo {{count}} registros","log":"Registro","info":"Informação","warning":"Aviso","error":"Erro","debug":"Depuração","title":"Registros","searchPlaceholder":"Registros de pesquisa...","emptyTitle":"Ainda não há registros do console","emptySubtitle":"A saída do console do seu aplicativo aparecerá aqui.","analyticsBadge":"Análise","userLogBadge":"log do usuário","jsonTitle":"Registrar JSON","messageTitle":"Mensagem de registro","search":"Registro de pesquisa...","searchJson":"Registro de pesquisa JSON...","logMessage":"Mensagem de registro","consoleLog":"Registro do console","characters":"{{count}} caracteres","duplicates":"×{{count}} duplicatas","showMore":"Mostrar mais","showLess":"Mostrar menos","clearTitle":"Limpar registros","clearMessage":"Tem certeza de que deseja limpar todos os logs do console?","seeMore":"Mostrar mais","noResults":"Nenhum registro corresponde aos filtros atuais","filterInfo":"Informações","filterWarn":"Avisar","filterError":"Erro","filterUserLog":"Registro do usuário","filterAnalytics":"Análise","tabOutput":"Saída","tabArgs":"Argumentos ({{count}})","tabStack":"Rastreamento de pilha","tabMetadata":"Metadados","callStack":"Pilha de chamadas ({{count}} quadros)","errorStack":"Pilha de exceção de erro ({{count}} quadros)","callOriginStack":"Pilha de origem de chamada","errorThrownStack":"Erro ao lançar pilha","appCodeScope":"🎯 Código do aplicativo ({{count}})","allFramesScope":"📜 Todos os quadros ({{count}})","cardsView":"Cartões","noStackAvailable":"Nenhum quadro de pilha de chamadas encontrado que corresponda ao filtro ativo.","originBadge":"#1 ORIGEM","appCodeBadge":"Código do aplicativo","dependencyBadge":"Dependência","nativeBadge":"Nativo","hermesVmBadge":"Hermes VM","fullStackTrace":"Rastreamento de pilha completa","lineCol":"Linha {{line}}, Coluna {{col}}","lineColShort":"L{{line}}:C{{col}}","searchInLogDetails":"Pesquisar nos detalhes do registro...","showingFilteredLogs":"Mostrando {{filtered}} de {{total}} registros","filteredBy":"Filtrado por {{filters}} ({{filtered}} de {{total}} registros)"},"analytics":{"timeNow":"NOW","allCategory":"All","title":"Análise","searchPlaceholder":"Pesquisar eventos...","emptyTitle":"Nenhum evento de análise ainda","emptySubtitle":"Os eventos do Analytics aparecerão aqui conforme seu aplicativo os rastreia.","clearTitle":"Limpar análises","clearMessage":"Tem certeza de que deseja limpar todos os eventos analíticos?","eventParams":"{{count}} parâmetros","eventCount":"{{count}} eventos","userProperties":"Propriedades do usuário","userId":"ID do usuário","defaultParameters":"Parâmetros padrão","collectionEnabled":"Coleta habilitada","screenView":"visualização_da_tela","eventDetails":"Detalhes do Evento","parameters":"Parâmetros","noParams":"Sem parâmetros","recentEvents":"Eventos recentes","analyticsError":"Erro de análise","duplicate":"Duplicar","params":"parâmetros","props":"adereços","item":"item","items":"itens","pageViewCategory":"Visualização de página","ecommerceCategory":"Comércio eletrônico","systemCategory":"Sistema","customCategory":"Personalizado","realtimeStream":"Atividade em tempo real","liveTelemetry":"Telemetria ao vivo","eventsInWindow":"eventos na janela","eventVelocity":"{{rate}} ev/min","peakVolume":"Pico: {{count}}","time30mAgo":"-30m","time20mAgo":"-20m","time10mAgo":"-10m","selectedBucket":"Grupo: {{time}} ({{count}} eventos)","totalRevenue":"Receita","activeDistribution":"Divisão de categoria","screensCategory":"Telas","overviewTab":"Visão geral","jsonTreeTab":"Árvore JSON","rawPayloadTab":"Carga Bruta","sessionContext":"Contexto da sessão","userPropertiesSnapshot":"Instantâneo das propriedades do usuário","parameterKeys":"Parâmetros ({{count}})","searchParameters":"Parâmetros de pesquisa...","noParamsFound":"Nenhum parâmetro corresponde à sua pesquisa","sourceFirebase":"FOGO GA4","sourceCustom":"PERSONALIZADO / MANUAL"},"redux":{"searchPlaceholder":"Pesquisar estado ou ações...","emptyTitle":"Nenhuma store Redux conectada","emptySubtitle":"Conecte sua store para inspecionar a árvore de estado e ações.","originUi":"UI","activeSlices":"SLICES ATIVOS","totalState":"ESTADO TOTAL","lastActionHeader":"ÚLTIMA AÇÃO","initialState":"Estado inicial (nenhuma ação disparada)","noStoreConnected":"Nenhuma store Redux conectada","connectStoreTip":"Chame connectReduxStore(store) ou use inspectorReduxMiddleware na inicialização do app.","title":"Redux","stateTab":"Estado","actionsTab":"Ações","clearTitle":"Limpar linha do tempo Redux","clearMessage":"Tem certeza de que deseja limpar o histórico de ações despachadas?","noActions":"Nenhuma ação despachada ainda. Acione uma ação no aplicativo para preencher o histórico.","noSearchResults":"Nenhuma ação corresponde à sua pesquisa.","lastAction":"Última ação","actionHistory":"Histórico de ações","affectedSlices":"Fatias afetadas","noAffectedSlices":"Nenhum","dispatchTime":"Enviado em","prevState":"Estado anterior","nextState":"Próximo estado","viewDiff":"Ver diferença","emptyState":"O estado está vazio","rootState":"Estado raiz","connectionStatus":"Conectado","connectionStatusNone":"Não conectado","autoRefresh":"Atualização automática","paused":"Pausado","liveState":"Estado ao vivo","timeline":"Linha do tempo","persisted":"Persiste","storage":"Armazenamento","metadata":"Metadados","inMemory":"Na memória","slice":"FATIA","rootKeys":"Chaves raiz","size":"Tamanho","actions":"ações","keys":"Chaves","last":"Último","live":"Ao vivo","loading":"Carregando","error":"Erro","empty":"Vazio","payload":"Carga útil","actionPayload":"Carga útil da ação:","stateChangesDiff":"Mudanças de estado (diferença):","tapToInspectAction":"Toque para inspecionar a carga útil da ação e as alterações nas diferenças","noDispatchedActions":"Nenhuma ação despachada registrada para esta fatia ainda.","sliceJson":"Fatiar JSON","originSaga":"SAGA","originThunk":"PENSE","originDirect":"DIRETO","originListener":"OUVINTE","triggeredFrom":"Acionado por:","openInEditor":"Abrir no Editor","callStack":"Rastreamento de pilha de chamadas","sliceOrigin":"Fatia / Origem","clearPersistedTitle":"Limpar estado persistente","clearPersistedMessage":"Tem certeza de que deseja excluir o armazenamento persistente da fatia \"{{slice}}\"?","clearedPersisted":"O estado persistente foi limpo.","clearPersistedError":"Falha ao limpar o estado persistente."},"device":{"title":"Dispositivo","searchPlaceholder":"Pesquisar especificações, UDID, IP, tela...","subTabs":{"overview":"Visão geral","network":"Rede e IP","display":"Tela","runtime":"Execução e App","security":"Segurança e IDs","hardware":"Hardware"},"sections":{"overview":"VISÃO GERAL DO DISPOSITIVO","hardware":"ESPECIFICAÇÕES DE HARDWARE E SISTEMA","network":"REDE E CONECTIVIDADE","display":"TELA E GEOMETRIA","runtime":"EXECUÇÃO E AMBIENTE","security":"IDENTIFICADORES E SEGURANÇA"},"copied":"Copiado {{label}}","copiedJson":"Relatório JSON completo do dispositivo copiado!","copiedMarkdown":"Relatório Markdown copiado para a área de transferência!","live":"AO VIVO","ipAddress":"ENDEREÇO IP","ramUsedTotal":"RAM (USADA/TOTAL)","uptime":"TEMPO DE ATIVIDADE"},"storage":{"title":"Armazenamento","searchPlaceholder":"Pesquisar chaves, valores, tipos...","clearTitle":"Limpar armazenamento","clearMessage":"Tem certeza de que deseja excluir todas as chaves em {{driver}}?","clearConfirm":"Limpar tudo","emptyTitle":"Nenhuma entrada de armazenamento","emptySubtitle":"O armazenamento está vazio para este driver.","addKey":"Adicionar chave","add":"Adicionar","editKey":"Editar chave","createKey":"Criar chave","save":"Salvar","saveKey":"Salvar chave","keyName":"Nome da chave","value":"Valor","valueContent":"Conteúdo do valor","type":"Tipo","beautifyJson":"Formatar JSON","loading":"Carregando entradas de armazenamento...","deleteKeyTitle":"Excluir chave","deleteKeyMessage":"Tem certeza de que deseja excluir a chave \"{{key}}\"?","deleteConfirm":"Excluir","cleared":"Armazenamento limpo","subTabs":{"asyncStorage":"Armazenamento assíncrono","mmkv":"MMKV"},"asyncStorage":"Armazenamento assíncrono","mmkv":"MMKV"},"footer":{"endOfList":"Você chegou ao final da lista","loadMore":"Carregar mais {{count}}","showingOf":"Mostrando {{count}} de {{total}} {{label}}","loadMoreRequests":"Carregar {{count}} mais solicitações","allLoaded":"Todas as {{count}} solicitações foram carregadas"},"performance":{"filterAll":"All","catAll":"All","catIo":"I/O","jscEngine":"JSC","fpsUnit":"FPS","title":"Desempenho","fpsTarget":"Monitor de alvo de 60 FPS","healthScore":"Pontuação de integridade do FPS","excellent":"Excelente (60 FPS)","good":"Bom (janks menores)","needsOptimization":"Precisa de otimização","liveFps":"FPS ao vivo e ciclo de atualização","realtimeWindow":"Tempo real (janela de 1s)","uiRenderThread":"Tópico de renderização da interface do usuário","optimalFrame":"Ideal (<16,6 ms)","slowFrame":"Quadro lento (>16,6 ms)","budgetUsage":"Uso do orçamento de 60 FPS","avgFrameTime":"Tempo médio de quadros","peakTime":"Horário de pico","jsThread":"Tópico JS","uiThread":"Tópico da IU","jsiLatency":"Latência JSI","heapImpact":"Impacto na pilha","optimizationTip":"Dica de otimização:","recordedEvents":"Eventos e interações gravadas","liveStream":"Transmissão de sessão ao vivo","emptyTitle":"Nenhum evento de desempenho capturado ainda","emptySubtitle":"Execute ações em seu aplicativo para ver os tempos de thread, o custo de renderização e o rastreamento de FPS.","tabOverview":"Visão geral","tabRenders":"Renderizações","tabInteractions":"Interações","tabMemory":"Memória","filterSlow":"Lento (>16ms)","filterCritical":"Crítico (>33ms)","searchPlaceholder":"Componente de pesquisa, interação...","avgRenderTime":"Média de renderização","totalRenders":"Total de renderizações","renderCost":"Custo de renderização","slowRenders":"Renderizações lentas","unnecessaryRenders":"Renderizações desperdiçadas","heapAllocated":"Pilha Alocada","heapLimit":"Limite de pilha","gcEvents":"Eventos do GC","leakRisk":"Risco de vazamento","lowRisk":"Baixo risco","mediumRisk":"Risco Médio","highRisk":"Alto risco","memoryTimeline":"Linha do tempo da memória","clearPerformance":"Dados claros de desempenho","clearConfirmation":"Tem certeza de que deseja limpar todos os dados de monitoramento de desempenho?","liveFpsDip":"Queda na taxa de quadros ao vivo ({{fps}} FPS)","liveFpsDipDetail":"Duração do quadro do thread principal estendida para {{duration}}ms durante a atualização da visualização.","liveFpsDipAdvice":"Execução pesada de JavaScript durante a apresentação de exibição atrasada na passagem de quadros.","yogaLayout":"Layout de caixa flexível de ioga","hermesGc":"Coleta de Lixo Hermes","jsEngine":"Motor JS","uiReconciler":"Reconciliador de IU","memoryHeap":"Pilha de memória","allLogs":"Todos os registros","jankySlow":"Janky / Lento","navigation":"Navegação","components":"Componentes","memoryGc":"Memória e GC","networkIo":"Rede e E/S","catJanky":"Janky","catNavigation":"Navegação","catRender":"Componentes","catMemory":"Memória","recording":"Gravação","paused":"Pausado","budgetHeadroom":"~{{time}}ms de margem livre ({{percent}}%)","jsExec":"Executivo JS: {{time}}ms","yogaLayoutTime":"Layout de ioga: {{time}}ms","uiRenderTime":"Renderização da IU: {{time}}ms","freeTime":"Grátis: {{time}}ms","heapAllocatedSub":"{{allocated}} MB alocados","hermesAot":"Hermes (AOT)","v8Jit":"V8 (JIT)","bytecodeCompiled":"Bytecode compilado","jitEngine":"Motor JIT","webkitEngine":"Mecanismo de Webkit","fabricJsi":"Tecido / JSI","paperBridge":"Papel / Ponte","directCppBindings":"Ligações diretas de C++","asyncJsonBridge":"Ponte JSON assíncrona","jsLag":"Atraso JS","jankRate":"Taxa de Jank","fpsAreaChartTitle":"Fluxo e instabilidade de FPS em tempo real (30s)","fpsAreaChartSub":"Alvo ao vivo de 60 FPS com medição contínua de variação de quadro","frameLatencyDistTitle":"Distribuição de latência de quadros","frameLatencyDistSub":"Proporção de frames entregues dentro do orçamento de 16,6 ms","optimalBucket":"<16,6 ms (60 FPS)","minorJankBucket":"16,7 - 33,3 ms (30-60 FPS)","noticeableJankBucket":"33,4 - 50,0 ms (20-30 FPS)","severeFreezeBucket":"> 50,0 ms (<20 FPS)","hermesHeapTrendTitle":"Memória e dinâmica de pilha Hermes","hermesHeapTrendSub":"Alocação ao vivo versus ciclos geracionais de eliminação de GC","live":"Ao vivo","msTotal":"{{duration}}ms total • {{time}}","droppedFrames":"{{count}} Caiu","zeroDropped":"0 Caiu","frameBudgetMs":"{{time}}ms / quadro ({{budget}}% do orçamento)","target60Fps":"Meta de 60 FPS • FPS real {{fps}}","frameDuration":"Duração do quadro","frameDurationVal":"{{time}} ms (orçamento de 16,67 ms)","frameUtilization":"Orçamento do quadro excedido","frameBudgetOk":"Espaço de orçamento do quadro","bottleneck":"Gargalo","jsBound":"Limite de thread JS","uiBound":"Limite de thread da interface do usuário","balanced":"Equilibrado","smooth":"Suave 60 FPS","minorJank":"Gagueira menor","noticeableJank":"Jank perceptível","severeFreeze":"Congelamento severo","screenContext":"Contexto da tela","profileReason1":"Adereços de função de seta embutida passados para filhos (onAddToCart={() => ...})","profileReason2":"Seletor Redux não memorizado criando nova referência de objeto em cada despacho","profileReason3":"Objeto de estilo dinâmico criado no corpo de renderização ({ marginTop: insets.top + 10 })","profileReason4":"FlatList faltando getItemLayout causando passagens de medição de layout assíncrono","profileReason5":"Função renderItem definida anonimamente dentro do corpo JSX","profileReason6":"Listar componentes do item não agrupados com React.memo","profileReason7":"Tela pai renderizada novamente no evento mostrar/ocultar teclado","profileReason8":"Referência de retorno de chamada instável passada para o botão de checkout","profileReason9":"O estado do valor TextInput aciona a nova renderização do pai a cada pressionamento de tecla sem debounce","profileReason10":"Passando objeto de filtro não memorizado ({categoria, minPrice}) para chips filhos","profileReason11":"Revalidação do cache de imagem do avatar na atualização da sessão de autenticação","fixUseCallbackTitle":"Envolva manipuladores de eventos em useCallback","fixUseCallbackDesc":"As funções embutidas recriam uma nova referência de memória em cada renderização, invalidando React.memo em componentes filhos.","fixCreateSelectorTitle":"Memoize Seletores Redux/Zustand com rasoEqual","fixCreateSelectorDesc":"O retorno de novas referências de objeto ou array dentro de useSelector força uma nova renderização automática em cada despacho de estado.","fixUseMemoStylesTitle":"Estilos de içar ou usar useMemo para dimensões dinâmicas","fixUseMemoStylesDesc":"Objetos de estilo embutido criam novas identidades de objeto em cada passagem de quadro, causando diferenças de reconciliação do Yoga Flexbox.","fixGetItemLayoutTitle":"Implementar getItemLayout para itens de altura fixa","fixGetItemLayoutDesc":"Fornecer getItemLayout permite que FlatList calcule imediatamente deslocamentos de rolagem e janelas virtuais sem medir visualizações de forma assíncrona.","fixReactMemoTitle":"Envolver itens da lista em React.memo","fixReactMemoDesc":"Impede que todos os mais de 50 itens da lista visíveis sejam renderizados novamente quando o estado da lista pai (por exemplo, posição de rolagem ou paginação) é atualizado.","fixComponentSplittingTitle":"Isolar estado de mudança rápida em componentes folha","fixComponentSplittingDesc":"Mova os ouvintes do teclado e o estado da animação modal para subcomponentes independentes para que o pai não seja renderizado novamente.","fixDebouncedInputTitle":"Elimine a entrada de pesquisa ou use o estado controlado local","fixDebouncedInputDesc":"Não propague o estado de pressionamento de tecla para o armazenamento global imediatamente. Use um debounce de 250 ms ou uma referência não controlada.","fixPrimitivePropsTitle":"Passe adereços primitivos em vez de objetos grandes","fixPrimitivePropsDesc":"Passar apenas a string CategoryId em vez do objeto de categoria inteiro evita novas renderizações quando outros metadados de categoria são atualizados.","fixUseRefForTrackingTitle":"Use useRef para valores de rastreamento não visuais","fixUseRefForTrackingDesc":"Não armazene temporizadores analíticos, deslocamentos de rolagem ou IDs de rastreamento em useState se eles não alterarem diretamente a árvore JSX.","highImpact":"Alto Impacto","mediumImpact":"Impacto Médio","bestPractice":"Melhores Práticas","beforeUseCallback":"// ❌ Before in <{{comp}} /> (recria a referência da função em cada renderização):","afterUseCallback":"// ✅ Depois (referência de retorno de chamada memorizada estável):","beforeCreateSelector":"// ❌ Antes em <{{comp}} /> (retorna nova referência de objeto a cada renderização):","afterCreateSelector":"// ✅ After (shallowEqual impede a nova renderização, a menos que os valores mudem):","beforeMemo":"// ❌ Antes (<{{comp}} />):","afterMemo":"// ✅ Depois (pula a renderização se os adereços forem superficialmente idênticos):","flatListOptimization":"// Otimização FlatList para <{{comp}} />","customComparator":"// Função de igualdade personalizada para <{{comp}} />","debounceInput":"// Debounce entrada dentro de <{{comp}} /> para evitar renderizações por pressionamento de tecla:","isolateState":"// Isole o estado de mudança rápida de <{{comp}} /> para a subárvore filha // ✅ Encapsule o layout animado dentro do componente isolado:","beforeUseRef":"// ❌ Antes em <{{comp}} /> (aciona a nova renderização de todo o componente na alteração do valor):","afterUseRef":"// ✅ Depois (preserva a referência mutável entre renderizações sem renderizar novamente):","fixInteractionManagerTitle":"Adiar lógica fora da tela com InteractionManager","fixInteractionManagerDesc":"O processamento pesado de dados durante as animações da tela elimina quadros. Adie até que a transição termine.","beforeInteractionManager":"// ❌ Antes em <{{comp}} /> (executa cálculos pesados enquanto a transição é animada): useEffect(() => { loadHeavyData(); }, []);","afterInteractionManager":"// ✅ Depois (espera até que a transição seja concluída sem problemas): useEffect(() => { const task = InteractionManager.runAfterInteractions(() => { loadHeavyData(); }); return () => task.cancel(); }, []);","fixFlatListWindowingTitle":"Ajustar propriedades de janelas FlatList","fixFlatListWindowingDesc":"Configure maxToRenderPerBatch e windowSize para minimizar as alocações de visualização virtualizada fora da tela.","beforeFlatListWindowing":"// Otimização de janelas FlatList para <{{comp}} />: <FlatList data={items} maxToRenderPerBatch={10} windowSize={5} inicialNumToRender={8} removeClippedSubviews={true} />","fixImageCachingTitle":"Otimize o cache e o downscaling de imagens","fixImageCachingDesc":"Use cabeçalhos de prioridade ou redução de escala resizeMode para evitar alocações massivas de bitmap no heap Hermes.","beforeImageCaching":"// Otimização de imagem para <{{comp}} />: <Image source={{ uri: imageUrl, cache: 'force-cache' }} resizeMode=\"cover\" fadeDuration={100} />","fixContextSplittingTitle":"Divida o contexto monolítico em provedores granulares","fixContextSplittingDesc":"Os componentes inscritos em um contexto grande são renderizados novamente mesmo quando as propriedades de estado não utilizadas são alteradas.","beforeContextSplitting":"// ❌ Antes de (<{{comp}} /> consumir todo o AppContext): const { user, cart, theme } = useAppContext();","afterContextSplitting":"// ✅ Depois (inscrever-se no contexto de fatia dedicado): const theme = useThemeContext();","fixInlineStylesHoistTitle":"Eleve estilos estáticos com StyleSheet.create","fixInlineStylesHoistDesc":"Objetos de estilo embutido alocam novas referências de memória em cada passagem de renderização, causando sobrecarga de reconciliação do Yoga.","beforeInlineStyles":"// ❌ Antes (<{{comp}} /> aloca objeto embutido em cada quadro): <View style={{ flex: 1, padding: 16, backgroundColor: '#ffffff' }} />","afterInlineStyles":"// ✅ Depois (referência de StyleSheet içada): const estilos = StyleSheet.create({ container: { flex: 1, padding: 16, backgroundColor: '#ffffff' } }); <Ver estilo={styles.container} />","transitionEventLabel":"Transição de tela: {{screen}}","transitionEventDetail":"Transição concluída em {{duration}}ms (TTI: {{tti}}ms).","transitionEventAdvice":"Interação concluída dentro do orçamento alvo de 60 FPS.","heavyTaskEventLabel":"Tarefa síncrona pesada: {{taskName}}","heavyTaskEventDetail":"Thread JS bloqueado por {{duration}}ms durante a execução da tarefa.","heavyTaskEventAdvice":"Considere descarregar para o web trabalhador, InteractionManager ou agrupar em lotes.","asyncOpEventLabel":"Operação assíncrona lenta: {{opName}}","asyncOpEventDetail":"A tarefa assíncrona levou {{duration}}ms para ser resolvida.","renderLoopWarningLabel":"Pico rápido de nova renderização em <{{comp}} />","renderLoopWarningDetail":"Componente renderizado novamente {{count}} vezes em 500 ms. Loop infinito potencial ou dependências instáveis.","renderLoopWarningAdvice":"Verifique as matrizes de dependência useEffect / useCallback para referências de objetos ou funções instáveis.","event1Label":"Pico do fio principal durante a navegação","event1Detail":"A transição de tela desencadeou uma reconciliação de layout pesada e montagens simultâneas de componentes.","event1Advice":"Adie ganchos fora da tela não críticos com InteractionManager.runAfterInteractions para preservar 60 FPS.","event2Label":"Passe de nova renderização de virtualização FlatList","event2Detail":"FlatList renderizou 25 itens simultaneamente na mudança de orientação sem componente de linha memorizado.","event2Advice":"Implemente getItemLayout e React.memo(LogCard) para pular passagens de comparação redundantes.","event3Label":"Transição deslizante modal nativa","event3Detail":"Transformação animada de driver nativo acelerada por hardware funcionando perfeitamente a 60 FPS sustentados.","event3Advice":"O uso de nativeDriver: true evita com êxito o bloqueio de thread JS durante animações.","event4Label":"Coleta de Lixo Geracional Hermes","event4Detail":"O ciclo de GC geracional menor eliminou objetos de heap efêmeros de 4,2 MB com pausa de thread inferior a um milissegundo.","event4Advice":"O coletor de lixo geracional Hermes está operando dentro dos limites ideais de menos de 5 ms.","gcCycleLabel":"Ciclo de coleta manual de lixo","gcCycleDetail":"Objetos heap não referenciados de ~{{amount}} MB recuperados e berçário de memória compactada.","gcCycleAdvice":"Uso de heap otimizado. Berçário geracional limpo.","liveFpsDropLabel":"Queda na taxa de quadros ao vivo ({{fps}} FPS)","liveFpsDropDetail":"Duração do quadro do thread principal estendida para {{duration}}ms durante a atualização da visualização.","liveFpsDropAdvice":"Execução pesada de JavaScript durante a apresentação de exibição atrasada na passagem de quadros.","event5Label":"Desserialização de carga útil JSON grande","event5Detail":"Sobrecarga de análise de resposta da API de 50 itens no adaptador de rede (sequência bruta JSON de 185 KB).","event5Advice":"Considere paginar cargas de API ou respostas de streaming se o tamanho da carga exceder 250 KB.","event6Label":"Decodificação e rasterização de bitmap de imagem","event6Detail":"Decodificação de retina raster para banner_dark.png (alocação de buffer raster de 1200×630px).","event6Advice":"Reduza as dimensões dos ativos ou converta para WebP para reduzir a latência de decodificação em aproximadamente 65%.","event7Label":"Invocação nativa do TurboModule JSI","event7Detail":"Transação de preferências AsyncStorage / MMKV lida em 32 chaves de configuração.","event7Advice":"As ligações diretas do C++ JSI Turbomodule ignoram completamente a sobrecarga de serialização da ponte JSON herdada.","event8Label":"Diferenciação da árvore de estado de ação Redux","event8Detail":"O passe de despacho Redux avaliou 6 fatias redutoras e emitiu notificação de estado em 4,8 ms.","event8Advice":"Imutabilidade da árvore de estado preservada. Seletores memorizados impediram renderizações redundantes de componentes.","event9Label":"Latência do evento de toque para renderização","event9Detail":"O respondedor de gestos despachou o evento de toque para o botão TabBar com resposta imediata de 60 FPS.","event9Advice":"A latência da resposta ao toque está dentro do orçamento de quadros padrão de 16,67 ms.","event10Label":"Passe de layout C++ Yoga Flexbox","event10Detail":"O recálculo do layout do cartão com várias guias da IU do Inspector e as métricas de fonte passam no mecanismo C++ Yoga.","event10Advice":"As restrições de layout do Flexbox são armazenadas em cache e calculadas de forma eficiente, sem penalidades de refluxo."},"bundle":{"mediaAuditorSuffix":"KB.","heroTitle":"Arquitetura de pacotes e ativos","heroSubtitle":"Detalhamento do tamanho em tempo real de todos os ativos, códigos e dependências","heroSubtitleLive":"Análise ao vivo de {{scriptUrl}}","liveAnalysisUnavailable":"Análise de pacote ao vivo indisponível","liveAnalysisUnavailableSub":"Não foi possível acessar o servidor de desenvolvimento Metro, portanto os valores são estimativas. Certifique-se de que o aplicativo seja executado em desenvolvimento via `npx react-native start` e que o Inspetor possa acessar sua porta Metro (8081, 8082, ...).","bundleOverviewJson":"Visão geral do pacote JSON","devBundleSize":"TAMANHO DO PACOTE DE DESENVOLVIMENTO","devBundleHint":"{{kb}} KB • {{modules}} módulos","trackedFilesHint":"{{count}} Arquivos rastreados","imagesMedia":"IMAGENS E MÍDIA","pctOfTrackedAssets":"{{pct}}% dos recursos rastreados","tsJsSource":"FONTE TS/JS","jsEngine":"MOTOR JS","bytecodeAot":"Bytecódigo AOT","standard":"Padrão","splitUpTitle":"Divisão do pacote de desenvolvimento","splitUpSub":"Pacote JS medido de {{mb}} MB • {{files}} arquivos • {{packages}} pacotes","splitUpJson":"JSON dividido","splitAppSource":"Código-fonte do aplicativo","splitNodeModules":"Dependências de node_modules","splitAssetsMedia":"Ativos e mídia","splitMetroOverhead":"Despesas gerais de desenvolvimento metropolitano","splitSize":"{{kb}} KB • {{mb}} MB","productionFootprint":"PEGADA DE PRODUÇÃO","productionValue":"iOS {{ios}} MB • Android {{android}} MB","productionDownload":"Download: iOS ~{{ios}} MB • AAB ~{{aab}} MB • APK ~{{apk}} MB","treemapTitle":"Mapa de árvore de proporção de ativos e tipos de arquivo","treemapSub":"Total de ~{{mb}} MB","treemapJson":"JSON do mapa de árvore de proporção","legendImages":"Imagens:","legendTs":"TS/TSX:","legendJs":"Bibliotecas JS:","legendFonts":"Fontes:","legendJson":"JSON:","categoryBreakdown":"Divisão de categorias","categoriesJson":"Detalhamento de categorias JSON","catImagesTitle":"Imagens e recursos de mídia","catImagesDesc":"Ativos PNG, WebP, SVG e JPG em pacote","catJsTitle":"Módulos de nó compilados e JS","catJsDesc":"Dependências de terceiros e pontes nativas","catFontsTitle":"Fontes personalizadas e glifos vetoriais","catFontsDesc":"Recursos de fonte em pacote","catTsTitle":"Componentes TypeScript e JSX","catTsDesc":"Componentes da tela do aplicativo, ganchos e lógica de negócios","catJsonTitle":"Dados e localizações JSON","catJsonDesc":"dicionários de tradução i18n e configurações estáticas","totalBundleAssets":"TOTAL DE ARQUIVOS DO PROJETO HOST","totalBundleValue":"{{kb}} KB (~{{mb}} MB)","totalFormula":"Soma dos arquivos de origem do host: {{images}} KB + {{js}} KB + {{fonts}} KB + {{ts}} KB + {{json}} KB = {{total}} KB ({{count}} itens)","prodIosApp":"Aplicativo iOS (.ipa)","prodAndroidAab":"Android AAB (.aab)","prodAndroidApk":"APK universal (.apk)","prodHeroTitleIos":"Pegada binária de produção iOS","prodHeroTitleAab":"Pacote de aplicativos do Google Play (.aab)","prodHeroTitleApk":"APK autônomo universal (.apk)","prodHeroSubIos":"Estimativas de instalação e download de celular over-the-air da App Store","prodHeroSubAab":"Arquitetura de APK dividida com entrega dinâmica otimizada por dispositivo","prodHeroSubApk":"Arquivo de instalação universal multi-ABI para sideload e distribuição direta","prodInstallSize":"TAMANHO DE INSTALAÇÃO","prodInstallHint":"Pegada não compactada no dispositivo","prodDownloadSize":"TAMANHO DE BAIXAR","prodDownloadHint":"Armazenar carga útil de transferência de rede","prodCompression":"COMPRESSÃO","prodCompressionHint":"Bytecode e proporção de ativos","prodFormatArch":"ARQUITETURA DE FORMATO","prodFormatHintIos":"Tempo de execução Apple ARM64","prodFormatHintAab":"Entrega dinâmica do Google Play","prodFormatHintApk":"Pacote universal de carregamento lateral","prodArchTitle":"Arquitetura de componentes binários","prodArchSub":"Bibliotecas nativas compiladas, bytecodes de tempo de execução, ativos e blocos de assinatura","prodTotalIos":"BINÁRIO TOTAL DO APLICATIVO IOS","prodTotalAab":"PACOTE TOTAL ANDROID AAB","prodTotalApk":"APK UNIVERSAL TOTAL","prodTotalFormula":"De {{devKb}} KB (~{{devMb}} MB • {{count}} total de ativos) pacote de origem de desenvolvimento → {{installMb}} MB binário nativo otimizado ({{pct}}% bytecode/compressão de ativos).","tabOverview":"Visão geral","tabProduction":"Produção ({{count}})","tabFiles":"Arquivos ({{count}})","tabPackages":"Pacotes ({{count}})","tabMedia":"Mídia ({{count}})","tabOptimizer":"Otimizador","analyzingTitle":"Analisando pacote de aplicativos host do Metro…","analyzingHint":"Buscando pacote e extraindo módulos reais","searchFilesPlaceholder":"Pesquise por nome de arquivo (.png, .tsx, .ttf, caminho)...","filteredFilesJson":"Arquivos Filtrados JSON","catAll":"Todos os arquivos","catUnused":"Não consumido (morto)","catConsumed":"Em uso/ativo","catImages":"Imagens e mídia","catTypescript":"TypeScript/TSX","catJavascript":"Módulos JS e Node","catFonts":"Fontes e glifos","catJson":"JSON e dados","treeView":"Vista em árvore","flatList":"Lista plana","expand":"Expandir","collapse":"Recolher","showingFilesOf":"Mostrando {{shown}} de {{total}} arquivos","filesOf":"{{count}} de {{total}} arquivos","notConsumed":"Não consumido","consumed":"Consumido","copyFileInfo":"Copiar informações de {{name}}","fileDetailsJson":"Detalhes do arquivo JSON","file":"arquivo","files":"arquivos","fileSizeKb":"{{size}} KB","fileSizeMb":"{{size}} MB","mbValue":"~{{size}} MB","kbMbValue":"{{kb}} KB ({{mb}} MB)","legendValue":"{{kb}} KB ({{pct}}%)","mediaSavings":"{{size}} KB","searchPackagesPlaceholder":"Pacote de pesquisa (react-native, axios, navigation)...","dependenciesJson":"Dependências JSON","showingDependencies":"Mostrando dependências {{count}}","versionPrefix":"v{{version}}","bundled":"empacotado","deprecated":"DEPRECADO","updateAvailable":"Atualização: v{{version}}","upToDate":"Atualizado","bundledBadge":"Empacotado","packageDetailsJson":"Detalhes do pacote JSON","direct":"Direto","transitive":"Transitivo","minified":"~{{size}} KB reduzidos","npmLink":"npm ↗","dependenciesCount":"{{count}} Dependências","mediaAuditorTitle":"Auditor de compressão de mídia","mediaAssetsJson":"JSON de ativos de mídia","mediaAuditorPrefix":"Imagens e fontes constituem","mediaAuditorMid":"do total de ativos (~{{kb}} KB). A conversão de PNGs em WebP e subconjuntos de fontes pode reduzir o tamanho em até","mediaAssetsList":"Recursos de mídia e fontes ({{count}} itens)","mediaItemJson":"Item de mídia JSON","mediaAndFonts":"{{count}} Mídia e fontes","optimizerTitle":"Lista de verificação de otimização do pacote React Native","optimizationChecklist":"Lista de verificação de otimização","optTip1Title":"Converter PNGs pesados em WebP/SVGs","optTip1Desc":"As imagens representam mais de 40% do tamanho final do download do aplicativo. A conversão de PNGs raster 2x/3x em WebP economiza 60-70% do tamanho sem perda visível de fidelidade.","optTip2Title":"Ativar mecanismo de bytecode Hermes","optTip2DescActive":"Hermes está ativo! JavaScript é compilado em bytecode otimizado Ahead-Of-Time.","optTip2DescInactive":"Hermes está desativado. Habilite o hermes na configuração do seu aplicativo para uma carga útil cerca de 40% menor e inicialização instantânea do TTI.","optTip3Title":"Subconjunto de fontes e redução de peso","optTip3Desc":"Inclua apenas as espessuras das fontes que você usa ativamente (por exemplo, Regular e Negrito). Remova intervalos de glifos não utilizados para economizar mais de 100 KB por arquivo de fonte.","optTip4Title":"Importações de caminho seletivo (agitação de árvore)","optTip4Desc":"Importe de subcaminhos específicos (por exemplo, lodash/get ou conjuntos específicos de ícones vetoriais) em vez de importar grandes pacotes monolíticos.","optTip5Title":"Carregamento lento da tela","optTip5Desc":"Carregamento lento de telas secundárias e planilhas modais pesadas usando importações dinâmicas e InteractionManager para reduzir a avaliação inicial do pacote.","highImpact":"Alto Impacto","mediumImpact":"Impacto Médio","bestPractice":"Melhores Práticas","actionRequired":"Ação necessária","active":"Ativo","tipDetails":"Detalhes da dica","iosComp1Name":"Estruturas e pods dinâmicos","iosComp1Desc":"Estruturas de pod nativas React, Hermes e {{count}}.","iosComp1Advice":"Garanta a remoção de código morto (STRIP_INSTALLED_PRODUCT = YES) no modo Release.","iosComp2Name":"Executável Mach-O (ARM64)","iosComp2Desc":"Host App compilou pontes nativas Swift/Objective-C e C++.","iosComp2Advice":"Habilite LTO monolítico (Link-Time Optimization) no esquema Xcode.","iosComp3Name":"Catálogo de ativos (Assets.car)","iosComp3Desc":"AppIcons, telas iniciais, glifos vetoriais e fontes agrupadas.","iosComp3Advice":"Compile imagens no Xcode Asset Catalog para redução automática de aplicativos.","iosComp4Name":"Bytecode Hermes (main.jsbundle)","iosComp4Desc":"O JavaScript do aplicativo host compilou AOT em bytecode Hermes (arquivos {{count}}).","iosComp4Advice":"O bytecode AOT é carregado com latência de compilação de 0 ms na inicialização do dispositivo.","iosComp5Name":"Metadados e assinaturas de código","iosComp5Desc":"_CodeSignature, Info.plist e bloco de direitos.","iosComp5Advice":"Assinatura de código Apple padrão e assinatura de provisionamento.","andComp1Name":"Bibliotecas C++ nativas (.so)","andComp1Desc":"libhermes.so, libfbjni.so e {{count}} adaptadores nativos C++.","andComp1Advice":"Implante com Android App Bundle (.aab) para fornecer APKs divididos por ABI.","andComp2Name":"DEX compilado (classes.dex)","andComp2Desc":"Tempo de execução Java e Kotlin compilado, pontes AndroidX e React Native.","andComp2Advice":"Habilite a redução R8/ProGuard (minifyEnabled true) em build.gradle.","andComp3Name":"Recursos Android (res/)","andComp3Desc":"Drawables, XMLs vetoriais, densidades mipmap, resources.arsc, fontes.","andComp3Advice":"Use WebP e VectorDrawables para evitar duplicação de ativos de múltiplas densidades.","andComp4Name":"Bytecode Hermes (Android)","andComp4Desc":"JavaScript do aplicativo host compilado em bytecode Hermes (arquivos {{count}}).","andComp4Advice":"Bytecode pré-compilado durante a tarefa gradle assembleRelease.","andComp5Name":"Manifesto e Assinaturas (META-INF)","andComp5Desc":"AndroidManifest.xml, certificados de assinatura, blocos de esquema de assinatura APK v2/v3/v4.","andComp5Advice":"Assinatura oficial e bloco de assinatura do Google Play.","apkComp1Name":"Bibliotecas Multi-ABI C++ (.so)","apkComp1Desc":"Bibliotecas compartilhadas universais de multiarquitetura (.so) agrupadas para sideload direto.","apkComp1Advice":"Use o Android App Bundle (.aab) para Google Play para reduzir o tamanho da instalação em 60%.","apkComp2Name":"Bytecode DEX compilado (classes.dex)","apkComp2Desc":"Tempo de execução Java e Kotlin compilado, bibliotecas AndroidX e módulos de ponte nativos.","apkComp2Advice":"Habilite a redução R8/ProGuard (minifyEnabled true) e ShrinkResources true.","apkComp3Name":"Recursos e ativos do Android (res/)","apkComp3Desc":"Drawables, XMLs vetoriais, densidades mipmap, resources.arsc, fontes.","apkComp3Advice":"Use WebP e VectorDrawables para evitar duplicação de ativos de múltiplas densidades.","apkComp4Name":"Pacote Hermes Bytecode (Android)","apkComp4Desc":"JavaScript do aplicativo host compilado em bytecode Hermes (arquivos {{count}}).","apkComp4Advice":"Bytecode pré-compilado durante a tarefa gradle assembleRelease.","apkComp5Name":"Manifesto e Assinaturas (META-INF)","apkComp5Desc":"AndroidManifest.xml, certificados de assinatura, JAR e esquema de assinatura de APK v2/v3/v4.","apkComp5Advice":"Sideload corporativo e bloco de assinatura de instalação direta."},"errors":{"appTag":"APP","title":"Algo deu errado","message":"Ocorreu um erro inesperado.","retry":"Tente novamente","reset":"Redefinir","close":"Fechar","errorReport":"Relatório de erros","modalTitle":"Inspetor caiu","modalMessage":"O inspetor encontrou um erro inesperado. Você pode redefini-lo abaixo.","inlineTitle":"Erro do inspetor","inlineMessage":"Ocorreu um erro inesperado dentro do inspetor.","networkError":"Falha na solicitação de rede","crashIntercepted":"CRASH INTERCEPTADO","protected":"PROTEGIDO","rootCauseTitle":"Diagnóstico de causa raiz","rootCauseSubtitle":"O inspetor detectou este erro de tempo de execução para evitar o encerramento do aplicativo","exactLocation":"LOCALIZAÇÃO EXATA DA FONTE","file":"Arquivo:","lineCol":"Linha/Coluna:","lineColVal":"Linha {{line}}, Coluna {{col}}","function":"Função:","callStack":"QUADROS DE PILHA DE CHAMADA","framesCount":"{{count}} quadros","tryAgainRecover":"Tente novamente/recupere","copyDiagnostics":"Copiar diagnóstico","copy":"Copiar"},"jsonViewer":{"pretty":"Estruturado","raw":"Bruto","table":"Tabela","emptyObject":"Objeto vazio","emptyPayload":"Carga vazia","emptyTable":"Objeto vazio","fold":"Recolher","expand":"Expandir","min":"Min","indent":"Indentar","wrap":"Quebrar linha","copied":"Copiado!","copy":"Copiar JSON","key":"Chave","value":"Valor","lines":"linhas","line":"linha"},"crash":{"filterAll":"All","frameApp":"APP","frameLib":"LIB","jsc":"JSC","filterPlatformIos":"iOS","title":"Acidente","searchPlaceholder":"Erro de pesquisa, mensagem, pilha...","searchDetailPlaceholder":"Pesquisar em trace ou JSON...","statCrashes":"Falhas","statFatal":"Fatal","statJsErrors":"Erros JS","statPromises":"Promessas","statRender":"Renderizar","statNative":"Nativo","filterFatal":"Fatal","filterJsError":"Erro JS","filterPromise":"Promessa","filterRender":"Renderizar","filterNative":"Nativo","fatalBadge":"FATAL","handledBadge":"MANIPULADO","fatalCrash":"ACIDENTE FATAL","handledException":"EXCEÇÃO MANIPULADA","unknownException":"Exceção desconhecida","report":"Relatório","inspect":"Inspecionar","copyReport":"Copiar relatório","copied":"Copiado","clearTitle":"Limpar histórico de falhas","clearMessage":"Tem certeza de que deseja limpar todos os registros de falhas interceptadas?","clearCancel":"Cancelar","clearConfirm":"Limpar tudo","emptyTitle":"Zero falhas detectadas","emptySubtitle":"A proteção global contra acidentes está ativa. Todas as exceções nativas e JavaScript são interceptadas e protegidas.","emptySearchSubtitle":"Nenhuma entrada de falha correspondeu à sua consulta de pesquisa.","tabStack":"Pilha ({{count}})","tabDiagnostics":"Diagnóstico","tabTrail":"Trilha ({{count}})","tabRawJson":"JSON bruto","appFrames":"Quadros de aplicativos ({{count}})","allFrames":"Todos os quadros ({{count}})","anonymous":"<anônimo>","noStackTrace":"Nenhum rastreamento de pilha capturado para este evento.","deviceEnvironment":"Dispositivo e ambiente","platform":"Plataforma","osVersion":"Versão do sistema operacional","reactNative":"Reagir nativo","jsEngine":"Motor JS","hermesEngine":"Motor Hermes","architecture":"Arquitetura","fabricNewArch":"Tecido (Novo Arco)","paperLegacy":"Papel (Legado)","appState":"Estado do aplicativo","jsHeapMemory":"Memória de pilha JS","usedHeap":"Pilha usada","totalHeap":"Pilha total","noBreadcrumbs":"Nenhum evento de navegação registrado antes desta falha.","simNativeMessage":"Exceção fatal nativa simulada","simPromiseMessage":"Simulação de rejeição de promessa não tratada","simRenderMessage":"Erro de renderização do componente React simulado","simJsMessage":"Exceção JavaScript simulada","reportTitle":"RELATÓRIO DE DIAGNÓSTICO DE CRASH","reportErrorName":"Nome do erro:","reportMessage":"Mensagem:","reportType":"Tipo:","reportFatalYes":"SIM (Fatal)","reportFatalNo":"NÃO (Capturado/Manuseado)","reportFatal":"Fatal:","reportTimestamp":"Carimbo de data e hora:","reportUptime":"Tempo de atividade do aplicativo:","reportUptimeValue":"{{seconds}} segundos","reportPlatform":"Plataforma:","reportReactNative":"Reagir nativo:","reportHermes":"Hermes:","reportEnabled":"Habilitado","reportDisabled":"Desativado","reportArchitecture":"Arquitetura:","reportFabricNew":"Tecido (Novo)","reportPaperLegacy":"Papel (Legado)","reportScreenSize":"Tamanho da tela:","reportAppState":"Estado do aplicativo:","reportJsMemory":"Memória JS:","reportStackTrace":"RASTREIO DE PILHA:","reportNoStackTrace":"Nenhum rastreamento de pilha disponível","reportComponentHierarchy":"HIERARQUIA DE COMPONENTES:","reportRecentBreadcrumbs":"PÃO RECENTES:","mdReportTitle":"🚨 Relatório de falhas: {{name}}","mdStackTrace":"📦 Rastreamento de pilha","mdComponentHierarchy":"🌲 Hierarquia de componentes","mdRecentBreadcrumbs":"👣 Pão ralado recente","mdSeverityFatal":"FATAL","mdSeverityHandled":"MANIPULADO","breadcrumbNavigation":"Navegou de \"{{from}}\" para \"{{to}}\"","breadcrumbAction":"Ação: {{actionType}}","unknown":"Desconhecido","runtimeException":"Exceção de tempo de execução","logFatalCrash":"Acidente Fatal","logUnhandledError":"Erro não tratado","errorNameFatal":"Erro fatal","errorNameUnhandled":"Exceção não tratada","nativeCrashTitle":"Falha nativa","nativeUncaughtException":"Exceção nativa não capturada","nativeException":"Exceção nativa","unhandledPromiseRejection":"Rejeição de promessa não tratada","filterTitle":"Filtros de falhas","filterSubtitle":"Diagnósticos e Relatórios","filterReset":"Redefinir tudo","filterTypeSection":"TIPO DE ACIDENTE","filterTypeAll":"Todos os tipos","filterTimeSection":"HORIZONTE DE TEMPO","filterTimeAll":"Todos os tempos","filterTime15m":"Últimos 15 minutos","filterTime1h":"Última 1 hora","filterTime24h":"Últimas 24 horas","filterTime7d":"Últimos 7 dias","filterPlatformSection":"PLATAFORMA","filterPlatformAll":"Todas as plataformas","filterPlatformAndroid":"Android","filterEngineSection":"MOTOR JS","filterEngineAll":"Todos os motores","filterEngineHermes":"Hermes","filterSortSection":"ORDEM DE CLASSIFICAÇÃO","filterSortNewest":"Mais recente primeiro (padrão)","filterSortOldest":"Mais antigo primeiro","filterDiscard":"Descartar","filterApply":"Aplicar ({{count}} falhas)","frameCopy":"Copiar","frameCopied":"Copiado","componentHierarchy":"Hierarquia de Componentes"},"push":{"foreground":"Primeiro plano","background":"Segundo plano","quit":"Encerrado","title":"Notificações push","preview":"Visualização","payload":"Carga personalizada","deliveryMetadata":"Metadados de entrega e mensagens","rawPayload":"Carga Bruta","link":"Ligação","appNotification":"Notificação de aplicativo","now":"agora","domainFields":"Campos Específicos do Domínio","searchPlaceholder":"Pesquisar notificações push...","noNotifications":"Sem notificações push","noNotificationsDesc":"Firebase FCM capturado, Apple APNs, OneSignal e eventos push personalizados aparecerão aqui em tempo real.","filterTitle":"Filtrar notificações push","clearTitle":"Limpar histórico de push","clearMessage":"Tem certeza de que deseja limpar todos os registros de notificação push?","cleared":"Histórico de notificações push limpo"},"about":{"title":"Sobre e especificações","subtitle":"Informações do pacote, especificações de execução e diagnóstico","heroTitle":"Inspetor integrado","heroDescription":"A ferramenta tudo-em-um de depuração, registro e QA no dispositivo para aplicativos React Native e Expo.","features":"O QUE O INSPETOR FAZ","githubSub":"Estrela e código-fonte","npmRegistry":"Registro NPM","npmRegistrySub":"Atualizações do pacote","documentation":"Documentação","documentationSub":"Guia de integração","footerLicense":"React Native In-App Inspector · Licença MIT","footerTagline":"Ferramenta de depuração sem configuração","upToDate":"Atualizado","versionAvailable":"v{{version}} Disponível","copyUpgradeCommand":"Copiar comando de atualização (v{{version}})","copiedUpgradeCommand":"Comando de atualização npm copiado!","appInformation":"INFORMAÇÕES DO APLICATIVO","appName":"Nome do aplicativo","packageIdentifier":"Identificador de pacote","appVersion":"Versão do aplicativo","environment":"Meio Ambiente","developmentDebug":"Desenvolvimento (depuração)","productionRelease":"Produção (Lançamento)","platform":"Plataforma","appleIos":"Apple iOS","googleAndroid":"Android","featureNetwork":"Monitor de tráfego de rede","featureNetworkDesc":"Inspecione solicitações de API HTTP e HTTPS, respostas, cabeçalhos e latência do servidor com gráficos de tempo em cascata.","featureConsole":"Registrador de console","featureConsoleDesc":"Visualize logs, avisos e erros do console em tempo real com origens de arquivos de origem e rastreamentos de pilha formatados.","featureAnalytics":"Telemetria analítica","featureAnalyticsDesc":"Rastreie eventos do Firebase e de análise personalizada, visualizações de tela e propriedades do usuário ao vivo no dispositivo.","featureRedux":"Estado e ações redux","featureReduxDesc":"Inspecione ações despachadas, cargas úteis e diferenças de árvores de estado sem conectar ferramentas complementares de desktop.","featureCapture":"Captura de tela e vídeo","featureCaptureDesc":"Faça capturas de tela e grave sessões de teste para compartilhar instantaneamente com as equipes de controle de qualidade e engenharia.","featureCrash":"Apanhador de falhas e diagnóstico","featureCrashDesc":"Protege contra falhas nativas e fornece métricas de integridade do dispositivo, incluindo RAM, bateria e armazenamento.","github":"GitHub","reportIssue":"Reportar problema","reportIssueSub":"Ajuda e suporte","releaseNotes":"Notas de versão","releaseNotesSub":"O que há de novo","copyInstall":"Copiar instalação","copyInstallSub":"comando npm/fio","copiedInstallCommand":"Comando de instalação do pacote copiado!"},"codeSnippet":{"copy":"Copiar","copied":"Copiado!","matchCount":"{{count}} correspondência","matchCount_plural":"{{count}} corresponde","noMatches":"Nenhuma correspondência","searchPlaceholder":"Pesquisar...","prevMatch":"Partida anterior","nextMatch":"Próxima partida","clearSearch":"Limpar pesquisa"},"diffViewer":{"added":"adicionado","removed":"removido","changed":"mudou","noDiff":"Sem diferenças","emptyTitle":"Nenhuma diferença encontrada","emptySubtitle":"As duas cargas úteis são idênticas."},"logCard":{"seeMore":"Mostrar mais","seeLess":"Mostrar menos","copy":"Copiar","copied":"Copiado!"},"emptyState":{"title":"Nada aqui ainda","subtitle":"Os dados aparecerão aqui conforme você usa o aplicativo.","reload":"Recarregar"},"errorBoundary":{"title":"Algo deu errado","message":"Ocorreu um erro inesperado.","retry":"Tente novamente","reset":"Redefinir","close":"Fechar"},"mediaGallery":{"all":"Todos ({{count}})","photos":"Fotos","videos":"Vídeos","gifs":"GIFs","purge":"Eliminar ({{size}})","purgeTitle":"Limpar todas as mídias","purgeMessage":"Isso excluirá permanentemente todas as {{count}} capturas de tela, vídeos e GIFs ({{size}}). Continuar?","noMediaTitle":"Nenhuma mídia capturada","noMediaDesc":"Use o botão Gravar foto ou vídeo na barra de ferramentas para capturar capturas de tela de todo o aplicativo, gravações de tela ou GIFs.","deleted":"Item de mídia excluído","allPurged":"Todas as mídias capturadas foram eliminadas","converting":"Convertendo...","convertToGif":"Converter para GIF","playVideo":"Reproduzir vídeo","playError":"Não é possível reproduzir o vídeo","convertedSuccess":"Convertido para GIF animado com sucesso!","convertFailed":"Falha ao converter para GIF","share":"Compartilhar","copyUri":"Copiar URI","uriCopied":"URI do arquivo copiado para a área de transferência","delete":"Excluir","deleteSelected":"Excluir ({{count}})","deleteSelectedTitle":"Excluir selecionado","deleteSelectedMessage":"Tem certeza de que deseja excluir {{count}} itens de mídia selecionados?","deletedCount":"{{count}} itens de mídia excluídos","deleteTitle":"Excluir mídia","deleteMessage":"Tem certeza de que deseja excluir {{filename}}?","shareUnavailable":"Compartilhamento não disponível neste dispositivo","showingResults":"Mostrando {{count}} resultados","showingFilteredResults":"Mostrando {{count}} de {{total}} resultados","selectedOfResults":"Selecionado {{selected}} de {{total}} resultados","minimize":"Minimizar","expand":"Expandir tela cheia","collapse":"Sair da tela cheia","speed":"Velocidade","loop":"Ciclo","pause":"Pausa","play":"Jogar"},"socket":{"title":"WebSocket","messages":"Mensagens","overview":"Visão geral","params":"Parâmetros","rawAndCode":"Bruto e Código","totalFrames":"QUADROS TOTAIS","sentRecv":"ENVIADO / RECV","dataTransferred":"DADOS TRANSFERIDOS","searchFramesPlaceholder":"Pesquisar cargas úteis de quadros ou nomes de eventos...","sent":"Enviado","recv":"Recebido","emptyFrames":"Nenhum quadro capturado para esta conexão","searchSocketsPlaceholder":"Pesquisar URL ou mensagens do WebSocket...","noSockets":"Sem conexões WebSocket","noSocketsDesc":"As conexões WebSocket, Socket.IO e WSS capturadas aparecerão aqui em tempo real.","noMatching":"Nenhum WebSockets correspondente","adjustSearchFilter":"Tente ajustar sua consulta de pesquisa ou filtros.","simulateTraffic":"Simular tráfego WebSocket de demonstração","clearTitle":"Limpar todos os registros do WebSocket","clearMessage":"Tem certeza de que deseja excluir todas as sessões WebSocket gravadas?","cleared":"Todos os logs do WebSocket foram apagados","deleteSelectedTitle":"Excluir WebSockets selecionados","deleteSelectedMsg":"Tem certeza de que deseja excluir {{count}} registros WebSocket selecionados?","filterTitle":"Filtrar conexões WebSocket","showingConnections":"Mostrando conexões {{count}}","showingFilteredConnections":"Mostrando {{filtered}} de {{total}} conexões","deletedCount":"Registros do WebSocket {{count}} excluídos","copiedUrls":"{{count}} URLs copiados para a área de transferência","webSocketTraffic":"Tráfego WebSocket ({{count}} conexões)"},"debugging":{"title":"Depuração e ferramentas","buildSuccess":"Versão do APK gerada com sucesso!","buildFailed":"Falha na compilação: {{error}}","buildCancelled":"Build cancelada pelo usuário"}}