react-native-inapp-inspector 2.5.11 → 2.5.12

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 (333) hide show
  1. package/README.ar.md +0 -8
  2. package/README.de.md +0 -8
  3. package/README.es.md +0 -8
  4. package/README.fr.md +0 -8
  5. package/README.hi.md +0 -8
  6. package/README.ja.md +0 -8
  7. package/README.ko.md +0 -8
  8. package/README.md +54 -26
  9. package/README.pt-BR.md +0 -8
  10. package/README.ru.md +0 -8
  11. package/README.zh-CN.md +0 -8
  12. package/dist/commonjs/components/ConsoleLogCard.js +32 -26
  13. package/dist/commonjs/components/Inspector/AboutModal.js +1 -4
  14. package/dist/commonjs/components/Inspector/ConsoleTab.js +19 -14
  15. package/dist/commonjs/components/Inspector/InspectorHeader.js +6 -6
  16. package/dist/commonjs/components/Inspector/MainScreen.js +9 -6
  17. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +187 -90
  18. package/dist/commonjs/components/Inspector/NetworkDetail.js +11 -8
  19. package/dist/commonjs/components/Inspector/NetworkTab.js +31 -32
  20. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +2 -0
  21. package/dist/commonjs/components/Inspector/PerformanceTab.js +652 -0
  22. package/dist/commonjs/components/Inspector/SettingsPanel.js +256 -249
  23. package/dist/commonjs/components/Inspector/TabBar.js +17 -16
  24. package/dist/commonjs/components/LogCard.js +11 -8
  25. package/dist/commonjs/components/NetworkIcons.d.ts +6 -0
  26. package/dist/commonjs/components/NetworkIcons.js +35 -3
  27. package/dist/commonjs/constants/index.d.ts +1 -0
  28. package/dist/commonjs/constants/index.js +1 -1
  29. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  30. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  31. package/dist/commonjs/constants/version.d.ts +1 -1
  32. package/dist/commonjs/constants/version.js +1 -1
  33. package/dist/commonjs/helpers/index.d.ts +3 -0
  34. package/dist/commonjs/helpers/index.js +8 -6
  35. package/dist/commonjs/helpers/performanceSampler.d.ts +88 -0
  36. package/dist/commonjs/helpers/performanceSampler.js +1 -0
  37. package/dist/commonjs/helpers/remoteConfig.d.ts +0 -2
  38. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  39. package/dist/commonjs/i18n/locales/ar.json +1 -1
  40. package/dist/commonjs/i18n/locales/bn.json +1 -1
  41. package/dist/commonjs/i18n/locales/de.json +1 -1
  42. package/dist/commonjs/i18n/locales/en.json +1 -1
  43. package/dist/commonjs/i18n/locales/es.json +1 -1
  44. package/dist/commonjs/i18n/locales/fr.json +1 -1
  45. package/dist/commonjs/i18n/locales/gu.json +1 -1
  46. package/dist/commonjs/i18n/locales/hi.json +1 -1
  47. package/dist/commonjs/i18n/locales/id.json +1 -1
  48. package/dist/commonjs/i18n/locales/it.json +1 -1
  49. package/dist/commonjs/i18n/locales/ja.json +1 -1
  50. package/dist/commonjs/i18n/locales/kn.json +1 -1
  51. package/dist/commonjs/i18n/locales/ko.json +1 -1
  52. package/dist/commonjs/i18n/locales/ml.json +1 -1
  53. package/dist/commonjs/i18n/locales/mr.json +1 -1
  54. package/dist/commonjs/i18n/locales/nl.json +1 -1
  55. package/dist/commonjs/i18n/locales/pa.json +1 -1
  56. package/dist/commonjs/i18n/locales/pl.json +1 -1
  57. package/dist/commonjs/i18n/locales/pt.json +1 -1
  58. package/dist/commonjs/i18n/locales/ru.json +1 -1
  59. package/dist/commonjs/i18n/locales/ta.json +1 -1
  60. package/dist/commonjs/i18n/locales/te.json +1 -1
  61. package/dist/commonjs/i18n/locales/tr.json +1 -1
  62. package/dist/commonjs/i18n/locales/vi.json +1 -1
  63. package/dist/commonjs/i18n/locales/zh.json +1 -1
  64. package/dist/commonjs/index.d.ts +3 -3
  65. package/dist/commonjs/index.js +3 -3
  66. package/dist/commonjs/styles/index.js +1 -1
  67. package/dist/commonjs/types/enums.d.ts +1 -0
  68. package/dist/commonjs/types/enums.js +1 -1
  69. package/dist/commonjs/types/interfaces.d.ts +8 -0
  70. package/dist/esm/components/ConsoleLogCard.js +67 -61
  71. package/dist/esm/components/Inspector/AboutModal.js +14 -17
  72. package/dist/esm/components/Inspector/ConsoleTab.js +33 -28
  73. package/dist/esm/components/Inspector/InspectorHeader.js +6 -6
  74. package/dist/esm/components/Inspector/MainScreen.js +61 -58
  75. package/dist/esm/components/Inspector/MediaGalleryTab.js +254 -157
  76. package/dist/esm/components/Inspector/NetworkDetail.js +62 -59
  77. package/dist/esm/components/Inspector/NetworkTab.js +101 -102
  78. package/dist/esm/components/Inspector/PerformanceTab.d.ts +2 -0
  79. package/dist/esm/components/Inspector/PerformanceTab.js +652 -0
  80. package/dist/esm/components/Inspector/SettingsPanel.js +299 -292
  81. package/dist/esm/components/Inspector/TabBar.js +4 -3
  82. package/dist/esm/components/LogCard.js +37 -34
  83. package/dist/esm/components/NetworkIcons.d.ts +6 -0
  84. package/dist/esm/components/NetworkIcons.js +32 -0
  85. package/dist/esm/constants/index.d.ts +1 -0
  86. package/dist/esm/constants/index.js +1 -1
  87. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  88. package/dist/esm/constants/telemetryConfig.js +1 -1
  89. package/dist/esm/constants/version.d.ts +1 -1
  90. package/dist/esm/constants/version.js +1 -1
  91. package/dist/esm/helpers/index.d.ts +3 -0
  92. package/dist/esm/helpers/index.js +8 -6
  93. package/dist/esm/helpers/performanceSampler.d.ts +88 -0
  94. package/dist/esm/helpers/performanceSampler.js +1 -0
  95. package/dist/esm/helpers/remoteConfig.d.ts +0 -2
  96. package/dist/esm/helpers/remoteConfig.js +1 -1
  97. package/dist/esm/i18n/locales/ar.json +1 -1
  98. package/dist/esm/i18n/locales/bn.json +1 -1
  99. package/dist/esm/i18n/locales/de.json +1 -1
  100. package/dist/esm/i18n/locales/en.json +1 -1
  101. package/dist/esm/i18n/locales/es.json +1 -1
  102. package/dist/esm/i18n/locales/fr.json +1 -1
  103. package/dist/esm/i18n/locales/gu.json +1 -1
  104. package/dist/esm/i18n/locales/hi.json +1 -1
  105. package/dist/esm/i18n/locales/id.json +1 -1
  106. package/dist/esm/i18n/locales/it.json +1 -1
  107. package/dist/esm/i18n/locales/ja.json +1 -1
  108. package/dist/esm/i18n/locales/kn.json +1 -1
  109. package/dist/esm/i18n/locales/ko.json +1 -1
  110. package/dist/esm/i18n/locales/ml.json +1 -1
  111. package/dist/esm/i18n/locales/mr.json +1 -1
  112. package/dist/esm/i18n/locales/nl.json +1 -1
  113. package/dist/esm/i18n/locales/pa.json +1 -1
  114. package/dist/esm/i18n/locales/pl.json +1 -1
  115. package/dist/esm/i18n/locales/pt.json +1 -1
  116. package/dist/esm/i18n/locales/ru.json +1 -1
  117. package/dist/esm/i18n/locales/ta.json +1 -1
  118. package/dist/esm/i18n/locales/te.json +1 -1
  119. package/dist/esm/i18n/locales/tr.json +1 -1
  120. package/dist/esm/i18n/locales/vi.json +1 -1
  121. package/dist/esm/i18n/locales/zh.json +1 -1
  122. package/dist/esm/index.d.ts +3 -3
  123. package/dist/esm/index.js +8 -8
  124. package/dist/esm/styles/index.js +1 -1
  125. package/dist/esm/types/enums.d.ts +1 -0
  126. package/dist/esm/types/enums.js +1 -1
  127. package/dist/esm/types/interfaces.d.ts +8 -0
  128. package/package.json +24 -1
  129. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  130. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  131. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  132. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  133. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  134. package/android/.gradle/8.9/gc.properties +0 -0
  135. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  136. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  137. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  138. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  139. package/android/.gradle/9.2.0/gc.properties +0 -0
  140. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  141. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  142. package/android/.gradle/vcs-1/gc.properties +0 -0
  143. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  144. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/results.bin +0 -1
  145. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
  146. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
  147. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
  148. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
  149. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
  150. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$activityEventListener$1.dex +0 -0
  151. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
  152. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.dex +0 -0
  153. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
  154. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.dex +0 -0
  155. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
  156. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
  157. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  158. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/results.bin +0 -1
  159. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/transformed/classes/classes_dex/classes.dex +0 -0
  160. package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +0 -10
  161. package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +0 -160
  162. package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
  163. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +0 -212
  164. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +0 -31
  165. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +0 -22
  166. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +0 -24
  167. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +0 -16
  168. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +0 -17
  169. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +0 -19
  170. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +0 -18
  171. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +0 -300
  172. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +0 -17
  173. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +0 -23
  174. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +0 -16
  175. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +0 -20
  176. package/android/build/generated/source/codegen/schema.json +0 -1
  177. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
  178. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
  179. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
  180. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
  181. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  182. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  183. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  184. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  185. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  186. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  187. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  188. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  189. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  190. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
  191. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  192. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
  193. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
  194. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
  195. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
  196. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
  197. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  198. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
  199. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  200. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  201. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  202. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  203. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  204. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  205. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.class +0 -0
  206. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  207. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  208. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
  209. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  210. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  211. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
  212. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  213. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  214. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  215. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  216. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  217. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  218. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  219. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  220. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  221. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  222. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  223. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  224. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  225. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  226. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  227. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  228. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  229. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  230. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  231. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  232. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  233. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  234. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  235. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  236. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  237. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  238. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  239. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  240. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  241. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  242. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  243. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  244. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  245. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  246. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  247. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  248. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  249. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  250. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  251. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  252. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  253. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  254. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  255. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  256. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  257. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  258. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  259. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  260. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  261. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  262. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  263. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  264. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  265. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  266. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  267. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  268. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  269. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  270. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  271. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  272. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  273. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  274. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  275. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  276. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  277. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  278. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  279. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  280. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  281. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  282. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  283. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  284. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  285. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  286. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  287. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  288. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  289. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  290. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  291. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  292. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  293. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  294. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  295. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  296. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  297. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  298. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  299. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  300. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -17
  301. package/android/build/reports/problems/problems-report.html +0 -659
  302. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  303. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  304. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  305. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  306. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  307. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  308. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  309. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.class +0 -0
  310. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  311. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  312. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
  313. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  314. package/dist/commonjs/a11y.d.ts +0 -2
  315. package/dist/commonjs/a11y.js +0 -1
  316. package/dist/commonjs/components/Inspector/A11yTab.d.ts +0 -2
  317. package/dist/commonjs/components/Inspector/A11yTab.js +0 -268
  318. package/dist/commonjs/components/Inspector/DeveloperSponsorCard.d.ts +0 -9
  319. package/dist/commonjs/components/Inspector/DeveloperSponsorCard.js +0 -52
  320. package/dist/commonjs/customHooks/a11yAdapter.d.ts +0 -11
  321. package/dist/commonjs/customHooks/a11yAdapter.js +0 -1
  322. package/dist/commonjs/helpers/sponsorService.d.ts +0 -20
  323. package/dist/commonjs/helpers/sponsorService.js +0 -1
  324. package/dist/esm/a11y.d.ts +0 -2
  325. package/dist/esm/a11y.js +0 -1
  326. package/dist/esm/components/Inspector/A11yTab.d.ts +0 -2
  327. package/dist/esm/components/Inspector/A11yTab.js +0 -268
  328. package/dist/esm/components/Inspector/DeveloperSponsorCard.d.ts +0 -9
  329. package/dist/esm/components/Inspector/DeveloperSponsorCard.js +0 -52
  330. package/dist/esm/customHooks/a11yAdapter.d.ts +0 -11
  331. package/dist/esm/customHooks/a11yAdapter.js +0 -1
  332. package/dist/esm/helpers/sponsorService.d.ts +0 -20
  333. package/dist/esm/helpers/sponsorService.js +0 -1
@@ -1 +1 @@
1
- {"common":{"cancel":"Annuler","clear":"Effacer","clearAll":"Tout effacer","close":"Fermer","loading":"Chargement...","success":"Succès","pending":"En attente","failed":"Échoué","copy":"Copier","copied":"Copié !","copyJson":"Copier JSON","collapseAll":"Tout réduire","expandAll":"Tout développer","viewOnNpm":"Voir sur NPM","later":"Plus tard","minimize":"Réduire","tapToExpand":"Appuyez pour développer","open":"Ouvrir","openInBrowser":"Ouvrir dans le navigateur","openInBrowserPrompt":"Voulez-vous ouvrir cette URL dans votre navigateur externe ?","delete":"Supprimer","reset":"Réinitialiser","save":"Enregistrer","edit":"Modifier","add":"Ajouter","search":"Rechercher","filter":"Filtrer","sort":"Trier","refresh":"Actualiser","retry":"Réessayer","confirm":"Confirmer","yes":"Oui","no":"Non","ok":"OK","done":"Terminé","back":"Retour","next":"Suivant","show":"Afficher","hide":"Masquer","select":"Sélectionner","selectAll":"Tout sélectionner","deselectAll":"Tout désélectionner","noResults":"Aucun résultat trouvé","items":"éléments","of":"de","showing":"Affichage","active":"Actif","inactive":"Inactif","enabled":"Activé","disabled":"Désactivé","live":"En direct","connected":"Connecté","disconnected":"Déconnecté","update":"MISE À JOUR","unknown":"Inconnu","source":"SOURCE","share":"Partager","version":"Version","all":"Tout","dragToHide":"Glisser ici pour masquer","releaseToHide":"Relâcher pour masquer l’inspecteur","expand":"Agrandir","undo":"Annuler","inActiveDevelopment":"En développement actif","inspectorDismissed":"Inspecteur fermé","noMatches":"Aucun résultat correspondant","moreFilters":"Plus de filtres"},"header":{"rec":"REC","sourceFirebase":"FB","sourceManual":"MAN","aboutSpecs":"À propos et spécifications","live":"En direct","keys":"{{count}} clés","frames":"{{count}} images","updateAvailableTitle":"Mise à jour disponible","updateAvailableMessage":"réagir-native-inapp-inspector v{{version}} est disponible sur NPM (installé : v{{installed}}).","clearEverythingTitle":"Tout effacer","clearEverythingMessage":"Cela efface tous les onglets : API, journaux, analyses, chronologie Redux et historique des crashs. Continuer?","photo":"Photos","record":"Enregistrer","clear":"Effacer","about":"À propos","screenshotCaptured":"📸 Capture d'écran capturée et enregistrée","screenshotFailed":"Échec de la capture d'écran","screenshotError":"Erreur lors de la capture d'écran","recordingStarted":"🔴 L'enregistrement vidéo a commencé","recordingSaved":"🎥 Enregistrement enregistré ({{duration}}s)","recordingError":"Erreur d'enregistrement","recordingStartFailed":"Échec du démarrage de l'enregistrement","paramCount":"{{count}} paramètre","paramCount_plural":"{{count}} paramètres","firebase":"base de feu","manual":"manuel","sliceBadge":"TRANCHE","recordScreen":"Enregistrer l’écran","newVersionAvailable":"Mise à jour disponible","updateAvailable":"Mise à jour react-native-inapp-inspector v{{latestVersion}} prête","updateAvailableSubtitle":"Une nouvelle version de react-native-inapp-inspector est prête à installer","upgradeCommand":"COMMANDE DE MISE À NIVEAU","copyCommand":"Copier","viewNpm":"Voir","screenshot":"Capture","videoCapture":"Enregistrer"},"tabs":{"logs":"Journaux","analytics":"Analytique","crash":"Crashs","device":"Appareil","storage":"Stockage","media":"Capture","apis":"API","redux":"Redux","push":"Pousser","socket":"WebSocket","debugging":"Débogage"},"settings":{"configureSubtitle":"Configurer les paramètres du module","resetAlertTitle":"Réinitialiser tous les paramètres","resetAlertMessage":"Cela restaure la visibilité des modules et les préférences d'interface par défaut. Continuer ?","settingsReset":"Paramètres réinitialisés","settingsResetMessage":"Tous les paramètres ont été réinitialisés.","pushHistoryCleared":"Historique des notifications push effacé","socketHistoryCleared":"Historique WebSocket effacé","mainTitle":"Paramètres et modules","mainSubtitle":"Gérer les modules et les préférences","requiredBadge":"OBLIGATOIRE","defaultBadge":"PAR DÉFAUT","notConnectedBadge":"NON CONNECTÉ","notDetectedBadge":"NON DÉTECTÉ","readOnlyBadge":"LECTURE SEULE","coreBadge":"NOYAU","activeBadge":"ACTIF","dormantBadge":"DORMANT","protectedBadge":"PROTÉGÉ","modulesAndTools":"Modules et outils","uiPreferences":"Interface utilisateur et affichage","ramLimits":"RAM et limites","screenVideoCapture":"Capture d'écran et vidéo","zeroOverheadTitle":"Zéro surcharge en arrière-plan","zeroOverheadDesc":"Cochez les modules que vous souhaitez activer. Les modules désactivés consomment 0 % de CPU et de mémoire jusqu'à leur sauvegarde.","unsavedPending":"● Sélections non enregistrées en attente","allSynchronized":"Tous les modules synchronisés","modulesActive":"{{active}} sur {{total}} modules actifs","saveChanges":"Enregistrer les modifications","settingsSaved":"Paramètres enregistrés","settingsSavedDesc":"Les configurations des modules actifs ont été mises à jour avec succès.","configure":"Configurer","appearanceTheme":"APPARENCE ET THÈME","windowLayout":"FENÊTRE ET DISPOSITION","startupDefault":"ÉCRAN DE DÉMARRAGE ET PAR DÉFAUT","logFiltersDeduplication":"FILTRES DE JOURNAUX ET DÉDUPLICATION","resetSettings":"Réinitialiser tous les paramètres","resetSettingsDesc":"Effacer les préférences personnalisées par défaut","reset":"Réinitialiser","reduxNotConnectedTip":"Le magasin Redux n'est pas connecté. Appelez connectReduxStore(store) ou utilisez l'inspecteurReduxMiddleware pour l'activer.","analyticsNotConnectedTip":"Analytics n'est pas initialisé. Appelez setupAnalyticsLogger(analytics()) pour l’activer.","tabVisibility":"Visibilité des onglets","tabVisibilityDescription":"Choisissez quels modules apparaissent dans l'inspecteur","settingsTitle":"Paramètres","back":"Retour","apis":{"title":"Paramètres des API","total":"Total : {{count}}","maxRequestLogs":"Journaux de requêtes maximum","maxRequestLogsDescription":"Taille du tampon des requêtes réseau conservées en mémoire","clearNetworkLogs":"Effacer les journaux réseau","clearNetworkLogsDescription":"{{count}} requêtes stockées","networkLogsCleared":"Journaux réseau effacés.","showStatusFilter":"Filtre d'état","showStatusFilterDescription":"Afficher les puces d'état dans la liste des API","showMethodFilter":"Filtre de méthode","showMethodFilterDescription":"Afficher les puces de méthode dans la liste des API","defaultTabDescription":"Onglet sur lequel l'inspecteur s'ouvre"},"logs":{"title":"Paramètres des journaux","total":"Total : {{count}}","maxConsoleLogs":"Journaux maximum de la console","maxConsoleLogsDescription":"Combien de messages de console conserver","logLevels":"Sévérité des journaux","logLevelsDescription":"Sélectionnez les gravités à capturer dans les journaux","showInfo":"Afficher les journaux d'informations","showInfoDesc":"Journaux d'informations et impressions de débogage","showWarn":"Afficher les journaux d'avertissement","showWarnDesc":"Avertissements et dépréciations","showError":"Afficher les journaux d'erreurs","showErrorDesc":"Erreurs d'exécution et exceptions","clearConsoleLogs":"Effacer les journaux de la console","clearConsoleLogsDescription":"{{count}} journaux stockés","consoleLogsCleared":"Journaux de la console effacés."},"analytics":{"title":"Paramètres d'analyse","total":"Événements : {{count}}","maxAnalyticsEvents":"Événements capturés","maxAnalyticsEventsDescription":"{{count}} événements d'analyse stockés dans la mémoire tampon","clearAnalyticsEvents":"Effacer l'historique des analyses","clearAnalyticsEventsDescription":"Effacer tous les événements de télémétrie capturés","analyticsEventsCleared":"Événements d'analyse effacés."},"redux":{"title":"Paramètres de redux","reducers":"Réducteurs : {{count}}","autoRefresh":"Magasin d'actualisation automatique","autoRefreshDescription":"Capturez l'arborescence d'état du magasin Redux à chaque expédition","defaultJsonExpandDepth":"Profondeur d'extension JSON par défaut","defaultJsonExpandDepthDescription":"Profondeur initiale de l'arborescence d'état Redux à développer automatiquement","clearReduxState":"Effacer l'état Redux","clearReduxStateDescription":"Réinitialiser l'instantané de l'état actuel dans l'inspecteur","clearReduxStateEmpty":"Aucun instantané du magasin enregistré","reduxStateCleared":"Instantané d’état Redux effacé.","clearReduxTimeline":"Effacer la chronologie Redux","clearReduxTimelineDescription":"Supprimer tout l'historique des actions capturées","reduxTimelineCleared":"L'historique des actions Redux a été effacé."},"bundle":{"title":"Paramètres du paquet","sourceBundler":"Regroupeur de sources métropolitaines","sourceBundlerDesc":"Analyse les arborescences de modules en direct et calcule les répartitions de taille binaire","clearCache":"Vider le cache du bundle","clearCacheDesc":"Forcer la récupération et l'analyse du bundle JS","cacheCleared":"Cache d'analyse de bundle vidé."},"performance":{"title":"Paramètres de performances","frameMeasurement":"Mesure d'image en direct","frameMeasurementDesc":"Échantillonne les fréquences d'images UI/JS et détecte les rendus inutiles","clearEvents":"Effacer les événements de performance","clearEventsDesc":"Réinitialiser les fichiers indésirables enregistrés et l'historique des suppressions de FPS","eventsCleared":"Événements de performance effacés."},"crash":{"title":"Paramètres de crash","maxCrashLogs":"Journaux de crash maximum","maxCrashLogsDesc":"Combien d'enregistrements d'accidents conserver dans l'historique","globalGuard":"Protection mondiale contre les accidents","globalGuardDesc":"Intercepte directement les erreurs natives, JS et de rendu","clearHistory":"Effacer l'historique des crashs","clearHistoryDesc":"{{count}} journaux d'incidents stockés","historyCleared":"Journaux de crash effacés."},"media":{"title":"Capture d'écran et vidéo","badge":"H.264 natif / GIF","desc":"Configurer les formats de capture d'écran, la qualité, les FPS vidéo, la narration audio, l'enregistrement et le stockage GIF","screenshotCardTitle":"Formats et qualité de capture d'écran","screenshotCardDesc":"Configuration d'instantanés haute résolution en pleine fenêtre","imageFormat":"Format d'image","imageFormatDesc":"PNG (sans perte), JPEG (compact) ou WEBP","autoHide":"Masquer automatiquement la superposition de l'inspecteur","autoHideDesc":"Exclut l'interface utilisateur de l'inspecteur des captures d'écran","enabled":"ACTIVÉ","videoCardTitle":"Enregistrement vidéo et GIF","videoCardDesc":"Enregistrement MP4 H.264 et exportation GIF animé","audioMode":"Mode de narration audio","audioModeDesc":"Muet, audio de l'application ou narration vocale","frameRate":"Fréquence d'images","frameRateDesc":"Des FPS plus élevés donnent des enregistrements plus fluides","gifAutoOpt":"Optimisation automatique GIF","gifAutoOptDesc":"Convertit les enregistrements vidéo pour les PR GitHub et Slack","purgeAll":"Purger tous les médias capturés","purgeAllDesc":"Supprime toutes les captures d'écran, vidéos et GIF stockés","purgeCacheBtn":"Purger le cache","purgeConfirmTitle":"Purger le stockage multimédia","purgeConfirmMessage":"Cela supprime tous les fichiers multimédias capturés du cache local. Continuer?","purgedSuccess":"Stockage multimédia purgé"},"general":{"darkMode":"Thème du mode sombre","darkModeDescription":"Basculer entre une esthétique sombre et élégante ou un contraste clair","modalHeight":"Hauteur de la fenêtre de l'inspecteur","modalHeightDescription":"Pourcentage de couverture d'écran modal","modalAnimation":"Animation de transitions","modalAnimationDescription":"Style de présentation d’entrée et de sortie","duplicateLogs":"Afficher les journaux en double","duplicateLogsDescription":"Désactivé : les entrées répétées identiques se transforment en badges ×N","defaultOpeningTab":"Onglet d'ouverture par défaut","defaultOpeningTabDesc":"Onglet initial actif lorsque le bouton du lanceur est enfoncé","activeConsoleLogLevels":"Niveaux de journalisation de la console active","activeConsoleLogLevelsDesc":"Sélectionnez les gravités à capturer dans les journaux","resetToDefaults":"Réinitialiser aux valeurs par défaut","resetToDefaultsDescription":"Restaurer tous les paramètres de l'inspecteur","resetConfirmationTitle":"Réinitialisation des paramètres","resetConfirmationMessage":"Tous les paramètres ont été réinitialisés aux valeurs par défaut.","storageStatus":"Stockage persistant","storageStatusEnabled":"Stockage des paramètres : persistant ({{type}})","storageStatusEnabledDesc":"Vos préférences et la visibilité du module persistent lors des redémarrages de l'application.","storageStatusDisabled":"Stockage des paramètres : en mémoire (temporaire)","storageStatusDisabledDesc":"Les préférences sont réinitialisées lors de la suppression de l'application. Transmettez le stockage personnalisé à <NetworkInspector storage={...} /> pour persister sur Android.","language":"Langue","languageDescription":"Sélectionner la langue d'affichage de l'interface","selectLanguage":"Sélectionnez la langue","peekOpacity":"Opacité de transparence","peekOpacityDescription":"Niveau de transparence lorsque l’icône d’œil est activée"},"memory":{"manualTitle":"Nettoyage manuel de la mémoire","manualDescription":"Élaguez les anciennes entrées dans tous les magasins de journaux et dans la RAM libre","pruned":"{{count}} éléments supprimés de la mémoire"},"simulator":{"salesforce":"Simulation de poussée Salesforce Marketing Cloud","fcm":"Push FCM Firebase simulé","apns":"Push APN Apple simulé","deepLink":"Push Link profond simulé","chat":"Session WebSocket de chat en temps réel simulée","crypto":"Flux de ticker Binance Crypto simulé","socketio":"Session Socket.IO v4 simulée","echo":"Test d'écho WebSocket simulé","screenshotSaved":"Capture d'écran capturée et enregistrée !"},"simulatePushTitle":"SIMULER DES NOTIFICATIONS PUSH TEST","simulateSocketTitle":"SIMULER DES CONNEXIONS SOCKET TEST","directCaptureShortcuts":"RACCOURCIS DE CAPTURE DIRECTE"},"network":{"urlHeader":"URL","jsonViewer":{"raw":"Raw","key":"Key","pretty":"Jolie","table":"Tableau","emptyObject":"Objet vide","emptyTable":"Objet vide","value":"VALEUR","keyProperty":"CLÉ / PROPRIÉTÉ","noMatchingKeys":"Aucune clé ou valeur correspondante trouvée","emptyPayload":"Aucune donnée de charge utile disponible"},"showingRequests":"Affichage de {{count}} requêtes","showingFilteredRequests":"Affichage de {{filtered}} sur {{total}} requêtes","status201":"201 Créé","status204":"204 Pas de contenu","status304":"304 Non modifié","status400":"400 Requête incorrecte","status401":"401 Non autorisé","status403":"403 Interdit","status404":"404 Non trouvé","status500":"500 Erreur","shareError":"Erreur de partage","shareErrorMessage":"Impossible d'ouvrir la feuille de partage","title":"API","searchPlaceholder":"Rechercher par URL, statut ou méthode...","emptyTitle":"Aucun appel API capturé pour l'instant","emptySubtitle":"Les requêtes réseau apparaîtront ici lorsque vous utiliserez l'application.","reload":"Recharger","clearTitle":"Effacer les journaux réseau","clearMessage":"Êtes-vous sûr de vouloir effacer tous les journaux réseau capturés ?","detailTabs":{"metadata":"Métadonnées","headers":"En-têtes","request":"Demande","response":"Réponse"},"requestTitle":"Demande","responseTitle":"Réponse","searchRequest":"Demande de recherche...","searchResponse":"Rechercher une réponse...","searchHeaders":"Rechercher des en-têtes...","requestHeaders":"En-têtes de demande","responseHeaders":"En-têtes de réponse","diffTitle":"Différence","noResponse":"Aucun corps de réponse","noRequest":"Aucun corps de requête","statusFailed":"Échec","methodHeader":"Méthode","statusHeader":"Statut","durationHeader":"Durée","sizeHeader":"Taille","triggeredAt":"Déclenché à","contentType":"Type de contenu","sourcePage":"Page source","sourcePageUnknown":"Source inconnue","loadMore":"Charger plus","groupByPage":"Regrouper par page","groupByDomain":"Regrouper par domaine","groupByNone":"Liste","domain":"Domaine","page":"Pages","requests":"{{count}} demandes","requests_plural":"{{count}} demandes","noFilteredResults":"Aucune demande ne correspond aux filtres actuels","scrollToTop":"Faire défiler vers le haut","copyCurl":"Copier cURL","copyFetch":"Copier l'extrait de récupération","emptyResponse":"Réponse vide","bodyHidden":"{Corps caché}","queryParams":"Paramètres de requête","fullUrl":"URL complète","open":"Ouvert","showMore":"Afficher plus","showLess":"Afficher moins","failedNetworkError":"Échec (erreur réseau)","noMatchingHeaders":"Aucun en-tête correspondant","diffHidden":"{ Différent masqué }","noDiff":"Aucune différence par rapport à l'API précédente.","healthTitle":"Santé du réseau et télémétrie","successRate":"Taux de réussite","avgLatency":"Latence moyenne","p95Latency":"Latence P95","bandwidth":"Bande passante","fastest":"Le plus rapide","slowest":"Le plus lent","timingWaterfall":"Cascade de synchronisation et latence","throughput":"Débit","performanceTier":"Niveau de performances","perf":{"fast":"Rapide (< 200 ms)","moderate":"Modéré (200-800 ms)","slow":"Lent (> 800 ms)"},"status200":"200 OK","clearLogsTitle":"Effacer les journaux réseau","clearLogsMsg":"Voulez-vous vraiment effacer tous les journaux réseau ?","moreFilters":"Plus de filtres"},"console":{"filterAll":"All","rawTraceView":"Raw","showingLogs":"Affichage de {{count}} journaux","showingFilteredLogs":"Affichage de {{filtered}} sur {{total}} journaux","filteredBy":"Filtré par {{filters}} ({{filtered}} sur {{total}} journaux)","log":"Journal","warning":"Avertissement","error":"Erreur","debug":"Débogage","title":"Journaux","searchPlaceholder":"Rechercher des journaux...","emptyTitle":"Aucun journal de console pour l'instant","emptySubtitle":"La sortie de la console de votre application apparaîtra ici.","analyticsBadge":"Analyse","userLogBadge":"journal utilisateur","jsonTitle":"Journal JSON","messageTitle":"Message du journal","search":"Journal de recherche...","searchJson":"Journal de recherche JSON...","logMessage":"Message du journal","consoleLog":"Journal de la console","characters":"{{count}} caractères","duplicates":"×{{count}} doublons","showMore":"Afficher plus","showLess":"Afficher moins","clearTitle":"Effacer les journaux","clearMessage":"Êtes-vous sûr de vouloir effacer tous les journaux de la console ?","seeMore":"Afficher plus","noResults":"Aucun journal ne correspond aux filtres actuels","filterInfo":"Informations","filterWarn":"Avertir","filterError":"Erreur","filterUserLog":"Journal utilisateur","filterAnalytics":"Analyse","tabOutput":"Sortie","tabArgs":"Args ({{count}})","tabStack":"Trace de pile","tabMetadata":"Métadonnées","callStack":"Pile d'appels ({{count}} frames)","errorStack":"Pile d'exceptions d'erreur ({{count}} trames)","callOriginStack":"Pile d'origine des appels","errorThrownStack":"Erreur de pile lancée","appCodeScope":"🎯 Code d'application ({{count}})","allFramesScope":"📜 Tous les cadres ({{count}})","cardsView":"Cartes","noStackAvailable":"Aucune trame de pile d'appels correspondant au filtre actif trouvée.","originBadge":"ORIGINE #1","appCodeBadge":"Code d'application","dependencyBadge":"Dépendance","nativeBadge":"Natif","hermesVmBadge":"Hermès VM","fullStackTrace":"Trace de pile complète","lineCol":"Ligne {{line}}, Col {{col}}","lineColShort":"L{{line}}:C{{col}}","searchInLogDetails":"Rechercher dans les détails du journal...","info":"Informations","clearLogsTitle":"Effacer les journaux de console","clearLogsMsg":"Voulez-vous vraiment effacer tous les journaux de console ?","analytics":"Analytique","exportTitle":"Exporter les journaux de console","exportScope":"PORTÉE DE LA SOURCE DES JOURNAUX","filteredView":"Filtre actif","allLogsScope":"Tous les journaux","howManyLogs":"COMBIEN DE JOURNAUX EXPORTER ?","enterCount":"Entrez le nombre de journaux :","exportFormat":"FORMAT D’EXPORTATION","exportSummary":"Taille d’exportation estimée","selectedLogs":"JOURNAUX SÉLECTIONNÉS","estSize":"TAILLE ESTIMÉE","format":"FORMAT","exportLogsAction":"Exporter {{count}} journaux ({{size}})","exportingLogs":"Exportation des journaux de console...","processingItem":"Traitement de","records":"enregistrements","exportSuccessTitle":"Exportation des journaux prête !","exportSuccessDesc":"Pack de journaux entièrement formaté prêt à être partagé ou sauvegardé.","shareReport":"Partager les journaux","saveToDisk":"Enregistrer sur le disque","copyToClipboard":"Copier le contenu","exportAnother":"← Exporter un autre","noLogsToExport":"Aucun journal disponible à exporter","savePromptOpened":"Boîte de dialogue d’enregistrement ouverte","copiedLogs":"Journaux copiés dans le presse-papiers !","ignorePatterns":"Ignorer les motifs (Regex)","ignorePatternsDesc":"Les journaux correspondants seront exclus de l'exportation.","invalidRegex":"Syntaxe d'expression régulière invalide","logsExcluded":"{{count}} journaux exclus"},"analytics":{"timeNow":"NOW","allCategory":"All","title":"Analyse","searchPlaceholder":"Rechercher des événements...","emptyTitle":"Aucun événement d'analyse pour l'instant","emptySubtitle":"Les événements Analytics apparaîtront ici au fur et à mesure que votre application les suivra.","clearTitle":"Des analyses claires","clearMessage":"Êtes-vous sûr de vouloir effacer tous les événements d'analyse ?","eventParams":"{{count}} paramètres","eventCount":"{{count}} événements","userProperties":"Propriétés utilisateur","userId":"Identifiant utilisateur","defaultParameters":"Paramètres par défaut","collectionEnabled":"Collecte activée","screenView":"vue_écran","eventDetails":"Détails de l'événement","parameters":"Paramètres","noParams":"Aucun paramètre","recentEvents":"Événements récents","analyticsError":"Erreur d'analyse","duplicate":"Dupliquer","params":"paramètres","props":"accessoires","item":"article","items":"articles","pageViewCategory":"Vue de la page","ecommerceCategory":"Commerce électronique","systemCategory":"Système","customCategory":"Personnalisé","realtimeStream":"Activité en temps réel","liveTelemetry":"Télémétrie en direct","eventsInWindow":"événements dans la fenêtre","eventVelocity":"{{rate}} ev/min","peakVolume":"Pic : {{count}}","time30mAgo":"-30m","time20mAgo":"-20m","time10mAgo":"-10m","selectedBucket":"Compartiment : {{time}} ({{count}} événements)","totalRevenue":"Revenus","activeDistribution":"Répartition des catégories","screensCategory":"Écrans","overviewTab":"Aperçu","jsonTreeTab":"Arbre JSON","rawPayloadTab":"Charge utile brute","sessionContext":"Contexte de la séance","userPropertiesSnapshot":"Instantané des propriétés utilisateur","parameterKeys":"Paramètres ({{count}})","searchParameters":"Paramètres de recherche...","noParamsFound":"Aucun paramètre ne correspond à votre recherche","sourceFirebase":"BASE DE FEU GA4","sourceCustom":"PERSONNALISÉ / MANUEL","dataVisualization":"Visualisation des données","dataTypesBreakdown":"Répartition des types de données","highestPayloadStrings":"Chaînes de charge utile les plus longues","topLevelMetrics":"Métriques principales","importantDates":"Dates importantes","itemPrices":"Prix des articles","sessionIdentity":"SESSION & IDENTITÉ","metricParams":"Paramètres :","metricUserProps":"Props utilisateur :","metricSize":"Taille :","metricItems":"{{count}} articles","sessionId":"ID de session","trackingId":"ID de suivi","eventParameters":"PARAMÈTRES DE L'ÉVÉNEMENT ({{count}})","keyValueAttributes":"Attributs clé-valeur","filterParamsPlaceholder":"Filtrer les paramètres par clé ou valeur...","noParamsRecorded":"Aucun paramètre personnalisé enregistré pour cet événement.","noParamsMatching":"Aucun paramètre ne correspond à \"{{search}}\"","clearEventsTitle":"Effacer les événements analytiques","clearEventsMsg":"Voulez-vous vraiment effacer tous les événements analytiques ?"},"redux":{"searchPlaceholder":"Rechercher état ou actions...","emptyTitle":"Aucun store Redux connecté","emptySubtitle":"Connectez votre store pour inspecter l'état et les actions.","originUi":"UI","activeSlices":"SLICES ACTIFS","totalState":"ÉTAT TOTAL","lastActionHeader":"DERNIÈRE ACTION","initialState":"État initial (aucune action émise)","noStoreConnected":"Aucun store Redux connecté","connectStoreTip":"Appelez connectReduxStore(store) ou utilisez inspectorReduxMiddleware au lancement.","clearPersistedTitle":"Effacer l'état persisté","clearPersistedMessage":"Êtes-vous sûr de vouloir supprimer le stockage persisté du slice \"{{slice}}\" ?","clearedPersisted":"L'état persisté a été effacé.","clearPersistedError":"Échec de la suppression de l'état persisté.","title":"Redux","stateTab":"État","actionsTab":"Actions","clearTitle":"Effacer la chronologie Redux","clearMessage":"Êtes-vous sûr de vouloir effacer l'historique des actions envoyées ?","noActions":"Aucune action envoyée pour l'instant. Déclenchez une action dans l'application pour remplir l'historique.","noSearchResults":"Aucune action ne correspond à votre recherche.","lastAction":"Dernière action","actionHistory":"Historique des actions","affectedSlices":"Tranches concernées","noAffectedSlices":"Aucun","dispatchTime":"Expédié à","prevState":"État précédent","nextState":"État suivant","viewDiff":"Voir la différence","emptyState":"L'état est vide","rootState":"État racine","connectionStatus":"Connecté","connectionStatusNone":"Non connecté","autoRefresh":"Actualisation automatique","paused":"En pause","liveState":"État en direct","timeline":"Chronologie","persisted":"Persisté","storage":"Stockage","metadata":"Métadonnées","inMemory":"En mémoire","slice":"TRANCHE","rootKeys":"Clés racine","size":"Taille","actions":"actes","keys":"Clés","last":"Dernier","live":"En direct","loading":"Chargement","error":"Erreur","empty":"Vide","payload":"Charge utile","actionPayload":"Charge utile de l'action :","stateChangesDiff":"Changements d'état (Diff) :","tapToInspectAction":"Appuyez pour inspecter la charge utile de l'action et les modifications des différences","noDispatchedActions":"Aucune action distribuée enregistrée pour cette tranche pour le moment.","sliceJson":"Trancher JSON","originSaga":"SAGA","originThunk":"PENSEZ","originDirect":"DIRECTEMENT","originListener":"AUDITEUR","triggeredFrom":"Déclenché à partir de :","openInEditor":"Ouvrir dans l'éditeur","callStack":"Trace de la pile d'appels","sliceOrigin":"Tranche / Origine","clearTimelineTitle":"Effacer la chronologie Redux","clearTimelineMsg":"Voulez-vous vraiment effacer l’historique des actions distribuées ?","diff":"Différence d’état"},"device":{"title":"Appareil","searchPlaceholder":"Rechercher spécifications, UDID, IP, écran...","subTabs":{"overview":"Aperçu","hardware":"Matériel","network":"Réseau et IP","display":"Affichage","runtime":"Exécution & App","security":"Sécurité & IDs"},"sections":{"overview":"APERÇU DE L'APPAREIL","hardware":"SPÉCIFICATIONS MATÉRIELLES & SYSTÈME","network":"RÉSEAU & CONNECTIVITÉ","display":"AFFICHAGE & GÉOMÉTRIE","runtime":"EXÉCUTION & ENVIRONNEMENT","security":"IDENTIFIANTS & SÉCURITÉ"},"copied":"{{label}} copié","copiedJson":"Rapport JSON complet de l'appareil copié !","copiedMarkdown":"Rapport Markdown copié dans le presse-papiers !","live":"EN DIRECT","ipAddress":"ADRESSE IP","ramUsedTotal":"RAM (UTILISÉE/TOTALE)","uptime":"TEMPS DE FONCTIONNEMENT","copiedUuid":"Identifiant unique de l’appareil copié (UUID)"},"storage":{"title":"Stockage","searchPlaceholder":"Rechercher clés, valeurs, types...","clearTitle":"Vider le stockage","clearMessage":"Voulez-vous vraiment supprimer toutes les clés dans {{driver}} ?","clearConfirm":"Tout effacer","emptyTitle":"Aucune entrée de stockage","emptySubtitle":"Le stockage est vide pour ce pilote.","addKey":"Ajouter une clé","add":"Ajouter","editKey":"Modifier la clé","createKey":"Créer une clé","save":"Enregistrer","saveKey":"Enregistrer la clé","keyName":"Nom de clé","value":"Valeur","valueContent":"Contenu de la valeur","beautifyJson":"Formater JSON","loading":"Chargement des entrées...","deleteKeyTitle":"Supprimer la clé","deleteKeyMessage":"Voulez-vous vraiment supprimer la clé \"{{key}}\" ?","deleteConfirm":"Supprimer","cleared":"Stockage effacé","subTabs":{"asyncStorage":"Stockage asynchrone","mmkv":"MMKV"},"type":"Tapez","asyncStorage":"Stockage asynchrone","mmkv":"MMKV","keyNameEmpty":"Le nom de la clé ne peut pas être vide","saveError":"Erreur lors de l’enregistrement de la clé"},"footer":{"endOfList":"Vous avez atteint la fin de la liste","loadMore":"Charger {{count}} de plus","showingOf":"Affichage de {{count}} sur {{total}} {{label}}","loadMoreRequests":"Charger {{count}} Plus de demandes","allLoaded":"Toutes les requêtes {{count}} chargées"},"performance":{"filterAll":"All","catAll":"All","catIo":"I/O","jscEngine":"JSC","fpsUnit":"FPS","title":"Performances","fpsTarget":"Moniteur cible 60 FPS","healthScore":"Score de santé FPS","excellent":"Excellent (60 FPS)","good":"Bon (Janks mineurs)","needsOptimization":"Besoin d’optimisation","liveFps":"FPS en direct et cycle de rafraîchissement","realtimeWindow":"Temps réel (fenêtre 1 s)","uiRenderThread":"Fil de rendu de l'interface utilisateur","optimalFrame":"Optimale (<16,6 ms)","slowFrame":"Image lente (> 16,6 ms)","budgetUsage":"Utilisation du budget de 60 FPS","avgFrameTime":"Temps de trame moyen","peakTime":"Heure de pointe","jsThread":"Sujet JS","uiThread":"Sujet de l'interface utilisateur","jsiLatency":"Latence JSI","heapImpact":"Impact sur le tas","optimizationTip":"Conseil d'optimisation :","recordedEvents":"Événements et interactions enregistrés","liveStream":"Flux de session en direct","emptyTitle":"Aucun événement de performance capturé pour l'instant","emptySubtitle":"Effectuez des actions dans votre application pour connaître la durée des threads, le coût de rendu et le suivi FPS.","tabOverview":"Aperçu","tabRenders":"Rendus","tabInteractions":"Interactions","tabMemory":"Mémoire","filterSlow":"Lent (> 16 ms)","filterCritical":"Critique (>33 ms)","searchPlaceholder":"Composant de recherche, interaction...","avgRenderTime":"Rendu moyen","totalRenders":"Rendus totaux","renderCost":"Coût du rendu","slowRenders":"Rendus lents","unnecessaryRenders":"Rendus inutiles","heapAllocated":"Tas alloué","heapLimit":"Limite de tas","gcEvents":"Événements du GC","leakRisk":"Risque de fuite","lowRisk":"Faible risque","mediumRisk":"Risque moyen","highRisk":"Risque élevé","memoryTimeline":"Chronologie de la mémoire","clearPerformance":"Données de performances claires","clearConfirmation":"Êtes-vous sûr de vouloir effacer toutes les données de suivi des performances ?","liveFpsDip":"Baisse de la fréquence d'images en direct ({{fps}} FPS)","liveFpsDipDetail":"Durée de l'image du thread principal étendue à {{duration}} ms lors de la mise à jour de la vue.","liveFpsDipAdvice":"Exécution lourde de JavaScript lors de la présentation d'affichage retardée du passage d'image.","yogaLayout":"Disposition de la boîte flexible de yoga","hermesGc":"Collecte des déchets Hermès","jsEngine":"Moteur JS","uiReconciler":"Réconciliateur d'interface utilisateur","memoryHeap":"Tas de mémoire","allLogs":"Tous les journaux","jankySlow":"Branlant / Lent","navigation":"Navigation","components":"Composants","memoryGc":"Mémoire et CPG","networkIo":"Réseau et E/S","catJanky":"Janky","catNavigation":"Navigation","catRender":"Composants","catMemory":"Mémoire","recording":"Enregistrement","paused":"En pause","budgetHeadroom":"~{{time}}ms de marge ({{percent}}%)","jsExec":"Exécution JS : {{time}} ms","yogaLayoutTime":"Disposition du yoga : {{time}} ms","uiRenderTime":"Rendu de l'interface utilisateur : {{time}} ms","freeTime":"Gratuit : {{time}}ms","heapAllocatedSub":"{{allocated}} Mo alloués","hermesAot":"Hermès (AOT)","v8Jit":"V8 (JIT)","bytecodeCompiled":"Bytecode compilé","jitEngine":"Moteur JIT","webkitEngine":"Moteur de kit Web","fabricJsi":"Tissu / JSI","paperBridge":"Papier / Pont","directCppBindings":"Liaisons C++ directes","asyncJsonBridge":"Pont JSON asynchrone","jsLag":"Décalage JS","jankRate":"Taux de déchets","fpsAreaChartTitle":"Flux FPS et gigue en temps réel (30 s)","fpsAreaChartSub":"Cible en direct de 60 FPS avec mesure continue de la variance d'image","frameLatencyDistTitle":"Distribution de la latence des images","frameLatencyDistSub":"Proportion de trames livrées dans un budget de 16,6 ms","optimalBucket":"< 16,6 ms (60 ips)","minorJankBucket":"16,7 à 33,3 ms (30 à 60 images par seconde)","noticeableJankBucket":"33,4 à 50,0 ms (20 à 30 images par seconde)","severeFreezeBucket":"> 50,0 ms (< 20 FPS)","hermesHeapTrendTitle":"Mémoire et dynamique du tas Hermes","hermesHeapTrendSub":"Allocation en direct par rapport aux cycles de récupération générationnels du GC","live":"En direct","msTotal":"{{duration}}ms au total • {{time}}","droppedFrames":"{{count}} abandonné","zeroDropped":"0 abandonné","frameBudgetMs":"{{time}}ms/image ({{budget}}% du budget)","target60Fps":"Cible de 60 FPS • {{fps}} FPS réels","frameDuration":"Durée de l'image","frameDurationVal":"{{time}} ms (budget de 16,67 ms)","frameUtilization":"Budget cadre dépassé","frameBudgetOk":"Marge budgétaire du cadre","bottleneck":"Goulot d'étranglement","jsBound":"Fil JS lié","uiBound":"Lié au fil de l'interface utilisateur","balanced":"Équilibré","smooth":"Fluide 60 FPS","minorJank":"Bégaiement mineur","noticeableJank":"Jank notable","severeFreeze":"Gel sévère","screenContext":"Contexte de l'écran","profileReason1":"Accessoires de fonction de flèche en ligne transmis aux enfants (onAddToCart={() => ...})","profileReason2":"Sélecteur Redux non mémorisé créant une nouvelle référence d'objet à chaque envoi","profileReason3":"Objet de style dynamique créé dans le corps de rendu ({ marginTop : insets.top + 10 })","profileReason4":"FlatList manquant getItemLayout provoquant des passes de mesure de mise en page asynchrone","profileReason5":"Fonction renderItem définie de manière anonyme dans le corps JSX","profileReason6":"Répertorier les composants de l'élément non enveloppés avec React.memo","profileReason7":"Écran parent restitué lors de l'événement Afficher/Masquer le clavier","profileReason8":"Référence de rappel instable transmise au bouton de paiement","profileReason9":"L'état de la valeur TextInput déclenche le rendu parent à chaque frappe sans rebond","profileReason10":"Passer l'objet filtre non mémorisé ({category, minPrice}) aux puces enfants","profileReason11":"Revalidation du cache d'images d'avatar lors de l'actualisation de la session d'authentification","fixUseCallbackTitle":"Envelopper les gestionnaires d'événements dans useCallback","fixUseCallbackDesc":"Les fonctions en ligne recréent une nouvelle référence mémoire à chaque rendu, invalidant React.memo sur les composants enfants.","fixCreateSelectorTitle":"Sélecteurs Memoize Redux / Zustand avec ShallowEqual","fixCreateSelectorDesc":"Le renvoi de nouvelles références d'objet ou de tableau dans useSelector force un nouveau rendu automatique à chaque répartition d'état.","fixUseMemoStylesTitle":"Styles de levage ou utilisation de useMemo pour les dimensions dynamiques","fixUseMemoStylesDesc":"Les objets de style en ligne créent de nouvelles identités d'objet à chaque passage d'image, provoquant des différences de réconciliation Yoga Flexbox.","fixGetItemLayoutTitle":"Implémenter getItemLayout pour les éléments à hauteur fixe","fixGetItemLayoutDesc":"La fourniture de getItemLayout permet à FlatList de calculer immédiatement les décalages de défilement et les fenêtres virtuelles sans mesurer les vues de manière asynchrone.","fixReactMemoTitle":"Éléments de la liste de synthèse dans React.memo","fixReactMemoDesc":"Empêche les plus de 50 éléments de liste visibles de s'afficher à nouveau lorsque l'état de la liste parent (par exemple, position de défilement ou pagination) est mis à jour.","fixComponentSplittingTitle":"Isoler l'état à évolution rapide dans les composants feuilles","fixComponentSplittingDesc":"Déplacez les écouteurs de clavier et l'état d'animation modale dans des sous-composants autonomes afin que le parent ne soit pas restitué.","fixDebouncedInputTitle":"Entrée de recherche anti-rebond ou utilisation de l'état contrôlé local","fixDebouncedInputDesc":"Ne propagez pas immédiatement l’état de frappe dans le magasin global. Utilisez un anti-rebond de 250 ms ou une réf.","fixPrimitivePropsTitle":"Passez des accessoires primitifs au lieu de gros objets","fixPrimitivePropsDesc":"Le fait de transmettre uniquement la chaîne CategoryId au lieu de l'objet de catégorie entier empêche le nouveau rendu lors de la mise à jour des autres métadonnées de catégorie.","fixUseRefForTrackingTitle":"Utilisez useRef pour les valeurs de suivi non visuelles","fixUseRefForTrackingDesc":"Ne stockez pas les minuteurs d'analyse, les décalages de défilement ou les ID de suivi dans useState s'ils ne modifient pas directement l'arborescence JSX.","highImpact":"Fort impact","mediumImpact":"Impact moyen","bestPractice":"Meilleure pratique","beforeUseCallback":"// ❌ Avant dans <{{comp}} /> (recrée la référence de fonction à chaque rendu) :","afterUseCallback":"// ✅ Après (référence de rappel mémorisée stable) :","beforeCreateSelector":"// ❌ Avant dans <{{comp}} /> (renvoie une nouvelle référence d'objet à chaque rendu) :","afterCreateSelector":"// ✅ Après (shallowEqual empêche le nouveau rendu à moins que les valeurs ne changent) :","beforeMemo":"// ❌ Avant (<{{comp}} />) :","afterMemo":"// ✅ Après (ignore le rendu si les accessoires sont légèrement identiques) :","flatListOptimization":"// Optimisation FlatList pour <{{comp}} />","customComparator":"// Fonction d'égalité personnalisée pour <{{comp}} />","debounceInput":"// Entrée anti-rebond à l'intérieur de <{{comp}} /> pour empêcher les rendus par frappe :","isolateState":"// Isoler l'état en évolution rapide de <{{comp}} /> vers la sous-arborescence enfant // ✅ Encapsuler la mise en page animée à l'intérieur du composant isolé :","beforeUseRef":"// ❌ Avant dans <{{comp}} /> (déclenche le nouveau rendu du composant entier lors d'un changement de valeur) :","afterUseRef":"// ✅ Après (préserve la référence mutable dans les rendus sans restituer) :","fixInteractionManagerTitle":"Différer la logique hors écran avec InteractionManager","fixInteractionManagerDesc":"Le traitement intensif des données lors des animations d'écran fait perdre des images. Reportez jusqu’à la fin de la transition.","beforeInteractionManager":"// ❌ Avant dans <{{comp}} /> (exécute des calculs lourds pendant que la transition s'anime) : useEffect(() => { loadHeavyData(); }, []);","afterInteractionManager":"// ✅ Après (attend que la transition se termine en douceur) : useEffect(() => { const task = InteractionManager.runAfterInteractions(() => { loadHeavyData(); }); return () => task.cancel(); }, []);","fixFlatListWindowingTitle":"Ajuster les propriétés de fenêtrage FlatList","fixFlatListWindowingDesc":"Configurez maxToRenderPerBatch et windowSize pour minimiser les allocations de vues virtualisées hors écran.","beforeFlatListWindowing":"// Optimisation du fenêtrage FlatList pour <{{comp}} /> : <FlatList data={items} maxToRenderPerBatch={10} windowSize={5} initialNumToRender={8} removeClippedSubviews={true} />","fixImageCachingTitle":"Optimiser la mise en cache et la réduction d'image des images","fixImageCachingDesc":"Utilisez les en-têtes de priorité ou la réduction d'échelle resizeMode pour éviter les allocations massives de bitmap dans le tas Hermes.","beforeImageCaching":"// Optimisation de l'image pour <{{comp}} /> : <Image source={{ uri : imageUrl, cache : 'force-cache' }} resizeMode=\"cover\" fadeDuration={100} />","fixContextSplittingTitle":"Diviser le contexte monolithique en fournisseurs granulaires","fixContextSplittingDesc":"Les composants s'abonnant à un contexte étendu sont restitués même lorsque les propriétés d'état inutilisées changent.","beforeContextSplitting":"// ❌ Avant (<{{comp}} /> consomme tout AppContext) : const { user, cart, theme } = useAppContext();","afterContextSplitting":"// ✅ Après (s'abonner au contexte de tranche dédié) : const theme = useThemeContext();","fixInlineStylesHoistTitle":"Lever les styles statiques avec StyleSheet.create","fixInlineStylesHoistDesc":"Les objets de style en ligne allouent de nouvelles références de mémoire à chaque passe de rendu, ce qui entraîne une surcharge de réconciliation Yoga.","beforeInlineStyles":"// ❌ Avant (<{{comp}} /> alloue un objet en ligne à chaque image) : <View style={{ flex : 1, padding : 16, backgroundColor : '#ffffff' }} />","afterInlineStyles":"// ✅ Après (référence StyleSheet hissée) : const styles = StyleSheet.create({ containers: { flex: 1, padding: 16, backgroundColor: '#ffffff' } }); <View style={styles.container} />","transitionEventLabel":"Transition d'écran : {{screen}}","transitionEventDetail":"Transition terminée en {{duration}}ms (TTI : {{tti}}ms).","transitionEventAdvice":"Interaction terminée dans le budget cible de 60 FPS.","heavyTaskEventLabel":"Tâche synchrone lourde : {{taskName}}","heavyTaskEventDetail":"Thread JS bloqué pendant {{duration}}ms lors de l'exécution de la tâche.","heavyTaskEventAdvice":"Envisagez de décharger vers Web Worker, InteractionManager ou de regrouper par lots.","asyncOpEventLabel":"Opération asynchrone lente : {{opName}}","asyncOpEventDetail":"La tâche asynchrone a mis {{duration}} ms à être résolue.","renderLoopWarningLabel":"Pic de rendu rapide dans <{{comp}} />","renderLoopWarningDetail":"Le composant a été restitué {{count}} fois en 500 ms. Boucle infinie potentielle ou dépendances instables.","renderLoopWarningAdvice":"Vérifiez les tableaux de dépendances useEffect / useCallback pour les références d'objets ou de fonctions instables.","event1Label":"Pic du fil principal pendant la navigation","event1Detail":"La transition d'écran a déclenché une réconciliation importante de la disposition et des montages simultanés de composants.","event1Advice":"Différez les hooks hors écran non critiques avec InteractionManager.runAfterInteractions pour préserver 60 FPS.","event2Label":"Passe de re-rendu de la virtualisation FlatList","event2Detail":"FlatList a rendu 25 éléments simultanément lors d'un changement d'orientation sans composant de ligne mémorisé.","event2Advice":"Implémentez getItemLayout et React.memo(LogCard) pour ignorer les passes de comparaison redondantes.","event3Label":"Transition coulissante modale native","event3Detail":"La transformation animée du pilote natif accélérée par le matériel fonctionne correctement à 60 FPS soutenus.","event3Advice":"L'utilisation de nativeDriver: true empêche avec succès le blocage des threads JS pendant les animations.","event4Label":"Collecte des déchets générationnelle Hermès","event4Detail":"Un cycle GC générationnel mineur a récupéré des objets de tas éphémères de 4,2 Mo avec une pause de thread inférieure à la milliseconde.","event4Advice":"Le garbage collector générationnel Hermes fonctionne dans des limites optimales inférieures à 5 ms.","gcCycleLabel":"Cycle de collecte manuelle des déchets","gcCycleDetail":"Récupération de ~{{amount}} Mo d'objets de tas non référencés et de pépinière de mémoire compactée.","gcCycleAdvice":"Utilisation du tas optimisée. Crèche générationnelle libérée.","liveFpsDropLabel":"Baisse de la fréquence d'images en direct ({{fps}} FPS)","liveFpsDropDetail":"Durée de l'image du thread principal étendue à {{duration}} ms lors de la mise à jour de la vue.","liveFpsDropAdvice":"Exécution lourde de JavaScript lors de la présentation d'affichage retardée du passage d'image.","event5Label":"Désérialisation de charges utiles JSON volumineuses","event5Detail":"Frais généraux d'analyse de réponse API de 50 éléments dans la carte réseau (chaîne brute JSON de 185 Ko).","event5Advice":"Envisagez de paginer les charges utiles de l'API ou de diffuser les réponses en continu si la taille de la charge utile dépasse 250 Ko.","event6Label":"Décodage et rastérisation d'image Bitmap","event6Detail":"Décodage raster Retina pour banner_dark.png (allocation de tampon raster 1200 × 630px).","event6Advice":"Réduisez les dimensions des actifs ou convertissez-les en WebP pour réduire la latence de décodage d'environ 65 %.","event7Label":"Invocation JSI du TurboModule natif","event7Detail":"Transaction de préférences AsyncStorage / MMKV lue sur 32 clés de configuration.","event7Advice":"Les liaisons directes du turbomodule C++ JSI contournent complètement la surcharge de sérialisation du pont JSON hérité.","event8Label":"Différence d'arborescence d'état d'action Redux","event8Detail":"La passe de répartition Redux a évalué 6 tranches de réduction et émis une notification d'état en 4,8 ms.","event8Advice":"Immuabilité de l’arbre d’état préservée. Les sélecteurs mémorisés ont empêché les rendus de composants redondants.","event9Label":"Latence des événements tactiles pour le rendu","event9Detail":"Le répondeur gestuel a envoyé un événement Tap au bouton TabBar avec une réponse immédiate à 60 FPS.","event9Advice":"La latence du répondeur tactile se situe bien dans les limites du budget de trame standard de 16,67 ms.","event10Label":"Passe de mise en page C++ Yoga Flexbox","event10Detail":"Le recalcul de la disposition des cartes multi-onglets de l'interface utilisateur de l'inspecteur et les métriques de police sont transmises dans le moteur C++ Yoga.","event10Advice":"Les contraintes de mise en page Flexbox sont mises en cache et calculées efficacement sans aucune pénalité de redistribution."},"bundle":{"mediaAuditorSuffix":"KB.","heroTitle":"Architecture des offres groupées et des actifs","heroSubtitle":"Répartition de la taille en temps réel pour tous les actifs, codes et dépendances","heroSubtitleLive":"Analyse en direct de {{scriptUrl}}","liveAnalysisUnavailable":"Analyse groupée en direct indisponible","liveAnalysisUnavailableSub":"Impossible d'atteindre le serveur de développement Metro, les valeurs sont donc des estimations. Assurez-vous que l'application fonctionne en développement via `npxreact-native start` et que l'inspecteur peut atteindre votre port Metro (8081, 8082, ...).","bundleOverviewJson":"Présentation du bundle JSON","devBundleSize":"TAILLE DU PACK DE DÉVELOPPEMENT","devBundleHint":"{{kb}} Ko • {{modules}} modules","trackedFilesHint":"{{count}} Fichiers suivis","imagesMedia":"IMAGES ET MÉDIAS","pctOfTrackedAssets":"{{pct}}% des actifs suivis","tsJsSource":"SOURCES TS/JS","jsEngine":"MOTEUR JS","bytecodeAot":"Bytecode AOT","standard":"Norme","splitUpTitle":"Séparation du bundle de développement","splitUpSub":"Ensemble {{mb}} Mo JS mesuré • {{files}} fichiers • {{packages}} packages","splitUpJson":"JSON fractionné","splitAppSource":"Code source de l'application","splitNodeModules":"Dépendances node_modules","splitAssetsMedia":"Actifs et médias","splitMetroOverhead":"Frais généraux de développement de Metro","splitSize":"{{kb}} Ko • {{mb}} Mo","productionFootprint":"EMPREINTE DE PRODUCTION","productionValue":"iOS {{ios}} Mo • Android {{android}} Mo","productionDownload":"Téléchargement : iOS ~{{ios}} Mo • AAB ~{{aab}} Mo • APK ~{{apk}} Mo","treemapTitle":"Treemap du rapport entre les actifs et les types de fichiers","treemapSub":"Total ~{{mb}} Mo","treemapJson":"Treemap de ratio JSON","legendImages":"Images :","legendTs":"TS/TSX :","legendJs":"Bibliothèques JS :","legendFonts":"Polices :","legendJson":"JSON :","categoryBreakdown":"Répartition des catégories","categoriesJson":"Répartition des catégories JSON","catImagesTitle":"Images et ressources multimédias","catImagesDesc":"Actifs PNG, WebP, SVG et JPG regroupés","catJsTitle":"Modules de nœuds compilés et JS","catJsDesc":"Dépendances tierces et ponts natifs","catFontsTitle":"Polices personnalisées et glyphes vectoriels","catFontsDesc":"Éléments de police dans le lot","catTsTitle":"Composants TypeScript et JSX","catTsDesc":"Composants d'écran d'application, hooks et logique métier","catJsonTitle":"Données JSON et localisations","catJsonDesc":"Dictionnaires de traduction i18n et configurations statiques","totalBundleAssets":"TOTAL DES DOSSIERS DE PROJETS HÔTES","totalBundleValue":"{{kb}} Ko (~{{mb}} Mo)","totalFormula":"Somme des fichiers source de l'hôte : {{images}} Ko + {{js}} Ko + {{fonts}} Ko + {{ts}} Ko + {{json}} Ko = {{total}} Ko ({{count}} éléments)","prodIosApp":"Application iOS (.ipa)","prodAndroidAab":"Android AAB (.aab)","prodAndroidApk":"APK universel (.apk)","prodHeroTitleIos":"Empreinte binaire de production iOS","prodHeroTitleAab":"Offre groupée d'applications Google Play (.aab)","prodHeroTitleApk":"APK autonome universel (.apk)","prodHeroSubIos":"Estimations d’installation sur l’App Store et de téléchargement cellulaire en direct","prodHeroSubAab":"Architecture APK fractionnée de livraison dynamique optimisée par appareil","prodHeroSubApk":"Archive d'installation universelle multi-ABI pour le chargement latéral et la distribution directe","prodInstallSize":"TAILLE D'INSTALLATION","prodInstallHint":"Empreinte non compressée sur l'appareil","prodDownloadSize":"TAILLE DU TÉLÉCHARGEMENT","prodDownloadHint":"Stocker la charge utile de transfert réseau","prodCompression":"COMPRESSION","prodCompressionHint":"Ratio de bytecode et d'actifs","prodFormatArch":"ARCHITECTURE DES FORMATS","prodFormatHintIos":"Exécution Apple ARM64","prodFormatHintAab":"Diffusion dynamique sur Google Play","prodFormatHintApk":"Pack universel à chargement latéral","prodArchTitle":"Architecture des composants binaires","prodArchSub":"Bibliothèques natives compilées, bytecodes d'exécution, ressources et blocs de signature","prodTotalIos":"BINAIRE TOTAL DE L'APPLICATION IOS","prodTotalAab":"PACK TOTAL ANDROID AAB","prodTotalApk":"TOTAL UNIVERSEL APK","prodTotalFormula":"À partir de {{devKb}} Ko (~{{devMb}} Mo • {{count}} actifs totaux) ensemble de sources de développement → {{installMb}} Mo binaire natif optimisé ({{pct}} % de compression de bytecode/asset).","tabOverview":"Aperçu","tabProduction":"Production ({{count}})","tabFiles":"Fichiers ({{count}})","tabPackages":"Forfaits ({{count}})","tabMedia":"Médias ({{count}})","tabOptimizer":"Optimiseur","analyzingTitle":"Analyse du bundle d'applications hôtes de Metro…","analyzingHint":"Récupération du bundle et extraction de vrais modules","searchFilesPlaceholder":"Recherche par nom de fichier (.png, .tsx, .ttf, chemin)...","filteredFilesJson":"Fichiers filtrés JSON","catAll":"Tous les fichiers","catUnused":"Non consommé (mort)","catConsumed":"En cours d'utilisation/actif","catImages":"Images et médias","catTypescript":"TypeScript / TSX","catJavascript":"Modules JS et nœuds","catFonts":"Polices et glyphes","catJson":"JSON et données","treeView":"Vue arborescente","flatList":"Liste plate","expand":"Développer","collapse":"Réduire","showingFilesOf":"Affichage de {{shown}} fichiers sur {{total}}","filesOf":"{{count}} sur {{total}} fichiers","notConsumed":"Non consommé","consumed":"Consommé","copyFileInfo":"Copier les informations {{name}}","fileDetailsJson":"Détails du fichier JSON","file":"fichier","files":"fichiers","fileSizeKb":"{{size}} Ko","fileSizeMb":"{{size}} Mo","mbValue":"~{{size}} Mo","kbMbValue":"{{kb}} Ko ({{mb}} Mo)","legendValue":"{{kb}} Ko ({{pct}}%)","mediaSavings":"{{size}} Ko","searchPackagesPlaceholder":"Package de recherche (react-native, axios, navigation)...","dependenciesJson":"Dépendances JSON","showingDependencies":"Affichage des dépendances {{count}}","versionPrefix":"v{{version}}","bundled":"groupé","deprecated":"DÉCONSEILLÉ","updateAvailable":"Mise à jour : v{{version}}","upToDate":"À jour","bundledBadge":"Regroupé","packageDetailsJson":"Détails du package JSON","direct":"Direct","transitive":"Transitif","minified":"~{{size}} Ko réduits","npmLink":"npm ↗","dependenciesCount":"{{count}} Dépendances","mediaAuditorTitle":"Auditeur de compression multimédia","mediaAssetsJson":"Actifs multimédias JSON","mediaAuditorPrefix":"Les images et les polices constituent","mediaAuditorMid":"du total des actifs (~{{kb}} Ko). La conversion de fichiers PNG en WebP et en sous-ensembles de polices peut réduire la taille jusqu'à","mediaAssetsList":"Éléments multimédias et polices ({{count}} éléments)","mediaItemJson":"Élément multimédia JSON","mediaAndFonts":"{{count}} Médias et polices","optimizerTitle":"Liste de contrôle d'optimisation du bundle React Native","optimizationChecklist":"Liste de contrôle d'optimisation","optTip1Title":"Convertir des PNG lourds en WebP/SVG","optTip1Desc":"Les images représentent plus de 40 % de la taille finale du téléchargement de l’application. La conversion de PNG raster 2x/3x en WebP permet d'économiser 60 à 70 % de taille sans perte de fidélité visible.","optTip2Title":"Activer le moteur de bytecode Hermes","optTip2DescActive":"Hermès est actif ! JavaScript est compilé en bytecode optimisé à l'avance.","optTip2DescInactive":"Hermès est handicapé. Activez Hermes dans la configuration de votre application pour une charge utile réduite d'environ 40 % et un démarrage TTI instantané.","optTip3Title":"Sous-ensemble de polices et élagage de poids","optTip3Desc":"Incluez uniquement les épaisseurs de police que vous utilisez activement (par exemple, Regular et Bold). Supprimez les plages de glyphes inutilisées pour économiser plus de 100 Ko par fichier de police.","optTip4Title":"Importations de chemins sélectifs (Tree-shaking)","optTip4Desc":"Importez à partir de sous-chemins spécifiques (par exemple lodash/get ou des jeux d'icônes vectorielles spécifiques) au lieu d'importer de gros packages monolithiques.","optTip5Title":"Chargement paresseux de l'écran","optTip5Desc":"Chargement paresseux d'écrans secondaires et de feuilles modales lourdes à l'aide d'importations dynamiques et d'InteractionManager pour réduire l'évaluation initiale du bundle.","highImpact":"Fort impact","mediumImpact":"Impact moyen","bestPractice":"Meilleure pratique","actionRequired":"Action requise","active":"Actif","tipDetails":"Détails du pourboire","iosComp1Name":"Frameworks et modules dynamiques","iosComp1Desc":"Frameworks de pods natifs React, Hermes et {{count}}.","iosComp1Advice":"Assurez la suppression du code mort (STRIP_INSTALLED_PRODUCT = YES) en mode Release.","iosComp2Name":"Exécutable Mach-O (ARM64)","iosComp2Desc":"L'application hôte a compilé des ponts natifs Swift/Objective-C et C++.","iosComp2Advice":"Activez le LTO monolithique (Link-Time Optimization) dans le schéma Xcode.","iosComp3Name":"Catalogue d'actifs (Assets.car)","iosComp3Desc":"AppIcons, écrans de démarrage, glyphes vectoriels et polices groupées.","iosComp3Advice":"Compilez les images dans le catalogue d'actifs Xcode pour une réduction automatique des applications.","iosComp4Name":"Bytecode Hermès (main.jsbundle)","iosComp4Desc":"L'application hôte JavaScript a compilé AOT dans le bytecode Hermes (fichiers {{count}}).","iosComp4Advice":"Le bytecode AOT se charge avec une latence de compilation de 0 ms au lancement de l'appareil.","iosComp5Name":"Métadonnées et signatures de code","iosComp5Desc":"_CodeSignature, Info.plist et bloc de droits.","iosComp5Advice":"Signature de code Apple standard et signature de provisionnement.","andComp1Name":"Bibliothèques C++ natives (.so)","andComp1Desc":"Adaptateurs natifs libhermes.so, libfbjni.so et {{count}} C++.","andComp1Advice":"Déployez avec Android App Bundle (.aab) pour fournir des APK divisés par ABI.","andComp2Name":"DEX compilé (classes.dex)","andComp2Desc":"Compilation du runtime Java & Kotlin, des ponts AndroidX et React Native.","andComp2Advice":"Activez la réduction R8 / ProGuard (minifyEnabled true) dans build.gradle.","andComp3Name":"Ressources Android (res/)","andComp3Desc":"Drawables, XML vectoriels, densités mipmap, resources.arsc, polices.","andComp3Advice":"Utilisez WebP et VectorDrawables pour éviter la duplication d'actifs multi-densité.","andComp4Name":"Bytecode Hermès (Android)","andComp4Desc":"JavaScript de l'application hôte compilé dans le bytecode Hermes (fichiers {{count}}).","andComp4Advice":"Bytecode précompilé lors de la tâche de graduation assembleRelease.","andComp5Name":"Manifeste et signatures (META-INF)","andComp5Desc":"AndroidManifest.xml, certificats de signature, blocs du schéma de signature APK v2/v3/v4.","andComp5Advice":"Bloc de signature et de signature officiel de Google Play.","apkComp1Name":"Bibliothèques multi-ABI C++ (.so)","apkComp1Desc":"Bibliothèques partagées multi-architecture universelles (.so) regroupées pour un chargement latéral direct.","apkComp1Advice":"Utilisez Android App Bundle (.aab) pour Google Play afin de réduire la taille de l'installation de 60 %.","apkComp2Name":"Bytecode DEX compilé (classes.dex)","apkComp2Desc":"Runtime Java et Kotlin compilé, bibliothèques AndroidX et modules de pont natifs.","apkComp2Advice":"Activez la réduction R8 / ProGuard (minifyEnabled true) et ShrinkResources true.","apkComp3Name":"Ressources et actifs Android (res/)","apkComp3Desc":"Drawables, XML vectoriels, densités mipmap, resources.arsc, polices.","apkComp3Advice":"Utilisez WebP et VectorDrawables pour éviter la duplication d'actifs multi-densité.","apkComp4Name":"Pack de bytecode Hermes (Android)","apkComp4Desc":"JavaScript de l'application hôte compilé dans le bytecode Hermes (fichiers {{count}}).","apkComp4Advice":"Bytecode précompilé lors de la tâche de graduation assembleRelease.","apkComp5Name":"Manifeste et signatures (META-INF)","apkComp5Desc":"AndroidManifest.xml, certificats de signature, schéma de signature JAR et APK v2/v3/v4.","apkComp5Advice":"Chargement latéral d'entreprise et bloc de signature d'installation directe."},"errors":{"appTag":"APP","title":"Quelque chose s'est mal passé","message":"Une erreur inattendue s'est produite.","retry":"Réessayez","reset":"Réinitialiser","close":"Fermer","errorReport":"Rapport d'erreur","modalTitle":"L'inspecteur s'est écrasé","modalMessage":"L'inspecteur a rencontré une erreur inattendue. Vous pouvez le réinitialiser ci-dessous.","inlineTitle":"Erreur de l'inspecteur","inlineMessage":"Une erreur inattendue s'est produite dans l'inspecteur.","networkError":"La requête réseau a échoué","crashIntercepted":"CRASH INTERCEPTÉ","protected":"PROTÉGÉ","rootCauseTitle":"Diagnostic des causes profondes","rootCauseSubtitle":"L'inspecteur a détecté cette erreur d'exécution pour empêcher la fermeture de l'application","exactLocation":"EMPLACEMENT EXACT DE LA SOURCE","file":"Fichier :","lineCol":"Ligne / Col :","lineColVal":"Ligne {{line}}, Col {{col}}","function":"Fonction :","callStack":"CADRES DE PILE D'APPELS","framesCount":"{{count}} images","tryAgainRecover":"Réessayez / Récupérez","copyDiagnostics":"Copier les diagnostics","copy":"Copier"},"jsonViewer":{"pretty":"Structuré","raw":"Brut","table":"Tableau","emptyObject":"Objet vide","emptyPayload":"Charge utile vide","emptyTable":"Objet vide","fold":"Plier","expand":"Développer","min":"Min","indent":"Indenter","wrap":"Retour ligne","copied":"Copié !","copy":"Copier JSON","key":"Clé","value":"Valeur","lines":"lignes","line":"ligne"},"crash":{"filterAll":"All","frameApp":"APP","frameLib":"LIB","jsc":"JSC","filterPlatformIos":"iOS","title":"Accident","searchPlaceholder":"Erreur de recherche, message, pile...","searchDetailPlaceholder":"Rechercher dans trace ou JSON...","statCrashes":"Crashes","statFatal":"Mortel","statJsErrors":"Erreurs JS","statPromises":"Promesses","statRender":"Rendu","statNative":"Natif","filterFatal":"Mortel","filterJsError":"Erreur JS","filterPromise":"Promesse","filterRender":"Rendu","filterNative":"Natif","fatalBadge":"MORTEL","handledBadge":"MANIPULÉ","fatalCrash":"ACCIDENT MORTEL","handledException":"EXCEPTION GÉRÉE","unknownException":"Exception inconnue","report":"Rapport","inspect":"Inspecter","copyReport":"Copier le rapport","copied":"Copié","clearTitle":"Effacer l'historique des crashs","clearMessage":"Êtes-vous sûr de vouloir effacer tous les enregistrements de crash interceptés ?","clearCancel":"Annuler","clearConfirm":"Tout effacer","emptyTitle":"Zéro crash détecté","emptySubtitle":"La protection anti-collision globale est active. Toutes les exceptions natives et JavaScript sont interceptées et protégées.","emptySearchSubtitle":"Aucune entrée de crash ne correspond à votre requête de recherche.","tabStack":"Pile ({{count}})","tabDiagnostics":"Diagnostic","tabTrail":"Sentier ({{count}})","tabRawJson":"JSON brut","appFrames":"Cadres d'application ({{count}})","allFrames":"Toutes les images ({{count}})","anonymous":"<anonyme>","noStackTrace":"Aucune trace de pile capturée pour cet événement.","deviceEnvironment":"Appareil et environnement","platform":"Plateforme","osVersion":"Version du système d'exploitation","reactNative":"Réagir natif","jsEngine":"Moteur JS","hermesEngine":"Moteur Hermès","architecture":"Architecture","fabricNewArch":"Tissu (nouvelle arche)","paperLegacy":"Papier (ancien)","appState":"État de l'application","jsHeapMemory":"Mémoire de tas JS","usedHeap":"Tas utilisé","totalHeap":"Tas total","noBreadcrumbs":"Aucun événement de fil d'Ariane enregistré avant ce crash.","simNativeMessage":"Exception fatale native simulée","simPromiseMessage":"Rejet de promesse non géré simulé","simRenderMessage":"Erreur de rendu du composant React simulé","simJsMessage":"Exception JavaScript simulée","reportTitle":"RAPPORT DE DIAGNOSTIC D'ACCIDENT","reportErrorName":"Nom de l'erreur :","reportMessage":"Message :","reportType":"Tapez :","reportFatalYes":"OUI (Fatal)","reportFatalNo":"NON (Attrapé/Géré)","reportFatal":"Mortel :","reportTimestamp":"Horodatage :","reportUptime":"Temps de disponibilité de l'application :","reportUptimeValue":"{{seconds}} secondes","reportPlatform":"Plateforme :","reportReactNative":"Réagissez natif :","reportHermes":"Hermès :","reportEnabled":"Activé","reportDisabled":"Désactivé","reportArchitecture":"Architecture :","reportFabricNew":"Tissu (Nouveau)","reportPaperLegacy":"Papier (ancien)","reportScreenSize":"Taille de l'écran :","reportAppState":"État de l'application :","reportJsMemory":"Mémoire JS :","reportStackTrace":"TRAÇAGE DE LA PILE :","reportNoStackTrace":"Aucune trace de pile disponible","reportComponentHierarchy":"HIÉRARCHIE DES COMPOSANTS :","reportRecentBreadcrumbs":"Fil d'Ariane récent :","mdReportTitle":"🚨 Rapport de crash : {{name}}","mdStackTrace":"📦 Trace de pile","mdComponentHierarchy":"🌲 Hiérarchie des composants","mdRecentBreadcrumbs":"👣 Fil d'Ariane récent","mdSeverityFatal":"MORTEL","mdSeverityHandled":"MANIPULÉ","breadcrumbNavigation":"Navigation de \"{{from}}\" à \"{{to}}\"","breadcrumbAction":"Action : {{actionType}}","unknown":"Inconnu","runtimeException":"Exception d'exécution","logFatalCrash":"Accident mortel","logUnhandledError":"Erreur non gérée","errorNameFatal":"Erreur fatale","errorNameUnhandled":"Exception non gérée","nativeCrashTitle":"Crash natif","nativeUncaughtException":"Exception native non capturée","nativeException":"Exception native","unhandledPromiseRejection":"Rejet de promesse non géré","filterTitle":"Filtres de crash","filterSubtitle":"Diagnostics et rapports","filterReset":"Tout réinitialiser","filterTypeSection":"TYPE D'ACCIDENT","filterTypeAll":"Tous types","filterTimeSection":"HORIZON TEMPS","filterTimeAll":"Tout le temps","filterTime15m":"15 dernières minutes","filterTime1h":"Dernière 1 heure","filterTime24h":"Dernières 24 heures","filterTime7d":"7 derniers jours","filterPlatformSection":"PLATEFORME","filterPlatformAll":"Toutes les plateformes","filterPlatformAndroid":"Android","filterEngineSection":"MOTEUR JS","filterEngineAll":"Tous les moteurs","filterEngineHermes":"Hermès","filterSortSection":"ORDRE DE TRI","filterSortNewest":"Le plus récent en premier (par défaut)","filterSortOldest":"Le plus âgé en premier","filterDiscard":"Jeter","filterApply":"Appliquer ({{count}} plantages)","frameCopy":"Copier","frameCopied":"Copié","componentHierarchy":"Hiérarchie des composants","breadcrumbTrail":"JOURNAL DES ACTIVITÉS ET ÉVÉNEMENTS","deviceDiagnostics":"DIAGNOSTICS DE L’APPAREIL AU MOMENT DU CRASH","openInInspector":"Ouvrir dans l’inspecteur"},"socket":{"showingConnections":"Affichage de {{count}} connexions","showingFilteredConnections":"Affichage de {{filtered}} sur {{total}} connexions","deletedCount":"{{count}} journaux WebSocket supprimés","copiedUrls":"{{count}} URLs copiées","webSocketTraffic":"Trafic WebSocket ({{count}} connexions)","title":"WebSocket","messages":"Messages","overview":"Aperçu","params":"Paramètres","rawAndCode":"Brut et code","totalFrames":"CADRES TOTALS","sentRecv":"ENVOYÉ / RECV","dataTransferred":"DONNÉES TRANSFÉRÉES","searchFramesPlaceholder":"Rechercher des charges utiles de cadre ou des noms d'événements...","sent":"Envoyé","recv":"Réception","emptyFrames":"Aucune image capturée pour cette connexion","searchSocketsPlaceholder":"Rechercher des URL ou des messages WebSocket...","noSockets":"Aucune connexion WebSocket","noSocketsDesc":"Les connexions WebSocket, Socket.IO et WSS capturées apparaîtront ici en temps réel.","noMatching":"Aucun WebSocket correspondant","adjustSearchFilter":"Essayez d'ajuster votre requête de recherche ou de filtrer les puces.","simulateTraffic":"Simuler le trafic WebSocket de démonstration","clearTitle":"Effacer tous les journaux WebSocket","clearMessage":"Êtes-vous sûr de vouloir supprimer toutes les sessions WebSocket enregistrées ?","cleared":"Tous les journaux WebSocket effacés","deleteSelectedTitle":"Supprimer les WebSockets sélectionnés","deleteSelectedMsg":"Voulez-vous vraiment supprimer les {{count}} journaux WebSocket sélectionnés ?","filterTitle":"Filtrer les connexions WebSocket","connectionDetails":"DÉTAILS DE LA CONNEXION","url":"URL","clientEngine":"Moteur client","readyState":"État prêt","connectedAt":"Connecté à","closedAt":"Fermé à","closeCodeReason":"Code et raison de fermeture","subprotocols":"Sous-protocoles","callerStack":"Pile d'appel","error":"Erreur","handshakeHeaders":"En-têtes du Handshake","handshakeParams":"PARAMÈTRES DE REQUÊTE DU HANDSHAKE","noQueryParams":"Aucun paramètre de requête passé dans l'URL de connexion","jsClientCode":"CODE CLIENT JAVASCRIPT","terminalWscat":"COMMANDE TERMINAL WSCAT","rawDump":"DUMP JSON BRUT DE CONNEXION"},"push":{"clearTitle":"Effacer l'historique push","clearMessage":"Êtes-vous sûr de vouloir effacer tous les enregistrements de notifications push ?","cleared":"Historique des notifications push effacé","foreground":"Premier plan","background":"Arrière-plan","quit":"Fermé","title":"Notifications poussées","preview":"Aperçu","payload":"Charge utile personnalisée","deliveryMetadata":"Métadonnées de remise et message","rawPayload":"Charge utile brute","link":"Lien","appNotification":"Notification d'application","now":"maintenant","domainFields":"Champs spécifiques au domaine","searchPlaceholder":"Rechercher des notifications push...","noNotifications":"Aucune notification push","noNotificationsDesc":"Les événements Firebase FCM, Apple APN, OneSignal et push personnalisés capturés apparaîtront ici en temps réel.","filterTitle":"Filtrer les notifications push","messageId":"ID du message :","sourceDomain":"Source / Domaine :","appState":"État de l'application :","actionType":"Type d'action :","timestamp":"Horodatage :","channelId":"ID du canal :","sound":"Son :","badgeCount":"Compteur de badge :","collapseKey":"Clé de regroupement :","noCustomData":"Aucune donnée clé-valeur personnalisée trouvée","noMatching":"Aucune notification push correspondante","adjustSearchFilter":"Essayez d’ajuster votre recherche ou vos filtres."},"about":{"title":"À propos et spécifications","subtitle":"Infos du package, spécifications d'exécution et diagnostic","heroTitle":"Inspecteur intégré","heroDescription":"L'outil tout-en-un de débogage, journalisation et QA sur l'appareil pour les applications React Native et Expo.","upToDate":"À jour","versionAvailable":"v{{version}} Disponible","copyUpgradeCommand":"Copier la commande de mise à jour (v{{version}})","copiedUpgradeCommand":"Commande npm copiée !","appInformation":"INFORMATIONS DE L'APP","appName":"Nom de l'app","packageIdentifier":"Identifiant du package","appVersion":"Version de l'app","environment":"Environnement","developmentDebug":"Développement (Débogage)","platform":"Plateforme","features":"CE QUE FAIT L'INSPECTEUR","featureNetwork":"Moniteur de trafic réseau","featureNetworkDesc":"Inspectez les requêtes HTTP et HTTPS, les réponses, les en-têtes et la latence du serveur.","featureConsole":"Journal de console","featureConsoleDesc":"Consultez les journaux de console, avertissements et erreurs en temps réel.","featureAnalytics":"Télémétrie analytique","featureAnalyticsDesc":"Suivez les événements Firebase et analytiques personnalisés en direct.","featureRedux":"État et actions Redux","featureReduxDesc":"Inspectez les actions envoyées, les charges utiles et les différences de l'arbre d'état.","featureCapture":"Capture d'écran et vidéo","featureCaptureDesc":"Prenez des captures d'écran et enregistrez des sessions de test à partager.","featureCrash":"Détection des plantages et diagnostic","featureCrashDesc":"Protège contre les plantages natifs et fournit les métriques de santé de l'appareil.","githubSub":"Étoile et code source","npmRegistry":"Registre NPM","npmRegistrySub":"Mises à jour du package","documentationSub":"Guide d'intégration","reportIssue":"Signaler un problème","reportIssueSub":"Aide et support","releaseNotes":"Notes de version","releaseNotesSub":"Nouveautés","copyInstall":"Copier l'installation","copyInstallSub":"commande npm / yarn","copiedInstallCommand":"Commande d'installation copiée !","footerLicense":"React Native In-App Inspector · Licence MIT","footerTagline":"Outil de débogage sans configuration","productionRelease":"Production (sortie)","appleIos":"AppleiOS","googleAndroid":"Google-Android","github":"GitHub","documentation":"Documentation"},"codeSnippet":{"copy":"Copier","copied":"Copié!","matchCount":"{{count}} correspondance","matchCount_plural":"{{count}} correspondances","noMatches":"Aucune correspondance","searchPlaceholder":"Rechercher...","prevMatch":"Match précédent","nextMatch":"Prochain match","clearSearch":"Effacer la recherche"},"diffViewer":{"added":"ajouté","removed":"supprimé","changed":"changé","noDiff":"Aucune différence","emptyTitle":"Aucune différence trouvée","emptySubtitle":"Les deux charges utiles sont identiques."},"logCard":{"seeMore":"Afficher plus","seeLess":"Afficher moins","copy":"Copier","copied":"Copié!"},"emptyState":{"title":"Rien ici encore","subtitle":"Les données apparaîtront ici lorsque vous utiliserez l'application.","reload":"Recharger"},"errorBoundary":{"title":"Quelque chose s'est mal passé","message":"Une erreur inattendue s'est produite.","retry":"Réessayez","reset":"Réinitialiser","close":"Fermer"},"mediaGallery":{"all":"Tous ({{count}})","photos":"Photos","videos":"Vidéos","gifs":"GIF","purge":"Purger ({{size}})","purgeTitle":"Purger tous les médias","purgeMessage":"Cela supprimera définitivement toutes les {{count}} captures d'écran, vidéos et GIF capturés ({{size}}). Continuer?","noMediaTitle":"Aucun média capturé","noMediaDesc":"Utilisez le bouton Enregistrer une photo ou une vidéo dans la barre d'outils pour capturer des captures d'écran, des enregistrements d'écran ou des GIF de l'ensemble de l'application.","deleted":"Élément multimédia supprimé","allPurged":"Tous les médias capturés purgés","converting":"Conversion...","convertToGif":"Convertir en GIF","playVideo":"Lire la vidéo","playError":"Impossible de lire la vidéo","convertedSuccess":"Converti en GIF animé avec succès !","convertFailed":"Échec de la conversion en GIF","share":"Partager","copyUri":"Copier l'URI","uriCopied":"URI du fichier copié dans le presse-papiers","delete":"Supprimer","deleteSelected":"Supprimer ({{count}})","deleteSelectedTitle":"Supprimer la sélection","deleteSelectedMessage":"Voulez-vous vraiment supprimer {{count}} éléments multimédias sélectionnés ?","deletedCount":"{{count}} éléments multimédias supprimés","deleteTitle":"Supprimer le média","deleteMessage":"Voulez-vous vraiment supprimer {{filename}} ?","shareUnavailable":"Partage non disponible sur cet appareil","showingResults":"Affichage de {{count}} résultats","showingFilteredResults":"Affichage de {{count}} résultats sur {{total}}","selectedOfResults":"{{selected}} résultats sélectionnés sur {{total}}","minimize":"Réduire","expand":"Développer le plein écran","collapse":"Quitter le plein écran","speed":"Vitesse","loop":"Boucle","pause":"Pause","play":"Jouer","hideGridlines":"Masquer la grille Instagram (3×3)","showGridlines":"Afficher la grille Instagram (3×3)","hideWatermark":"Masquer le filigrane QA","showWatermark":"Afficher le filigrane QA","exportGif":"Exporter en GIF animé","snapshotFrame":"Capturer l’image (PNG)","tapToPlaceStep":"Touchez ou faites glisser pour placer le badge","resetAdjustments":"Ajustements réinitialisés","tagPlaced":"Étiquette placée","tapToAddText":"Touchez l’image pour ajouter du texte","textAdded":"Texte superposé ajouté","redone":"Rétabli","undone":"Annulé","videoSaved":"Vidéo éditée enregistrée dans la galerie","savedSuccess":"Enregistré avec succès","saveFailed":"Échec de l’enregistrement du média","snapshotSaved":"Image de capture enregistrée dans la galerie","snapshotFailed":"Échec de la capture de l’image","shareSuccess":"Média partagé avec succès","cropFailed":"Échec du recadrage","croppedSuccess":"Média recadré avec succès","resizeFailed":"Échec du redimensionnement","resizedSuccess":"Média redimensionné avec succès","trimFailed":"Échec de la coupe vidéo","trimmedSuccess":"Vidéo coupée avec succès","muteFailed":"Échec de la modification audio","mutedSuccess":"Audio modifié avec succès","resetSuccess":"Image réinitialisée à l’original","openCameraRoll":"Ouvrir la pellicule","importPhotos":"Importer des photos de la bibliothèque","importVideos":"Importer des vidéos de la bibliothèque","importedPhoto":"Photo importée de la pellicule","importedVideo":"Vidéo importée de la pellicule","importFailed":"Échec de l’importation du média","preview":"Aperçu"},"debugging":{"title":"Débogage et outils","buildSuccess":"Création de l'APK générée avec succès !","buildFailed":"Échec de la construction : {{error}}","buildCancelled":"Construction annulée par l'utilisateur"},"telemetry":{"fps":"FPS","liveTraffic":"RÉSEAU DIRECT","ram":"RAM","active":"ACTIF","networkSpeed":"Vitesse du réseau","fpsLive":"FPS en direct","ramUsage":"Utilisation RAM","battery":"Batterie","livePerformanceStrip":"Bandeau de performances en direct"},"media":{"animatedGif":"GIF ANIMÉ","cropDefect":"Rogner défaut","rotate90":"Pivoter 90°","redactPii":"Masquer PII","trim5s":"Rogner 5s","muteAudio":"Couper son","toGif":"En GIF","play":"Lire","trim":"Couper","audio":"Audio","speed":"Vitesse","snapshot":"Capture"},"language":{"confirmTitle":"Changer de langue ?","confirmMessage":"Voulez-vous basculer la langue de l’inspecteur vers {{newLang}} ?","confirmApply":"Appliquer la langue","current":"Actuel","new":"Nouveau"},"support":{"title":"Support et Communauté","subtitle":"React Native In-App Inspector","heroDescription":"Conçu avec passion pour fournir une suite complète de débogage sur appareil pour les équipes mobiles du monde entier. Vos parrainages, étoiles et retours soutiennent nos améliorations continues.","sponsor":"Sponsoriser sur GitHub","sponsorBadge":"SPONSOR","sponsorDesc":"Soutenez la maintenance continue, les nouvelles fonctionnalités et améliorations.","sponsorBtn":"Devenir sponsor","copiedSponsor":"Lien GitHub Sponsors copié !","star":"Ajouter une étoile sur GitHub","starDesc":"Ajoutez une étoile pour aider d’autres développeurs React Native à découvrir cet outil.","issues":"Signaler un problème / Suggestion","issuesDesc":"Un bug ou une idée ? Ouvrez un ticket sur GitHub.","docs":"Documentation officielle","docsDesc":"Visite guidée, syntaxe de recherche et guides de configuration.","contact":"Contacter l’auteur","contactDesc":"vengatmacuser@gmail.com • Support direct et demandes d’entreprises.","waysToSupport":"FAÇONS DE CONTRIBUER ET DE SOUTENIR","npmRegistry":"Registre de paquets NPM","npmRegistryDesc":"Consultez les notes de version, la taille des paquets et les statistiques d’installation.","shareTitle":"FAITES PASSER LE MOT","shareDesc":"Aidez vos collègues développeurs et testeurs QA à déboguer le réseau, les logs et Redux plus rapidement.","shareWithTeam":"Partager avec l’équipe","copiedRepo":"Lien du dépôt copié !","copyRepo":"Copier l’URL du dépôt","maintainer":"MAINTENEUR DU PROJET","sendEmail":"Envoyer un e-mail","copiedEmail":"Adresse e-mail copiée !","copyEmail":"Copier l’e-mail","close":"Fermer"}}
1
+ {"common":{"cancel":"Annuler","clear":"Effacer","clearAll":"Tout effacer","close":"Fermer","loading":"Chargement...","success":"Succès","pending":"En attente","failed":"Échoué","copy":"Copier","copied":"Copié !","copyJson":"Copier JSON","collapseAll":"Tout réduire","expandAll":"Tout développer","viewOnNpm":"Voir sur NPM","later":"Plus tard","minimize":"Réduire","tapToExpand":"Appuyez pour développer","open":"Ouvrir","openInBrowser":"Ouvrir dans le navigateur","openInBrowserPrompt":"Voulez-vous ouvrir cette URL dans votre navigateur externe ?","delete":"Supprimer","reset":"Réinitialiser","save":"Enregistrer","edit":"Modifier","add":"Ajouter","search":"Rechercher","filter":"Filtrer","sort":"Trier","refresh":"Actualiser","retry":"Réessayer","confirm":"Confirmer","yes":"Oui","no":"Non","ok":"OK","done":"Terminé","back":"Retour","next":"Suivant","show":"Afficher","hide":"Masquer","select":"Sélectionner","selectAll":"Tout sélectionner","deselectAll":"Tout désélectionner","noResults":"Aucun résultat trouvé","items":"éléments","of":"de","showing":"Affichage","active":"Actif","inactive":"Inactif","enabled":"Activé","disabled":"Désactivé","live":"En direct","connected":"Connecté","disconnected":"Déconnecté","update":"MISE À JOUR","unknown":"Inconnu","source":"SOURCE","share":"Partager","version":"Version","all":"Tout","dragToHide":"Glisser ici pour masquer","releaseToHide":"Relâcher pour masquer l’inspecteur","expand":"Agrandir","undo":"Annuler","inActiveDevelopment":"En développement actif","inspectorDismissed":"Inspecteur fermé","noMatches":"Aucun résultat correspondant","moreFilters":"Plus de filtres"},"header":{"rec":"REC","sourceFirebase":"FB","sourceManual":"MAN","aboutSpecs":"À propos et spécifications","live":"En direct","keys":"{{count}} clés","frames":"{{count}} images","updateAvailableTitle":"Mise à jour disponible","updateAvailableMessage":"réagir-native-inapp-inspector v{{version}} est disponible sur NPM (installé : v{{installed}}).","clearEverythingTitle":"Tout effacer","clearEverythingMessage":"Cela efface tous les onglets : API, journaux, analyses, chronologie Redux et historique des crashs. Continuer?","photo":"Photos","record":"Enregistrer","clear":"Effacer","about":"À propos","screenshotCaptured":"📸 Capture d'écran capturée et enregistrée","screenshotFailed":"Échec de la capture d'écran","screenshotError":"Erreur lors de la capture d'écran","recordingStarted":"🔴 L'enregistrement vidéo a commencé","recordingSaved":"🎥 Enregistrement enregistré ({{duration}}s)","recordingError":"Erreur d'enregistrement","recordingStartFailed":"Échec du démarrage de l'enregistrement","paramCount":"{{count}} paramètre","paramCount_plural":"{{count}} paramètres","firebase":"base de feu","manual":"manuel","sliceBadge":"TRANCHE","recordScreen":"Enregistrer l’écran","newVersionAvailable":"Mise à jour disponible","updateAvailable":"Mise à jour react-native-inapp-inspector v{{latestVersion}} prête","updateAvailableSubtitle":"Une nouvelle version de react-native-inapp-inspector est prête à installer","upgradeCommand":"COMMANDE DE MISE À NIVEAU","copyCommand":"Copier","viewNpm":"Voir","screenshot":"Capture","videoCapture":"Enregistrer"},"tabs":{"logs":"Journaux","analytics":"Analytique","crash":"Crashs","device":"Appareil","storage":"Stockage","media":"Capture","apis":"API","redux":"Redux","push":"Pousser","socket":"WebSocket","debugging":"Débogage"},"settings":{"configureSubtitle":"Configurer les paramètres du module","resetAlertTitle":"Réinitialiser tous les paramètres","resetAlertMessage":"Cela restaure la visibilité des modules et les préférences d'interface par défaut. Continuer ?","settingsReset":"Paramètres réinitialisés","settingsResetMessage":"Tous les paramètres ont été réinitialisés.","pushHistoryCleared":"Historique des notifications push effacé","socketHistoryCleared":"Historique WebSocket effacé","mainTitle":"Paramètres et modules","mainSubtitle":"Gérer les modules et les préférences","requiredBadge":"OBLIGATOIRE","defaultBadge":"PAR DÉFAUT","notConnectedBadge":"NON CONNECTÉ","notDetectedBadge":"NON DÉTECTÉ","readOnlyBadge":"LECTURE SEULE","coreBadge":"NOYAU","activeBadge":"ACTIF","dormantBadge":"DORMANT","protectedBadge":"PROTÉGÉ","modulesAndTools":"Modules et outils","uiPreferences":"Interface utilisateur et affichage","ramLimits":"RAM et limites","screenVideoCapture":"Capture d'écran et vidéo","zeroOverheadTitle":"Zéro surcharge en arrière-plan","zeroOverheadDesc":"Cochez les modules que vous souhaitez activer. Les modules désactivés consomment 0 % de CPU et de mémoire jusqu'à leur sauvegarde.","unsavedPending":"● Sélections non enregistrées en attente","allSynchronized":"Tous les modules synchronisés","modulesActive":"{{active}} sur {{total}} modules actifs","saveChanges":"Enregistrer les modifications","settingsSaved":"Paramètres enregistrés","settingsSavedDesc":"Les configurations des modules actifs ont été mises à jour avec succès.","configure":"Configurer","appearanceTheme":"APPARENCE ET THÈME","windowLayout":"FENÊTRE ET DISPOSITION","startupDefault":"ÉCRAN DE DÉMARRAGE ET PAR DÉFAUT","logFiltersDeduplication":"FILTRES DE JOURNAUX ET DÉDUPLICATION","resetSettings":"Réinitialiser tous les paramètres","resetSettingsDesc":"Effacer les préférences personnalisées par défaut","reset":"Réinitialiser","reduxNotConnectedTip":"Le magasin Redux n'est pas connecté. Appelez connectReduxStore(store) ou utilisez l'inspecteurReduxMiddleware pour l'activer.","analyticsNotConnectedTip":"Analytics n'est pas initialisé. Appelez setupAnalyticsLogger(analytics()) pour l’activer.","tabVisibility":"Visibilité des onglets","tabVisibilityDescription":"Choisissez quels modules apparaissent dans l'inspecteur","settingsTitle":"Paramètres","back":"Retour","apis":{"title":"Paramètres des API","total":"Total : {{count}}","maxRequestLogs":"Journaux de requêtes maximum","maxRequestLogsDescription":"Taille du tampon des requêtes réseau conservées en mémoire","clearNetworkLogs":"Effacer les journaux réseau","clearNetworkLogsDescription":"{{count}} requêtes stockées","networkLogsCleared":"Journaux réseau effacés.","showStatusFilter":"Filtre d'état","showStatusFilterDescription":"Afficher les puces d'état dans la liste des API","showMethodFilter":"Filtre de méthode","showMethodFilterDescription":"Afficher les puces de méthode dans la liste des API","defaultTabDescription":"Onglet sur lequel l'inspecteur s'ouvre"},"logs":{"title":"Paramètres des journaux","total":"Total : {{count}}","maxConsoleLogs":"Journaux maximum de la console","maxConsoleLogsDescription":"Combien de messages de console conserver","logLevels":"Sévérité des journaux","logLevelsDescription":"Sélectionnez les gravités à capturer dans les journaux","showInfo":"Afficher les journaux d'informations","showInfoDesc":"Journaux d'informations et impressions de débogage","showWarn":"Afficher les journaux d'avertissement","showWarnDesc":"Avertissements et dépréciations","showError":"Afficher les journaux d'erreurs","showErrorDesc":"Erreurs d'exécution et exceptions","clearConsoleLogs":"Effacer les journaux de la console","clearConsoleLogsDescription":"{{count}} journaux stockés","consoleLogsCleared":"Journaux de la console effacés."},"analytics":{"title":"Paramètres d'analyse","total":"Événements : {{count}}","maxAnalyticsEvents":"Événements capturés","maxAnalyticsEventsDescription":"{{count}} événements d'analyse stockés dans la mémoire tampon","clearAnalyticsEvents":"Effacer l'historique des analyses","clearAnalyticsEventsDescription":"Effacer tous les événements de télémétrie capturés","analyticsEventsCleared":"Événements d'analyse effacés."},"redux":{"title":"Paramètres de redux","reducers":"Réducteurs : {{count}}","autoRefresh":"Magasin d'actualisation automatique","autoRefreshDescription":"Capturez l'arborescence d'état du magasin Redux à chaque expédition","defaultJsonExpandDepth":"Profondeur d'extension JSON par défaut","defaultJsonExpandDepthDescription":"Profondeur initiale de l'arborescence d'état Redux à développer automatiquement","clearReduxState":"Effacer l'état Redux","clearReduxStateDescription":"Réinitialiser l'instantané de l'état actuel dans l'inspecteur","clearReduxStateEmpty":"Aucun instantané du magasin enregistré","reduxStateCleared":"Instantané d’état Redux effacé.","clearReduxTimeline":"Effacer la chronologie Redux","clearReduxTimelineDescription":"Supprimer tout l'historique des actions capturées","reduxTimelineCleared":"L'historique des actions Redux a été effacé."},"bundle":{"title":"Paramètres du paquet","sourceBundler":"Regroupeur de sources métropolitaines","sourceBundlerDesc":"Analyse les arborescences de modules en direct et calcule les répartitions de taille binaire","clearCache":"Vider le cache du bundle","clearCacheDesc":"Forcer la récupération et l'analyse du bundle JS","cacheCleared":"Cache d'analyse de bundle vidé."},"performance":{"title":"Paramètres de performances","frameMeasurement":"Mesure d'image en direct","frameMeasurementDesc":"Échantillonne les fréquences d'images UI/JS et détecte les rendus inutiles","clearEvents":"Effacer les événements de performance","clearEventsDesc":"Réinitialiser les fichiers indésirables enregistrés et l'historique des suppressions de FPS","eventsCleared":"Événements de performance effacés."},"crash":{"title":"Paramètres de crash","maxCrashLogs":"Journaux de crash maximum","maxCrashLogsDesc":"Combien d'enregistrements d'accidents conserver dans l'historique","globalGuard":"Protection mondiale contre les accidents","globalGuardDesc":"Intercepte directement les erreurs natives, JS et de rendu","clearHistory":"Effacer l'historique des crashs","clearHistoryDesc":"{{count}} journaux d'incidents stockés","historyCleared":"Journaux de crash effacés."},"media":{"title":"Capture d'écran et vidéo","badge":"H.264 natif / GIF","desc":"Configurer les formats de capture d'écran, la qualité, les FPS vidéo, la narration audio, l'enregistrement et le stockage GIF","screenshotCardTitle":"Formats et qualité de capture d'écran","screenshotCardDesc":"Configuration d'instantanés haute résolution en pleine fenêtre","imageFormat":"Format d'image","imageFormatDesc":"PNG (sans perte), JPEG (compact) ou WEBP","autoHide":"Masquer automatiquement la superposition de l'inspecteur","autoHideDesc":"Exclut l'interface utilisateur de l'inspecteur des captures d'écran","enabled":"ACTIVÉ","videoCardTitle":"Enregistrement vidéo et GIF","videoCardDesc":"Enregistrement MP4 H.264 et exportation GIF animé","audioMode":"Mode de narration audio","audioModeDesc":"Muet, audio de l'application ou narration vocale","frameRate":"Fréquence d'images","frameRateDesc":"Des FPS plus élevés donnent des enregistrements plus fluides","gifAutoOpt":"Optimisation automatique GIF","gifAutoOptDesc":"Convertit les enregistrements vidéo pour les PR GitHub et Slack","purgeAll":"Purger tous les médias capturés","purgeAllDesc":"Supprime toutes les captures d'écran, vidéos et GIF stockés","purgeCacheBtn":"Purger le cache","purgeConfirmTitle":"Purger le stockage multimédia","purgeConfirmMessage":"Cela supprime tous les fichiers multimédias capturés du cache local. Continuer?","purgedSuccess":"Stockage multimédia purgé"},"general":{"darkMode":"Thème du mode sombre","darkModeDescription":"Basculer entre une esthétique sombre et élégante ou un contraste clair","modalHeight":"Hauteur de la fenêtre de l'inspecteur","modalHeightDescription":"Pourcentage de couverture d'écran modal","modalAnimation":"Animation de transitions","modalAnimationDescription":"Style de présentation d’entrée et de sortie","duplicateLogs":"Afficher les journaux en double","duplicateLogsDescription":"Désactivé : les entrées répétées identiques se transforment en badges ×N","defaultOpeningTab":"Onglet d'ouverture par défaut","defaultOpeningTabDesc":"Onglet initial actif lorsque le bouton du lanceur est enfoncé","activeConsoleLogLevels":"Niveaux de journalisation de la console active","activeConsoleLogLevelsDesc":"Sélectionnez les gravités à capturer dans les journaux","resetToDefaults":"Réinitialiser aux valeurs par défaut","resetToDefaultsDescription":"Restaurer tous les paramètres de l'inspecteur","resetConfirmationTitle":"Réinitialisation des paramètres","resetConfirmationMessage":"Tous les paramètres ont été réinitialisés aux valeurs par défaut.","storageStatus":"Stockage persistant","storageStatusEnabled":"Stockage des paramètres : persistant ({{type}})","storageStatusEnabledDesc":"Vos préférences et la visibilité du module persistent lors des redémarrages de l'application.","storageStatusDisabled":"Stockage des paramètres : en mémoire (temporaire)","storageStatusDisabledDesc":"Les préférences sont réinitialisées lors de la suppression de l'application. Transmettez le stockage personnalisé à <NetworkInspector storage={...} /> pour persister sur Android.","language":"Langue","languageDescription":"Sélectionner la langue d'affichage de l'interface","selectLanguage":"Sélectionnez la langue","peekOpacity":"Opacité de transparence","peekOpacityDescription":"Niveau de transparence lorsque l’icône d’œil est activée"},"memory":{"manualTitle":"Nettoyage manuel de la mémoire","manualDescription":"Élaguez les anciennes entrées dans tous les magasins de journaux et dans la RAM libre","pruned":"{{count}} éléments supprimés de la mémoire"},"simulator":{"salesforce":"Simulation de poussée Salesforce Marketing Cloud","fcm":"Push FCM Firebase simulé","apns":"Push APN Apple simulé","deepLink":"Push Link profond simulé","chat":"Session WebSocket de chat en temps réel simulée","crypto":"Flux de ticker Binance Crypto simulé","socketio":"Session Socket.IO v4 simulée","echo":"Test d'écho WebSocket simulé","screenshotSaved":"Capture d'écran capturée et enregistrée !"},"simulatePushTitle":"SIMULER DES NOTIFICATIONS PUSH TEST","simulateSocketTitle":"SIMULER DES CONNEXIONS SOCKET TEST","directCaptureShortcuts":"RACCOURCIS DE CAPTURE DIRECTE"},"network":{"urlHeader":"URL","jsonViewer":{"raw":"Raw","key":"Key","pretty":"Jolie","table":"Tableau","emptyObject":"Objet vide","emptyTable":"Objet vide","value":"VALEUR","keyProperty":"CLÉ / PROPRIÉTÉ","noMatchingKeys":"Aucune clé ou valeur correspondante trouvée","emptyPayload":"Aucune donnée de charge utile disponible"},"showingRequests":"Affichage de {{count}} requêtes","showingFilteredRequests":"Affichage de {{filtered}} sur {{total}} requêtes","status201":"201 Créé","status204":"204 Pas de contenu","status304":"304 Non modifié","status400":"400 Requête incorrecte","status401":"401 Non autorisé","status403":"403 Interdit","status404":"404 Non trouvé","status500":"500 Erreur","shareError":"Erreur de partage","shareErrorMessage":"Impossible d'ouvrir la feuille de partage","title":"API","searchPlaceholder":"Rechercher par URL, statut ou méthode...","emptyTitle":"Aucun appel API capturé pour l'instant","emptySubtitle":"Les requêtes réseau apparaîtront ici lorsque vous utiliserez l'application.","reload":"Recharger","clearTitle":"Effacer les journaux réseau","clearMessage":"Êtes-vous sûr de vouloir effacer tous les journaux réseau capturés ?","detailTabs":{"metadata":"Métadonnées","headers":"En-têtes","request":"Demande","response":"Réponse"},"requestTitle":"Demande","responseTitle":"Réponse","searchRequest":"Demande de recherche...","searchResponse":"Rechercher une réponse...","searchHeaders":"Rechercher des en-têtes...","requestHeaders":"En-têtes de demande","responseHeaders":"En-têtes de réponse","diffTitle":"Différence","noResponse":"Aucun corps de réponse","noRequest":"Aucun corps de requête","statusFailed":"Échec","methodHeader":"Méthode","statusHeader":"Statut","durationHeader":"Durée","sizeHeader":"Taille","triggeredAt":"Déclenché à","contentType":"Type de contenu","sourcePage":"Page source","sourcePageUnknown":"Source inconnue","loadMore":"Charger plus","groupByPage":"Regrouper par page","groupByDomain":"Regrouper par domaine","groupByNone":"Liste","domain":"Domaine","page":"Pages","requests":"{{count}} demandes","requests_plural":"{{count}} demandes","noFilteredResults":"Aucune demande ne correspond aux filtres actuels","scrollToTop":"Faire défiler vers le haut","copyCurl":"Copier cURL","copyFetch":"Copier l'extrait de récupération","emptyResponse":"Réponse vide","bodyHidden":"{Corps caché}","queryParams":"Paramètres de requête","fullUrl":"URL complète","open":"Ouvert","showMore":"Afficher plus","showLess":"Afficher moins","failedNetworkError":"Échec (erreur réseau)","noMatchingHeaders":"Aucun en-tête correspondant","diffHidden":"{ Différent masqué }","noDiff":"Aucune différence par rapport à l'API précédente.","healthTitle":"Santé du réseau et télémétrie","successRate":"Taux de réussite","avgLatency":"Latence moyenne","p95Latency":"Latence P95","bandwidth":"Bande passante","fastest":"Le plus rapide","slowest":"Le plus lent","timingWaterfall":"Cascade de synchronisation et latence","throughput":"Débit","performanceTier":"Niveau de performances","perf":{"fast":"Rapide (< 200 ms)","moderate":"Modéré (200-800 ms)","slow":"Lent (> 800 ms)"},"status200":"200 OK","clearLogsTitle":"Effacer les journaux réseau","clearLogsMsg":"Voulez-vous vraiment effacer tous les journaux réseau ?","moreFilters":"Plus de filtres"},"console":{"filterAll":"All","rawTraceView":"Raw","showingLogs":"Affichage de {{count}} journaux","showingFilteredLogs":"Affichage de {{filtered}} sur {{total}} journaux","filteredBy":"Filtré par {{filters}} ({{filtered}} sur {{total}} journaux)","log":"Journal","warning":"Avertissement","error":"Erreur","debug":"Débogage","title":"Journaux","searchPlaceholder":"Rechercher des journaux...","emptyTitle":"Aucun journal de console pour l'instant","emptySubtitle":"La sortie de la console de votre application apparaîtra ici.","analyticsBadge":"Analyse","userLogBadge":"journal utilisateur","jsonTitle":"Journal JSON","messageTitle":"Message du journal","search":"Journal de recherche...","searchJson":"Journal de recherche JSON...","logMessage":"Message du journal","consoleLog":"Journal de la console","characters":"{{count}} caractères","duplicates":"×{{count}} doublons","showMore":"Afficher plus","showLess":"Afficher moins","clearTitle":"Effacer les journaux","clearMessage":"Êtes-vous sûr de vouloir effacer tous les journaux de la console ?","seeMore":"Afficher plus","noResults":"Aucun journal ne correspond aux filtres actuels","filterInfo":"Informations","filterWarn":"Avertir","filterError":"Erreur","filterUserLog":"Journal utilisateur","filterAnalytics":"Analyse","tabOutput":"Sortie","tabArgs":"Args ({{count}})","tabStack":"Trace de pile","tabMetadata":"Métadonnées","callStack":"Pile d'appels ({{count}} frames)","errorStack":"Pile d'exceptions d'erreur ({{count}} trames)","callOriginStack":"Pile d'origine des appels","errorThrownStack":"Erreur de pile lancée","appCodeScope":"🎯 Code d'application ({{count}})","allFramesScope":"📜 Tous les cadres ({{count}})","cardsView":"Cartes","noStackAvailable":"Aucune trame de pile d'appels correspondant au filtre actif trouvée.","originBadge":"ORIGINE #1","appCodeBadge":"Code d'application","dependencyBadge":"Dépendance","nativeBadge":"Natif","hermesVmBadge":"Hermès VM","fullStackTrace":"Trace de pile complète","lineCol":"Ligne {{line}}, Col {{col}}","lineColShort":"L{{line}}:C{{col}}","searchInLogDetails":"Rechercher dans les détails du journal...","info":"Informations","clearLogsTitle":"Effacer les journaux de console","clearLogsMsg":"Voulez-vous vraiment effacer tous les journaux de console ?","analytics":"Analytique","exportTitle":"Exporter les journaux de console","exportScope":"PORTÉE DE LA SOURCE DES JOURNAUX","filteredView":"Filtre actif","allLogsScope":"Tous les journaux","howManyLogs":"COMBIEN DE JOURNAUX EXPORTER ?","enterCount":"Entrez le nombre de journaux :","exportFormat":"FORMAT D’EXPORTATION","exportSummary":"Taille d’exportation estimée","selectedLogs":"JOURNAUX SÉLECTIONNÉS","estSize":"TAILLE ESTIMÉE","format":"FORMAT","exportLogsAction":"Exporter {{count}} journaux ({{size}})","exportingLogs":"Exportation des journaux de console...","processingItem":"Traitement de","records":"enregistrements","exportSuccessTitle":"Exportation des journaux prête !","exportSuccessDesc":"Pack de journaux entièrement formaté prêt à être partagé ou sauvegardé.","shareReport":"Partager les journaux","saveToDisk":"Enregistrer sur le disque","copyToClipboard":"Copier le contenu","exportAnother":"← Exporter un autre","noLogsToExport":"Aucun journal disponible à exporter","savePromptOpened":"Boîte de dialogue d’enregistrement ouverte","copiedLogs":"Journaux copiés dans le presse-papiers !","ignorePatterns":"Ignorer les motifs (Regex)","ignorePatternsDesc":"Les journaux correspondants seront exclus de l'exportation.","invalidRegex":"Syntaxe d'expression régulière invalide","logsExcluded":"{{count}} journaux exclus"},"analytics":{"timeNow":"NOW","allCategory":"All","title":"Analyse","searchPlaceholder":"Rechercher des événements...","emptyTitle":"Aucun événement d'analyse pour l'instant","emptySubtitle":"Les événements Analytics apparaîtront ici au fur et à mesure que votre application les suivra.","clearTitle":"Des analyses claires","clearMessage":"Êtes-vous sûr de vouloir effacer tous les événements d'analyse ?","eventParams":"{{count}} paramètres","eventCount":"{{count}} événements","userProperties":"Propriétés utilisateur","userId":"Identifiant utilisateur","defaultParameters":"Paramètres par défaut","collectionEnabled":"Collecte activée","screenView":"vue_écran","eventDetails":"Détails de l'événement","parameters":"Paramètres","noParams":"Aucun paramètre","recentEvents":"Événements récents","analyticsError":"Erreur d'analyse","duplicate":"Dupliquer","params":"paramètres","props":"accessoires","item":"article","items":"articles","pageViewCategory":"Vue de la page","ecommerceCategory":"Commerce électronique","systemCategory":"Système","customCategory":"Personnalisé","realtimeStream":"Activité en temps réel","liveTelemetry":"Télémétrie en direct","eventsInWindow":"événements dans la fenêtre","eventVelocity":"{{rate}} ev/min","peakVolume":"Pic : {{count}}","time30mAgo":"-30m","time20mAgo":"-20m","time10mAgo":"-10m","selectedBucket":"Compartiment : {{time}} ({{count}} événements)","totalRevenue":"Revenus","activeDistribution":"Répartition des catégories","screensCategory":"Écrans","overviewTab":"Aperçu","jsonTreeTab":"Arbre JSON","rawPayloadTab":"Charge utile brute","sessionContext":"Contexte de la séance","userPropertiesSnapshot":"Instantané des propriétés utilisateur","parameterKeys":"Paramètres ({{count}})","searchParameters":"Paramètres de recherche...","noParamsFound":"Aucun paramètre ne correspond à votre recherche","sourceFirebase":"BASE DE FEU GA4","sourceCustom":"PERSONNALISÉ / MANUEL","dataVisualization":"Visualisation des données","dataTypesBreakdown":"Répartition des types de données","highestPayloadStrings":"Chaînes de charge utile les plus longues","topLevelMetrics":"Métriques principales","importantDates":"Dates importantes","itemPrices":"Prix des articles","sessionIdentity":"SESSION & IDENTITÉ","metricParams":"Paramètres :","metricUserProps":"Props utilisateur :","metricSize":"Taille :","metricItems":"{{count}} articles","sessionId":"ID de session","trackingId":"ID de suivi","eventParameters":"PARAMÈTRES DE L'ÉVÉNEMENT ({{count}})","keyValueAttributes":"Attributs clé-valeur","filterParamsPlaceholder":"Filtrer les paramètres par clé ou valeur...","noParamsRecorded":"Aucun paramètre personnalisé enregistré pour cet événement.","noParamsMatching":"Aucun paramètre ne correspond à \"{{search}}\"","clearEventsTitle":"Effacer les événements analytiques","clearEventsMsg":"Voulez-vous vraiment effacer tous les événements analytiques ?"},"redux":{"searchPlaceholder":"Rechercher état ou actions...","emptyTitle":"Aucun store Redux connecté","emptySubtitle":"Connectez votre store pour inspecter l'état et les actions.","originUi":"UI","activeSlices":"SLICES ACTIFS","totalState":"ÉTAT TOTAL","lastActionHeader":"DERNIÈRE ACTION","initialState":"État initial (aucune action émise)","noStoreConnected":"Aucun store Redux connecté","connectStoreTip":"Appelez connectReduxStore(store) ou utilisez inspectorReduxMiddleware au lancement.","clearPersistedTitle":"Effacer l'état persisté","clearPersistedMessage":"Êtes-vous sûr de vouloir supprimer le stockage persisté du slice \"{{slice}}\" ?","clearedPersisted":"L'état persisté a été effacé.","clearPersistedError":"Échec de la suppression de l'état persisté.","title":"Redux","stateTab":"État","actionsTab":"Actions","clearTitle":"Effacer la chronologie Redux","clearMessage":"Êtes-vous sûr de vouloir effacer l'historique des actions envoyées ?","noActions":"Aucune action envoyée pour l'instant. Déclenchez une action dans l'application pour remplir l'historique.","noSearchResults":"Aucune action ne correspond à votre recherche.","lastAction":"Dernière action","actionHistory":"Historique des actions","affectedSlices":"Tranches concernées","noAffectedSlices":"Aucun","dispatchTime":"Expédié à","prevState":"État précédent","nextState":"État suivant","viewDiff":"Voir la différence","emptyState":"L'état est vide","rootState":"État racine","connectionStatus":"Connecté","connectionStatusNone":"Non connecté","autoRefresh":"Actualisation automatique","paused":"En pause","liveState":"État en direct","timeline":"Chronologie","persisted":"Persisté","storage":"Stockage","metadata":"Métadonnées","inMemory":"En mémoire","slice":"TRANCHE","rootKeys":"Clés racine","size":"Taille","actions":"actes","keys":"Clés","last":"Dernier","live":"En direct","loading":"Chargement","error":"Erreur","empty":"Vide","payload":"Charge utile","actionPayload":"Charge utile de l'action :","stateChangesDiff":"Changements d'état (Diff) :","tapToInspectAction":"Appuyez pour inspecter la charge utile de l'action et les modifications des différences","noDispatchedActions":"Aucune action distribuée enregistrée pour cette tranche pour le moment.","sliceJson":"Trancher JSON","originSaga":"SAGA","originThunk":"PENSEZ","originDirect":"DIRECTEMENT","originListener":"AUDITEUR","triggeredFrom":"Déclenché à partir de :","openInEditor":"Ouvrir dans l'éditeur","callStack":"Trace de la pile d'appels","sliceOrigin":"Tranche / Origine","clearTimelineTitle":"Effacer la chronologie Redux","clearTimelineMsg":"Voulez-vous vraiment effacer l’historique des actions distribuées ?","diff":"Différence d’état"},"device":{"title":"Appareil","searchPlaceholder":"Rechercher spécifications, UDID, IP, écran...","subTabs":{"overview":"Aperçu","hardware":"Matériel","network":"Réseau et IP","display":"Affichage","runtime":"Exécution & App","security":"Sécurité & IDs"},"sections":{"overview":"APERÇU DE L'APPAREIL","hardware":"SPÉCIFICATIONS MATÉRIELLES & SYSTÈME","network":"RÉSEAU & CONNECTIVITÉ","display":"AFFICHAGE & GÉOMÉTRIE","runtime":"EXÉCUTION & ENVIRONNEMENT","security":"IDENTIFIANTS & SÉCURITÉ"},"copied":"{{label}} copié","copiedJson":"Rapport JSON complet de l'appareil copié !","copiedMarkdown":"Rapport Markdown copié dans le presse-papiers !","live":"EN DIRECT","ipAddress":"ADRESSE IP","ramUsedTotal":"RAM (UTILISÉE/TOTALE)","uptime":"TEMPS DE FONCTIONNEMENT","copiedUuid":"Identifiant unique de l’appareil copié (UUID)"},"storage":{"title":"Stockage","searchPlaceholder":"Rechercher clés, valeurs, types...","clearTitle":"Vider le stockage","clearMessage":"Voulez-vous vraiment supprimer toutes les clés dans {{driver}} ?","clearConfirm":"Tout effacer","emptyTitle":"Aucune entrée de stockage","emptySubtitle":"Le stockage est vide pour ce pilote.","addKey":"Ajouter une clé","add":"Ajouter","editKey":"Modifier la clé","createKey":"Créer une clé","save":"Enregistrer","saveKey":"Enregistrer la clé","keyName":"Nom de clé","value":"Valeur","valueContent":"Contenu de la valeur","beautifyJson":"Formater JSON","loading":"Chargement des entrées...","deleteKeyTitle":"Supprimer la clé","deleteKeyMessage":"Voulez-vous vraiment supprimer la clé \"{{key}}\" ?","deleteConfirm":"Supprimer","cleared":"Stockage effacé","subTabs":{"asyncStorage":"Stockage asynchrone","mmkv":"MMKV"},"type":"Tapez","asyncStorage":"Stockage asynchrone","mmkv":"MMKV","keyNameEmpty":"Le nom de la clé ne peut pas être vide","saveError":"Erreur lors de l’enregistrement de la clé"},"footer":{"endOfList":"Vous avez atteint la fin de la liste","loadMore":"Charger {{count}} de plus","showingOf":"Affichage de {{count}} sur {{total}} {{label}}","loadMoreRequests":"Charger {{count}} Plus de demandes","allLoaded":"Toutes les requêtes {{count}} chargées"},"performance":{"filterAll":"All","catAll":"All","catIo":"I/O","jscEngine":"JSC","fpsUnit":"FPS","title":"Performances","fpsTarget":"Moniteur cible 60 FPS","healthScore":"Score de santé FPS","excellent":"Excellent (60 FPS)","good":"Bon (Janks mineurs)","needsOptimization":"Besoin d’optimisation","liveFps":"FPS en direct et cycle de rafraîchissement","realtimeWindow":"Temps réel (fenêtre 1 s)","uiRenderThread":"Fil de rendu de l'interface utilisateur","optimalFrame":"Optimale (<16,6 ms)","slowFrame":"Image lente (> 16,6 ms)","budgetUsage":"Utilisation du budget de 60 FPS","avgFrameTime":"Temps de trame moyen","peakTime":"Heure de pointe","jsThread":"Sujet JS","uiThread":"Sujet de l'interface utilisateur","jsiLatency":"Latence JSI","heapImpact":"Impact sur le tas","optimizationTip":"Conseil d'optimisation :","recordedEvents":"Événements et interactions enregistrés","liveStream":"Flux de session en direct","emptyTitle":"Aucun événement de performance capturé pour l'instant","emptySubtitle":"Effectuez des actions dans votre application pour connaître la durée des threads, le coût de rendu et le suivi FPS.","tabOverview":"Aperçu","tabRenders":"Rendus","tabInteractions":"Interactions","tabMemory":"Mémoire","filterSlow":"Lent (> 16 ms)","filterCritical":"Critique (>33 ms)","searchPlaceholder":"Composant de recherche, interaction...","avgRenderTime":"Rendu moyen","totalRenders":"Rendus totaux","renderCost":"Coût du rendu","slowRenders":"Rendus lents","unnecessaryRenders":"Rendus inutiles","heapAllocated":"Tas alloué","heapLimit":"Limite de tas","gcEvents":"Événements du GC","leakRisk":"Risque de fuite","lowRisk":"Faible risque","mediumRisk":"Risque moyen","highRisk":"Risque élevé","memoryTimeline":"Chronologie de la mémoire","clearPerformance":"Données de performances claires","clearConfirmation":"Êtes-vous sûr de vouloir effacer toutes les données de suivi des performances ?","liveFpsDip":"Baisse de la fréquence d'images en direct ({{fps}} FPS)","liveFpsDipDetail":"Durée de l'image du thread principal étendue à {{duration}} ms lors de la mise à jour de la vue.","liveFpsDipAdvice":"Exécution lourde de JavaScript lors de la présentation d'affichage retardée du passage d'image.","yogaLayout":"Disposition de la boîte flexible de yoga","hermesGc":"Collecte des déchets Hermès","jsEngine":"Moteur JS","uiReconciler":"Réconciliateur d'interface utilisateur","memoryHeap":"Tas de mémoire","allLogs":"Tous les journaux","jankySlow":"Branlant / Lent","navigation":"Navigation","components":"Composants","memoryGc":"Mémoire et CPG","networkIo":"Réseau et E/S","catJanky":"Janky","catNavigation":"Navigation","catRender":"Composants","catMemory":"Mémoire","recording":"Enregistrement","paused":"En pause","budgetHeadroom":"~{{time}}ms de marge ({{percent}}%)","jsExec":"Exécution JS : {{time}} ms","yogaLayoutTime":"Disposition du yoga : {{time}} ms","uiRenderTime":"Rendu de l'interface utilisateur : {{time}} ms","freeTime":"Gratuit : {{time}}ms","heapAllocatedSub":"{{allocated}} Mo alloués","hermesAot":"Hermès (AOT)","v8Jit":"V8 (JIT)","bytecodeCompiled":"Bytecode compilé","jitEngine":"Moteur JIT","webkitEngine":"Moteur de kit Web","fabricJsi":"Tissu / JSI","paperBridge":"Papier / Pont","directCppBindings":"Liaisons C++ directes","asyncJsonBridge":"Pont JSON asynchrone","jsLag":"Décalage JS","jankRate":"Taux de déchets","fpsAreaChartTitle":"Flux FPS et gigue en temps réel (30 s)","fpsAreaChartSub":"Cible en direct de 60 FPS avec mesure continue de la variance d'image","frameLatencyDistTitle":"Distribution de la latence des images","frameLatencyDistSub":"Proportion de trames livrées dans un budget de 16,6 ms","optimalBucket":"< 16,6 ms (60 ips)","minorJankBucket":"16,7 à 33,3 ms (30 à 60 images par seconde)","noticeableJankBucket":"33,4 à 50,0 ms (20 à 30 images par seconde)","severeFreezeBucket":"> 50,0 ms (< 20 FPS)","hermesHeapTrendTitle":"Mémoire et dynamique du tas Hermes","hermesHeapTrendSub":"Allocation en direct par rapport aux cycles de récupération générationnels du GC","live":"En direct","msTotal":"{{duration}}ms au total • {{time}}","droppedFrames":"{{count}} abandonné","zeroDropped":"0 abandonné","frameBudgetMs":"{{time}}ms/image ({{budget}}% du budget)","target60Fps":"Cible de 60 FPS • {{fps}} FPS réels","frameDuration":"Durée de l'image","frameDurationVal":"{{time}} ms (budget de 16,67 ms)","frameUtilization":"Budget cadre dépassé","frameBudgetOk":"Marge budgétaire du cadre","bottleneck":"Goulot d'étranglement","jsBound":"Fil JS lié","uiBound":"Lié au fil de l'interface utilisateur","balanced":"Équilibré","smooth":"Fluide 60 FPS","minorJank":"Bégaiement mineur","noticeableJank":"Jank notable","severeFreeze":"Gel sévère","screenContext":"Contexte de l'écran","profileReason1":"Accessoires de fonction de flèche en ligne transmis aux enfants (onAddToCart={() => ...})","profileReason2":"Sélecteur Redux non mémorisé créant une nouvelle référence d'objet à chaque envoi","profileReason3":"Objet de style dynamique créé dans le corps de rendu ({ marginTop : insets.top + 10 })","profileReason4":"FlatList manquant getItemLayout provoquant des passes de mesure de mise en page asynchrone","profileReason5":"Fonction renderItem définie de manière anonyme dans le corps JSX","profileReason6":"Répertorier les composants de l'élément non enveloppés avec React.memo","profileReason7":"Écran parent restitué lors de l'événement Afficher/Masquer le clavier","profileReason8":"Référence de rappel instable transmise au bouton de paiement","profileReason9":"L'état de la valeur TextInput déclenche le rendu parent à chaque frappe sans rebond","profileReason10":"Passer l'objet filtre non mémorisé ({category, minPrice}) aux puces enfants","profileReason11":"Revalidation du cache d'images d'avatar lors de l'actualisation de la session d'authentification","fixUseCallbackTitle":"Envelopper les gestionnaires d'événements dans useCallback","fixUseCallbackDesc":"Les fonctions en ligne recréent une nouvelle référence mémoire à chaque rendu, invalidant React.memo sur les composants enfants.","fixCreateSelectorTitle":"Sélecteurs Memoize Redux / Zustand avec ShallowEqual","fixCreateSelectorDesc":"Le renvoi de nouvelles références d'objet ou de tableau dans useSelector force un nouveau rendu automatique à chaque répartition d'état.","fixUseMemoStylesTitle":"Styles de levage ou utilisation de useMemo pour les dimensions dynamiques","fixUseMemoStylesDesc":"Les objets de style en ligne créent de nouvelles identités d'objet à chaque passage d'image, provoquant des différences de réconciliation Yoga Flexbox.","fixGetItemLayoutTitle":"Implémenter getItemLayout pour les éléments à hauteur fixe","fixGetItemLayoutDesc":"La fourniture de getItemLayout permet à FlatList de calculer immédiatement les décalages de défilement et les fenêtres virtuelles sans mesurer les vues de manière asynchrone.","fixReactMemoTitle":"Éléments de la liste de synthèse dans React.memo","fixReactMemoDesc":"Empêche les plus de 50 éléments de liste visibles de s'afficher à nouveau lorsque l'état de la liste parent (par exemple, position de défilement ou pagination) est mis à jour.","fixComponentSplittingTitle":"Isoler l'état à évolution rapide dans les composants feuilles","fixComponentSplittingDesc":"Déplacez les écouteurs de clavier et l'état d'animation modale dans des sous-composants autonomes afin que le parent ne soit pas restitué.","fixDebouncedInputTitle":"Entrée de recherche anti-rebond ou utilisation de l'état contrôlé local","fixDebouncedInputDesc":"Ne propagez pas immédiatement l’état de frappe dans le magasin global. Utilisez un anti-rebond de 250 ms ou une réf.","fixPrimitivePropsTitle":"Passez des accessoires primitifs au lieu de gros objets","fixPrimitivePropsDesc":"Le fait de transmettre uniquement la chaîne CategoryId au lieu de l'objet de catégorie entier empêche le nouveau rendu lors de la mise à jour des autres métadonnées de catégorie.","fixUseRefForTrackingTitle":"Utilisez useRef pour les valeurs de suivi non visuelles","fixUseRefForTrackingDesc":"Ne stockez pas les minuteurs d'analyse, les décalages de défilement ou les ID de suivi dans useState s'ils ne modifient pas directement l'arborescence JSX.","highImpact":"Fort impact","mediumImpact":"Impact moyen","bestPractice":"Meilleure pratique","beforeUseCallback":"// ❌ Avant dans <{{comp}} /> (recrée la référence de fonction à chaque rendu) :","afterUseCallback":"// ✅ Après (référence de rappel mémorisée stable) :","beforeCreateSelector":"// ❌ Avant dans <{{comp}} /> (renvoie une nouvelle référence d'objet à chaque rendu) :","afterCreateSelector":"// ✅ Après (shallowEqual empêche le nouveau rendu à moins que les valeurs ne changent) :","beforeMemo":"// ❌ Avant (<{{comp}} />) :","afterMemo":"// ✅ Après (ignore le rendu si les accessoires sont légèrement identiques) :","flatListOptimization":"// Optimisation FlatList pour <{{comp}} />","customComparator":"// Fonction d'égalité personnalisée pour <{{comp}} />","debounceInput":"// Entrée anti-rebond à l'intérieur de <{{comp}} /> pour empêcher les rendus par frappe :","isolateState":"// Isoler l'état en évolution rapide de <{{comp}} /> vers la sous-arborescence enfant // ✅ Encapsuler la mise en page animée à l'intérieur du composant isolé :","beforeUseRef":"// ❌ Avant dans <{{comp}} /> (déclenche le nouveau rendu du composant entier lors d'un changement de valeur) :","afterUseRef":"// ✅ Après (préserve la référence mutable dans les rendus sans restituer) :","fixInteractionManagerTitle":"Différer la logique hors écran avec InteractionManager","fixInteractionManagerDesc":"Le traitement intensif des données lors des animations d'écran fait perdre des images. Reportez jusqu’à la fin de la transition.","beforeInteractionManager":"// ❌ Avant dans <{{comp}} /> (exécute des calculs lourds pendant que la transition s'anime) : useEffect(() => { loadHeavyData(); }, []);","afterInteractionManager":"// ✅ Après (attend que la transition se termine en douceur) : useEffect(() => { const task = InteractionManager.runAfterInteractions(() => { loadHeavyData(); }); return () => task.cancel(); }, []);","fixFlatListWindowingTitle":"Ajuster les propriétés de fenêtrage FlatList","fixFlatListWindowingDesc":"Configurez maxToRenderPerBatch et windowSize pour minimiser les allocations de vues virtualisées hors écran.","beforeFlatListWindowing":"// Optimisation du fenêtrage FlatList pour <{{comp}} /> : <FlatList data={items} maxToRenderPerBatch={10} windowSize={5} initialNumToRender={8} removeClippedSubviews={true} />","fixImageCachingTitle":"Optimiser la mise en cache et la réduction d'image des images","fixImageCachingDesc":"Utilisez les en-têtes de priorité ou la réduction d'échelle resizeMode pour éviter les allocations massives de bitmap dans le tas Hermes.","beforeImageCaching":"// Optimisation de l'image pour <{{comp}} /> : <Image source={{ uri : imageUrl, cache : 'force-cache' }} resizeMode=\"cover\" fadeDuration={100} />","fixContextSplittingTitle":"Diviser le contexte monolithique en fournisseurs granulaires","fixContextSplittingDesc":"Les composants s'abonnant à un contexte étendu sont restitués même lorsque les propriétés d'état inutilisées changent.","beforeContextSplitting":"// ❌ Avant (<{{comp}} /> consomme tout AppContext) : const { user, cart, theme } = useAppContext();","afterContextSplitting":"// ✅ Après (s'abonner au contexte de tranche dédié) : const theme = useThemeContext();","fixInlineStylesHoistTitle":"Lever les styles statiques avec StyleSheet.create","fixInlineStylesHoistDesc":"Les objets de style en ligne allouent de nouvelles références de mémoire à chaque passe de rendu, ce qui entraîne une surcharge de réconciliation Yoga.","beforeInlineStyles":"// ❌ Avant (<{{comp}} /> alloue un objet en ligne à chaque image) : <View style={{ flex : 1, padding : 16, backgroundColor : '#ffffff' }} />","afterInlineStyles":"// ✅ Après (référence StyleSheet hissée) : const styles = StyleSheet.create({ containers: { flex: 1, padding: 16, backgroundColor: '#ffffff' } }); <View style={styles.container} />","transitionEventLabel":"Transition d'écran : {{screen}}","transitionEventDetail":"Transition terminée en {{duration}}ms (TTI : {{tti}}ms).","transitionEventAdvice":"Interaction terminée dans le budget cible de 60 FPS.","heavyTaskEventLabel":"Tâche synchrone lourde : {{taskName}}","heavyTaskEventDetail":"Thread JS bloqué pendant {{duration}}ms lors de l'exécution de la tâche.","heavyTaskEventAdvice":"Envisagez de décharger vers Web Worker, InteractionManager ou de regrouper par lots.","asyncOpEventLabel":"Opération asynchrone lente : {{opName}}","asyncOpEventDetail":"La tâche asynchrone a mis {{duration}} ms à être résolue.","renderLoopWarningLabel":"Pic de rendu rapide dans <{{comp}} />","renderLoopWarningDetail":"Le composant a été restitué {{count}} fois en 500 ms. Boucle infinie potentielle ou dépendances instables.","renderLoopWarningAdvice":"Vérifiez les tableaux de dépendances useEffect / useCallback pour les références d'objets ou de fonctions instables.","event1Label":"Pic du fil principal pendant la navigation","event1Detail":"La transition d'écran a déclenché une réconciliation importante de la disposition et des montages simultanés de composants.","event1Advice":"Différez les hooks hors écran non critiques avec InteractionManager.runAfterInteractions pour préserver 60 FPS.","event2Label":"Passe de re-rendu de la virtualisation FlatList","event2Detail":"FlatList a rendu 25 éléments simultanément lors d'un changement d'orientation sans composant de ligne mémorisé.","event2Advice":"Implémentez getItemLayout et React.memo(LogCard) pour ignorer les passes de comparaison redondantes.","event3Label":"Transition coulissante modale native","event3Detail":"La transformation animée du pilote natif accélérée par le matériel fonctionne correctement à 60 FPS soutenus.","event3Advice":"L'utilisation de nativeDriver: true empêche avec succès le blocage des threads JS pendant les animations.","event4Label":"Collecte des déchets générationnelle Hermès","event4Detail":"Un cycle GC générationnel mineur a récupéré des objets de tas éphémères de 4,2 Mo avec une pause de thread inférieure à la milliseconde.","event4Advice":"Le garbage collector générationnel Hermes fonctionne dans des limites optimales inférieures à 5 ms.","gcCycleLabel":"Cycle de collecte manuelle des déchets","gcCycleDetail":"Récupération de ~{{amount}} Mo d'objets de tas non référencés et de pépinière de mémoire compactée.","gcCycleAdvice":"Utilisation du tas optimisée. Crèche générationnelle libérée.","liveFpsDropLabel":"Baisse de la fréquence d'images en direct ({{fps}} FPS)","liveFpsDropDetail":"Durée de l'image du thread principal étendue à {{duration}} ms lors de la mise à jour de la vue.","liveFpsDropAdvice":"Exécution lourde de JavaScript lors de la présentation d'affichage retardée du passage d'image.","event5Label":"Désérialisation de charges utiles JSON volumineuses","event5Detail":"Frais généraux d'analyse de réponse API de 50 éléments dans la carte réseau (chaîne brute JSON de 185 Ko).","event5Advice":"Envisagez de paginer les charges utiles de l'API ou de diffuser les réponses en continu si la taille de la charge utile dépasse 250 Ko.","event6Label":"Décodage et rastérisation d'image Bitmap","event6Detail":"Décodage raster Retina pour banner_dark.png (allocation de tampon raster 1200 × 630px).","event6Advice":"Réduisez les dimensions des actifs ou convertissez-les en WebP pour réduire la latence de décodage d'environ 65 %.","event7Label":"Invocation JSI du TurboModule natif","event7Detail":"Transaction de préférences AsyncStorage / MMKV lue sur 32 clés de configuration.","event7Advice":"Les liaisons directes du turbomodule C++ JSI contournent complètement la surcharge de sérialisation du pont JSON hérité.","event8Label":"Différence d'arborescence d'état d'action Redux","event8Detail":"La passe de répartition Redux a évalué 6 tranches de réduction et émis une notification d'état en 4,8 ms.","event8Advice":"Immuabilité de l’arbre d’état préservée. Les sélecteurs mémorisés ont empêché les rendus de composants redondants.","event9Label":"Latence des événements tactiles pour le rendu","event9Detail":"Le répondeur gestuel a envoyé un événement Tap au bouton TabBar avec une réponse immédiate à 60 FPS.","event9Advice":"La latence du répondeur tactile se situe bien dans les limites du budget de trame standard de 16,67 ms.","event10Label":"Passe de mise en page C++ Yoga Flexbox","event10Detail":"Le recalcul de la disposition des cartes multi-onglets de l'interface utilisateur de l'inspecteur et les métriques de police sont transmises dans le moteur C++ Yoga.","event10Advice":"Les contraintes de mise en page Flexbox sont mises en cache et calculées efficacement sans aucune pénalité de redistribution."},"bundle":{"mediaAuditorSuffix":"KB.","heroTitle":"Architecture des offres groupées et des actifs","heroSubtitle":"Répartition de la taille en temps réel pour tous les actifs, codes et dépendances","heroSubtitleLive":"Analyse en direct de {{scriptUrl}}","liveAnalysisUnavailable":"Analyse groupée en direct indisponible","liveAnalysisUnavailableSub":"Impossible d'atteindre le serveur de développement Metro, les valeurs sont donc des estimations. Assurez-vous que l'application fonctionne en développement via `npxreact-native start` et que l'inspecteur peut atteindre votre port Metro (8081, 8082, ...).","bundleOverviewJson":"Présentation du bundle JSON","devBundleSize":"TAILLE DU PACK DE DÉVELOPPEMENT","devBundleHint":"{{kb}} Ko • {{modules}} modules","trackedFilesHint":"{{count}} Fichiers suivis","imagesMedia":"IMAGES ET MÉDIAS","pctOfTrackedAssets":"{{pct}}% des actifs suivis","tsJsSource":"SOURCES TS/JS","jsEngine":"MOTEUR JS","bytecodeAot":"Bytecode AOT","standard":"Norme","splitUpTitle":"Séparation du bundle de développement","splitUpSub":"Ensemble {{mb}} Mo JS mesuré • {{files}} fichiers • {{packages}} packages","splitUpJson":"JSON fractionné","splitAppSource":"Code source de l'application","splitNodeModules":"Dépendances node_modules","splitAssetsMedia":"Actifs et médias","splitMetroOverhead":"Frais généraux de développement de Metro","splitSize":"{{kb}} Ko • {{mb}} Mo","productionFootprint":"EMPREINTE DE PRODUCTION","productionValue":"iOS {{ios}} Mo • Android {{android}} Mo","productionDownload":"Téléchargement : iOS ~{{ios}} Mo • AAB ~{{aab}} Mo • APK ~{{apk}} Mo","treemapTitle":"Treemap du rapport entre les actifs et les types de fichiers","treemapSub":"Total ~{{mb}} Mo","treemapJson":"Treemap de ratio JSON","legendImages":"Images :","legendTs":"TS/TSX :","legendJs":"Bibliothèques JS :","legendFonts":"Polices :","legendJson":"JSON :","categoryBreakdown":"Répartition des catégories","categoriesJson":"Répartition des catégories JSON","catImagesTitle":"Images et ressources multimédias","catImagesDesc":"Actifs PNG, WebP, SVG et JPG regroupés","catJsTitle":"Modules de nœuds compilés et JS","catJsDesc":"Dépendances tierces et ponts natifs","catFontsTitle":"Polices personnalisées et glyphes vectoriels","catFontsDesc":"Éléments de police dans le lot","catTsTitle":"Composants TypeScript et JSX","catTsDesc":"Composants d'écran d'application, hooks et logique métier","catJsonTitle":"Données JSON et localisations","catJsonDesc":"Dictionnaires de traduction i18n et configurations statiques","totalBundleAssets":"TOTAL DES DOSSIERS DE PROJETS HÔTES","totalBundleValue":"{{kb}} Ko (~{{mb}} Mo)","totalFormula":"Somme des fichiers source de l'hôte : {{images}} Ko + {{js}} Ko + {{fonts}} Ko + {{ts}} Ko + {{json}} Ko = {{total}} Ko ({{count}} éléments)","prodIosApp":"Application iOS (.ipa)","prodAndroidAab":"Android AAB (.aab)","prodAndroidApk":"APK universel (.apk)","prodHeroTitleIos":"Empreinte binaire de production iOS","prodHeroTitleAab":"Offre groupée d'applications Google Play (.aab)","prodHeroTitleApk":"APK autonome universel (.apk)","prodHeroSubIos":"Estimations d’installation sur l’App Store et de téléchargement cellulaire en direct","prodHeroSubAab":"Architecture APK fractionnée de livraison dynamique optimisée par appareil","prodHeroSubApk":"Archive d'installation universelle multi-ABI pour le chargement latéral et la distribution directe","prodInstallSize":"TAILLE D'INSTALLATION","prodInstallHint":"Empreinte non compressée sur l'appareil","prodDownloadSize":"TAILLE DU TÉLÉCHARGEMENT","prodDownloadHint":"Stocker la charge utile de transfert réseau","prodCompression":"COMPRESSION","prodCompressionHint":"Ratio de bytecode et d'actifs","prodFormatArch":"ARCHITECTURE DES FORMATS","prodFormatHintIos":"Exécution Apple ARM64","prodFormatHintAab":"Diffusion dynamique sur Google Play","prodFormatHintApk":"Pack universel à chargement latéral","prodArchTitle":"Architecture des composants binaires","prodArchSub":"Bibliothèques natives compilées, bytecodes d'exécution, ressources et blocs de signature","prodTotalIos":"BINAIRE TOTAL DE L'APPLICATION IOS","prodTotalAab":"PACK TOTAL ANDROID AAB","prodTotalApk":"TOTAL UNIVERSEL APK","prodTotalFormula":"À partir de {{devKb}} Ko (~{{devMb}} Mo • {{count}} actifs totaux) ensemble de sources de développement → {{installMb}} Mo binaire natif optimisé ({{pct}} % de compression de bytecode/asset).","tabOverview":"Aperçu","tabProduction":"Production ({{count}})","tabFiles":"Fichiers ({{count}})","tabPackages":"Forfaits ({{count}})","tabMedia":"Médias ({{count}})","tabOptimizer":"Optimiseur","analyzingTitle":"Analyse du bundle d'applications hôtes de Metro…","analyzingHint":"Récupération du bundle et extraction de vrais modules","searchFilesPlaceholder":"Recherche par nom de fichier (.png, .tsx, .ttf, chemin)...","filteredFilesJson":"Fichiers filtrés JSON","catAll":"Tous les fichiers","catUnused":"Non consommé (mort)","catConsumed":"En cours d'utilisation/actif","catImages":"Images et médias","catTypescript":"TypeScript / TSX","catJavascript":"Modules JS et nœuds","catFonts":"Polices et glyphes","catJson":"JSON et données","treeView":"Vue arborescente","flatList":"Liste plate","expand":"Développer","collapse":"Réduire","showingFilesOf":"Affichage de {{shown}} fichiers sur {{total}}","filesOf":"{{count}} sur {{total}} fichiers","notConsumed":"Non consommé","consumed":"Consommé","copyFileInfo":"Copier les informations {{name}}","fileDetailsJson":"Détails du fichier JSON","file":"fichier","files":"fichiers","fileSizeKb":"{{size}} Ko","fileSizeMb":"{{size}} Mo","mbValue":"~{{size}} Mo","kbMbValue":"{{kb}} Ko ({{mb}} Mo)","legendValue":"{{kb}} Ko ({{pct}}%)","mediaSavings":"{{size}} Ko","searchPackagesPlaceholder":"Package de recherche (react-native, axios, navigation)...","dependenciesJson":"Dépendances JSON","showingDependencies":"Affichage des dépendances {{count}}","versionPrefix":"v{{version}}","bundled":"groupé","deprecated":"DÉCONSEILLÉ","updateAvailable":"Mise à jour : v{{version}}","upToDate":"À jour","bundledBadge":"Regroupé","packageDetailsJson":"Détails du package JSON","direct":"Direct","transitive":"Transitif","minified":"~{{size}} Ko réduits","npmLink":"npm ↗","dependenciesCount":"{{count}} Dépendances","mediaAuditorTitle":"Auditeur de compression multimédia","mediaAssetsJson":"Actifs multimédias JSON","mediaAuditorPrefix":"Les images et les polices constituent","mediaAuditorMid":"du total des actifs (~{{kb}} Ko). La conversion de fichiers PNG en WebP et en sous-ensembles de polices peut réduire la taille jusqu'à","mediaAssetsList":"Éléments multimédias et polices ({{count}} éléments)","mediaItemJson":"Élément multimédia JSON","mediaAndFonts":"{{count}} Médias et polices","optimizerTitle":"Liste de contrôle d'optimisation du bundle React Native","optimizationChecklist":"Liste de contrôle d'optimisation","optTip1Title":"Convertir des PNG lourds en WebP/SVG","optTip1Desc":"Les images représentent plus de 40 % de la taille finale du téléchargement de l’application. La conversion de PNG raster 2x/3x en WebP permet d'économiser 60 à 70 % de taille sans perte de fidélité visible.","optTip2Title":"Activer le moteur de bytecode Hermes","optTip2DescActive":"Hermès est actif ! JavaScript est compilé en bytecode optimisé à l'avance.","optTip2DescInactive":"Hermès est handicapé. Activez Hermes dans la configuration de votre application pour une charge utile réduite d'environ 40 % et un démarrage TTI instantané.","optTip3Title":"Sous-ensemble de polices et élagage de poids","optTip3Desc":"Incluez uniquement les épaisseurs de police que vous utilisez activement (par exemple, Regular et Bold). Supprimez les plages de glyphes inutilisées pour économiser plus de 100 Ko par fichier de police.","optTip4Title":"Importations de chemins sélectifs (Tree-shaking)","optTip4Desc":"Importez à partir de sous-chemins spécifiques (par exemple lodash/get ou des jeux d'icônes vectorielles spécifiques) au lieu d'importer de gros packages monolithiques.","optTip5Title":"Chargement paresseux de l'écran","optTip5Desc":"Chargement paresseux d'écrans secondaires et de feuilles modales lourdes à l'aide d'importations dynamiques et d'InteractionManager pour réduire l'évaluation initiale du bundle.","highImpact":"Fort impact","mediumImpact":"Impact moyen","bestPractice":"Meilleure pratique","actionRequired":"Action requise","active":"Actif","tipDetails":"Détails du pourboire","iosComp1Name":"Frameworks et modules dynamiques","iosComp1Desc":"Frameworks de pods natifs React, Hermes et {{count}}.","iosComp1Advice":"Assurez la suppression du code mort (STRIP_INSTALLED_PRODUCT = YES) en mode Release.","iosComp2Name":"Exécutable Mach-O (ARM64)","iosComp2Desc":"L'application hôte a compilé des ponts natifs Swift/Objective-C et C++.","iosComp2Advice":"Activez le LTO monolithique (Link-Time Optimization) dans le schéma Xcode.","iosComp3Name":"Catalogue d'actifs (Assets.car)","iosComp3Desc":"AppIcons, écrans de démarrage, glyphes vectoriels et polices groupées.","iosComp3Advice":"Compilez les images dans le catalogue d'actifs Xcode pour une réduction automatique des applications.","iosComp4Name":"Bytecode Hermès (main.jsbundle)","iosComp4Desc":"L'application hôte JavaScript a compilé AOT dans le bytecode Hermes (fichiers {{count}}).","iosComp4Advice":"Le bytecode AOT se charge avec une latence de compilation de 0 ms au lancement de l'appareil.","iosComp5Name":"Métadonnées et signatures de code","iosComp5Desc":"_CodeSignature, Info.plist et bloc de droits.","iosComp5Advice":"Signature de code Apple standard et signature de provisionnement.","andComp1Name":"Bibliothèques C++ natives (.so)","andComp1Desc":"Adaptateurs natifs libhermes.so, libfbjni.so et {{count}} C++.","andComp1Advice":"Déployez avec Android App Bundle (.aab) pour fournir des APK divisés par ABI.","andComp2Name":"DEX compilé (classes.dex)","andComp2Desc":"Compilation du runtime Java & Kotlin, des ponts AndroidX et React Native.","andComp2Advice":"Activez la réduction R8 / ProGuard (minifyEnabled true) dans build.gradle.","andComp3Name":"Ressources Android (res/)","andComp3Desc":"Drawables, XML vectoriels, densités mipmap, resources.arsc, polices.","andComp3Advice":"Utilisez WebP et VectorDrawables pour éviter la duplication d'actifs multi-densité.","andComp4Name":"Bytecode Hermès (Android)","andComp4Desc":"JavaScript de l'application hôte compilé dans le bytecode Hermes (fichiers {{count}}).","andComp4Advice":"Bytecode précompilé lors de la tâche de graduation assembleRelease.","andComp5Name":"Manifeste et signatures (META-INF)","andComp5Desc":"AndroidManifest.xml, certificats de signature, blocs du schéma de signature APK v2/v3/v4.","andComp5Advice":"Bloc de signature et de signature officiel de Google Play.","apkComp1Name":"Bibliothèques multi-ABI C++ (.so)","apkComp1Desc":"Bibliothèques partagées multi-architecture universelles (.so) regroupées pour un chargement latéral direct.","apkComp1Advice":"Utilisez Android App Bundle (.aab) pour Google Play afin de réduire la taille de l'installation de 60 %.","apkComp2Name":"Bytecode DEX compilé (classes.dex)","apkComp2Desc":"Runtime Java et Kotlin compilé, bibliothèques AndroidX et modules de pont natifs.","apkComp2Advice":"Activez la réduction R8 / ProGuard (minifyEnabled true) et ShrinkResources true.","apkComp3Name":"Ressources et actifs Android (res/)","apkComp3Desc":"Drawables, XML vectoriels, densités mipmap, resources.arsc, polices.","apkComp3Advice":"Utilisez WebP et VectorDrawables pour éviter la duplication d'actifs multi-densité.","apkComp4Name":"Pack de bytecode Hermes (Android)","apkComp4Desc":"JavaScript de l'application hôte compilé dans le bytecode Hermes (fichiers {{count}}).","apkComp4Advice":"Bytecode précompilé lors de la tâche de graduation assembleRelease.","apkComp5Name":"Manifeste et signatures (META-INF)","apkComp5Desc":"AndroidManifest.xml, certificats de signature, schéma de signature JAR et APK v2/v3/v4.","apkComp5Advice":"Chargement latéral d'entreprise et bloc de signature d'installation directe."},"errors":{"appTag":"APP","title":"Quelque chose s'est mal passé","message":"Une erreur inattendue s'est produite.","retry":"Réessayez","reset":"Réinitialiser","close":"Fermer","errorReport":"Rapport d'erreur","modalTitle":"L'inspecteur s'est écrasé","modalMessage":"L'inspecteur a rencontré une erreur inattendue. Vous pouvez le réinitialiser ci-dessous.","inlineTitle":"Erreur de l'inspecteur","inlineMessage":"Une erreur inattendue s'est produite dans l'inspecteur.","networkError":"La requête réseau a échoué","crashIntercepted":"CRASH INTERCEPTÉ","protected":"PROTÉGÉ","rootCauseTitle":"Diagnostic des causes profondes","rootCauseSubtitle":"L'inspecteur a détecté cette erreur d'exécution pour empêcher la fermeture de l'application","exactLocation":"EMPLACEMENT EXACT DE LA SOURCE","file":"Fichier :","lineCol":"Ligne / Col :","lineColVal":"Ligne {{line}}, Col {{col}}","function":"Fonction :","callStack":"CADRES DE PILE D'APPELS","framesCount":"{{count}} images","tryAgainRecover":"Réessayez / Récupérez","copyDiagnostics":"Copier les diagnostics","copy":"Copier"},"jsonViewer":{"pretty":"Structuré","raw":"Brut","table":"Tableau","emptyObject":"Objet vide","emptyPayload":"Charge utile vide","emptyTable":"Objet vide","fold":"Plier","expand":"Développer","min":"Min","indent":"Indenter","wrap":"Retour ligne","copied":"Copié !","copy":"Copier JSON","key":"Clé","value":"Valeur","lines":"lignes","line":"ligne"},"crash":{"filterAll":"All","frameApp":"APP","frameLib":"LIB","jsc":"JSC","filterPlatformIos":"iOS","title":"Accident","searchPlaceholder":"Erreur de recherche, message, pile...","searchDetailPlaceholder":"Rechercher dans trace ou JSON...","statCrashes":"Crashes","statFatal":"Mortel","statJsErrors":"Erreurs JS","statPromises":"Promesses","statRender":"Rendu","statNative":"Natif","filterFatal":"Mortel","filterJsError":"Erreur JS","filterPromise":"Promesse","filterRender":"Rendu","filterNative":"Natif","fatalBadge":"MORTEL","handledBadge":"MANIPULÉ","fatalCrash":"ACCIDENT MORTEL","handledException":"EXCEPTION GÉRÉE","unknownException":"Exception inconnue","report":"Rapport","inspect":"Inspecter","copyReport":"Copier le rapport","copied":"Copié","clearTitle":"Effacer l'historique des crashs","clearMessage":"Êtes-vous sûr de vouloir effacer tous les enregistrements de crash interceptés ?","clearCancel":"Annuler","clearConfirm":"Tout effacer","emptyTitle":"Zéro crash détecté","emptySubtitle":"La protection anti-collision globale est active. Toutes les exceptions natives et JavaScript sont interceptées et protégées.","emptySearchSubtitle":"Aucune entrée de crash ne correspond à votre requête de recherche.","tabStack":"Pile ({{count}})","tabDiagnostics":"Diagnostic","tabTrail":"Sentier ({{count}})","tabRawJson":"JSON brut","appFrames":"Cadres d'application ({{count}})","allFrames":"Toutes les images ({{count}})","anonymous":"<anonyme>","noStackTrace":"Aucune trace de pile capturée pour cet événement.","deviceEnvironment":"Appareil et environnement","platform":"Plateforme","osVersion":"Version du système d'exploitation","reactNative":"Réagir natif","jsEngine":"Moteur JS","hermesEngine":"Moteur Hermès","architecture":"Architecture","fabricNewArch":"Tissu (nouvelle arche)","paperLegacy":"Papier (ancien)","appState":"État de l'application","jsHeapMemory":"Mémoire de tas JS","usedHeap":"Tas utilisé","totalHeap":"Tas total","noBreadcrumbs":"Aucun événement de fil d'Ariane enregistré avant ce crash.","simNativeMessage":"Exception fatale native simulée","simPromiseMessage":"Rejet de promesse non géré simulé","simRenderMessage":"Erreur de rendu du composant React simulé","simJsMessage":"Exception JavaScript simulée","reportTitle":"RAPPORT DE DIAGNOSTIC D'ACCIDENT","reportErrorName":"Nom de l'erreur :","reportMessage":"Message :","reportType":"Tapez :","reportFatalYes":"OUI (Fatal)","reportFatalNo":"NON (Attrapé/Géré)","reportFatal":"Mortel :","reportTimestamp":"Horodatage :","reportUptime":"Temps de disponibilité de l'application :","reportUptimeValue":"{{seconds}} secondes","reportPlatform":"Plateforme :","reportReactNative":"Réagissez natif :","reportHermes":"Hermès :","reportEnabled":"Activé","reportDisabled":"Désactivé","reportArchitecture":"Architecture :","reportFabricNew":"Tissu (Nouveau)","reportPaperLegacy":"Papier (ancien)","reportScreenSize":"Taille de l'écran :","reportAppState":"État de l'application :","reportJsMemory":"Mémoire JS :","reportStackTrace":"TRAÇAGE DE LA PILE :","reportNoStackTrace":"Aucune trace de pile disponible","reportComponentHierarchy":"HIÉRARCHIE DES COMPOSANTS :","reportRecentBreadcrumbs":"Fil d'Ariane récent :","mdReportTitle":"🚨 Rapport de crash : {{name}}","mdStackTrace":"📦 Trace de pile","mdComponentHierarchy":"🌲 Hiérarchie des composants","mdRecentBreadcrumbs":"👣 Fil d'Ariane récent","mdSeverityFatal":"MORTEL","mdSeverityHandled":"MANIPULÉ","breadcrumbNavigation":"Navigation de \"{{from}}\" à \"{{to}}\"","breadcrumbAction":"Action : {{actionType}}","unknown":"Inconnu","runtimeException":"Exception d'exécution","logFatalCrash":"Accident mortel","logUnhandledError":"Erreur non gérée","errorNameFatal":"Erreur fatale","errorNameUnhandled":"Exception non gérée","nativeCrashTitle":"Crash natif","nativeUncaughtException":"Exception native non capturée","nativeException":"Exception native","unhandledPromiseRejection":"Rejet de promesse non géré","filterTitle":"Filtres de crash","filterSubtitle":"Diagnostics et rapports","filterReset":"Tout réinitialiser","filterTypeSection":"TYPE D'ACCIDENT","filterTypeAll":"Tous types","filterTimeSection":"HORIZON TEMPS","filterTimeAll":"Tout le temps","filterTime15m":"15 dernières minutes","filterTime1h":"Dernière 1 heure","filterTime24h":"Dernières 24 heures","filterTime7d":"7 derniers jours","filterPlatformSection":"PLATEFORME","filterPlatformAll":"Toutes les plateformes","filterPlatformAndroid":"Android","filterEngineSection":"MOTEUR JS","filterEngineAll":"Tous les moteurs","filterEngineHermes":"Hermès","filterSortSection":"ORDRE DE TRI","filterSortNewest":"Le plus récent en premier (par défaut)","filterSortOldest":"Le plus âgé en premier","filterDiscard":"Jeter","filterApply":"Appliquer ({{count}} plantages)","frameCopy":"Copier","frameCopied":"Copié","componentHierarchy":"Hiérarchie des composants","breadcrumbTrail":"JOURNAL DES ACTIVITÉS ET ÉVÉNEMENTS","deviceDiagnostics":"DIAGNOSTICS DE L’APPAREIL AU MOMENT DU CRASH","openInInspector":"Ouvrir dans l’inspecteur"},"socket":{"showingConnections":"Affichage de {{count}} connexions","showingFilteredConnections":"Affichage de {{filtered}} sur {{total}} connexions","deletedCount":"{{count}} journaux WebSocket supprimés","copiedUrls":"{{count}} URLs copiées","webSocketTraffic":"Trafic WebSocket ({{count}} connexions)","title":"WebSocket","messages":"Messages","overview":"Aperçu","params":"Paramètres","rawAndCode":"Brut et code","totalFrames":"CADRES TOTALS","sentRecv":"ENVOYÉ / RECV","dataTransferred":"DONNÉES TRANSFÉRÉES","searchFramesPlaceholder":"Rechercher des charges utiles de cadre ou des noms d'événements...","sent":"Envoyé","recv":"Réception","emptyFrames":"Aucune image capturée pour cette connexion","searchSocketsPlaceholder":"Rechercher des URL ou des messages WebSocket...","noSockets":"Aucune connexion WebSocket","noSocketsDesc":"Les connexions WebSocket, Socket.IO et WSS capturées apparaîtront ici en temps réel.","noMatching":"Aucun WebSocket correspondant","adjustSearchFilter":"Essayez d'ajuster votre requête de recherche ou de filtrer les puces.","simulateTraffic":"Simuler le trafic WebSocket de démonstration","clearTitle":"Effacer tous les journaux WebSocket","clearMessage":"Êtes-vous sûr de vouloir supprimer toutes les sessions WebSocket enregistrées ?","cleared":"Tous les journaux WebSocket effacés","deleteSelectedTitle":"Supprimer les WebSockets sélectionnés","deleteSelectedMsg":"Voulez-vous vraiment supprimer les {{count}} journaux WebSocket sélectionnés ?","filterTitle":"Filtrer les connexions WebSocket","connectionDetails":"DÉTAILS DE LA CONNEXION","url":"URL","clientEngine":"Moteur client","readyState":"État prêt","connectedAt":"Connecté à","closedAt":"Fermé à","closeCodeReason":"Code et raison de fermeture","subprotocols":"Sous-protocoles","callerStack":"Pile d'appel","error":"Erreur","handshakeHeaders":"En-têtes du Handshake","handshakeParams":"PARAMÈTRES DE REQUÊTE DU HANDSHAKE","noQueryParams":"Aucun paramètre de requête passé dans l'URL de connexion","jsClientCode":"CODE CLIENT JAVASCRIPT","terminalWscat":"COMMANDE TERMINAL WSCAT","rawDump":"DUMP JSON BRUT DE CONNEXION"},"push":{"clearTitle":"Effacer l'historique push","clearMessage":"Êtes-vous sûr de vouloir effacer tous les enregistrements de notifications push ?","cleared":"Historique des notifications push effacé","foreground":"Premier plan","background":"Arrière-plan","quit":"Fermé","title":"Notifications poussées","preview":"Aperçu","payload":"Charge utile personnalisée","deliveryMetadata":"Métadonnées de remise et message","rawPayload":"Charge utile brute","link":"Lien","appNotification":"Notification d'application","now":"maintenant","domainFields":"Champs spécifiques au domaine","searchPlaceholder":"Rechercher des notifications push...","noNotifications":"Aucune notification push","noNotificationsDesc":"Les événements Firebase FCM, Apple APN, OneSignal et push personnalisés capturés apparaîtront ici en temps réel.","filterTitle":"Filtrer les notifications push","messageId":"ID du message :","sourceDomain":"Source / Domaine :","appState":"État de l'application :","actionType":"Type d'action :","timestamp":"Horodatage :","channelId":"ID du canal :","sound":"Son :","badgeCount":"Compteur de badge :","collapseKey":"Clé de regroupement :","noCustomData":"Aucune donnée clé-valeur personnalisée trouvée","noMatching":"Aucune notification push correspondante","adjustSearchFilter":"Essayez d’ajuster votre recherche ou vos filtres."},"about":{"title":"À propos et spécifications","subtitle":"Infos du package, spécifications d'exécution et diagnostic","heroTitle":"Inspecteur intégré","heroDescription":"L'outil tout-en-un de débogage, journalisation et QA sur l'appareil pour les applications React Native et Expo.","upToDate":"À jour","versionAvailable":"v{{version}} Disponible","copyUpgradeCommand":"Copier la commande de mise à jour (v{{version}})","copiedUpgradeCommand":"Commande npm copiée !","appInformation":"INFORMATIONS DE L'APP","appName":"Nom de l'app","packageIdentifier":"Identifiant du package","appVersion":"Version de l'app","environment":"Environnement","developmentDebug":"Développement (Débogage)","platform":"Plateforme","features":"CE QUE FAIT L'INSPECTEUR","featureNetwork":"Moniteur de trafic réseau","featureNetworkDesc":"Inspectez les requêtes HTTP et HTTPS, les réponses, les en-têtes et la latence du serveur.","featureConsole":"Journal de console","featureConsoleDesc":"Consultez les journaux de console, avertissements et erreurs en temps réel.","featureAnalytics":"Télémétrie analytique","featureAnalyticsDesc":"Suivez les événements Firebase et analytiques personnalisés en direct.","featureRedux":"État et actions Redux","featureReduxDesc":"Inspectez les actions envoyées, les charges utiles et les différences de l'arbre d'état.","featureCapture":"Capture d'écran et vidéo","featureCaptureDesc":"Prenez des captures d'écran et enregistrez des sessions de test à partager.","featureCrash":"Détection des plantages et diagnostic","featureCrashDesc":"Protège contre les plantages natifs et fournit les métriques de santé de l'appareil.","githubSub":"Étoile et code source","npmRegistry":"Registre NPM","npmRegistrySub":"Mises à jour du package","documentationSub":"Guide d'intégration","reportIssue":"Signaler un problème","reportIssueSub":"Aide et support","releaseNotes":"Notes de version","releaseNotesSub":"Nouveautés","copyInstall":"Copier l'installation","copyInstallSub":"commande npm / yarn","copiedInstallCommand":"Commande d'installation copiée !","footerLicense":"React Native In-App Inspector · Licence MIT","footerTagline":"Outil de débogage sans configuration","productionRelease":"Production (sortie)","appleIos":"AppleiOS","googleAndroid":"Google-Android","github":"GitHub","documentation":"Documentation"},"codeSnippet":{"copy":"Copier","copied":"Copié!","matchCount":"{{count}} correspondance","matchCount_plural":"{{count}} correspondances","noMatches":"Aucune correspondance","searchPlaceholder":"Rechercher...","prevMatch":"Match précédent","nextMatch":"Prochain match","clearSearch":"Effacer la recherche"},"diffViewer":{"added":"ajouté","removed":"supprimé","changed":"changé","noDiff":"Aucune différence","emptyTitle":"Aucune différence trouvée","emptySubtitle":"Les deux charges utiles sont identiques."},"logCard":{"seeMore":"Afficher plus","seeLess":"Afficher moins","copy":"Copier","copied":"Copié!"},"emptyState":{"title":"Rien ici encore","subtitle":"Les données apparaîtront ici lorsque vous utiliserez l'application.","reload":"Recharger"},"errorBoundary":{"title":"Quelque chose s'est mal passé","message":"Une erreur inattendue s'est produite.","retry":"Réessayez","reset":"Réinitialiser","close":"Fermer"},"mediaGallery":{"all":"Tous ({{count}})","photos":"Photos","videos":"Vidéos","gifs":"GIF","purge":"Purger ({{size}})","purgeTitle":"Purger tous les médias","purgeMessage":"Cela supprimera définitivement toutes les {{count}} captures d'écran, vidéos et GIF capturés ({{size}}). Continuer?","noMediaTitle":"Aucun média capturé","noMediaDesc":"Utilisez le bouton Enregistrer une photo ou une vidéo dans la barre d'outils pour capturer des captures d'écran, des enregistrements d'écran ou des GIF de l'ensemble de l'application.","deleted":"Élément multimédia supprimé","allPurged":"Tous les médias capturés purgés","converting":"Conversion...","convertToGif":"Convertir en GIF","playVideo":"Lire la vidéo","playError":"Impossible de lire la vidéo","convertedSuccess":"Converti en GIF animé avec succès !","convertFailed":"Échec de la conversion en GIF","share":"Partager","copyUri":"Copier l'URI","uriCopied":"URI du fichier copié dans le presse-papiers","delete":"Supprimer","deleteSelected":"Supprimer ({{count}})","deleteSelectedTitle":"Supprimer la sélection","deleteSelectedMessage":"Voulez-vous vraiment supprimer {{count}} éléments multimédias sélectionnés ?","deletedCount":"{{count}} éléments multimédias supprimés","deleteTitle":"Supprimer le média","deleteMessage":"Voulez-vous vraiment supprimer {{filename}} ?","shareUnavailable":"Partage non disponible sur cet appareil","showingResults":"Affichage de {{count}} résultats","showingFilteredResults":"Affichage de {{count}} résultats sur {{total}}","selectedOfResults":"{{selected}} résultats sélectionnés sur {{total}}","minimize":"Réduire","expand":"Développer le plein écran","collapse":"Quitter le plein écran","speed":"Vitesse","loop":"Boucle","pause":"Pause","play":"Jouer","hideGridlines":"Masquer la grille Instagram (3×3)","showGridlines":"Afficher la grille Instagram (3×3)","hideWatermark":"Masquer le filigrane QA","showWatermark":"Afficher le filigrane QA","exportGif":"Exporter en GIF animé","snapshotFrame":"Capturer l’image (PNG)","tapToPlaceStep":"Touchez ou faites glisser pour placer le badge","resetAdjustments":"Ajustements réinitialisés","tagPlaced":"Étiquette placée","tapToAddText":"Touchez l’image pour ajouter du texte","textAdded":"Texte superposé ajouté","redone":"Rétabli","undone":"Annulé","videoSaved":"Vidéo éditée enregistrée dans la galerie","savedSuccess":"Enregistré avec succès","saveFailed":"Échec de l’enregistrement du média","snapshotSaved":"Image de capture enregistrée dans la galerie","snapshotFailed":"Échec de la capture de l’image","shareSuccess":"Média partagé avec succès","cropFailed":"Échec du recadrage","croppedSuccess":"Média recadré avec succès","resizeFailed":"Échec du redimensionnement","resizedSuccess":"Média redimensionné avec succès","trimFailed":"Échec de la coupe vidéo","trimmedSuccess":"Vidéo coupée avec succès","muteFailed":"Échec de la modification audio","mutedSuccess":"Audio modifié avec succès","resetSuccess":"Image réinitialisée à l’original","openCameraRoll":"Ouvrir la pellicule","importPhotos":"Importer des photos de la bibliothèque","importVideos":"Importer des vidéos de la bibliothèque","importedPhoto":"Photo importée de la pellicule","importedVideo":"Vidéo importée de la pellicule","importFailed":"Échec de l’importation du média","preview":"Aperçu"},"debugging":{"title":"Débogage et outils","buildSuccess":"Création de l'APK générée avec succès !","buildFailed":"Échec de la construction : {{error}}","buildCancelled":"Construction annulée par l'utilisateur"},"telemetry":{"fps":"FPS","liveTraffic":"RÉSEAU DIRECT","ram":"RAM","active":"ACTIF","networkSpeed":"Vitesse du réseau","fpsLive":"FPS en direct","ramUsage":"Utilisation RAM","battery":"Batterie","livePerformanceStrip":"Bandeau de performances en direct"},"media":{"animatedGif":"GIF ANIMÉ","cropDefect":"Rogner défaut","rotate90":"Pivoter 90°","redactPii":"Masquer PII","trim5s":"Rogner 5s","muteAudio":"Couper son","toGif":"En GIF","play":"Lire","trim":"Couper","audio":"Audio","speed":"Vitesse","snapshot":"Capture"},"language":{"confirmTitle":"Changer de langue ?","confirmMessage":"Voulez-vous basculer la langue de l’inspecteur vers {{newLang}} ?","confirmApply":"Appliquer la langue","current":"Actuel","new":"Nouveau"},"support":{"title":"Support et Communauté","subtitle":"React Native In-App Inspector","heroDescription":"Conçu avec passion pour fournir une suite complète de débogage sur appareil pour les équipes mobiles du monde entier. Vos parrainages, étoiles et retours soutiennent nos améliorations continues.","sponsor":"Sponsoriser sur GitHub","sponsorBadge":"SPONSOR","sponsorDesc":"Soutenez la maintenance continue, les nouvelles fonctionnalités et améliorations.","sponsorBtn":"Devenir sponsor","copiedSponsor":"Lien GitHub Sponsors copié !","star":"Ajouter une étoile sur GitHub","starDesc":"Ajoutez une étoile pour aider d’autres développeurs React Native à découvrir cet outil.","issues":"Signaler un problème / Suggestion","issuesDesc":"Un bug ou une idée ? Ouvrez un ticket sur GitHub.","docs":"Documentation officielle","docsDesc":"Visite guidée, syntaxe de recherche et guides de configuration.","contact":"Contacter l’auteur","contactDesc":"vengatmacuser@gmail.com • Support direct et demandes d’entreprises.","waysToSupport":"FAÇONS DE CONTRIBUER ET DE SOUTENIR","npmRegistry":"Registre de paquets NPM","npmRegistryDesc":"Consultez les notes de version, la taille des paquets et les statistiques d’installation.","shareTitle":"FAITES PASSER LE MOT","shareDesc":"Aidez vos collègues développeurs et testeurs QA à déboguer le réseau, les logs et Redux plus rapidement.","shareWithTeam":"Partager avec l’équipe","copiedRepo":"Lien du dépôt copié !","copyRepo":"Copier l’URL du dépôt","maintainer":"MAINTENEUR DU PROJET","sendEmail":"Envoyer un e-mail","copiedEmail":"Adresse e-mail copiée !","copyEmail":"Copier l’e-mail","close":"Fermer"},"perf":{"title":"Studio de Profilage Performance et FPS","target60Fps":"Cible 60 FPS","triggerGc":"GC","gcTriggered":"Ramasse-miettes exécuté","resetStats":"Réinitialiser","statsReset":"Compteurs réinitialisés","copySummary":"Copier","summaryCopied":"Résumé copié dans le presse-papier","exportReport":"Exporter","shareUnavailable":"Partage non disponible","liveApm":"APM EN DIRECT","statusExcellent":"EXCELLENT","statusGood":"BON","statusFair":"MOYEN","statusPoor":"MÉDIOCRE","descExcellent":"Les threads UI et JS sont parfaitement fluides. Aucun goulot d'étranglement.","descGood":"Bonne performance avec quelques pertes d'images lors d'opérations lourdes.","descPoor":"Jank détecté. La boucle d'événements JS est bloquée.","session":"Session","apdex":"Apdex","uiFps":"FPS UI","avg":"Moy","min":"Min","frameTime":"Temps d'Image","target":"Cible","jsThreadLag":"Délai Thread JS","peak":"Pic","jsHeap":"Tas JS","engineProtected":"Protégé par le moteur","vsyncBudgetConsumption":"16.6ms Vsync Budget Consumption","budgetHeadroomAvailable":"budget headroom available","budgetExceededBy":"Budget exceeded by","budgetTarget":"Budget: 16.6ms","tabOverview":"Aperçu et Vitaux","tabPercentiles":"Percentiles et Latence","tabEngine":"Moteur et Mémoire","tabJanks":"Journal des Janks","tabBenchmark":"Tests de Charge","datadogVitalsTitle":"Métriques Vitales Datadog et New Relic","datadogVitalsDesc":"Real-time Mobile APM metrics computed via official New Relic Apdex (T=16.6ms) and Datadog RUM Mobile Vitals algorithms.","satisfiedFrames":"Satisfaits (≤16.6ms)","slowFrames":"Images Lentes (17-66ms)","frozenFrames":"Images Figées (>66ms)","longTasks":"Tâches Longues JS (>50ms)","distributionTitle":"Distribution de Durée des Images","framesSampled":"images échantillonnées","ultraSmooth":"Ultra-fluide","normalUiLayout":"Normal UI Layout","minorVariance":"Minor Variance","droppedFrame":"Dropped Frame","frozenFrame":"Frozen Frame","percentilesTitle":"Matrice de Percentiles de Latence","percentilesSubtitle":"Computed from Live Frames","percentilesDesc":"Exact mathematical distribution of frame times sampled from the active rolling window.","p50Label":"p50 (Médiane)","p50Sub":"50% of frames faster","p90Label":"p90","p90Sub":"90% of frames faster","p95Label":"p95","p95Sub":"95% of frames faster","p99Label":"p99 (Queue de latence)","p99Sub":"Worst 1% outlier frames","realtimeFrameTimes":"Temps d'Image en Temps Réel","target60FpsLabel":"16.6ms Target (60fps)","past50Frames":"← Past 50 Frames","nowInstant":"Now (Instantaneous) →","smoothLegend":"Fluide (<18ms)","jankLegend":"Jank (18-33ms)","frozenLegend":"Figé (>33ms)","jsResponsiveness":"Réactivité du Thread JS","instantaneous":"⚡ Instantané","lagUnit":"ms Lag","avgJsQueueLag":"Average JS Queue Lag","peakLagSpike":"Peak Lag Spike","engineTelemetryTitle":"Télémétrie Moteur et Exécution","engineTelemetryDesc":"Deep inspection of the active JavaScript Virtual Machine, memory allocations, and React Native architecture.","jsEngine":"Moteur JavaScript","architectureMode":"Mode Architecture","turboModulesBridge":"Pont TurboModules","turboModulesEnabled":"⚡ Enabled (JSI Direct)","standardBridge":"Standard Bridge","liveHeapSize":"Taille Tas en Direct","totalHeapAllocated":"Total Tas Alloué","sessionPeakHeap":"Pic Historique Tas","gcCollections":"Cycles GC","gcCpuTime":"Temps CPU GC","nativeManaged":"Native Managed","triggerHermesGc":"Déclencher le GC Hermes","invokedHermesGc":"Invoked Hermes GC cycle","jankIncidentLog":"Journal des Incidents Jank","janksCount":"janks","allFilter":"TOUS","moderateFilter":"MODÉRÉ","severeFilter":"SÉVÈRE","frozenFilter":"FIGÉ","zeroJanksDetected":"Zéro Jank Détecté","zeroJanksDesc":"All frames rendered smoothly within the target vsync budget.","inspect":"Inspecter","hide":"Masquer","incidentDiagnostics":"Incident Diagnostics","delayedBy":"Frame delayed by","beyondDeadline":"beyond standard vsync deadline","stressTitle":"Suite de Tests de Charge et Benchmark","stressDesc":"Trigger synchronous workloads or render bursts to watch the live FPS and JS lag meters react dynamically.","jsStressTitle":"JS Loop Stress (120ms)","jsStressSub":"Simulates heavy compute / blocking synchronous loop","jsStressRan":"Ran 120ms synchronous JS blocking loop","renderStressTitle":"Re-render Burst (25 frames)","renderStressSub":"Simulates rapid state & layout reconciliation passes","renderStressRan":"Fired 25 rapid re-render cycles"}}