@aiworker/web 1.22.0 → 1.23.0

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 (415) hide show
  1. package/README.md +4 -4
  2. package/bin/cli.js +14 -4
  3. package/bin/cli.test.js +165 -73
  4. package/bin/lib/cli-api-target.js +2 -2
  5. package/bin/lib/cli-args.js +119 -119
  6. package/bin/lib/cli-lifecycle.js +9 -9
  7. package/bin/lib/cli-network.js +3 -3
  8. package/bin/lib/cli-paths.js +3 -3
  9. package/bin/lib/cli-ports.js +2 -2
  10. package/bin/lib/cli-process.js +4 -4
  11. package/bin/lib/cli-startup.js +64 -15
  12. package/bin/lib/cli-tunnel-profiles.js +1 -1
  13. package/bin/lib/cli-tunnel-utils.js +2 -2
  14. package/bin/lib/commands-connect-url.js +19 -19
  15. package/bin/lib/commands-lifecycle.js +27 -27
  16. package/bin/lib/commands-logs.js +5 -5
  17. package/bin/lib/commands-models.js +1 -1
  18. package/bin/lib/commands-projects.js +1 -1
  19. package/bin/lib/commands-schedule.js +1 -1
  20. package/bin/lib/commands-serve.js +29 -29
  21. package/bin/lib/commands-session.js +1 -1
  22. package/bin/lib/commands-startup.js +45 -10
  23. package/bin/lib/commands-status.js +1 -1
  24. package/bin/lib/commands-tunnel.js +40 -40
  25. package/bin/lib/commands-update.js +1 -1
  26. package/bin/lib/commands-update.test.js +6 -6
  27. package/dist/assets/{CodeMirrorCommentWidgets-B3u7UIcE.js → CodeMirrorCommentWidgets-B1Gizi3a.js} +1 -1
  28. package/dist/assets/DiffView-DXjVsEOw.js +4 -0
  29. package/dist/assets/DirtyBranchSwitchDialog-aig6zJjg.js +1 -0
  30. package/dist/assets/FilesView-CJdG0-wk.js +17 -0
  31. package/dist/assets/GitView-BXsS3jG6.js +6 -0
  32. package/dist/assets/{JsonTreeView-B0BdZEHG.js → JsonTreeView-D_hpXBnF.js} +1 -1
  33. package/dist/assets/LinearIssuesView-BoUiLQG1.js +1 -0
  34. package/dist/assets/MarkdownImageGallery-B_B_a9KS.js +1 -0
  35. package/dist/assets/MarkdownRendererImpl-xgyyLiBM.js +12 -0
  36. package/dist/assets/OnboardingScreen-DIp84OWt.js +1 -0
  37. package/dist/assets/{PatchDiff-DvfqDql7.js → PatchDiff-8p6nLJaU.js} +1 -1
  38. package/dist/assets/PierreDiffViewer-DjC8nTk9.js +161 -0
  39. package/dist/assets/PlanView-CJTmOF6I.js +5 -0
  40. package/dist/assets/SettingsView-DD-JqIJx.js +28 -0
  41. package/dist/assets/{SettingsWindow-i45U1Cy1.js → SettingsWindow-Cpb4hM6q.js} +1 -1
  42. package/dist/assets/SymbolsNerdFontMono-Regular-aK5vsLov.woff2 +0 -0
  43. package/dist/assets/{ToolOutputDialog-BTwyh5OF.js → ToolOutputDialog-DfaKZXNU.js} +6 -6
  44. package/dist/assets/ToolPartDiffPreview-DtZLzrSK.js +8 -0
  45. package/dist/assets/{VirtualizedFileDiff-DD8lDVej.js → VirtualizedFileDiff-C8i9HpTB.js} +1 -1
  46. package/dist/assets/WalkthroughView-DeKMvZlL.js +4 -0
  47. package/dist/assets/{computeVirtualFileMetrics-BMIRgMHv.js → computeVirtualFileMetrics-BBI7ZwrC.js} +2 -2
  48. package/dist/assets/contextPanelEmbeddedChat-BdA6bdky.js +1 -0
  49. package/dist/assets/de-DCrsQ5zS.js +10 -0
  50. package/dist/assets/es-Dwv4YfH6.js +16 -0
  51. package/dist/assets/fr-BCWg4Cnx.js +14 -0
  52. package/dist/assets/ghostty-vt-DdA0Zryv.wasm +0 -0
  53. package/dist/assets/index-B68h5S5B.css +1 -0
  54. package/dist/assets/index-DVwMarHI.js +39 -0
  55. package/dist/assets/{index-CODwDsU_.js → index-jXSK5RrB.js} +1 -1
  56. package/dist/assets/{isDiffPlainText-BqayB8d3.js → isDiffPlainText-B_x_rVon.js} +1 -1
  57. package/dist/assets/{isFilePlainText-QfoiKJNY.js → isFilePlainText-DW_xMer1.js} +1 -1
  58. package/dist/assets/ja-Bruw3RYC.js +16 -0
  59. package/dist/assets/ko-idhXGF8j.js +16 -0
  60. package/dist/assets/main-BkyaQhJX.js +930 -0
  61. package/dist/assets/{main-C5DVOxc6.js → main-CzdPuL0s.js} +2 -2
  62. package/dist/assets/markdownCore-Cn4Tyejo.js +5 -0
  63. package/dist/assets/{miniChat-DUJ4irZc.js → miniChat-CCkqKOLp.js} +2 -2
  64. package/dist/assets/{mobile-CcaxB0n4.js → mobile-mvxTo055.js} +2 -2
  65. package/dist/assets/patchFileDiff-Csk4iNUi.js +13 -0
  66. package/dist/assets/pl-CGZWUqZJ.js +16 -0
  67. package/dist/assets/pt-BR-B8V7u7tA.js +16 -0
  68. package/dist/assets/renderElectronMiniChatApp-BxoyujA5.js +2 -0
  69. package/dist/assets/renderMobileApp-B48CsP4r.js +25 -0
  70. package/dist/assets/runtimeEndpointReset-Bg5gx18H.js +17 -0
  71. package/dist/assets/scheduledTasksApi-BW0Etzwz.js +1 -0
  72. package/dist/assets/{shikiHighlight-DYOWuY65.js → shikiHighlight-CRl0SUC9.js} +1 -1
  73. package/dist/assets/surface-oMvhsog3.js +1 -0
  74. package/dist/assets/tr-BK_KiO2V.js +7 -0
  75. package/dist/assets/uk-CG74xV8N.js +16 -0
  76. package/dist/assets/useAppFontEffects-CPKeOpUo.js +7284 -0
  77. package/dist/assets/useGitComparison-DH220WmO.js +1 -0
  78. package/dist/assets/useInlineCommentController-BiWz4AVb.js +2 -0
  79. package/dist/assets/useRootScrollLock-BS4-kr7P.js +1 -0
  80. package/dist/assets/{vendor-base-ui-BeMD8X_w.js → vendor-base-ui-DdV8vhHn.js} +1 -1
  81. package/dist/assets/{vendor-codemirror-language-data-DFZik9R2.js → vendor-codemirror-language-data-Bg4AEeCr.js} +2 -2
  82. package/dist/assets/vendor-zod-BPAANqvH.js +39 -0
  83. package/dist/assets/{web-components-Bhg83tjf.js → web-components-z7hfnS8n.js} +1 -1
  84. package/dist/assets/zh-CN-T4AXofZI.js +16 -0
  85. package/dist/assets/zh-TW-Dte40sxp.js +16 -0
  86. package/dist/index.html +21 -59
  87. package/dist/mini-chat.html +7 -7
  88. package/dist/mobile.html +5 -5
  89. package/package.json +3 -4
  90. package/server/index.d.ts +15 -0
  91. package/server/index.js +158 -89
  92. package/server/lib/agent-memory/actions.js +2 -2
  93. package/server/lib/agent-memory/feature-flag.js +1 -1
  94. package/server/lib/agent-memory/feature-flag.test.js +8 -8
  95. package/server/lib/agent-memory/routes.js +2 -2
  96. package/server/lib/agent-tool/runtime.js +37 -54
  97. package/server/lib/agent-tool/runtime.test.js +59 -59
  98. package/server/lib/browser-control/broker.js +3 -3
  99. package/server/lib/browser-control/broker.test.js +1 -1
  100. package/server/lib/changelog/update-notes.js +82 -0
  101. package/server/lib/changelog/update-notes.test.js +59 -0
  102. package/server/lib/client-auth/remote-clients.test.js +5 -5
  103. package/server/lib/context-obligatory/runtime.js +7 -7
  104. package/server/lib/context-obligatory/runtime.test.js +5 -5
  105. package/server/lib/data-dir-migration.js +40 -0
  106. package/server/lib/data-dir-migration.test.js +59 -0
  107. package/server/lib/dev-servers/parse.js +2 -2
  108. package/server/lib/dev-servers/parse.test.js +2 -2
  109. package/server/lib/dev-servers/routes.js +1 -1
  110. package/server/lib/dev-tunnel/DOCUMENTATION.md +13 -4
  111. package/server/lib/dev-tunnel/client.js +1 -1
  112. package/server/lib/dev-tunnel/runtime.js +5 -5
  113. package/server/lib/dev-tunnel/tunnel.test.js +21 -1
  114. package/server/lib/dictation/local/model-catalog.js +1 -1
  115. package/server/lib/dictation/local/worker-process.js +2 -2
  116. package/server/lib/event-stream/directory-ws-bridge.js +1 -1
  117. package/server/lib/event-stream/global-ws-bridge.js +1 -1
  118. package/server/lib/event-stream/protocol.test.js +4 -4
  119. package/server/lib/event-stream/runtime.test.js +18 -18
  120. package/server/lib/fs/DOCUMENTATION.md +5 -0
  121. package/server/lib/fs/routes.js +68 -26
  122. package/server/lib/fs/routes.test.js +208 -22
  123. package/server/lib/git/DOCUMENTATION.md +32 -6
  124. package/server/lib/git/identity-storage.js +1 -1
  125. package/server/lib/git/issue-2746-longpaths.test.js +4 -4
  126. package/server/lib/git/routes.js +41 -5
  127. package/server/lib/git/service.js +300 -224
  128. package/server/lib/git/service.test.js +596 -28
  129. package/server/lib/github/auth.js +8 -8
  130. package/server/lib/github/pr-status.js +1 -1
  131. package/server/lib/github/routes.js +2 -2
  132. package/server/lib/inherited-env.js +17 -10
  133. package/server/lib/inherited-env.test.js +10 -11
  134. package/server/lib/linear/auth.js +8 -8
  135. package/server/lib/linear/auth.test.js +24 -24
  136. package/server/lib/linear/issues.test.js +6 -6
  137. package/server/lib/linear/mapping.test.js +4 -4
  138. package/server/lib/linear/oauth.js +2 -2
  139. package/server/lib/linear/oauth.test.js +14 -14
  140. package/server/lib/linear/routes.js +5 -5
  141. package/server/lib/linear/routes.test.js +16 -16
  142. package/server/lib/linear/status-runtime.test.js +9 -9
  143. package/server/lib/linear/status.js +1 -1
  144. package/server/lib/linear/status.test.js +15 -15
  145. package/server/lib/linear/teams.test.js +4 -4
  146. package/server/lib/magic-prompts/routes.js +2 -2
  147. package/server/lib/mcp-reconnect/DOCUMENTATION.md +55 -0
  148. package/server/lib/mcp-reconnect/runtime.js +122 -0
  149. package/server/lib/mcp-reconnect/runtime.test.js +140 -0
  150. package/server/lib/message-queue/DOCUMENTATION.md +161 -0
  151. package/server/lib/message-queue/runtime.js +870 -0
  152. package/server/lib/message-queue/runtime.test.js +482 -0
  153. package/server/lib/network-defaults.js +23 -0
  154. package/server/lib/network-defaults.test.js +52 -0
  155. package/server/lib/notifications/apns-runtime.js +17 -17
  156. package/server/lib/notifications/apns-runtime.test.js +11 -11
  157. package/server/lib/notifications/emitter-runtime.js +1 -1
  158. package/server/lib/notifications/emitter-runtime.test.js +1 -1
  159. package/server/lib/notifications/push-runtime.js +7 -7
  160. package/server/lib/notifications/routes.js +1 -1
  161. package/server/lib/notifications/runtime.js +1 -1
  162. package/server/lib/openchamber-control/action-resolution.test.js +10 -10
  163. package/server/lib/openchamber-control/actions.js +24 -24
  164. package/server/lib/openchamber-control/error.js +4 -4
  165. package/server/lib/openchamber-control/routes.js +2 -2
  166. package/server/lib/openchamber-control/routes.test.js +5 -5
  167. package/server/lib/openchamber-control/screenshots.js +1 -1
  168. package/server/lib/openchamber-control/screenshots.test.js +1 -1
  169. package/server/lib/openchamber-control/service.js +50 -50
  170. package/server/lib/openchamber-control/service.test.js +5 -5
  171. package/server/lib/openchamber-sessions/routes.js +124 -22
  172. package/server/lib/openchamber-sessions/routes.test.js +99 -11
  173. package/server/lib/opencode/DOCUMENTATION.md +30 -6
  174. package/server/lib/opencode/auth.js +1 -1
  175. package/server/lib/opencode/bootstrap-runtime.js +8 -6
  176. package/server/lib/opencode/cli-options.js +8 -8
  177. package/server/lib/opencode/config-paths.test.js +116 -0
  178. package/server/lib/opencode/core-routes.js +8 -7
  179. package/server/lib/opencode/core-routes.test.js +11 -11
  180. package/server/lib/opencode/env-config.js +5 -5
  181. package/server/lib/opencode/env-config.test.js +7 -7
  182. package/server/lib/opencode/env-runtime.js +10 -10
  183. package/server/lib/opencode/env-runtime.test.js +18 -18
  184. package/server/lib/opencode/feature-routes-runtime.js +19 -12
  185. package/server/lib/opencode/hmr-state-runtime.js +2 -2
  186. package/server/lib/opencode/hmr-state-runtime.test.js +1 -1
  187. package/server/lib/opencode/input-history-scope.js +14 -0
  188. package/server/lib/opencode/lifecycle.js +8 -8
  189. package/server/lib/opencode/lifecycle.test.js +4 -4
  190. package/server/lib/opencode/managed-plugin-config.js +35 -0
  191. package/server/lib/opencode/managed-process-registry.js +3 -3
  192. package/server/lib/opencode/mcp-oauth-callback.test.js +2 -2
  193. package/server/lib/opencode/openchamber-routes.js +79 -19
  194. package/server/lib/opencode/openchamber-routes.test.js +139 -12
  195. package/server/lib/opencode/plugins.js +2 -2
  196. package/server/lib/opencode/plugins.test.js +1 -1
  197. package/server/lib/opencode/project-icon-routes.js +2 -2
  198. package/server/lib/opencode/project-icon-routes.test.js +1 -1
  199. package/server/lib/opencode/providers.js +44 -2
  200. package/server/lib/opencode/providers.test.js +131 -4
  201. package/server/lib/opencode/proxy.js +2 -2
  202. package/server/lib/opencode/pwa-manifest-routes.js +1 -1
  203. package/server/lib/opencode/restart-session-recovery.test.js +1 -1
  204. package/server/lib/opencode/routes-upgrade.test.js +4 -4
  205. package/server/lib/opencode/routes.js +19 -17
  206. package/server/lib/opencode/server-startup-runtime.js +6 -6
  207. package/server/lib/opencode/session-runtime.js +3 -3
  208. package/server/lib/opencode/session-runtime.test.js +6 -6
  209. package/server/lib/opencode/settings-files.js +214 -0
  210. package/server/lib/opencode/settings-helpers.js +116 -44
  211. package/server/lib/opencode/settings-helpers.test.js +354 -12
  212. package/server/lib/opencode/settings-registry.json +747 -0
  213. package/server/lib/opencode/settings-runtime.js +141 -20
  214. package/server/lib/opencode/settings-runtime.test.js +191 -4
  215. package/server/lib/opencode/shared.js +5 -2
  216. package/server/lib/opencode/shared.test.js +7 -7
  217. package/server/lib/opencode/shutdown-runtime.js +2 -0
  218. package/server/lib/opencode/skill-routes.js +2 -1
  219. package/server/lib/opencode/snippets.js +1 -2
  220. package/server/lib/opencode/startup-performance.js +1 -1
  221. package/server/lib/opencode/startup-performance.test.js +6 -6
  222. package/server/lib/opencode/static-routes-runtime.js +8 -8
  223. package/server/lib/opencode/static-routes-runtime.test.js +7 -7
  224. package/server/lib/opencode/upgrade-capability.js +2 -2
  225. package/server/lib/opencode/upgrade-capability.test.js +3 -3
  226. package/server/lib/package-manager.js +17 -42
  227. package/server/lib/package-manager.test.js +19 -19
  228. package/server/lib/permission-auto-accept/runtime.js +1 -1
  229. package/server/lib/project-context/DOCUMENTATION.md +25 -1
  230. package/server/lib/project-context/routes.http.test.js +18 -0
  231. package/server/lib/project-context/routes.js +16 -1
  232. package/server/lib/project-context/runtime.js +248 -23
  233. package/server/lib/project-context/runtime.test.js +106 -3
  234. package/server/lib/projects/DOCUMENTATION.md +76 -0
  235. package/server/lib/projects/project-config.js +144 -11
  236. package/server/lib/projects/project-id.js +17 -0
  237. package/server/lib/projects/project-setup.js +409 -0
  238. package/server/lib/projects/project-setup.test.js +557 -0
  239. package/server/lib/projects/routes.js +59 -0
  240. package/server/lib/quota/DOCUMENTATION.md +40 -2
  241. package/server/lib/quota/credentials/providers.js +4 -0
  242. package/server/lib/quota/credentials/store.js +4 -4
  243. package/server/lib/quota/credentials/store.test.js +8 -8
  244. package/server/lib/quota/index.js +1 -0
  245. package/server/lib/quota/providers/cline-pass.js +125 -0
  246. package/server/lib/quota/providers/cline-pass.test.js +103 -0
  247. package/server/lib/quota/providers/exe-dev.js +75 -0
  248. package/server/lib/quota/providers/exe-dev.test.js +47 -0
  249. package/server/lib/quota/providers/hyper.js +118 -0
  250. package/server/lib/quota/providers/hyper.test.js +126 -0
  251. package/server/lib/quota/providers/index.js +22 -0
  252. package/server/lib/quota/providers/neuralwatt.js +3 -6
  253. package/server/lib/quota/providers/neuralwatt.test.js +7 -7
  254. package/server/lib/quota/providers/ollama-cloud.js +32 -1
  255. package/server/lib/quota/providers/ollama-cloud.test.js +33 -1
  256. package/server/lib/quota/providers/opencode-go.js +3 -2
  257. package/server/lib/quota/providers/opencode-go.test.js +35 -6
  258. package/server/lib/quota/providers/openrouter.js +119 -24
  259. package/server/lib/quota/providers/openrouter.test.js +330 -0
  260. package/server/lib/quota/providers/xai.js +1 -1
  261. package/server/lib/quota/routes.js +2 -0
  262. package/server/lib/quota/utils/auth.js +1 -1
  263. package/server/lib/relay/DOCUMENTATION.md +56 -1
  264. package/server/lib/relay/cross-compat.test.js +26 -0
  265. package/server/lib/relay/downstream-scheduler.js +154 -0
  266. package/server/lib/relay/downstream-scheduler.test.js +162 -0
  267. package/server/lib/relay/e2ee.js +10 -8
  268. package/server/lib/relay/flow-control.test.js +177 -0
  269. package/server/lib/relay/host-client.js +38 -9
  270. package/server/lib/relay/host-client.test.js +9 -1
  271. package/server/lib/relay/host-lock.js +1 -1
  272. package/server/lib/relay/service.js +5 -5
  273. package/server/lib/relay/tunnel-codec.js +9 -0
  274. package/server/lib/relay/tunnel-host.js +69 -18
  275. package/server/lib/relay/tunnel-host.test.js +9 -1
  276. package/server/lib/scheduled-tasks/issue-2710-double-execution.test.js +2 -2
  277. package/server/lib/scheduled-tasks/routes.js +5 -5
  278. package/server/lib/scheduled-tasks/service.js +25 -25
  279. package/server/lib/scheduled-tasks/service.test.js +1 -1
  280. package/server/lib/security/bind-host.js +4 -4
  281. package/server/lib/security/bind-host.test.js +1 -1
  282. package/server/lib/security/request-security.js +11 -5
  283. package/server/lib/security/request-security.test.js +14 -14
  284. package/server/lib/session-assist/runtime.js +15 -18
  285. package/server/lib/session-folders/routes.js +2 -2
  286. package/server/lib/session-folders/routes.test.js +8 -8
  287. package/server/lib/session-goal/DOCUMENTATION.md +20 -7
  288. package/server/lib/session-goal/create.js +4 -2
  289. package/server/lib/session-goal/create.test.js +1 -1
  290. package/server/lib/session-goal/objectives.js +4 -4
  291. package/server/lib/session-goal/routes.js +1 -1
  292. package/server/lib/session-goal/runtime.js +91 -30
  293. package/server/lib/session-goal/runtime.test.js +428 -2
  294. package/server/lib/session-knowledge/runtime.js +11 -11
  295. package/server/lib/session-knowledge/runtime.test.js +5 -5
  296. package/server/lib/skills-catalog/DOCUMENTATION.md +1 -1
  297. package/server/lib/skills-catalog/cache.test.js +2 -2
  298. package/server/lib/skills-catalog/disk-cache.js +5 -5
  299. package/server/lib/skills-catalog/github-meta.test.js +2 -2
  300. package/server/lib/skills-catalog/install.js +3 -2
  301. package/server/lib/small-model/DOCUMENTATION.md +7 -2
  302. package/server/lib/small-model/call.js +18 -7
  303. package/server/lib/small-model/call.test.js +58 -6
  304. package/server/lib/small-model/index.js +12 -16
  305. package/server/lib/small-model/index.test.js +1 -1
  306. package/server/lib/small-model/resolve.js +1 -1
  307. package/server/lib/small-model/resolve.test.js +1 -1
  308. package/server/lib/small-model/routes.js +2 -1
  309. package/server/lib/small-model/runtime-providers.js +15 -7
  310. package/server/lib/small-model/runtime-providers.test.js +7 -1
  311. package/server/lib/system-prompt/runtime.js +3 -22
  312. package/server/lib/system-prompt/runtime.test.js +3 -3
  313. package/server/lib/terminal/DOCUMENTATION.md +14 -10
  314. package/server/lib/terminal/runtime.js +190 -31
  315. package/server/lib/terminal/runtime.test.js +572 -38
  316. package/server/lib/terminal/shells.js +20 -3
  317. package/server/lib/terminal/shells.test.js +33 -2
  318. package/server/lib/tts/base-url.js +3 -3
  319. package/server/lib/tts/routes.test.js +20 -20
  320. package/server/lib/ui-auth/ui-auth.js +12 -9
  321. package/server/lib/ui-auth/ui-auth.test.js +19 -3
  322. package/server/lib/ui-auth/ui-passkeys.js +7 -7
  323. package/server/lib/walkthrough/DOCUMENTATION.md +33 -14
  324. package/server/lib/walkthrough/index.js +1 -0
  325. package/server/lib/walkthrough/jobs.test.js +1 -1
  326. package/server/lib/walkthrough/language.test.js +1 -1
  327. package/server/lib/walkthrough/model-settings.js +11 -15
  328. package/server/lib/walkthrough/model-settings.test.js +1 -1
  329. package/server/lib/walkthrough/prompt.js +3 -1
  330. package/server/lib/walkthrough/pull-request.test.js +5 -5
  331. package/server/lib/walkthrough/reproduce-2607.test.js +2 -2
  332. package/server/lib/walkthrough/routes.test.js +26 -5
  333. package/server/lib/walkthrough/sources.js +23 -2
  334. package/server/lib/walkthrough/store.js +3 -3
  335. package/server/lib/walkthrough/store.test.js +1 -1
  336. package/server/opencode-proxy.test.js +2 -2
  337. package/server/proxy-headers.js +1 -1
  338. package/server/sse-routes.test.js +4 -4
  339. package/README.md.bak +0 -250
  340. package/bin/lib/DOCUMENTATION.md.bak +0 -163
  341. package/dist/assets/CommitSection-SGBCAW0w.js +0 -1
  342. package/dist/assets/DiffView-DluiRSla.js +0 -4
  343. package/dist/assets/FilesView-Bdq8ppva.js +0 -17
  344. package/dist/assets/GitView-Znn7VJcP.js +0 -6
  345. package/dist/assets/LinearIssuesView-jP-hXyac.js +0 -1
  346. package/dist/assets/MarkdownImageGallery-ClOvuZxC.js +0 -1
  347. package/dist/assets/MarkdownRendererImpl-Dt9mjTRN.js +0 -12
  348. package/dist/assets/OnboardingScreen-D2DG7K6b.js +0 -1
  349. package/dist/assets/PierreDiffViewer-B7m3f0d7.js +0 -157
  350. package/dist/assets/PlanView-B0F3BtPZ.js +0 -5
  351. package/dist/assets/SettingsView-BBW-S-gh.js +0 -28
  352. package/dist/assets/ToolPartDiffPreview-CUNe28U1.js +0 -8
  353. package/dist/assets/WalkthroughView-egQgxel3.js +0 -4
  354. package/dist/assets/contextPanelEmbeddedChat-C3fjDbdg.js +0 -1
  355. package/dist/assets/de-C1P6X5Rs.js +0 -9
  356. package/dist/assets/es-CDgaF1_t.js +0 -15
  357. package/dist/assets/fr-Bgxqvvz_.js +0 -13
  358. package/dist/assets/index-C57jT0Sa.css +0 -1
  359. package/dist/assets/index-DW_E3rnL.js +0 -7
  360. package/dist/assets/ja-BDRrEcNP.js +0 -15
  361. package/dist/assets/ko-Ba8sQV79.js +0 -15
  362. package/dist/assets/main-Bv5Pkngh.js +0 -928
  363. package/dist/assets/markdownCore-CZwzz5gw.js +0 -3
  364. package/dist/assets/patchFileDiff-yNfWXN4E.js +0 -10
  365. package/dist/assets/pl-Dioz29BI.js +0 -15
  366. package/dist/assets/pt-BR-DIs6ElwV.js +0 -15
  367. package/dist/assets/renderElectronMiniChatApp-BcKLHXKe.js +0 -2
  368. package/dist/assets/renderMobileApp-D9yQJy0L.js +0 -25
  369. package/dist/assets/runtimeEndpointReset-CjhvxLH0.js +0 -16
  370. package/dist/assets/scheduledTasksApi-DLW0mkQK.js +0 -1
  371. package/dist/assets/tr-DFnMlPxY.js +0 -6
  372. package/dist/assets/uk-ZrCNjM7Y.js +0 -15
  373. package/dist/assets/useAppFontEffects-CjrntdL0.js +0 -7310
  374. package/dist/assets/useInlineCommentController-CDEuSlPH.js +0 -2
  375. package/dist/assets/useRootScrollLock-BHYPkrLv.js +0 -1
  376. package/dist/assets/vendor-ghostty-web-CrxinGGH.js +0 -13
  377. package/dist/assets/vendor-zod-BLfBSgBh.js +0 -39
  378. package/dist/assets/zh-CN-iv_AV4EC.js +0 -15
  379. package/dist/assets/zh-TW-CzEUk38j.js +0 -15
  380. package/server/index.d.ts.bak +0 -39
  381. package/server/lib/agent-tool/DOCUMENTATION.md.bak +0 -119
  382. package/server/lib/browser-control/DOCUMENTATION.md.bak +0 -50
  383. package/server/lib/context-obligatory/DOCUMENTATION.md.bak +0 -19
  384. package/server/lib/dev-tunnel/DOCUMENTATION.md.bak +0 -57
  385. package/server/lib/dictation/DOCUMENTATION.md.bak +0 -100
  386. package/server/lib/event-stream/DOCUMENTATION.md.bak +0 -62
  387. package/server/lib/fs/DOCUMENTATION.md.bak +0 -47
  388. package/server/lib/git/DOCUMENTATION.md.bak +0 -193
  389. package/server/lib/github/DOCUMENTATION.md.bak +0 -183
  390. package/server/lib/linear/DOCUMENTATION.md.bak +0 -97
  391. package/server/lib/linear/OAUTH-BROKER-HANDOFF.md.bak +0 -91
  392. package/server/lib/markdown-image-grants/DOCUMENTATION.md.bak +0 -40
  393. package/server/lib/notifications/APNS.md.bak +0 -135
  394. package/server/lib/notifications/DOCUMENTATION.md.bak +0 -138
  395. package/server/lib/openchamber-control/DOCUMENTATION.md.bak +0 -64
  396. package/server/lib/opencode/DOCUMENTATION.md.bak +0 -431
  397. package/server/lib/opencode/managed-process-registry.d.ts.bak +0 -13
  398. package/server/lib/opencode/provider-env-aliases.d.ts.bak +0 -3
  399. package/server/lib/permission-auto-accept/DOCUMENTATION.md.bak +0 -34
  400. package/server/lib/project-context/DOCUMENTATION.md.bak +0 -160
  401. package/server/lib/quota/DOCUMENTATION.md.bak +0 -123
  402. package/server/lib/relay/DOCUMENTATION.md.bak +0 -100
  403. package/server/lib/scheduled-tasks/DOCUMENTATION.md.bak +0 -182
  404. package/server/lib/session-assist/DOCUMENTATION.md.bak +0 -66
  405. package/server/lib/session-goal/DOCUMENTATION.md.bak +0 -213
  406. package/server/lib/session-knowledge/DOCUMENTATION.md.bak +0 -89
  407. package/server/lib/skills-catalog/DOCUMENTATION.md.bak +0 -151
  408. package/server/lib/small-model/DOCUMENTATION.md.bak +0 -212
  409. package/server/lib/system-prompt/DOCUMENTATION.md.bak +0 -36
  410. package/server/lib/terminal/DOCUMENTATION.md.bak +0 -50
  411. package/server/lib/text/DOCUMENTATION.md.bak +0 -35
  412. package/server/lib/tts/DOCUMENTATION.md.bak +0 -147
  413. package/server/lib/tunnels/DOCUMENTATION.md.bak +0 -21
  414. package/server/lib/ui-auth/DOCUMENTATION.md.bak +0 -44
  415. package/server/lib/walkthrough/DOCUMENTATION.md.bak +0 -411
@@ -1,13 +0,0 @@
1
- import{fo as e,fp as t,fq as s,fr as i}from"./useAppFontEffects-CjrntdL0.js";import"./vendor-react-BUCujlKS.js";import"./vendor-scheduler-7OC5HNn7.js";import"./index-DW_E3rnL.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-zod-BLfBSgBh.js";import"./vendor-opencode-sdk-BJ73u-bH.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-base-ui-BeMD8X_w.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./contextPanelEmbeddedChat-C3fjDbdg.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-livSKyyV.js";import"./vendor-motion-dom-D_o3BTI3.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-g05Cx3z9.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-DFZik9R2.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-gg7YLRW7.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";const o={"settings.providers.page.openCodeGo.title":"Suivi de l’utilisation d’OpenCode Go","settings.providers.page.openCodeGo.description":"Connectez le tableau de bord OpenCode Go pour afficher les quotas glissant, hebdomadaire et mensuel.","settings.providers.page.openCodeGo.workspaceId":"ID de l’espace de travail","settings.providers.page.openCodeGo.authCookie":"Cookie d’authentification","settings.providers.page.openCodeGo.apiKey":"Clé API","settings.providers.page.openCodeGo.help":"Copiez l’ID depuis l’URL du tableau de bord et le cookie auth depuis les outils du navigateur. AiWorker n’analyse jamais les cookies du navigateur.","settings.providers.page.openCodeGo.save":"Enregistrer et valider","settings.providers.page.openCodeGo.replace":"Remplacer","settings.providers.page.openCodeGo.validate":"Valider","settings.providers.page.openCodeGo.delete":"Supprimer","settings.providers.page.quotaCredentials.saved":"Identifiants de {provider} enregistrés.","settings.providers.page.quotaCredentials.accessToken":"Jeton d’accès","settings.providers.page.quotaCredentials.refreshToken":"Jeton d’actualisation","settings.providers.page.quotaCredentials.tokenPlaceholder":"Collez le jeton","settings.providers.page.openCodeGo.saveFailed":"Impossible de valider les identifiants OpenCode Go.","settings.providers.page.openCodeGo.valid":"Les identifiants OpenCode Go sont valides.","settings.providers.page.openCodeGo.invalid":"Les identifiants OpenCode Go sont invalides ou expirés.","settings.providers.page.openCodeGo.deleted":"Identifiants OpenCode Go supprimés.","settings.providers.page.openCodeGo.deleteFailed":"Impossible de supprimer les identifiants OpenCode Go.","settings.appearance.language.label":"Langue","settings.appearance.language.description":"Choisissez la langue de l'interface.","settings.appearance.language.select":"Sélectionnez la langue","settings.window.description":"Fenêtre des paramètres AiWorker.","settings.view.home.title":"Paramètres","settings.view.home.description":"Accédez aux pages communes.","settings.view.home.cards.providers.title":"Fournisseurs","settings.view.home.cards.providers.description":"Connecter les modèles + les identifiants","settings.view.home.cards.agents.title":"Agents","settings.view.home.cards.agents.description":"Invites, outils, autorisations","settings.view.home.cards.skillsCatalog.title":"Catalogue de skills","settings.view.home.cards.skillsCatalog.description":"Installer des skills depuis des catalogues","settings.view.home.cards.mcp.title":"MCP","settings.view.home.cards.mcp.description":"Configurer les serveurs MCP + connexions","settings.view.home.cards.plugins.title":"Plugins","settings.view.home.cards.plugins.description":"Gérer les plugins OpenCode","settings.view.home.cards.usage.title":"Usage","settings.view.home.cards.usage.description":"Quota + visibilité des dépenses","settings.view.unavailable.title":"Pas disponible","settings.view.unavailable.description":"Cette page de paramètres n'est pas disponible dans ce runtime.","settings.view.badge.beta":"bêta","settings.view.actions.reloadOpenCode":"Recharger OpenCode","settings.view.actions.reloadOpenCodeTooltip":"Redémarrez OpenCode et rechargez sa configuration.","settings.view.actions.applyAndRestartOpenCode":"Appliquer et redémarrer","settings.view.actions.applyAndRestartOpenCodeTooltipSingle":"Appliquer 1 modification de configuration en attente et redémarrer OpenCode.","settings.view.actions.applyAndRestartOpenCodeTooltipPlural":"Appliquer {count} modifications de configuration en attente et redémarrer OpenCode.","settings.view.pendingRestart.applying":"Redémarrage…","settings.view.pendingRestart.applied":"OpenCode a redémarré avec les modifications de configuration en attente.","settings.view.pendingRestart.applyFailed":"Échec de l'application des modifications de configuration.","settings.view.pendingRestart.manualRestartRequired":"Enregistré sur le disque. Redémarrez le serveur OpenCode connecté pour appliquer les modifications.","settings.view.pendingRestart.saved":"Enregistré. Redémarrez OpenCode pour appliquer.","settings.view.pendingRestart.confirm.title":"Appliquer et redémarrer ?","settings.view.pendingRestart.confirm.description":"Le redémarrage d'OpenCode arrêtera tous les chats en cours. Vos modifications de configuration enregistrées prendront effet après le redémarrage.","settings.view.pendingRestart.confirm.dontShowAgain":"Ne plus afficher","settings.view.pendingRestart.confirm.cancel":"Annuler","settings.view.actions.backToSettings":"Retour aux paramètres","settings.view.actions.closeSettings":"Fermer les paramètres","settings.view.actions.openSectionList":"Ouvrir la liste des sections","settings.view.actions.closeSettingsWithShortcut":"Fermer les paramètres ({shortcut}+,)","settings.view.actions.back":"Retour","settings.view.actions.resizeNavigation":"Redimensionner la navigation dans les paramètres","settings.page.projects.title":"Projets","settings.page.remoteInstances.title":"Instances distantes","settings.page.providers.title":"Fournisseurs","settings.page.usage.title":"Usage","settings.page.agents.title":"Agents","settings.page.commands.title":"Commandes","settings.page.mcp.title":"MCP","settings.page.plugins.title":"Plugins","settings.page.skills.title":"Skills","settings.page.skillsCatalog.title":"Catalogue de skills","settings.page.git.title":"Git","settings.page.appearance.title":"Apparence","settings.page.appearance.description":"Personnalisez l’apparence et le ressenti d’AiWorker.","settings.page.chat.title":"Chat","settings.page.chat.description":"Configurez l’affichage des messages et des outils.","settings.page.shortcuts.title":"Raccourcis","settings.page.shortcuts.description":"Personnalisez les raccourcis clavier.","settings.page.general.title":"Général","settings.page.general.description":"Démarrage de l'application, sécurité, connexion et confidentialité.","settings.page.sessions.title":"Sessions","settings.page.sessions.description":"Définissez les valeurs par défaut et la conservation des sessions.","settings.page.magicPrompts.title":"Prompts magiques","settings.page.notifications.title":"Notifications","settings.page.notifications.description":"Choisissez quand et comment être notifié.","settings.page.voice.title":"Voix","settings.page.voice.description":"Configurez la synthèse vocale et la dictée.","settings.page.tunnel.title":"Tunnel externe","settings.page.tunnel.description":"Exposez cette instance via un tunnel distant.","settings.page.snippets.title":"Extraits","settings.snippets.sidebar.title":"Extraits","settings.snippets.sidebar.total":"Total : {count}","settings.snippets.sidebar.actions.create":"Créer un extrait","settings.snippets.sidebar.actions.more":"Plus de propositions pour {name}","settings.snippets.sidebar.toast.deleted":"Extrait supprimé","settings.snippets.sidebar.toast.deleteFailed":"Échec de la suppression de l'extrait","settings.snippets.sidebar.dialog.deleteTitle":"Supprimer l'extrait ?","settings.snippets.sidebar.dialog.deleteDescription":"Cela supprimera définitivement #{name}.","settings.snippets.page.empty.title":"Sélectionnez un extrait","settings.snippets.page.empty.description":"Choisissez un extrait dans la barre latérale pour le modifier.","settings.snippets.page.title.new":"Nouvel extrait","settings.snippets.page.field.namePlaceholder":"nom de l'extrait","settings.snippets.page.field.descriptionPlaceholder":"À quoi sert cet extrait","settings.snippets.page.field.aliases":"Alias","settings.snippets.page.field.aliasesPlaceholder":"en sécurité, prudent","settings.snippets.page.field.content":"Contenu","settings.snippets.page.field.contentPlaceholder":"Markdown de l'extrait...","settings.snippets.page.hint":"Utilisez #name dans les prompts. Prend en charge les alias et les blocs de pré-ajout/ajout compatibles avec les extraits de code opencode.","settings.snippets.page.toast.nameRequired":"Le nom de l'extrait est obligatoire","settings.snippets.page.toast.contentRequired":"Le contenu de l'extrait est requis","settings.snippets.page.toast.saveFailed":"Échec de l'enregistrement de l'extrait","settings.snippets.page.toast.saved":"Extrait enregistré","settings.page.promptTemplates.title":"Modèles de prompt","settings.promptTemplates.sidebar.title":"Modèles de prompt","settings.promptTemplates.sidebar.total":"Total : {count}","settings.promptTemplates.sidebar.empty.title":"Aucun modèle de prompt","settings.promptTemplates.sidebar.empty.description":"Créez un modèle de prompt pour commencer.","settings.promptTemplates.sidebar.toast.deleted":'Modèle "{name}" supprimé',"settings.promptTemplates.sidebar.toast.deleteFailed":"Échec de la suppression du modèle","settings.promptTemplates.sidebar.toast.nameRequired":"Le nom du modèle est obligatoire","settings.promptTemplates.sidebar.toast.renamed":"Modèle renommé","settings.promptTemplates.sidebar.toast.renameFailed":"Échec du changement de nom du modèle","settings.promptTemplates.sidebar.dialog.deleteTitle":"Supprimer le modèle ?","settings.promptTemplates.sidebar.dialog.deleteDescription":'Cela supprimera définitivement "{name}". Cette action ne peut pas être annulée.',"settings.promptTemplates.sidebar.renameDialog.title":"Renommer le modèle","settings.promptTemplates.sidebar.renameDialog.description":'Entrez un nouveau nom pour "{name}".',"settings.promptTemplates.sidebar.renameDialog.placeholder":"Nom du modèle","settings.promptTemplates.sidebar.badge.default":"défaut","settings.promptTemplates.page.empty.title":"Sélectionnez un modèle","settings.promptTemplates.page.empty.description":"Choisissez un modèle dans la barre latérale pour le modifier.","settings.promptTemplates.page.title.new":"Nouveau modèle","settings.promptTemplates.page.subtitle.edit":"Modifier le modèle","settings.promptTemplates.page.subtitle.new":"Créer un nouveau modèle de prompt","settings.promptTemplates.page.section.identity":"Identité","settings.promptTemplates.page.field.name":"Nom","settings.promptTemplates.page.field.namePlaceholder":"Nom du modèle","settings.promptTemplates.page.section.template":"Modèle","settings.promptTemplates.page.field.templatePlaceholder":"Saisissez le texte du modèle de prompt...","settings.promptTemplates.page.templateHint":"Ce texte sera ajouté au début du prompt de l'utilisateur lorsqu'il est sélectionné dans un groupe multi-run.","settings.promptTemplates.page.toast.nameRequired":"Le nom du modèle est obligatoire","settings.promptTemplates.page.toast.updated":"Modèle mis à jour","settings.promptTemplates.page.toast.updateFailed":"Échec de la mise à jour du modèle","settings.promptTemplates.page.toast.created":"Modèle créé","settings.promptTemplates.page.toast.createFailed":"Échec de la création du modèle","settings.promptTemplates.page.toast.saveUnexpectedError":"Une erreur inattendue s'est produite lors de l'enregistrement","settings.aiworker.tunnel.title":"Tunnel externe","settings.aiworker.tunnel.description":"Configurez un accès à distance sécurisé avec des liens rapides ou votre propre tunnel Cloudflare distant géré.","settings.aiworker.tunnel.note.serverSideEnforced":"L'accès au tunnel sécurisé est appliqué côté serveur.","settings.aiworker.tunnel.note.connectLinksOneTime":"Les liens de connexion sont uniques et sont révoqués lorsque le tunnel s'arrête ou lorsque la durée de vie du lien de connexion expire.","settings.aiworker.tunnel.note.cloudflareConnectorTarget":"Cible du connecteur Cloudflare :","settings.aiworker.tunnel.note.cloudflareConnectorTargetUse":"Pour la cible du connecteur Cloudflare, utilisez","settings.aiworker.tunnel.note.tokensSavedPerTunnel":"Les jetons sont enregistrés par tunnel et réutilisés à partir du disque.","settings.aiworker.tunnel.note.customConfigUsed":"Le fichier de configuration personnalisé sera utilisé lors du démarrage du tunnel.","settings.aiworker.tunnel.note.defaultConfigUsed":"Lorsqu'il est vide, cloudflared utilise sa configuration par défaut (~/.cloudflared/config.yml).","settings.aiworker.tunnel.note.managedRemoteRequiresDomain":"Les tunnels distants gérés nécessitent un domaine acheté dans votre compte Cloudflare.","settings.aiworker.tunnel.note.managedLocalUsesConfig":"Les tunnels locaux gérés utilisent votre fichier de configuration cloudflared local.","settings.aiworker.tunnel.note.startModeAndGenerateLink":"Démarrez un tunnel {mode} et générez un lien de connexion unique. Ne fermez pas l'application pendant que ce tunnel est utilisé.","settings.aiworker.tunnel.note.scanQrToConnect":"Scannez avec votre téléphone pour vous connecter.","settings.aiworker.tunnel.section.redeemedAccessLinks":"Liens d'accès utilisés","settings.aiworker.tunnel.section.savedManagedRemoteTunnels":"Tunnels distants gérés enregistrés","settings.aiworker.tunnel.notAvailable.cloudflaredNotFound":"cloudflared introuvable","settings.aiworker.tunnel.notAvailable.installHint":"Installez-le pour activer l'accès au tunnel à distance :","settings.aiworker.tunnel.field.provider":"Fournisseur","settings.aiworker.tunnel.field.providerPlaceholder":"Sélectionnez le fournisseur","settings.aiworker.tunnel.field.tunnelType":"Type de tunnel","settings.aiworker.tunnel.field.connectLinkTtl":"Connecter le lien TTL","settings.aiworker.tunnel.field.tunnelSessionTtl":"Durée de vie de la session tunnel","settings.aiworker.tunnel.field.hostnameLabel":"Nom d'hôte :","settings.aiworker.tunnel.field.savedTokenAvailablePlaceholder":"Jeton enregistré disponible (facultatif à remplacer)","settings.aiworker.tunnel.field.pasteTokenPlaceholder":"Coller le jeton pour ce tunnel","settings.aiworker.tunnel.field.newPresetNamePlaceholder":"Nom du tunnel (e.g. Production)","settings.aiworker.tunnel.field.newPresetHostnamePlaceholder":"Nom d'hôte (e.g. oc.example.com)","settings.aiworker.tunnel.field.newPresetTokenPlaceholder":"Jeton","settings.aiworker.tunnel.field.managedRemoteTokenInfoAria":"Informations sur le jeton de tunnel distant géré","settings.aiworker.tunnel.field.configurationFile":"Fichier de configuration","settings.aiworker.tunnel.field.configurationFilePlaceholder":"Utilisation de la configuration cloudflared par défaut","settings.aiworker.tunnel.field.managedRemoteTunnelToConnect":"Tunnel distant géré pour se connecter","settings.aiworker.tunnel.field.selectSavedTunnelPlaceholder":"Sélectionnez le tunnel enregistré","settings.aiworker.tunnel.field.publicUrlHint":"URL publique (non accessible sans jeton)","settings.aiworker.tunnel.field.connectLink":"Lien de connexion","settings.aiworker.tunnel.field.expires":"Expire","settings.aiworker.tunnel.field.connectQrAlt":"Code de connexion du tunnel QR","settings.aiworker.tunnel.actions.removePresetAria":"Supprimer {name}","settings.aiworker.tunnel.actions.saveToken":"Enregistrer le jeton","settings.aiworker.tunnel.actions.browseConfigFileAria":"Parcourir le fichier de configuration","settings.aiworker.tunnel.actions.clearConfigFileAria":"Effacer le fichier de configuration","settings.aiworker.tunnel.actions.openManagedRemoteDocs":"Consultez la documentation sur la façon de configurer un tunnel distant géré","settings.aiworker.tunnel.actions.openManagedLocalDocs":"Consultez la documentation sur la configuration du tunnel local géré","settings.aiworker.tunnel.actions.startTunnel":"Démarrer le tunnel","settings.aiworker.tunnel.actions.startingTunnel":"Démarrage du tunnel...","settings.aiworker.tunnel.actions.stopTunnel":"Arrêter le tunnel","settings.aiworker.tunnel.actions.stopping":"Arrêt...","settings.aiworker.tunnel.actions.newConnectLink":"Nouveau lien de connexion","settings.aiworker.tunnel.actions.copied":"Copié","settings.aiworker.tunnel.actions.retry":"Réessayer","settings.aiworker.tunnel.option.moreProvidersSoon":"Plus de fournisseurs à venir","settings.aiworker.tunnel.option.mode.quick.label":"Quick","settings.aiworker.tunnel.option.mode.quick.tooltip":"Quick Tunnel est une solution best-effort dont la disponibilité n'est pas garantie.","settings.aiworker.tunnel.option.mode.managedRemote.label":"Managed Remote","settings.aiworker.tunnel.option.mode.managedRemote.tooltip":"Managed Remote utilise votre compte Cloudflare et votre nom d'hôte pour un accès longue durée.","settings.aiworker.tunnel.option.mode.managedLocal.label":"Managed Local","settings.aiworker.tunnel.option.mode.managedLocal.tooltip":"Managed Local utilise votre fichier de configuration cloudflared local.","settings.aiworker.tunnel.warning.quickModeReliability":"Pour un accès longue durée plus fiable, passez au mode Managed Remote ou Managed Local.","settings.aiworker.tunnel.warning.replacesActiveTunnel":"Le démarrage de ce tunnel remplace le tunnel actif et révoque les liens de connexion et les sessions distantes existantes.","settings.aiworker.tunnel.badge.quick":"RAPIDE","settings.aiworker.tunnel.badge.remote":"DISTANT","settings.aiworker.tunnel.badge.local":"LOCAL","settings.aiworker.tunnel.state.loading":"Chargement","settings.aiworker.tunnel.state.expired":"Expiré","settings.aiworker.tunnel.state.revoked":"Révoqué","settings.aiworker.tunnel.state.inactive":"Inactif","settings.aiworker.tunnel.state.noExpiry":"Pas d'expiration","settings.aiworker.tunnel.state.never":"Jamais","settings.aiworker.tunnel.state.tunnelReady":"Tunnel prêt","settings.aiworker.tunnel.session.redeemedAt":"{time} échangé","settings.aiworker.tunnel.session.expiresIn":"Expire dans {remaining}","settings.aiworker.tunnel.session.inactiveWithReason":"Inactif ({reason})","settings.aiworker.tunnel.error.invalidConfigExtension":"Le fichier de configuration doit utiliser l'extension .yml, .yaml ou .json.","settings.aiworker.tunnel.tooltip.tokensSavedPath":"Les jetons sont enregistrés dans ~/.config/openchamber/cloudflare-managed-remote-tunnels.json.","settings.aiworker.tunnel.empty.noManagedRemoteTunnels":"Aucun tunnel distant géré n'a encore été enregistré.","settings.aiworker.tunnel.toast.checkAvailabilityFailed":"Échec de la vérification de la disponibilité du tunnel","settings.aiworker.tunnel.toast.saveSettingsFailed":"Échec de l'enregistrement des paramètres du tunnel","settings.aiworker.tunnel.toast.saveTtlFailed":"Échec de l'enregistrement des paramètres TTL du tunnel","settings.aiworker.tunnel.toast.saveTokenFailed":"Échec de l'enregistrement du jeton de tunnel distant géré","settings.aiworker.tunnel.toast.selectOrAddManagedRemoteFirst":"Sélectionnez ou ajoutez d'abord un tunnel distant géré","settings.aiworker.tunnel.toast.managedRemoteTokenRequiredBeforeStarting":"Un jeton de tunnel distant géré est requis avant de démarrer","settings.aiworker.tunnel.toast.addManagedRemoteTokenBeforeStarting":"Ajoutez un jeton de tunnel distant géré avant de commencer","settings.aiworker.tunnel.toast.startFailed":"Échec du démarrage du tunnel","settings.aiworker.tunnel.toast.startedButNoPublicUrl":"Le tunnel a démarré mais aucune URL publique n'a été renvoyée","settings.aiworker.tunnel.toast.replacedTunnelSingleSingle":"Tunnel précédent remplacé : 1 lien révoqué, 1 session invalidée.","settings.aiworker.tunnel.toast.replacedTunnelSingleManySessions":"Tunnel précédent remplacé : 1 lien révoqué, sessions {invalidatedSessionCount} invalidées.","settings.aiworker.tunnel.toast.replacedTunnelManyLinksSingleSession":"Tunnel précédent remplacé : liens {revokedBootstrapCount} révoqués, 1 session invalidée.","settings.aiworker.tunnel.toast.replacedTunnelManyMany":"Tunnel précédent remplacé : liens {revokedBootstrapCount} révoqués, sessions {invalidatedSessionCount} invalidées.","settings.aiworker.tunnel.toast.linkReady":"Lien de connexion prêt","settings.aiworker.tunnel.toast.stopped":"Tunnel arrêté","settings.aiworker.tunnel.toast.stopFailed":"Échec de l'arrêt du tunnel","settings.aiworker.tunnel.toast.connectLinkCopied":"Lien de connexion copié","settings.aiworker.tunnel.toast.copyUrlFailed":"Échec de la copie de l'URL","settings.aiworker.tunnel.toast.saveSelectedManagedRemoteFailed":"Échec de l'enregistrement du tunnel distant géré sélectionné","settings.aiworker.tunnel.toast.tunnelNameRequired":"Le nom du tunnel est obligatoire","settings.aiworker.tunnel.toast.managedRemoteHostnameRequired":"Le nom d'hôte du tunnel distant géré est requis","settings.aiworker.tunnel.toast.managedRemoteTokenRequired":"Un jeton de tunnel distant géré est requis","settings.aiworker.tunnel.toast.hostnameAlreadyExists":"Ce nom d'hôte existe déjà","settings.aiworker.tunnel.toast.managedRemoteSaved":"Tunnel distant géré enregistré","settings.aiworker.tunnel.toast.managedRemoteRemoved":"Tunnel distant géré supprimé","settings.magicPrompts.sidebar.title":"Prompts magiques","settings.magicPrompts.sidebar.description":"Sélectionnez un modèle de prompt à modifier.","settings.magicPrompts.sidebar.group.git":"Git","settings.magicPrompts.sidebar.group.github":"GitHub","settings.magicPrompts.sidebar.group.planning":"Planification","settings.magicPrompts.sidebar.group.session":"Session","settings.magicPrompts.sidebar.item.gitCommitGenerate":"Génération de commit","settings.magicPrompts.sidebar.item.gitPrGenerate":"Génération de PR","settings.magicPrompts.sidebar.item.gitConflictResolve":"Résolution des conflits de fusion/rebase","settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":"Résolution des conflits par sélection","settings.magicPrompts.sidebar.item.githubPrReview":"Revue de PR","settings.magicPrompts.sidebar.item.githubIssueReview":"Examen du problème","settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":"Examen des checks PR en échec","settings.magicPrompts.sidebar.item.githubPrCommentsReview":"Examen des commentaires PR","settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":"Examen des commentaires PR uniques","settings.magicPrompts.sidebar.item.planTodo":"Planification des tâches","settings.magicPrompts.sidebar.item.planImprove":"Améliorer le plan","settings.magicPrompts.sidebar.item.planImplement":"Plan de mise en œuvre","settings.magicPrompts.sidebar.item.sessionSummary":"Résumé de la session","settings.magicPrompts.sidebar.item.sessionWorkspaceReview":"Examen de l'espace de travail","settings.magicPrompts.sidebar.item.sessionFusion":"Fusion","settings.remoteInstances.sidebar.title":"Instances distantes","settings.remoteInstances.sidebar.total":"Total {count}","settings.remoteInstances.sidebar.newSshInstanceName":"Nouvelle instance SSH","settings.remoteInstances.sidebar.actions.addSshInstance":"Ajouter une instance SSH","settings.remoteInstances.sidebar.actions.connect":"Connecter","settings.remoteInstances.sidebar.actions.disconnect":"Déconnecter","settings.remoteInstances.sidebar.actions.retry":"Réessayer","settings.remoteInstances.sidebar.actions.remove":"Retirer","settings.remoteInstances.sidebar.confirm.localPortInUseRetry":"Le port local est déjà utilisé. Choisir un port local gratuit et réessayer ?","settings.remoteInstances.sidebar.toast.createFailed":"Échec de la création de l'instance SSH","settings.remoteInstances.sidebar.toast.retriedWithRandomPort":"Réessayé avec un port local aléatoire","settings.remoteInstances.sidebar.toast.connectFailed":"Échec de la connexion de l'instance","settings.remoteInstances.sidebar.toast.disconnectFailed":"Échec de la déconnexion de l'instance","settings.remoteInstances.sidebar.toast.retryFailed":"Échec de la nouvelle tentative de connexion","settings.remoteInstances.sidebar.toast.removeFailed":"Échec de la suppression de l'instance","settings.remoteInstances.sidebar.phase.ready":"Prêt","settings.remoteInstances.sidebar.phase.error":"Erreur","settings.remoteInstances.sidebar.phase.reconnect":"Reconnecter","settings.remoteInstances.sidebar.phase.installing":"Installation","settings.remoteInstances.sidebar.phase.updating":"Mise à jour","settings.remoteInstances.sidebar.phase.forwarding":"Transfert","settings.remoteInstances.sidebar.phase.starting":"Démarrage","settings.remoteInstances.sidebar.phase.connecting":"Connexion","settings.remoteInstances.sidebar.phase.idle":"Inactif","settings.remoteInstances.page.section.instance":"Instance","settings.remoteInstances.page.section.instanceDescription":"Paramètres de base du SSH.","settings.remoteInstances.page.field.mode":"Mode","settings.remoteInstances.page.field.modeHint":"Installations/mises à jour gérées et démarrage de AiWorker à distance. Externe suppose qu'il est déjà en cours d'exécution.","settings.remoteInstances.page.field.modePlaceholder":"Sélectionnez le mode","settings.remoteInstances.page.field.modeManaged":"Géré (démarrage automatique)","settings.remoteInstances.page.field.modeExternal":"Externe (déjà en cours d'exécution)","settings.remoteInstances.page.field.preferredRemotePort":"Port sur la machine distante","settings.remoteInstances.page.field.preferredRemotePortHint":"Port utilisé par AiWorker sur la machine distante. Laissez vide pour en choisir un automatiquement.","settings.remoteInstances.page.field.keepServerRunning":"Maintenir le serveur en marche","settings.remoteInstances.page.field.keepServerRunningHint":"Laisser le serveur distant tourner après la déconnexion. Désactivé, il est arrêté à la déconnexion puis redémarré à la connexion suivante.","settings.remoteInstances.page.field.bindHost":"Accessible depuis","settings.remoteInstances.page.field.bindHostHint":"Qui peut ouvrir l’adresse redirigée sur cet ordinateur. La machine distante reste de toute façon accessible uniquement par le tunnel SSH.","settings.remoteInstances.page.field.preferredLocalPort":"Port sur cet ordinateur","settings.remoteInstances.page.field.preferredLocalPortHint":"Port ouvert sur cet ordinateur pour le tunnel. Laissez vide pour en choisir un automatiquement.","settings.remoteInstances.page.field.forwardType":"Type de transfert","settings.remoteInstances.page.field.localHostPlaceholder":"127.0.0.1","settings.remoteInstances.page.field.remoteHostPlaceholder":"127.0.0.1","settings.remoteInstances.page.field.auto":"Auto","settings.remoteInstances.page.confirm.bindAllInterfaces":"La liaison à 0.0.0.0 expose les ports transférés à votre réseau local. Continuer?","settings.remoteInstances.page.preview.localSocks5":"(SOCKS5 local)","settings.remoteInstances.page.preview.local":"(local)","settings.remoteInstances.page.preview.remote":"(hôte distant)","settings.remoteInstances.page.toast.openLocalEndpointFailed":"Échec de l'ouverture du point de terminaison local","settings.remoteInstances.page.toast.localUrlCopied":"URL locale copiée","settings.remoteInstances.page.actions.copyLocalUrl":"Copier l’URL locale","settings.remoteInstances.page.actions.open":"Ouvrir","settings.remoteInstances.page.logsDialog.selectedInstanceFallback":"Instance sélectionnée","settings.remoteInstances.page.patternDialog.descriptionWithHost":"{host} nécessite une destination concrète.","settings.remoteInstances.page.patternDialog.description":"Entrez la destination.","settings.common.infoAria":"Plus d’informations","settings.common.actions.cancel":"Annuler","settings.common.actions.create":"Créer","settings.common.actions.delete":"Supprimer","settings.aiworker.appLinks.title":"Liens d’application approuvés","settings.aiworker.appLinks.info":"Les liens de cette liste s’ouvrent sans nouvelle demande sur cet appareil. Les autres liens d’application demandent toujours une confirmation.","settings.aiworker.appLinks.empty":"Aucun lien d’application approuvé sur cet appareil. Choisissez « Approuver et ouvrir » lors de l’ouverture d’un lien pour l’ajouter ici.","settings.aiworker.appLinks.removeAria":"Supprimer les liens {scheme} approuvés","settings.common.actions.reset":"Réinitialiser","settings.common.actions.rename":"Rebaptiser","settings.common.actions.duplicate":"Dupliquer","settings.common.actions.import":"Importer","settings.common.actions.copyAll":"Copier tout","settings.common.actions.clear":"Effacer","settings.common.actions.saving":"Enregistrement...","settings.common.status.saved":"Enregistré","settings.common.status.saveFailed":"Échec de l’enregistrement","settings.common.actions.saveChanges":"Enregistrer les modifications","settings.common.scope.global":"Mondial","settings.common.scope.project":"Projet","settings.common.field.description":"Description","settings.common.badge.new":"Nouveau","settings.common.badge.modified":"Modifié","settings.common.permission.allow":"Permettre","settings.common.permission.ask":"Demander","settings.common.permission.deny":"Refuser","settings.common.state.comingSoon":"À venir...","settings.projects.actions.title":"Actions","settings.projects.actions.description":"Commandes par projet affichées dans l'en-tête à côté du nom du projet.","settings.projects.actions.validation.fillNameAndCommand":"Remplissez le nom de l'action et la commande avant d'enregistrer.","settings.projects.actions.state.loading":"Chargement...","settings.projects.actions.state.empty":"Aucune action configurée pour le moment.","settings.projects.actions.state.untitled":"Action sans titre","settings.projects.actions.state.noDesktopSshForwards":"Aucun transfert local SSH activé disponible.","settings.projects.actions.field.selectIconAria":"Sélectionner l'icône","settings.projects.actions.field.iconAria":"Icône {icon}","settings.projects.actions.field.actionNamePlaceholder":"Nom de l'action","settings.projects.actions.field.command":"Commande","settings.projects.actions.field.commandPlaceholder":"p. ex. bun install","settings.projects.actions.field.autoOpenUrl":"Ouverture automatique de l’URL","settings.projects.actions.field.autoOpenUrlForAria":"Ouverture automatique de l’URL pour {title}","settings.projects.actions.field.autoOpenUrlDescription":"Ouvrir l’URL détectée dans la sortie, ou l’URL personnalisée ci-dessous","settings.projects.actions.field.overrideUrlPlaceholder":"Remplacer URL (facultatif)","settings.projects.actions.field.overrideUrlTooltip":"Si ce champ est rempli, l’URL personnalisée est utilisée. Sinon, l'application ouvre la meilleure URL détectée dans la sortie.","settings.projects.actions.field.desktopSshForward":"Transfert SSH local","settings.projects.actions.field.useOutputManualUrl":"Utiliser l’URL de sortie ou l’URL manuelle","settings.projects.actions.actions.add":"Ajouter une action","settings.projects.actions.actions.save":"Enregistrer les actions","settings.projects.actions.toast.saveFailed":"Échec de l'enregistrement des actions","settings.projects.actions.toast.saved":"Actions du projet enregistrées","settings.aiworker.about.title":"À propos de AiWorker","settings.aiworker.about.field.version":"Version","settings.aiworker.about.state.checking":"Vérification...","settings.aiworker.about.state.upToDate":"À jour","settings.aiworker.about.actions.checkUpdates":"Vérifier les mises à jour","settings.aiworker.about.actions.update":"Mise à jour","settings.aiworker.about.actions.updateToVersion":"Mise à jour vers {version}","settings.aiworker.about.actions.checkForUpdates":"Vérifier les mises à jour","settings.aiworker.about.toast.latestVersion":"Vous êtes sur la dernière version","settings.agents.sidebar.title":"Agents","settings.agents.sidebar.total":"Total {count}","settings.agents.sidebar.empty.title":"Aucun agent configuré","settings.agents.sidebar.empty.description":"Utilisez le bouton + ci-dessus pour en créer un","settings.agents.sidebar.section.builtIn":"Agents intégrés","settings.agents.sidebar.section.custom":"Agents personnalisés","settings.agents.sidebar.badge.system":"système","settings.agents.sidebar.dialog.deleteTitle":"Supprimer un agent","settings.agents.sidebar.dialog.resetTitle":"Agent de réinitialisation","settings.agents.sidebar.dialog.deleteDescription":`Etes-vous sûr de vouloir supprimer l'agent "{name}" ?`,"settings.agents.sidebar.dialog.resetDescription":"Êtes-vous sûr de vouloir réinitialiser l'agent « {name} » à sa configuration par défaut ?","settings.agents.sidebar.renameDialog.title":"Renommer l'agent","settings.agents.sidebar.renameDialog.description":`Entrez un nouveau nom pour l'agent "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":"Nouveau nom d'agent...","settings.agents.sidebar.toast.builtInCannotDelete":"Les agents intégrés ne peuvent pas être supprimés","settings.agents.sidebar.toast.agentDeleted":'Agent "{name}" supprimé avec succès',"settings.agents.sidebar.toast.agentReset":'Agent "{name}" réinitialisé aux valeurs par défaut',"settings.agents.sidebar.toast.deleteFailed":"Échec de la suppression de l'agent","settings.agents.sidebar.toast.definitionNotFound":"Définition de l’agent introuvable. Aucune modification effectuée.","settings.agents.sidebar.toast.resetFailed":"Échec de la réinitialisation de l'agent","settings.agents.sidebar.toast.agentNameRequired":"Le nom de l'agent est requis","settings.agents.sidebar.toast.agentExists":"Un agent portant ce nom existe déjà","settings.agents.sidebar.toast.removeOldAfterRenameFailed":"Échec de la suppression de l'ancien agent après le changement de nom","settings.agents.sidebar.toast.renameFailed":"Échec du changement de nom de l'agent","settings.agents.sidebar.toast.agentRenamed":'Agent renommé en "{name}"',"settings.agents.page.toast.permissionNameRequired":"Le nom de l'autorisation est requis","settings.agents.page.toast.created":"Agent créé avec succès","settings.agents.page.toast.updated":"Agent mis à jour avec succès","settings.agents.page.toast.createFailed":"Échec de la création de l'agent","settings.agents.page.toast.updateFailed":"Échec de la mise à jour de l'agent","settings.agents.page.toast.saveUnexpectedError":"Une erreur s'est produite lors de l'enregistrement","settings.agents.page.toast.savedManualRestart":"Enregistré sur le disque. Redémarrez votre serveur OpenCode connecté pour appliquer les modifications.","settings.agents.page.empty.title":"Sélectionnez un agent dans la barre latérale","settings.agents.page.empty.description":"ou créez-en un nouveau","settings.agents.page.title.new":"Nouvel agent","settings.agents.page.subtitle.new":"Configurer un nouveau personnage d'assistant","settings.agents.page.subtitle.edit":"Modifier les paramètres de l'agent","settings.agents.page.section.identityRole":"Identité et rôle","settings.agents.page.section.modelParameters":"Modèle et paramètres","settings.agents.page.section.systemPrompt":"Prompt système","settings.agents.page.permissionsEditor.sectionInfo":"Modifie les règles de permissions propres à cet agent, telles qu'enregistrées dans sa config. « Hériter » laisse la clé non définie : la config globale et les valeurs par défaut s'appliquent.","settings.agents.page.permissionsEditor.defaultLabel":"Défaut pour tous les outils","settings.agents.page.permissionsEditor.defaultAria":"Permission par défaut pour tous les outils","settings.agents.page.permissionsEditor.defaultInfo":"Le repli au niveau de l'agent (la clé *). S'applique à tout outil sans règle propre.","settings.agents.page.permissionsEditor.effectiveHint":"→ {action}","settings.agents.page.permissionsEditor.ruleCount":"{count} règles","settings.agents.page.permissionsEditor.keyAria":"Permission pour {key}","settings.agents.page.permissionsEditor.patternPlaceholder":"Motif, p. ex. rm -rf * ou /path/**","settings.agents.page.permissionsEditor.patternActionAria":"Action pour le motif de {key}","settings.agents.page.permissionsEditor.customKeyPlaceholder":"Clé de permission personnalisée…","settings.agents.page.permissionsEditor.sessionRulesTitle":"Accordées en session (non enregistrées)","settings.agents.page.permissionsEditor.sessionRulesInfo":"Règles accordées pendant des sessions (réponses « toujours autoriser »). Elles s'appliquent maintenant mais ne font pas partie de la config enregistrée et disparaissent au redémarrage.","settings.agents.page.permissionsEditor.action.default":"Par défaut","settings.agents.page.permissionsEditor.action.inherit":"Hériter","settings.agents.page.permissionsEditor.action.allow":"Autoriser","settings.agents.page.permissionsEditor.action.ask":"Demander","settings.agents.page.permissionsEditor.action.deny":"Refuser","settings.agents.page.permissionsEditor.actions.save":"Enregistrer les permissions","settings.agents.page.permissionsEditor.actions.discard":"Annuler","settings.agents.page.permissionsEditor.actions.addRule":"Ajouter une règle","settings.agents.page.permissionsEditor.actions.addKey":"Ajouter une clé","settings.agents.page.permissionsEditor.actions.removeRuleAria":"Supprimer la règle","settings.agents.page.permissionsEditor.actions.retry":"Réessayer","settings.agents.page.permissionsEditor.state.loadFailed":"Impossible de charger la config de permissions de l'agent.","settings.agents.page.permissionsEditor.toast.saved":"Permissions enregistrées","settings.agents.page.permissionsEditor.toast.savedRestartRequired":"Permissions enregistrées — redémarrez le serveur OpenCode pour les appliquer","settings.agents.page.permissionsEditor.toast.saveFailed":"Échec de l'enregistrement des permissions","settings.agents.page.section.toolPermissions":"Autorisations des outils","settings.agents.page.field.agentName":"Nom de l'agent","settings.agents.page.field.agentNamePlaceholder":"nom-agent","settings.agents.page.field.scopePlaceholder":"Portée","settings.agents.page.field.descriptionPlaceholder":"Que fait cet agent ?","settings.agents.page.field.mode":"Mode","settings.agents.page.field.modeTooltip":"Visibilité principale et sous-agent","settings.agents.page.field.overrideModel":"Remplacer le modèle","settings.agents.page.field.variant":"Variante de réflexion","settings.agents.page.field.variantTooltip":"Optionnel. Si le modèle prend en charge le raisonnement, la variante contrôle la profondeur du raisonnement.","settings.agents.page.field.variantHint":"Spécifique au modèle (par ex. variante Anthropic)","settings.agents.page.field.variantPlaceholder":"par ex. high, max, low, none","settings.agents.page.field.temperature":"Température","settings.agents.page.field.temperatureTooltip":"Contrôle le caractère aléatoire. Plus élevé = créatif, Inférieur = concentré.","settings.agents.page.field.temperatureRange":"0.0 à 2.0","settings.agents.page.field.clearTemperatureAria":"Effacer le remplacement de la température","settings.agents.page.field.topP":"Haut P","settings.agents.page.field.topPTooltip":"Diversité d'échantillonnage du noyau. Inférieur = jetons probables uniquement.","settings.agents.page.field.topPRange":"0.0 à 1.0","settings.agents.page.field.clearTopPAria":"Effacer le remplacement p supérieur","settings.agents.page.field.systemPromptPlaceholder":"Vous êtes un assistant expert en codage...","settings.agents.page.mode.primary":"Primaire","settings.agents.page.mode.subagent":"Sous-agent","settings.agents.page.mode.all":"Tous","settings.agents.page.permissions.defaultLabel":"Défaut","settings.agents.page.permissions.hideEditor":"Masquer l'éditeur","settings.agents.page.permissions.advancedEditor":"Éditeur avancé","settings.agents.page.permissions.globalSummary":"Mondial : {summary}","settings.agents.page.permissions.rulesSummary":"Règles : {summary}","settings.agents.page.permissions.globalDefault":"Valeur par défaut globale","settings.agents.page.permissions.pattern":"Modèle","settings.agents.page.permissions.addCustomRule":"Ajouter une règle personnalisée","settings.agents.page.permissions.permissionPlaceholder":"Autorisation...","settings.agents.page.permissions.patternPlaceholder":"Modèle (e.g. *)","settings.page.behavior.title":"Comportement","settings.page.behavior.description":"Guidez la façon dont l'agent répond.","settings.behavior.page.title":"Comportement","settings.behavior.page.warning.title":"Les règles globales sont combinées avec les règles du projet","settings.behavior.page.warning.description":"Les modifications apportées ici mettent à jour {path}. OpenCode inclut également toutes les règles AGENTS.md au niveau du projet lorsqu'elles existent.","settings.behavior.page.section.systemPrompt":"Mondial AGENTS.md","settings.behavior.page.section.systemPromptOptimization":"Optimisation du prompt système","settings.behavior.page.systemPromptOptimization.enable":"Optimiser la taille du prompt système","settings.behavior.page.systemPromptOptimization.enableAria":"Optimiser la taille du prompt système d’OpenCode","settings.behavior.page.systemPromptOptimization.info":"Réduit le prompt système d’environ 40 % pour les agents build et plan. Les autres agents ne sont pas modifiés. Cela peut supprimer les définitions personnalisées qui remplacent build ou plan ; ne l’activez donc pas pour ces workflows. Le redémarrage d’OpenCode applique la modification.","settings.behavior.page.systemPromptOptimization.restarting":"Redémarrage d’OpenCode pour appliquer l’optimisation du prompt système…","settings.behavior.page.field.systemPromptPlaceholder":`Vous êtes un assistant IA utile...
2
-
3
- Utilisez cet espace pour définir des règles absolues sur la façon dont l'IA doit se comporter dans toutes les sessions et tous les fournisseurs.`,"settings.behavior.page.section.responseStyle":"Style de réponse","settings.behavior.page.responseStyle.tooltip":"Lorsqu'elles sont activées, ces instructions guident la manière dont l'assistant répond à chaque nouvelle conversation. Ils sont envoyés avec votre premier message et ne modifient pas vos règles globales AGENTS.md.","settings.behavior.page.responseStyle.enableAria":"Activer les instructions de style de réponse","settings.behavior.page.responseStyle.enable":"Ajouter des instructions de style de réponse aux nouvelles conversations","settings.behavior.page.responseStyle.preset":"Préréglage","settings.behavior.page.responseStyle.option.concise":"Concis","settings.behavior.page.responseStyle.option.detailed":"Détaillé","settings.behavior.page.responseStyle.option.mentor":"Mentor","settings.behavior.page.responseStyle.option.pushback":"Repoussement","settings.behavior.page.responseStyle.option.noFiller":"Pas de remplissage","settings.behavior.page.responseStyle.option.matchEnergy":"Correspond à mon énergie","settings.behavior.page.responseStyle.option.warmPeer":"Pair chaleureux","settings.behavior.page.responseStyle.option.custom":"Personnalisé","settings.behavior.page.responseStyle.customPlaceholder":"Écrivez l'instruction à ajouter au premier message...","settings.behavior.page.toast.saved":"Comportement enregistré avec succès","settings.behavior.page.toast.saveFailed":"Échec de l'enregistrement du comportement","settings.commands.sidebar.title":"Commandes","settings.commands.sidebar.total":"Total {count}","settings.commands.sidebar.empty.title":"Aucune commande configurée","settings.commands.sidebar.empty.description":"Utilisez le bouton + ci-dessus pour en créer un","settings.commands.sidebar.section.builtIn":"Commandes intégrées","settings.commands.sidebar.section.custom":"Commandes personnalisées","settings.commands.sidebar.dialog.deleteTitle":"Supprimer la commande","settings.commands.sidebar.dialog.resetTitle":"Commande de réinitialisation","settings.commands.sidebar.dialog.deleteDescription":"Etes-vous sûr de vouloir supprimer la commande « {name} » ?","settings.commands.sidebar.dialog.resetDescription":"Êtes-vous sûr de vouloir réinitialiser la commande « {name} » à sa configuration par défaut ?","settings.commands.sidebar.renameDialog.title":"Commande Renommer","settings.commands.sidebar.renameDialog.description":'Entrez un nouveau nom pour la commande "/{name}"',"settings.commands.sidebar.renameDialog.placeholder":"Nouveau nom de commande...","settings.commands.sidebar.toast.builtInCannotDelete":"Les commandes intégrées ne peuvent pas être supprimées","settings.commands.sidebar.toast.commandDeleted":'Commande "{name}" supprimée avec succès',"settings.commands.sidebar.toast.commandReset":'Commande "{name}" réinitialisée aux valeurs par défaut',"settings.commands.sidebar.toast.deleteFailed":"Échec de la suppression de la commande","settings.commands.sidebar.toast.resetFailed":"Échec de la réinitialisation de la commande","settings.commands.sidebar.toast.commandNameRequired":"Le nom de la commande est obligatoire","settings.commands.sidebar.toast.commandExists":"Une commande portant ce nom existe déjà","settings.commands.sidebar.toast.removeOldAfterRenameFailed":"Échec de la suppression de l'ancienne commande après le changement de nom","settings.commands.sidebar.toast.renameFailed":"Échec du renommage de la commande","settings.commands.page.toast.templateRequired":"Le modèle de commande est requis","settings.commands.page.toast.created":"Commande créée avec succès","settings.commands.page.toast.updated":"Commande mise à jour avec succès","settings.commands.page.toast.createFailed":"Échec de la création de la commande","settings.commands.page.toast.updateFailed":"Échec de la mise à jour de la commande","settings.commands.page.toast.saveUnexpectedError":"Une erreur s'est produite lors de l'enregistrement","settings.commands.page.empty.title":"Sélectionnez une commande dans la barre latérale","settings.commands.page.empty.description":"ou créez-en un nouveau","settings.commands.page.title.new":"Nouvelle commande","settings.commands.page.subtitle.new":"Configurer une nouvelle commande slash","settings.commands.page.subtitle.edit":"Modifier les paramètres de la commande","settings.commands.page.section.identity":"Identité","settings.commands.page.section.executionContext":"Contexte d'exécution","settings.commands.page.section.template":"Modèle de commande","settings.commands.page.field.commandName":"Nom de la commande","settings.commands.page.field.commandNamePlaceholder":"nom-commande","settings.commands.page.field.descriptionPlaceholder":"Que fait cette commande ?","settings.commands.page.field.overrideAgent":"Remplacer l'agent","settings.commands.page.field.templatePlaceholder":`Votre modèle de commande ici...
4
-
5
- Utilisez $ARGUMENTS pour référencer les entrées de l'utilisateur.
6
- Utilisez !\`shell command\` pour injecter la sortie du shell.
7
- Utilisez @filename pour inclure le contenu du fichier.`,"settings.commands.page.templateHint.userInput":"entrée de l'utilisateur","settings.commands.page.templateHint.shellOutput":"sortie du shell","settings.commands.page.templateHint.fileContents":"contenu du fichier","settings.commands.agentSelector.title":"Sélectionnez un agent","settings.commands.agentSelector.notSelected":"Non sélectionné","settings.commands.agentSelector.selectAgentPlaceholder":"Sélectionnez un agent...","settings.gitIdentities.page.section.title":"Identités","settings.gitIdentities.page.empty.title":"Aucune identité configurée","settings.gitIdentities.page.empty.description":"Créez-en un pour gérer les paramètres d'auteur Git par projet","settings.gitIdentities.page.discoveredCredentials.title":"Trouvé dans ~/.git-credentials","settings.gitIdentities.page.badge.default":"défaut","settings.gitIdentities.page.actions.setAsDefault":"Définir par défaut","settings.gitIdentities.page.actions.unsetDefault":"Désactiver la valeur par défaut","settings.gitIdentities.page.actions.import":"Importer","settings.gitIdentities.page.toast.updateDefaultFailed":"Échec de la mise à jour de l'identité par défaut","settings.gitIdentities.page.toast.defaultUpdated":"Identité par défaut mise à jour","settings.gitIdentities.page.toast.defaultUnset":"Identité par défaut non définie","settings.gitIdentities.page.toast.profileDeleted":'Profil "{name}" supprimé',"settings.gitIdentities.page.toast.deleteProfileFailed":"Échec de la suppression du profil","settings.gitIdentities.page.deleteDialog.title":"Supprimer le profil","settings.gitIdentities.page.deleteDialog.description":"Etes-vous sûr de vouloir supprimer « {name} » ?","settings.gitIdentities.editor.title.importCredential":"Importer les informations d'identification","settings.gitIdentities.editor.title.newIdentity":"Nouvelle identité","settings.gitIdentities.editor.title.globalIdentity":"Identité globale","settings.gitIdentities.editor.title.editIdentity":"Modifier l'identité","settings.gitIdentities.editor.description.globalReadOnly":"Identité Git à l'échelle du système (lecture seule)","settings.gitIdentities.editor.description.newProfile":"Créer un nouveau profil d'identité Git","settings.gitIdentities.editor.description.editProfile":"Modifier les paramètres du profil d'identité","settings.gitIdentities.editor.section.commitSigning":"Signature des commits","settings.gitIdentities.editor.field.profileName":"Nom du profil","settings.gitIdentities.editor.field.profileNamePlaceholder":"Profil professionnel, personnel, etc.","settings.gitIdentities.editor.field.color":"Couleur","settings.gitIdentities.editor.field.icon":"Icône","settings.gitIdentities.editor.field.userName":"Nom d'utilisateur","settings.gitIdentities.editor.field.userNameTooltip":"Le nom qui apparaîtra dans les messages de commit Git.","settings.gitIdentities.editor.field.userNamePlaceholder":"John Doe","settings.gitIdentities.editor.field.emailAddress":"Adresse e-mail","settings.gitIdentities.editor.field.emailAddressTooltip":"Doit correspondre à votre adresse e-mail dans GitHub/GitLab pour une attribution appropriée.","settings.gitIdentities.editor.field.emailAddressPlaceholder":"jean@example.com","settings.gitIdentities.editor.field.authMethod":"Méthode d'authentification","settings.gitIdentities.editor.field.authToken":"Jeton","settings.gitIdentities.editor.field.sshKeyPath":"Chemin clé SSH","settings.gitIdentities.editor.field.sshKeyPathTooltip":"Chemin facultatif vers la clé privée. e.g. ~/.ssh/id_ed25519","settings.gitIdentities.editor.field.sshKeyPathPlaceholder":"~/.ssh/id_ed25519","settings.gitIdentities.editor.field.signCommits":"Signer les commits avec cette identité","settings.gitIdentities.editor.field.signingKey":"Clé de signature","settings.gitIdentities.editor.field.signingKeyPlaceholder":"~/.ssh/id_ed25519.pub","settings.gitIdentities.editor.field.host":"Hôte","settings.gitIdentities.editor.field.hostTooltip":"Le jeton sera lu à partir de ~/.git-credentials pour cet hôte.","settings.gitIdentities.editor.field.hostPlaceholder":"github.com","settings.gitIdentities.editor.actions.close":"Fermer","settings.gitIdentities.editor.actions.create":"Créer","settings.gitIdentities.editor.actions.save":"Sauvegarder","settings.gitIdentities.editor.toast.userNameEmailRequired":"Le nom d'utilisateur et l'e-mail sont requis","settings.gitIdentities.editor.toast.hostRequiredForToken":"L'hôte est requis pour l'authentification basée sur un jeton","settings.gitIdentities.editor.toast.signingKeyRequired":"Une clé de signature est requise lorsque la signature des commits est activée","settings.gitIdentities.editor.toast.profileCreated":"Profil créé","settings.gitIdentities.editor.toast.profileUpdated":"Profil mis à jour","settings.gitIdentities.editor.toast.createProfileFailed":"Échec de la création du profil","settings.gitIdentities.editor.toast.updateProfileFailed":"Échec de la mise à jour du profil","settings.gitIdentities.editor.toast.saveUnexpectedError":"Une erreur s'est produite lors de l'enregistrement","settings.gitIdentities.editor.toast.profileDeleted":"Profil supprimé","settings.gitIdentities.editor.toast.deleteProfileFailed":"Échec de la suppression du profil","settings.gitIdentities.editor.toast.deleteUnexpectedError":"Une erreur s'est produite lors de la suppression","settings.skills.sidebar.title":"Skills","settings.skills.sidebar.total":"Total {count}","settings.skills.sidebar.section.project":"Skills du projet","settings.skills.sidebar.section.user":"Skills utilisateur","settings.skills.sidebar.empty.title":"Aucun skill configuré","settings.skills.sidebar.empty.description":"Utilisez le bouton + ci-dessus pour en créer un","settings.skills.sidebar.badge.claude":"Claude","settings.skills.sidebar.badge.agents":"agents","settings.skills.sidebar.badge.opencode":"OpenCode","settings.skills.sidebar.toast.skillDeleted":'Skill "{name}" supprimé avec succès',"settings.skills.sidebar.toast.deleteSkillFailed":"Échec de la suppression du skill","settings.skills.sidebar.toast.duplicateLoadFailed":"Échec du chargement des détails du skill pour la duplication","settings.skills.sidebar.toast.renameFailed":"Échec du renommage du skill","settings.skills.sidebar.toast.skillRenamed":'Skill renommé en "{name}"',"settings.skills.sidebar.deleteDialog.title":"Supprimer le skill","settings.skills.sidebar.deleteDialog.description":"Êtes-vous sûr de vouloir supprimer le skill « {name} » ?","settings.skills.sidebar.renameDialog.title":"Renommer le skill","settings.skills.sidebar.renameDialog.description":'Entrez un nouveau nom pour le skill "{name}"',"settings.skills.sidebar.renameDialog.placeholder":"Nouveau nom de skill...","settings.skills.page.title.newSkill":"Nouveau skill","settings.skills.page.subtitle.newSkill":"Configurer un nouveau skill","settings.skills.page.subtitle.skillLocation":"Skill {location}","settings.skills.page.section.basicInformation":"Informations de base","settings.skills.page.section.instructions":"Instructions","settings.skills.page.section.supportingFiles":"Fichiers de support","settings.skills.page.field.skillNameLocation":"Nom et emplacement du skill","settings.skills.page.field.skillNameHint":"Minuscules, chiffres, tirets","settings.skills.page.field.skillNamePlaceholder":"nom-du-skill","settings.skills.page.field.descriptionHint":"L'agent s'en sert pour décider quand charger le skill","settings.skills.page.field.descriptionPlaceholder":"Brève description de ce que fait ce skill...","settings.skills.page.field.instructionsPlaceholder":"Instructions étape par étape, directives ou contenu de référence...","settings.skills.page.badge.claudeCompatible":"Compatible Claude","settings.skills.page.badge.pending":"en attente","settings.skills.page.actions.addFile":"Ajouter un fichier","settings.skills.page.actions.createSkill":"Créer un skill","settings.skills.page.actions.createFile":"Créer un fichier","settings.skills.page.supportingFiles.empty":"Aucun fichier à l'appui. Utilisez « Ajouter un fichier » pour inclure des documents de référence.","settings.skills.page.loading.details":"Chargement des détails du skill...","settings.skills.page.loading.fileContent":"Chargement du contenu du fichier...","settings.skills.page.empty.title":"Sélectionnez un skill dans la barre latérale","settings.skills.page.empty.description":"ou créez-en un nouveau","settings.skills.page.deleteFileDialog.title":"Supprimer le fichier de support","settings.skills.page.deleteFileDialog.description":"Etes-vous sûr de vouloir supprimer « {path} » ?","settings.skills.page.fileDialog.titleEdit":"Modifier le fichier de support","settings.skills.page.fileDialog.titleAdd":"Ajouter un fichier de support","settings.skills.page.fileDialog.descriptionEdit":"Modifier le contenu du fichier","settings.skills.page.fileDialog.descriptionAdd":"Créer un nouveau fichier dans le répertoire du skill","settings.skills.page.fileDialog.field.filePath":"Chemin du fichier","settings.skills.page.fileDialog.field.filePathPlaceholder":"example.md ou docs/reference.txt","settings.skills.page.fileDialog.field.filePathHint":"Chemin relatif dans le répertoire du skill. Les sous-répertoires seront créés automatiquement.","settings.skills.page.fileDialog.field.content":"Contenu","settings.skills.page.fileDialog.field.contentPlaceholder":"Contenu du fichier...","settings.skills.page.toast.skillNameRequired":"Le nom du skill est requis","settings.skills.page.toast.invalidSkillName":"Le nom du skill doit contenir de 1 à 64 caractères alphanumériques minuscules avec des traits d'union et ne peut pas commencer ni se terminer par un trait d'union.","settings.skills.page.toast.descriptionRequired":"Une description est requise","settings.skills.page.toast.skillExists":"Un skill portant ce nom existe déjà","settings.skills.page.toast.skillCreated":"Skill créé avec succès","settings.skills.page.toast.skillUpdated":"Skill mis à jour avec succès","settings.skills.page.toast.createSkillFailed":"Échec de la création du skill","settings.skills.page.toast.updateSkillFailed":"Échec de la mise à jour du skill","settings.skills.page.toast.saveUnexpectedError":"Une erreur s'est produite lors de l'enregistrement","settings.skills.page.toast.loadFileContentFailed":"Échec du chargement du contenu du fichier","settings.skills.page.toast.fileNameRequired":"Le nom du fichier est obligatoire","settings.skills.page.toast.fileExists":"Un fichier portant ce nom existe déjà","settings.skills.page.toast.noSkillSelected":"Aucun skill sélectionné","settings.skills.page.toast.fileAdded":'Fichier "{path}" ajouté',"settings.skills.page.toast.fileCreated":'Fichier "{path}" créé',"settings.skills.page.toast.fileUpdated":'Fichier "{path}" mis à jour',"settings.skills.page.toast.fileRemoved":'Fichier "{path}" supprimé',"settings.skills.page.toast.fileDeleted":'Fichier "{path}" supprimé',"settings.skills.page.toast.createFileFailed":"Échec de la création du fichier","settings.skills.page.toast.updateFileFailed":"Échec de la mise à jour du fichier","settings.skills.page.toast.deleteFileFailed":"Échec de la suppression du fichier","settings.skills.location.option.userOpencode.label":"Utilisateur / OpenCode","settings.skills.location.option.userOpencode.description":"Emplacement de configuration global de OpenCode","settings.skills.location.option.projectOpencode.label":"Projet / OpenCode","settings.skills.location.option.projectOpencode.description":"Emplacement .opencode du projet actuel","settings.skills.location.option.userClaude.label":"Utilisateur / Claude","settings.skills.location.option.userClaude.description":"Emplacement global des skills Claude","settings.skills.location.option.projectClaude.label":"Projet / Claude","settings.skills.location.option.projectClaude.description":"Projet actuel .claude location","settings.skills.location.option.userAgents.label":"Utilisateur / Agent","settings.skills.location.option.userAgents.description":"Emplacement de compatibilité global .agents","settings.skills.location.option.projectAgents.label":"Projet / Agents","settings.skills.location.option.projectAgents.description":"Emplacement de compatibilité .agents du projet actuel","settings.skills.catalog.shared.field.repository":"Dépôt","settings.skills.catalog.shared.field.repositoryPlaceholder":"propriétaire/dépôt ou git@github.com:owner/repo.git","settings.skills.catalog.shared.field.optionalSubpath":"Sous-chemin facultatif","settings.skills.catalog.shared.field.subpathPlaceholder":"p. ex. skills","settings.skills.catalog.shared.field.targetLocation":"Emplacement cible","settings.skills.catalog.shared.field.project":"Projet","settings.skills.catalog.shared.field.noProjects":"Aucun projet disponible","settings.skills.catalog.shared.field.chooseProjectPlaceholder":"Choisir un projet","settings.skills.catalog.shared.field.searchSkillsPlaceholder":"Rechercher des skills…","settings.skills.catalog.shared.toast.repositoryRequired":"La source du dépôt est requise","settings.skills.catalog.shared.toast.privateRepoNotSupportedVsCode":"Les dépôts privés ne sont pas encore pris en charge dans VS Code","settings.skills.catalog.shared.toast.foundSkills":"Skill(s) trouvé(s) : {count}","settings.skills.catalog.shared.noDescription":"Aucune description fournie","settings.skills.catalog.shared.actions.scan":"Balayage","settings.skills.catalog.shared.actions.scanning":"Balayage...","settings.skills.catalog.shared.actions.install":"Installer","settings.skills.catalog.shared.actions.installing":"Installation...","settings.skills.catalog.shared.auth.title":"Authentification requise","settings.skills.catalog.shared.auth.description":"Sélectionnez une identité Git (clé SSH)","settings.skills.catalog.shared.auth.chooseIdentity":"Choisissez votre identité","settings.skills.catalog.shared.auth.footerHint":"Configurez les identités dans Paramètres - Identités Git.","settings.skills.catalog.shared.auth.footerHintArrow":"Configurez les identités dans Paramètres → Identités Git.","settings.skills.catalog.conflicts.title":"Des skills existent déjà","settings.skills.catalog.conflicts.description":"Certains skills sélectionnés sont déjà installés dans ce périmètre. Choisissez si vous voulez les ignorer ou les écraser.","settings.skills.catalog.conflicts.count":"Conflit(s) {count}","settings.skills.catalog.conflicts.installedIn":"Installé dans {scope} / {source}","settings.skills.catalog.conflicts.scope.user":"utilisateur","settings.skills.catalog.conflicts.scope.project":"projet","settings.skills.catalog.conflicts.source.opencode":"OpenCode","settings.skills.catalog.conflicts.source.agents":"agents","settings.skills.catalog.conflicts.decision.skip":"Sauter","settings.skills.catalog.conflicts.decision.overwrite":"Écraser","settings.skills.catalog.conflicts.actions.skipAll":"Tout ignorer","settings.skills.catalog.conflicts.actions.overwriteAll":"Tout écraser","settings.skills.catalog.conflicts.actions.continue":"Continuer","settings.skills.catalog.installSkill.title":"Installer le skill","settings.skills.catalog.installSkill.descriptionPrefix":"Installer","settings.skills.catalog.installSkill.descriptionSuffix":"dans l’un des quatre emplacements cibles.","settings.skills.catalog.installSkill.field.destination":"Destination","settings.skills.catalog.installSkill.field.project":"Projet","settings.skills.catalog.installSkill.field.noProjects":"Aucun projet disponible","settings.skills.catalog.installSkill.field.chooseProjectPlaceholder":"Choisir un projet","settings.skills.catalog.installSkill.actions.install":"Installer","settings.skills.catalog.installSkill.actions.installing":"Installation...","settings.skills.catalog.installSkill.toast.installed":"Skill installé avec succès","settings.skills.catalog.installSkill.toast.authRequired":"Authentification requise","settings.skills.catalog.installSkill.toast.installFailed":"Échec de l'installation du skill","settings.skills.catalog.add.title":"Ajouter un catalogue de skills","settings.skills.catalog.add.descriptionPrefix":"Ajoutez un dépôt Git comme nouvelle source de catalogue. AiWorker le scannera pour les dossiers contenant","settings.skills.catalog.add.descriptionSuffix":".","settings.skills.catalog.add.field.catalogName":"Nom du catalogue","settings.skills.catalog.add.field.catalogNamePlaceholder":"p. ex. Skills d'équipe","settings.skills.catalog.add.field.repository":"Dépôt","settings.skills.catalog.add.field.optionalSubpath":"Sous-chemin facultatif","settings.skills.catalog.add.field.repositoryHint":"Les dépôts publics fonctionnent partout. Les dépôts privés nécessitent une identité SSH (desktop et web uniquement).","settings.skills.catalog.add.scanResult":"Résultat de l'analyse : {count} skill(s) trouvé(s)","settings.skills.catalog.add.duplicateMessage":"Ce catalogue est déjà ajouté.","settings.skills.catalog.add.actions.addCatalog":"Ajouter un catalogue","settings.skills.catalog.add.toast.repositoryRequired":"La source du dépôt est requise","settings.skills.catalog.add.toast.authenticationRequiredScan":"Authentification requise. Sélectionnez une identité Git et effectuez une nouvelle analyse.","settings.skills.catalog.add.toast.scanFailed":"Échec de l'analyse du dépôt","settings.skills.catalog.add.toast.noSkillsFound":"Aucun skill trouvé dans ce dépôt","settings.skills.catalog.add.toast.catalogNameRequired":"Le nom du catalogue est obligatoire","settings.skills.catalog.add.toast.scanBeforeAdd":"Scannez le dépôt avant d'ajouter ce catalogue","settings.skills.catalog.add.toast.catalogAlreadyExists":"Ce catalogue existe déjà","settings.skills.catalog.add.toast.catalogAdded":"Catalogue ajouté","settings.skills.catalog.add.toast.saveFailed":"Échec de l'enregistrement du catalogue","settings.skills.catalog.installFromRepo.title":"Installer à partir du dépôt Git","settings.skills.catalog.installFromRepo.descriptionPrefix":"Analyser un dépôt à la recherche de dossiers contenant","settings.skills.catalog.installFromRepo.descriptionSuffix":", puis installez les skills sélectionnés.","settings.skills.catalog.installFromRepo.repositoryHintPrefix":"Pour le raccourci GitHub, vous pouvez ajouter un sous-chemin comme","settings.skills.catalog.installFromRepo.authDescription":"Sélectionnez une identité Git (clé SSH) pouvant accéder à ce dépôt.","settings.skills.catalog.installFromRepo.empty.noScanResultsTitle":"Aucun résultat d'analyse pour l'instant","settings.skills.catalog.installFromRepo.empty.noScanResultsDescription":"Scannez un dépôt pour découvrir des skills","settings.skills.catalog.installFromRepo.actions.selectAll":"Tout sélectionner","settings.skills.catalog.installFromRepo.actions.selectNone":"N'en sélectionner aucun","settings.skills.catalog.installFromRepo.actions.installSelected":"Installer sélectionné","settings.skills.catalog.installFromRepo.badge.installed":"installé ({scope}/{source})","settings.skills.catalog.installFromRepo.selectedCount":"Sélectionné: {selected} / {total}","settings.skills.catalog.installFromRepo.toast.authenticationRequiredScan":"Authentification requise. Sélectionnez une identité Git et réessayez l'analyse.","settings.skills.catalog.installFromRepo.toast.authenticationRequiredInstall":"Authentification requise. Sélectionnez une identité Git et réessayez l'installation.","settings.skills.catalog.installFromRepo.toast.scanFailed":"Échec de l'analyse du dépôt","settings.skills.catalog.installFromRepo.toast.selectAtLeastOne":"Sélectionnez au moins un skill à installer","settings.skills.catalog.installFromRepo.toast.installedCount":"{count} skill(s) installé(s)","settings.skills.catalog.installFromRepo.toast.installCompleted":"Installation terminée","settings.skills.catalog.installFromRepo.toast.installFailed":"Échec de l'installation des skills","settings.skills.catalog.page.mode.manual":"Manuel","settings.skills.catalog.page.mode.external":"Externe","settings.skills.catalog.page.title":"Catalogue de skills","settings.skills.catalog.page.subtitle":"Installez des skills prêts à l'emploi depuis des dépôts curatés ou ajoutez votre propre source.","settings.skills.catalog.page.section.sources":"Sources","settings.skills.catalog.page.searchAllPlaceholder":"Rechercher des skills dans toutes les sources…","settings.skills.catalog.page.search.clear":"Effacer la recherche","settings.skills.catalog.page.source.skillsCount":"Skills : {count}","settings.skills.catalog.page.source.stars":"Étoiles : {count}","settings.skills.catalog.page.source.updated":"Mis à jour {time}","settings.skills.catalog.page.source.addOwnTitle":"Ajouter votre propre source","settings.skills.catalog.page.source.addOwnDescription":"N'importe quel dépôt Git avec des skills","settings.skills.catalog.page.source.viewRepo":"Ouvrir le dépôt sur GitHub","settings.skills.catalog.page.skill.viewOnGithub":"Voir le skill sur GitHub","settings.skills.catalog.page.list.searchTitle":"Résultats de recherche","settings.skills.catalog.page.section.sourceRepository":"Dépôt source","settings.skills.catalog.page.field.selectSourcePlaceholder":"Sélectionnez la source","settings.skills.catalog.page.actions.refreshTitle":"Rafraîchir","settings.skills.catalog.page.actions.removeCatalogTitle":"Supprimer le catalogue","settings.skills.catalog.page.actions.addCatalog":"Ajouter un catalogue","settings.skills.catalog.page.actions.removeCatalog":"Supprimer le catalogue","settings.skills.catalog.page.loading.catalog":"Chargement...","settings.skills.catalog.page.loading.skills":"Chargement des skills...","settings.skills.catalog.page.foundCount":"{count} skill(s) trouvé(s)","settings.skills.catalog.page.error.catalogTitle":"Erreur de catalogue","settings.skills.catalog.page.empty.noSkillsTitle":"Aucun skill trouvé","settings.skills.catalog.page.empty.noSkillsDescription":"Essayez une autre recherche ou actualisez le catalogue","settings.skills.catalog.page.badge.installed":"installé ({scope})","settings.skills.catalog.page.badge.notInstallable":"non installable","settings.skills.catalog.page.badge.unknown":"inconnu","settings.skills.catalog.page.removeDialog.title":"Supprimer le catalogue","settings.skills.catalog.page.removeDialog.description":"Êtes-vous sûr de vouloir supprimer ce catalogue ?","settings.aiworker.passkeys.title":"Mots-clés","settings.aiworker.passkeys.field.currentDevice":"Appareil actuel","settings.aiworker.passkeys.actions.add":"Ajouter un mot de passe","settings.aiworker.passkeys.actions.cancelSetup":"Annuler la configuration du mot de passe","settings.aiworker.passkeys.actions.signOutEverywhere":"Déconnectez-vous partout","settings.aiworker.passkeys.actions.signingOut":"Déconnexion…","settings.aiworker.passkeys.actions.removing":"Suppression…","settings.aiworker.passkeys.state.uiPasswordRequired":"Les clés d'accès sont disponibles uniquement lorsque le verrouillage par mot de passe de l'interface utilisateur est activé.","settings.aiworker.passkeys.state.loading":"Chargement des clés d'accès…","settings.aiworker.passkeys.state.noneSaved":"Aucune clé d'accès enregistrée pour cet hôte pour l'instant.","settings.aiworker.passkeys.item.lastUsed":"Dernière utilisation {time}","settings.aiworker.passkeys.item.added":"Ajout de {time}","settings.aiworker.passkeys.time.neverUsed":"Jamais utilisé","settings.aiworker.passkeys.toast.loadFailed":"Impossible de charger les clés d'accès.","settings.aiworker.passkeys.toast.enableUiPasswordFirst":"Activez le verrouillage par mot de passe de l'interface utilisateur avant d'ajouter des clés d'accès.","settings.aiworker.passkeys.toast.added":"Clé d'accès ajoutée","settings.aiworker.passkeys.toast.setupCanceled":"Configuration du mot de passe annulée","settings.aiworker.passkeys.toast.addFailed":"Impossible d'ajouter le mot de passe.","settings.aiworker.passkeys.toast.removed":"Clé d'accès supprimée","settings.aiworker.passkeys.toast.removeFailed":"Impossible de supprimer le mot de passe.","settings.aiworker.passkeys.toast.clearAuthFailed":"Impossible d'effacer l'authentification enregistrée.","settings.aiworker.sessionRetention.title":"Rétention de session","settings.aiworker.sessionRetention.tooltip":"Archivez ou supprimez automatiquement les sessions inactives en fonction de la dernière activité. Conserve les 5 sessions les plus récentes.","settings.aiworker.sessionRetention.field.enableAutoCleanupAria":"Activer le nettoyage automatique","settings.aiworker.sessionRetention.field.enableAutoCleanup":"Activer le nettoyage automatique","settings.aiworker.sessionRetention.field.retentionPeriod":"Période de conservation","settings.aiworker.sessionRetention.field.retentionPeriodAria":"Durée de conservation en jours","settings.aiworker.sessionRetention.field.days":"jours","settings.aiworker.sessionRetention.field.whenSessionsExpire":"Quand les sessions expirent","settings.aiworker.sessionRetention.actions.resetRetentionAria":"Réinitialiser la période de conservation","settings.aiworker.sessionRetention.actions.runCleanupNow":"Exécutez le nettoyage maintenant","settings.aiworker.sessionRetention.actions.cleaningUp":"Faire le ménage...","settings.aiworker.sessionRetention.action.archive":"Archive","settings.aiworker.sessionRetention.action.delete":"Supprimer","settings.aiworker.sessionRetention.manualCleanup.title":"Nettoyage manuel","settings.aiworker.sessionRetention.manualCleanup.eligibleArchiveNow":"Éligible à l'archivage dès maintenant : {count}","settings.aiworker.sessionRetention.manualCleanup.eligibleDeleteNow":"Éligible à la suppression dès maintenant : {count}","settings.aiworker.sessionRetention.toast.noneEligibleArchive":"Aucune session éligible à l'archivage","settings.aiworker.sessionRetention.toast.noneEligibleDelete":"Aucune session éligible à la suppression","settings.aiworker.sessionRetention.toast.archivedCount":"Session(s) {count} archivée(s)","settings.aiworker.sessionRetention.toast.deletedCount":"Session(s) {count} supprimée(s)","settings.aiworker.sessionRetention.toast.failedArchiveCount":"Échec de l'archivage des sessions {count}","settings.aiworker.sessionRetention.toast.failedDeleteCount":"Échec de la suppression des sessions {count}","settings.aiworker.desktopNetwork.title":"Accès au réseau de bureau","settings.aiworker.desktopNetwork.field.windowControlsPosition":"Position des contrôles de fenêtre","settings.aiworker.desktopNetwork.field.windowControlsPositionDescription":"Choisissez où apparaissent les boutons Réduire, Agrandir et Fermer. Par défaut à droite.","settings.aiworker.desktopNetwork.field.windowControlsPositionAria":"Position des contrôles de fenêtre","settings.aiworker.desktopNetwork.option.windowControlsLeft":"Gauche","settings.aiworker.desktopNetwork.option.windowControlsRight":"Droite","settings.aiworker.desktopNetwork.field.windowControls":"Contrôles de fenêtre","settings.aiworker.desktopNetwork.field.windowControlsStyle":"Style","settings.aiworker.desktopNetwork.field.windowControlsStyleAria":"Style des contrôles de fenêtre","settings.aiworker.desktopNetwork.option.windowControlsClassic":"Classique","settings.aiworker.desktopNetwork.option.windowControlsTrafficLights":"Feux de circulation","settings.aiworker.desktopNetwork.field.launchAtLoginAria":"Démarrez AiWorker lors de la connexion","settings.aiworker.desktopNetwork.field.launchAtLogin":"Démarrez AiWorker lorsque vous vous connectez","settings.aiworker.desktopNetwork.field.launchAtLoginDescription":"Démarre l'application en arrière-plan sans ouvrir de fenêtre. Utilisez l'icône d'état du bureau pour l'ouvrir.","settings.aiworker.desktopNetwork.field.macMenuBarAria":"Afficher AiWorker dans la barre des menus macOS","settings.aiworker.desktopNetwork.field.macMenuBar":"Afficher AiWorker dans la barre des menus","settings.aiworker.desktopNetwork.field.macMenuBarDescription":"Nécessite un redémarrage de l'application. Lorsque cette option est désactivée, AiWorker ne crée pas l'élément de barre des menus et n'exécute pas ses mises à jour de sessions, d'approbations et d'utilisation.","settings.aiworker.desktopNetwork.field.minimizeToTrayAria":"Fermer AiWorker dans la zone de notification","settings.aiworker.desktopNetwork.field.minimizeToTray":"Fermer dans la zone de notification","settings.aiworker.desktopNetwork.field.minimizeToTrayDescription":"Garde AiWorker actif dans la zone de notification lorsque la fenêtre principale est fermée. La réduction laisse la fenêtre dans la barre des tâches.","settings.aiworker.desktopNetwork.field.keepAwakeAria":"Garder l'ordinateur éveillé pendant qu'AiWorker fonctionne","settings.aiworker.desktopNetwork.field.keepAwake":"Garder l'ordinateur éveillé pendant qu'AiWorker fonctionne","settings.aiworker.desktopNetwork.field.keepAwakeDescription":"Pour que les téléphones puissent continuer à ouvrir cette application. L'écran peut toujours s'éteindre.","settings.aiworker.desktopNetwork.field.allowLanAccessAria":"Autoriser l'accès LAN au side-car du bureau","settings.aiworker.desktopNetwork.field.allowLanAccess":"Autorisez les autres appareils de votre réseau local à ouvrir cette application","settings.aiworker.desktopNetwork.field.allowLanAccessDescription":"Redémarre l'application afin que les téléphones, tablettes et autres ordinateurs connectés à votre réseau Wi-Fi puissent l'ouvrir.","settings.aiworker.desktopNetwork.field.warning":"Attention : lorsqu'elle est activée, l'application est accessible à toute personne se trouvant sur le même réseau local.","settings.aiworker.desktopNetwork.field.passwordRequiredWarning":"L'accès LAN nécessite un mot de passe de l'interface utilisateur du bureau. Tant qu'il n'est pas défini, l'application de bureau démarre en accès local uniquement.","settings.aiworker.desktopPassword.actions.showPassword":"Afficher le mot de passe","settings.aiworker.desktopPassword.actions.hidePassword":"Masquer le mot de passe","settings.aiworker.desktopPassword.field.password":"Mot de passe de l'interface utilisateur du bureau","settings.aiworker.desktopPassword.field.passwordPlaceholder":"Aucun mot de passe requis","settings.aiworker.desktopPassword.field.passwordDescription":"AiWorker demande après le redémarrage, puis quand la session de connexion expire : après 12 heures, ou 7 jours avec Trust this device. Laissez vide pour désactiver la connexion.","settings.aiworker.desktopNetwork.hint.openAfterRestart":"Après redémarrage, ouvrez depuis un autre appareil :","settings.aiworker.desktopNetwork.hint.openNow":"Ouvrir depuis un autre appareil :","settings.aiworker.desktopNetwork.actions.saveAndRestart":"Enregistrer + Redémarrer","settings.aiworker.desktopNetwork.error.loadFailed":"Échec du chargement des paramètres du bureau","settings.aiworker.desktopNetwork.error.saveFailed":"Échec de l'enregistrement des paramètres du bureau","settings.aiworker.desktopNetwork.error.savedRestartFailed":"Enregistré, mais échec du redémarrage de l'application","settings.aiworker.desktopNetwork.error.launchAtLoginUnsupported":"Le lancement à la connexion n'est pas pris en charge sur ce système","settings.aiworker.desktopNetwork.error.launchAtLoginSaveFailed":"Échec de la mise à jour du paramètre de lancement lors de la connexion","settings.aiworker.desktopNetwork.error.minimizeToTrayUnsupported":"Le mode d'arrière-plan dans la zone de notification n'est pas pris en charge sur ce système","settings.aiworker.desktopNetwork.error.minimizeToTraySaveFailed":"Échec de la mise à jour du paramètre de zone de notification","settings.aiworker.desktopNetwork.error.keepAwakeUnsupported":"La prévention de la veille n'est pas prise en charge sur ce système","settings.aiworker.desktopNetwork.error.keepAwakeSaveFailed":"Échec de la mise à jour du paramètre de maintien en éveil","settings.aiworker.opencodeCli.title":"OpenCode CLI","settings.aiworker.tools.title":"Outils AiWorker","settings.aiworker.tools.field.agentControlTool":"Outil de contrôle pour les agents","settings.aiworker.tools.field.agentControlToolAria":"Activer l’outil de contrôle pour les agents","settings.aiworker.tools.field.agentControlToolInfo":"Laissez les agents orchestrer votre travail depuis le chat : créer des sessions et des worktrees, déléguer des prompts à d’autres agents et gérer les tâches planifiées. Ajoute une courte description d’outil à chaque session. Appliqué après le redémarrage d’OpenCode.","settings.aiworker.tools.field.agentWebTool":"Outil AiWorker Web","settings.aiworker.tools.field.agentWebToolAria":"Activer l’outil AiWorker Web","settings.aiworker.tools.field.agentWebToolInfo":"Laissez les agents consulter la page dans le panneau navigateur d’AiWorker et interagir avec elle : ouvrir une URL, lire le contenu, cliquer, saisir du texte, faire défiler et basculer entre les mises en page mobile et bureau. Ajoute une courte description d’outil à chaque session. Appliqué après le redémarrage d’OpenCode.","settings.aiworker.tools.field.agentMemoryTool":"Outil de mémoire de l’agent","settings.aiworker.tools.field.agentMemoryToolAria":"Outil de mémoire de l’agent","settings.aiworker.tools.field.agentMemoryToolInfo":"Permet aux agents de conserver ce qu’ils apprennent d’une session à l’autre, dans deux stockages : ce qui est vrai à votre sujet et ce qui est vrai pour chaque projet. Les sessions reçoivent les titres enregistrés afin que l’agent puisse lire une entrée pertinente. La désactivation retire l’outil, l’onglet Mémoire et l’index de session. Appliqué après le redémarrage d’OpenCode.","settings.aiworker.opencodeCli.tooltipPrefix":"Chemin absolu facultatif vers le","settings.aiworker.opencodeCli.tooltipSuffix":"binaire.","settings.aiworker.opencodeCli.field.binaryPath":"Chemin binaire OpenCode","settings.aiworker.opencodeCli.field.binaryPathPlaceholder":"/Users/you/.bun/bin/opencode","settings.aiworker.opencodeCli.field.showUpdateNotifications":"Afficher les notifications de mise à jour de OpenCode","settings.aiworker.opencodeCli.field.showUpdateNotificationsAria":"Afficher les notifications de mise à jour de OpenCode","settings.aiworker.opencodeCli.actions.browseAria":"Rechercher le chemin binaire OpenCode","settings.aiworker.opencodeCli.actions.browse":"Parcourir","settings.aiworker.opencodeCli.actions.saveAndReload":"Enregistrer + Recharger","settings.aiworker.opencodeCli.actions.restartingOpenCode":"Redémarrage de OpenCode…","settings.aiworker.opencodeCli.dialog.selectBinaryTitle":"Sélectionnez le binaire OpenCode","settings.aiworker.opencodeCli.tipPrefix":"Astuce : vous pouvez également utiliser","settings.aiworker.opencodeCli.tipMiddle":"env var, mais ce paramètre persiste dans","settings.mcp.sidebar.title":"Serveurs MCP","settings.mcp.sidebar.total":"Total {count}","settings.mcp.sidebar.actions.refreshStatusAria":"Actualiser le statut du MCP","settings.mcp.sidebar.actions.refreshStatusTitle":"Actualiser le statut du MCP","settings.mcp.sidebar.actions.addServerTitle":"Ajouter le serveur MCP","settings.mcp.sidebar.actions.deleting":"Suppression…","settings.mcp.sidebar.empty.title":"Aucun serveur MCP configuré","settings.mcp.sidebar.empty.description":"Utilisez le bouton + ci-dessus pour en ajouter un","settings.mcp.sidebar.group.projectServers":"Serveurs de projet","settings.mcp.sidebar.group.userServers":"Serveurs d'utilisateurs","settings.mcp.sidebar.serverType.localTitle":"Serveur local","settings.mcp.sidebar.serverType.remoteTitle":"Serveur distant","settings.mcp.sidebar.deleteDialog.title":"Supprimer le serveur MCP","settings.mcp.sidebar.deleteDialog.descriptionPrefix":"Etes-vous sûr de vouloir supprimer « {name} » ? Cela le supprimera de","settings.mcp.sidebar.toast.deleteFailed":"Échec de la suppression du serveur MCP","settings.mcp.sidebar.toast.serverDeleted":'Serveur MCP "{name}" supprimé',"settings.mcp.sidebar.toast.refreshListIfStale":"Actualisez la liste MCP si l'interface utilisateur semble obsolète.","settings.plugins.sidebar.title":"Plugins","settings.plugins.sidebar.total":"Total {count}","settings.plugins.sidebar.actions.addTitle":"Ajouter un plugin","settings.plugins.sidebar.actions.deleting":"Suppression…","settings.plugins.sidebar.empty.title":"Aucun plugin configuré","settings.plugins.sidebar.empty.description":"Utilisez le bouton + ci-dessus pour en ajouter un","settings.plugins.sidebar.group.userEntries":"Configuration utilisateur","settings.plugins.sidebar.group.userFiles":"Fichier de plug-in utilisateur","settings.plugins.sidebar.group.projectEntries":"Configuration du projet","settings.plugins.sidebar.group.projectFiles":"Fichier de plugin de projet","settings.plugins.sidebar.kind.npm":"paquet npm","settings.plugins.sidebar.kind.path":"Chemin local","settings.plugins.sidebar.kind.file":"Fichier de plug-in","settings.plugins.sidebar.deleteDialog.title":"Supprimer le plugin","settings.plugins.sidebar.deleteDialog.description":"Etes-vous sûr de vouloir supprimer « {name} » ?","settings.plugins.sidebar.toast.deleted":'Plugin "{name}" supprimé',"settings.plugins.sidebar.toast.deleteFailed":"Échec de la suppression du plugin","settings.plugins.page.empty.select":"Sélectionnez un plugin à afficher ou à modifier","settings.plugins.page.empty.add":"Ou cliquez sur + pour ajouter un nouveau plugin","settings.plugins.page.header.entry":"Plugin installé","settings.plugins.page.header.file":"Fichier de plug-in","settings.plugins.page.field.spec":"Spécification","settings.plugins.page.field.spec.placeholder":"npm-package@version ou /absolute/path","settings.plugins.page.field.options":"Options (JSON)","settings.plugins.page.field.options.invalidJson":"JSON invalide","settings.plugins.page.field.fileName":"Nom de fichier","settings.plugins.page.field.content":"Contenu","settings.plugins.page.field.scope":"Portée","settings.plugins.scope.user":"Utilisateur","settings.plugins.scope.project":"Projet","settings.plugins.page.action.save":"Sauvegarder","settings.plugins.page.action.discard":"Jeter","settings.plugins.dialog.add.title":"Ajouter un plugin","settings.plugins.dialog.add.tab.npm":"De npm","settings.plugins.dialog.add.tab.path":"Du chemin local","settings.plugins.dialog.add.tab.file":"Nouveau fichier","settings.plugins.dialog.add.action.submit":"Ajouter","settings.plugins.dialog.add.action.cancel":"Annuler","settings.plugins.toast.created":"Plugin ajouté","settings.plugins.toast.updated":"Plugin mis à jour","settings.plugins.toast.reloadFailed":"Échec du rechargement d'OpenCode — redémarrage requis","settings.plugins.validation.fileName":"Le nom du fichier doit être en minuscule et se terminer par .js / .ts / .mjs / .cjs","settings.plugins.validation.specRequired":"La spécification est requise","settings.plugins.registry.badge.update.label":"↑ {version}","settings.plugins.registry.badge.update.tooltip":"Mise à jour disponible : {current} → {latest}","settings.plugins.registry.badge.malformed.tooltip":"La spécification est mal formée","settings.plugins.registry.badge.missingPackage.tooltip":"Package {name} introuvable sur npm","settings.plugins.registry.badge.missingVersion.tooltip":"Version {version} de {name} non publiée","settings.plugins.registry.badge.pathMissing.tooltip":"Fichier introuvable : {path}","settings.plugins.registry.badge.pathUnreadable.tooltip":"Fichier illisible : {path}","settings.plugins.registry.badge.network.tooltip":"Impossible d'accéder au registre npm","settings.plugins.registry.banner.updateAvailable.title":"Mise à jour disponible","settings.plugins.registry.banner.updateAvailable.description":"{current} → {latest}","settings.plugins.registry.banner.updateAvailable.action":"Mise à jour vers {latest}","settings.plugins.registry.banner.invalid.title":"Plugin invalide","settings.plugins.registry.banner.invalid.malformed":"La syntaxe des spécifications est mal formée","settings.plugins.registry.banner.invalid.missingPackage":"Package introuvable sur npm","settings.plugins.registry.banner.invalid.missingVersion":"Version non publiée","settings.plugins.registry.banner.invalid.pathMissing":"Le fichier n'existe pas","settings.plugins.registry.banner.invalid.pathUnreadable":"Le fichier n'est pas lisible","settings.plugins.sidebar.actions.updateToLatest":"Mise à jour vers la dernière version","settings.plugins.sidebar.actions.refresh":"Vérifier les mises à jour","settings.plugins.sidebar.group.updatesAvailable_one":"Mise à jour {count} disponible","settings.plugins.sidebar.group.updatesAvailable_other":"Mises à jour {count} disponibles","settings.plugins.toast.updatedToLatest":"Plugin mis à jour vers {version}","settings.plugins.toast.refreshing":"Vérification de npm pour les mises à jour…","settings.plugins.toast.refreshFailed":"Impossible de vérifier le registre npm","settings.aiworker.keyboardShortcuts.title":"Raccourcis clavier","settings.aiworker.keyboardShortcuts.actions.resetAll":"Tout réinitialiser","settings.aiworker.keyboardShortcuts.actions.overwrite":"Écraser","settings.aiworker.keyboardShortcuts.tooltip":"Capturez une nouvelle combinaison de touches, enregistrez-la et les liaisons seront mises à jour immédiatement.","settings.aiworker.keyboardShortcuts.overwritePrompt":"Ce combo est déjà utilisé par un autre raccourci. Écraser et effacer cet autre mappage ?","settings.aiworker.keyboardShortcuts.field.pressKeys":"Appuyez sur les touches...","settings.aiworker.keyboardShortcuts.error.captureFirst":"Capturez d'abord un raccourci.","settings.aiworker.keyboardShortcuts.warning.riskyBrowserShortcut":"Ce raccourci peut entrer en conflit avec les paramètres par défaut du navigateur. Vous pouvez tout de même l’enregistrer.","settings.aiworker.keyboardShortcuts.action.open_go_to_line.label":"Aller à la ligne (éditeur de fichiers)","settings.aiworker.keyboardShortcuts.action.open_command_palette.label":"Ouvrir la palette de commandes","settings.aiworker.keyboardShortcuts.action.focus_input.label":"Entrée de mise au point","settings.aiworker.keyboardShortcuts.action.open_settings.label":"Ouvrir les paramètres","settings.aiworker.keyboardShortcuts.action.toggle_terminal.label":"Basculer la station d'accueil du terminal","settings.aiworker.keyboardShortcuts.action.toggle_terminal_expanded.label":"Terminal à bascule étendu","settings.aiworker.keyboardShortcuts.action.add_selection_to_chat.label":"Ajouter la sélection au chat","settings.aiworker.keyboardShortcuts.action.toggle_sidebar.label":"Basculer la barre latérale","settings.aiworker.keyboardShortcuts.action.switch_session_tab.label":"Basculer l’onglet de session","settings.aiworker.keyboardShortcuts.action.switch_session_tab.suffix":" + 1…9","settings.aiworker.keyboardShortcuts.action.switch_context_surface.label":"Basculer la surface du panneau contextuel","settings.aiworker.keyboardShortcuts.action.switch_context_surface.suffix":" + 1…0","settings.aiworker.keyboardShortcuts.action.new_chat.label":"Nouvelle session","settings.aiworker.keyboardShortcuts.action.switch_session_previous.label":"Session précédente","settings.aiworker.keyboardShortcuts.action.switch_session_next.label":"Session suivante","settings.aiworker.keyboardShortcuts.action.rename_current_session.label":"Renommer la session actuelle","settings.aiworker.keyboardShortcuts.action.toggle_permission_auto_accept.label":"Basculer l’approbation automatique","settings.aiworker.keyboardShortcuts.action.close_session_tab.label":"Fermer l’onglet de session","settings.aiworker.keyboardShortcuts.action.new_chat_worktree.label":"Nouvelle ébauche d'worktree","settings.aiworker.keyboardShortcuts.action.new_mini_chat.label":"Nouvelle fenêtre de mini-chat","settings.aiworker.keyboardShortcuts.action.open_help.label":"Ouvrir les raccourcis clavier","settings.aiworker.keyboardShortcuts.action.toggle_services_menu.label":"Basculer le menu des services","settings.aiworker.keyboardShortcuts.action.cycle_theme.label":"Thème du cycle","settings.aiworker.keyboardShortcuts.action.cycle_agent.label":"Agent de cycle","settings.aiworker.keyboardShortcuts.action.cycle_favorite_model_forward.label":"Faire avancer le modèle favori","settings.aiworker.keyboardShortcuts.action.cycle_favorite_model_backward.label":"Faire défiler le modèle favori vers l'arrière","settings.aiworker.keyboardShortcuts.action.open_model_selector.label":"Ouvrir le sélecteur de modèle","settings.aiworker.keyboardShortcuts.action.expand_input.label":"Développer l'entrée","settings.aiworker.keyboardShortcuts.action.open_timeline_dialog.label":"Chronologie de la conversation ouverte","settings.aiworker.keyboardShortcuts.action.toggle_prompt_navigator.label":"Afficher ou masquer le navigateur de prompts","settings.aiworker.keyboardShortcuts.warning.contextualPrefix":"Cette séquence partage un préfixe contextuel avec {action}. Lorsque son contexte est actif, cette action est prioritaire.","settings.aiworker.keyboardShortcuts.category.session":"Commandes de session","settings.aiworker.keyboardShortcuts.category.models":"Modèles et agents","settings.aiworker.keyboardShortcuts.category.panels":"Panneaux et outils","settings.aiworker.keyboardShortcuts.category.navigation":"Navigation","settings.aiworker.keyboardShortcuts.category.application":"Application","settings.aiworker.keyboardShortcuts.actions.edit":"Modifier","settings.aiworker.keyboardShortcuts.actions.confirm":"Confirmer","settings.aiworker.keyboardShortcuts.dialog.title":"Modifier {action}","settings.aiworker.keyboardShortcuts.dialog.instructions":"Appuyez sur deux combinaisons de touches au maximum, avec trois touches au plus chacune. Après la première, attendez jusqu’à 3 secondes une seconde combinaison. Utilisez Confirmer pour appliquer ou Annuler pour abandonner. Retour arrière supprime la dernière.","settings.aiworker.keyboardShortcuts.dialog.firstChord":"Première combinaison","settings.aiworker.keyboardShortcuts.dialog.secondChord":"Deuxième combinaison","settings.aiworker.keyboardShortcuts.dialog.recording":"Appuyez sur les touches…","settings.aiworker.keyboardShortcuts.unassigned":"Non attribué","settings.aiworker.keyboardShortcuts.error.prefixConflict":"Cela entre en conflit avec la séquence utilisée par {action}. Choisissez une autre combinaison.","settings.aiworker.keyboardShortcuts.error.exactConflict":"Cette combinaison est déjà utilisée par {action}.","settings.aiworker.keyboardShortcuts.error.internalConflict":"Cette combinaison entre en conflit avec un raccourci intégré qui ne peut pas être remplacé.","settings.aiworker.keyboardShortcuts.action.open_draft_project_picker.label":"Ouvrir le sélecteur de projet de brouillon","settings.aiworker.keyboardShortcuts.action.open_draft_worktree_picker.label":"Ouvrir le sélecteur de worktree de brouillon","settings.aiworker.keyboardShortcuts.action.open_session_list.label":"Ouvrir les sessions récentes","settings.aiworker.keyboardShortcuts.action.toggle_dictation.label":"Saisie vocale","settings.projects.sidebar.total":"Total {count}","settings.projects.sidebar.actions.addProject":"Ajouter un projet","settings.projects.page.empty.noProjects":"Aucun projet disponible.","settings.projects.page.title.default":"Paramètres du projet","settings.projects.page.section.worktree":"Worktree","settings.projects.page.field.projectName":"Nom du projet","settings.projects.page.field.projectModel":"Modèle du projet","settings.projects.page.field.projectThinking":"Réflexion du projet","settings.projects.page.section.chatDefaults":"Valeurs par défaut des nouveaux chats","settings.projects.page.section.chatDefaultsDescription":"Utilisées au démarrage d’un nouveau chat dans ce projet. À défaut, les valeurs globales s’appliquent. La réflexion n’apparaît que pour les modèles qui proposent des niveaux.","settings.projects.page.field.projectNamePlaceholder":"Nom du projet","settings.projects.page.option.thinkingDefault":"Celui du modèle","settings.projects.page.field.accentColor":"Couleur d'accentuation","settings.projects.page.field.projectIcon":"Icône du projet","settings.projects.page.field.projectIconBackgroundAria":"Couleur d’arrière-plan de l’icône du projet","settings.projects.page.field.clearIconBackgroundAria":"Effacer l’arrière-plan de l’icône","settings.projects.page.field.clearBackground":"Fond clair","settings.projects.page.field.none":"Aucun","settings.projects.page.field.preview":"Aperçu","settings.projects.page.actions.uploadIcon":"Icône de téléchargement","settings.projects.page.actions.uploading":"Téléchargement...","settings.projects.page.actions.discoverFavicon":"Découvrez Favicon","settings.projects.page.actions.discovering":"Découverte...","settings.projects.page.actions.removeProjectIcon":"Supprimer l'icône du projet","settings.projects.page.actions.removing":"Suppression...","settings.projects.page.actions.undoRemove":"Annuler Supprimer","settings.projects.page.toast.uploadIconFailed":"Échec du téléchargement de l'icône du projet","settings.projects.page.toast.iconUpdated":"Icône du projet mise à jour","settings.projects.page.toast.removeIconFailed":"Échec de la suppression de l'icône du projet","settings.projects.page.toast.iconRemoved":"Icône du projet supprimée","settings.projects.page.toast.discoverIconFailed":"Échec de la découverte de l'icône du projet","settings.projects.page.toast.customIconAlreadySet":"Icône personnalisée déjà définie pour ce projet","settings.projects.page.toast.iconDiscovered":"Icône de projet découverte","settings.projects.page.toast.saveFailed":"Échec de l'enregistrement des paramètres du projet","settings.usage.sidebar.title":"Usage","settings.usage.sidebar.total":"Total {count}","settings.usage.sidebar.actions.toggleAutoRefreshAria":"Activer l'actualisation automatique","settings.usage.sidebar.actions.refreshAria":"Actualiser l'utilisation","settings.usage.sidebar.actions.refreshTitle":"Actualiser l'utilisation","settings.usage.sidebar.tooltip.autoRefresh":"Actualisation automatique des données d'utilisation à un intervalle défini","settings.usage.sidebar.field.intervalPlaceholder":"Intervalle","settings.usage.sidebar.field.display":"Afficher","settings.usage.sidebar.field.displayModePlaceholder":"Mode d'affichage","settings.usage.sidebar.field.displayModeUsage":"Usage","settings.usage.sidebar.field.displayModeRemaining":"Quota restant","settings.usage.sidebar.status.notSet":"Non défini","settings.usage.page.empty.selectProvider":"Sélectionnez un fournisseur pour afficher les détails d'utilisation.","settings.usage.page.header.providerUsage":"Utilisation de {provider}","settings.usage.page.header.refreshing":"Utilisation rafraîchissante...","settings.usage.page.header.lastUpdated":"Dernière mise à jour : {time}","settings.usage.page.header.lastUpdatedWithPlan":"Forfait : {plan} · Dernière mise à jour : {time}","settings.usage.page.options.showInWorkStatusAria":"Afficher dans le panneau d’état du travail","settings.usage.page.options.showInWorkStatus":"Afficher dans le panneau d’état du travail","settings.usage.page.options.showInWorkStatusTooltip":"Lorsqu’elle est activée, l’utilisation de ce fournisseur sera visible dans le panneau d’état du travail.","settings.usage.page.state.noData":"Aucune donnée d'utilisation disponible pour l'instant.","settings.usage.page.state.refreshFailedTitle":"Échec de l'actualisation des données d'utilisation","settings.usage.page.state.providerNotConfiguredTitle":"Fournisseur non configuré","settings.usage.page.state.providerNotConfiguredDescription":"Ajoutez des informations d'identification dans l'onglet Fournisseurs pour activer le suivi de l'utilisation.","settings.usage.page.section.modelQuotas":"Quotas de modèles","settings.usage.page.section.otherModels":"Autres modèles","settings.usage.page.state.noQuotaWindowsTitle":"Aucune fenêtre de quota signalée","settings.usage.page.state.noQuotaWindowsDescription":"Ce fournisseur ne signale actuellement aucune limite de débit ni aucun quota d'utilisation.","settings.usage.pace.status.onTrack":"En bonne voie","settings.usage.pace.status.slightlyFast":"Un peu rapide","settings.usage.pace.status.tooFast":"Trop vite","settings.usage.pace.status.usedUp":"Épuisé","settings.usage.pace.predictionTooltip":"Utilisation prévue à la fin de la fenêtre en fonction du rythme actuel : {prediction}","settings.usage.pace.wait":"Attendez {duration}","settings.usage.pace.prediction":"Précédent : {prediction}","settings.usage.pace.rate":"Rythme : {rate}","settings.usage.pace.waitSeparator":"· Attendez","settings.usage.pace.predictionLabel":"Préd :","settings.remoteInstances.page.title":"Instance distante","settings.remoteInstances.page.description":"Configurez la connexion SSH, le serveur distant et les paramètres de transfert.","settings.remoteInstances.page.empty.selectInstance":"Sélectionnez une instance pour afficher et modifier ses paramètres.","settings.remoteInstances.page.empty.noExtraForwards":"Aucun transfert de port supplémentaire configuré.","settings.remoteInstances.page.section.actions":"Actions","settings.remoteInstances.page.section.actionsDescription":"Connectez-vous, reconnectez-vous, inspectez les journaux ou supprimez cette instance.","settings.remoteInstances.page.section.remoteServer":"Serveur distant","settings.remoteInstances.page.section.remoteServerDescription":"Comment AiWorker est géré et démarré sur l'hôte distant.","settings.remoteInstances.page.section.mainTunnel":"Accès depuis cet ordinateur","settings.remoteInstances.page.section.mainTunnelDescription":"AiWorker tourne sur la machine distante. Ces réglages ne concernent que l’adresse, sur cet ordinateur, qui y mène via le tunnel SSH.","settings.remoteInstances.page.section.authentication":"Authentification","settings.remoteInstances.page.section.authenticationDescription":"Informations d'identification facultatives pour SSH et l'interface utilisateur distante AiWorker.","settings.remoteInstances.page.section.portForwards":"Transferts de ports","settings.remoteInstances.page.section.portForwardsDescription":"Un SSH supplémentaire avance au-delà du tunnel principal.","settings.remoteInstances.page.field.sshCommand":"Commande SSH","settings.remoteInstances.page.field.sshCommandPlaceholder":"ssh utilisateur @ hôte","settings.remoteInstances.page.field.nickname":"Surnom","settings.remoteInstances.page.field.nicknamePlaceholder":"Mon hôte distant","settings.remoteInstances.page.field.connectionTimeoutSeconds":"Délai d'expiration de la connexion (secondes)","settings.remoteInstances.page.field.installMethod":"Méthode d'installation","settings.remoteInstances.page.field.installMethodHint":"Comment AiWorker est installé lors de l’exécution en mode géré.","settings.remoteInstances.page.field.selectInstallMethodPlaceholder":"Sélectionnez la méthode d'installation","settings.remoteInstances.page.field.selectBindHostPlaceholder":"Sélectionnez l'hôte de liaison","settings.remoteInstances.page.field.sshPasswordOptional":"Mot de passe SSH (facultatif)","settings.remoteInstances.page.field.sshPasswordPlaceholder":"Entrez le mot de passe SSH","settings.remoteInstances.page.field.uiPasswordOptional":"Mot de passe de l'interface utilisateur (facultatif)","settings.remoteInstances.page.field.uiPasswordPlaceholder":"Entrez le mot de passe de l'interface utilisateur","settings.remoteInstances.page.field.forwardTypeHint":"Choisissez le transfert local (-L), distant (-R) ou dynamique (-D).","settings.remoteInstances.page.field.typePlaceholder":"Taper","settings.remoteInstances.page.forwardType.local":"Local (-L)","settings.remoteInstances.page.forwardType.remote":"À distance (-R)","settings.remoteInstances.page.forwardType.dynamic":"Dynamique (-D)","settings.remoteInstances.page.forwardTypeDescription.local":"Transférez le trafic local vers une destination distante.","settings.remoteInstances.page.forwardTypeDescription.remote":"Exposez un point de terminaison distant et renvoyez-le à votre ordinateur local.","settings.remoteInstances.page.forwardTypeDescription.dynamic":"Exposez un proxy SOCKS5 local sur SSH.","settings.remoteInstances.page.actions.create":"Créer","settings.remoteInstances.page.actions.cancel":"Annuler","settings.remoteInstances.page.actions.connecting":"Connexion...","settings.remoteInstances.page.actions.reconnecting":"Reconnexion...","settings.remoteInstances.page.actions.reconnectNow":"Reconnectez-vous maintenant","settings.remoteInstances.page.actions.logs":"Journaux SSH","settings.remoteInstances.page.actions.pickRandomPort":"Choisissez un port au hasard","settings.remoteInstances.page.actions.enableForwardAria":"Activer le transfert","settings.remoteInstances.page.actions.openLocal":"Ouvrir localement","settings.remoteInstances.page.actions.addForward":"Ajouter en avant","settings.remoteInstances.page.addDialog.description":"Choisissez un hôte dans votre configuration SSH ou saisissez la connexion vous-même.","settings.remoteInstances.page.addDialog.sourceLabel":"D'où vient la connexion","settings.remoteInstances.page.addDialog.tab.saved":"Depuis la configuration SSH","settings.remoteInstances.page.addDialog.tab.manual":"Saisir moi-même","settings.remoteInstances.page.addDialog.searchPlaceholder":"Rechercher des hôtes","settings.remoteInstances.page.addDialog.emptySaved":"Aucun hôte trouvé dans votre configuration SSH. Saisissez plutôt la connexion vous-même.","settings.remoteInstances.page.addDialog.searchEmpty":"Aucun hôte ne correspond à cette recherche.","settings.remoteInstances.page.addDialog.use":"Utiliser","settings.remoteInstances.page.state.notConnected":"Non connecté","settings.remoteInstances.page.state.connecting":"Connexion en cours","settings.remoteInstances.page.state.ready":"Connecté","settings.remoteInstances.page.state.problem":"Action requise","settings.remoteInstances.page.section.advanced":"Paramètres avancés","settings.remoteInstances.page.section.advancedHint":"Ports, méthode d’installation, mots de passe et redirections supplémentaires. Les valeurs par défaut conviennent à la plupart des connexions.","settings.remoteInstances.page.field.installMethodAuto":"Automatique","settings.remoteInstances.page.error.hint.noRuntime":"La machine distante n’a ni bun ni npm. Installez-en un là-bas, ou basculez cette connexion sur « Déjà en cours d’exécution ».","settings.remoteInstances.page.error.hint.noOpencode":"La CLI opencode n’est pas installée sur la machine distante. Installez-la là-bas (voir opencode.ai), puis reconnectez-vous.","settings.remoteInstances.page.error.action.setUiPassword":"Définir le mot de passe de l’interface","settings.remoteInstances.page.error.action.pickRandomPort":"Utiliser un autre port local","settings.remoteInstances.page.error.action.setRemotePort":"Définir le port distant","settings.remoteInstances.page.validation.externalPortRequired":"Indiquez d’abord un port distant. En mode « Déjà en cours d’exécution », AiWorker doit savoir sur quel port le serveur écoute.","settings.remoteInstances.page.empty.noInstances":"Aucune connexion SSH pour le moment.","settings.remoteInstances.page.field.uiPasswordRequired":"Mot de passe d’interface (obligatoire)","settings.remoteInstances.page.field.uiPasswordMissingForLan":"Obligatoire tant que le serveur distant est accessible sur son réseau.","settings.remoteInstances.page.field.remoteLanAccess":"Accessible sur le réseau distant","settings.remoteInstances.page.field.remoteLanAccessHint":"Autoriser aussi les autres appareils du réseau de la machine distante à ouvrir cet AiWorker directement, sans le tunnel SSH. Un mot de passe d’interface est obligatoire.","settings.remoteInstances.page.field.remoteLanAccessWarning":"N’importe qui sur ce réseau peut atteindre l’AiWorker distant. Seul le mot de passe d’interface ci-dessous le protège.","settings.remoteInstances.page.validation.remoteLanNeedsPassword":"Définissez d’abord un mot de passe d’interface. Sans lui, l’AiWorker distant serait ouvert à tous les appareils de ce réseau.","settings.remoteInstances.page.field.bindHostOption.loopback":"Cet ordinateur seulement (127.0.0.1)","settings.remoteInstances.page.field.bindHostOption.localhost":"Cet ordinateur seulement (localhost)","settings.remoteInstances.page.field.bindHostOption.lan":"Tout appareil de mon réseau (0.0.0.0)","settings.remoteInstances.page.field.sshPasswordHint":"Nécessaire uniquement si cet hôte demande un mot de passe au lieu d’accepter une clé SSH.","settings.remoteInstances.page.field.uiPasswordHintManaged":"Mot de passe qui protégera l’interface AiWorker distante. AiWorker l’applique au serveur qu’il démarre pour vous.","settings.remoteInstances.page.field.uiPasswordHintExternal":"Mot de passe du serveur AiWorker déjà en cours d’exécution sur la machine distante, utilisé pour s’y connecter.","settings.remoteInstances.page.tunnelPreview.caption":"Cette connexion redirige :","settings.remoteInstances.page.empty.noInstancesWithOneImport":"Aucune connexion SSH pour le moment. 1 hôte peut être importé depuis votre configuration SSH.","settings.remoteInstances.page.empty.noInstancesWithImports":"Aucune connexion SSH pour le moment. {count} hôtes peuvent être importés depuis votre configuration SSH.","settings.remoteInstances.page.state.loadingInstances":"Chargement des connexions...","settings.remoteInstances.page.import.loading":"Chargement des hôtes SSH...","settings.remoteInstances.page.import.noneFound":"Aucun hôte SSH trouvé.","settings.remoteInstances.page.import.noneAvailable":"Aucun hôte SSH disponible pour l'importation.","settings.remoteInstances.page.import.patternSuffix":"(modèle)","settings.remoteInstances.page.status.currentLocalUrl":"URL local actuel :","settings.remoteInstances.page.status.reconnectStale":"La reconnexion semble bloquée. Vous pouvez réessayer maintenant.","settings.remoteInstances.page.logsDialog.title":"Journaux SSH","settings.remoteInstances.page.logsDialog.loading":"Chargement des journaux...","settings.remoteInstances.page.logsDialog.empty":"Aucun journal SSH pour l’instant.","settings.remoteInstances.page.patternDialog.title":"Créer à partir d'un motif générique","settings.remoteInstances.page.patternDialog.destinationPlaceholder":"utilisateur @ hôte","settings.remoteInstances.page.phase.resolvingConfiguration":"Résolution de la configuration","settings.remoteInstances.page.phase.checkingAuth":"Vérification de l'authentification","settings.remoteInstances.page.phase.establishingSsh":"Établissement de la connexion SSH","settings.remoteInstances.page.phase.probingRemote":"Sonder l'hôte distant","settings.remoteInstances.page.phase.installingAiWorker":"Installation de AiWorker","settings.remoteInstances.page.phase.updatingAiWorker":"Mise à jour de AiWorker","settings.remoteInstances.page.phase.detectingServer":"Serveur de détection","settings.remoteInstances.page.phase.startingServer":"Démarrage du serveur","settings.remoteInstances.page.phase.forwardingPorts":"Ports de transfert","settings.remoteInstances.page.phase.reconnecting":"Reconnexion","settings.remoteInstances.page.confirm.storeSshPasswordPlaintext":"Stocker le mot de passe SSH en clair sur le disque ?","settings.remoteInstances.page.confirm.storeUiPasswordPlaintext":"Stocker le mot de passe de l'interface utilisateur en clair sur le disque ?","settings.remoteInstances.page.confirm.removeInstance":"Supprimer cette instance distante ?","settings.remoteInstances.page.toast.sshCommandRequired":"La commande SSH est requise","settings.remoteInstances.page.toast.saveFailed":"Échec de l'enregistrement de l'instance","settings.remoteInstances.page.toast.instanceSaved":"Instance enregistrée","settings.remoteInstances.page.toast.instanceCreated":"Instance créée","settings.remoteInstances.page.toast.destinationRequired":"La destination est obligatoire","settings.remoteInstances.page.toast.noLogsToCopy":"Aucun journal à copier","settings.remoteInstances.page.toast.logsCopied":"Journaux copiés","settings.remoteInstances.page.toast.logsCleared":"Journaux effacés","settings.remoteInstances.page.toast.clearLogsFailed":"Échec de la suppression des journaux","settings.remoteInstances.page.toast.instanceUrlUnavailable":"L'instance URL n'est pas disponible","settings.remoteInstances.page.toast.connectFailed":"Échec de la connexion de l'instance","settings.remoteInstances.page.toast.cancelConnectionFailed":"Échec de l'annulation de la connexion","settings.remoteInstances.page.toast.disconnectFailed":"Échec de la déconnexion de l'instance","settings.remoteInstances.page.toast.retryFailed":"Échec de la nouvelle tentative de connexion","settings.remoteInstances.page.toast.instanceRemoved":"Instance supprimée","settings.remoteInstances.page.toast.removeInstanceFailed":"Échec de la suppression de l'instance","settings.aiworker.worktrees.state.selectProject":"Sélectionnez un projet pour gérer les worktrees.","settings.aiworker.worktrees.state.gitOnly":"Les paramètres Worktree ne sont disponibles que pour les dépôts Git.","settings.aiworker.worktrees.setup.title":"Commandes de configuration","settings.aiworker.worktrees.setup.tooltipPrefix":"S'exécute automatiquement dans le nouveau répertoire worktree lorsqu'un worktree est créé. Utiliser","settings.aiworker.worktrees.setup.tooltipSuffix":"pour la racine du projet.","settings.aiworker.worktrees.setup.loading":"Chargement...","settings.aiworker.worktrees.setup.commandPlaceholder":"p. ex. bun install","settings.aiworker.worktrees.setup.removeCommandAria":"Supprimer la commande","settings.aiworker.worktrees.setup.addCommand":"Ajouter une commande","settings.aiworker.worktrees.setup.waitForCommands":"Attendre la fin des commandes de configuration avant de créer ou d'envoyer une session","settings.aiworker.worktrees.setup.waitForCommandsAria":"Attendre les commandes de configuration Worktree avant de créer ou d'envoyer une session","settings.aiworker.worktrees.setup.toast.saveFailed":"Échec de l'enregistrement des commandes de configuration Worktree","settings.aiworker.worktrees.list.title":"Worktrees existants","settings.aiworker.worktrees.list.tooltip":"La suppression d'un worktree supprime également les sessions liées.","settings.aiworker.worktrees.list.loading":"Chargement des worktrees...","settings.aiworker.worktrees.list.empty":"Aucun worktree trouvé pour ce projet","settings.aiworker.worktrees.list.detachedHead":"HEAD détaché","settings.aiworker.worktrees.list.deleteWorktreeAria":"Supprimer le worktree {name}","settings.agents.modelSelector.title":"Sélectionnez le modèle","settings.agents.modelSelector.searchPlaceholder":"Rechercher des modèles","settings.agents.modelSelector.selectPlaceholder":"Sélectionnez le modèle...","settings.agents.modelSelector.notSelected":"Non sélectionné","settings.agents.modelSelector.noModelOptional":"Aucun modèle (facultatif)","settings.agents.modelSelector.section.favorites":"Favoris","settings.agents.modelSelector.section.recents":"Récents","settings.agents.modelSelector.section.recent":"Récent","settings.agents.modelSelector.badge.current":"Actuel","settings.agents.modelSelector.actions.favorite":"Préféré","settings.agents.modelSelector.actions.unfavorite":"Supprimer des favoris","settings.agents.modelSelector.actions.addToFavorites":"Ajouter aux favoris","settings.agents.modelSelector.actions.removeFromFavorites":"Supprimer des favoris","settings.agents.modelSelector.state.noModelsFound":"Aucun modèle trouvé","settings.agents.modelSelector.keyboardHints":"↑↓ naviguer • Entrer sélectionner • Esc fermer","settings.providers.sidebar.title":"Fournisseurs","settings.providers.sidebar.total":"Total {count}","settings.providers.sidebar.actions.connectProviderAria":"Connecter le fournisseur","settings.providers.sidebar.actions.connectProviderTitle":"Connecter le fournisseur","settings.providers.sidebar.empty.title":"Aucun fournisseur trouvé","settings.providers.sidebar.empty.description":"Vérifiez votre configuration OpenCode","settings.providers.sidebar.section.userProviders":"Fournisseurs d'utilisateurs","settings.providers.sidebar.section.projectProviders":"Fournisseurs de projets","settings.providers.page.state.loading":"Chargement...","settings.providers.page.state.unableToLoadProviderList":"Impossible de charger la liste des fournisseurs","settings.providers.page.empty.noProvidersDetected":"Aucun fournisseur détecté","settings.providers.page.empty.checkOpenCodeConfiguration":"Vérifiez votre configuration OpenCode","settings.providers.page.empty.selectProviderFromSidebar":"Sélectionnez un fournisseur dans la barre latérale","settings.providers.page.empty.reviewDetailsAndConfigureAuth":"Vérifier les détails et configurer l'authentification","settings.providers.page.connect.title":"Connecter le fournisseur","settings.providers.page.connect.selectProviderTitle":"Sélectionnez le fournisseur","settings.providers.page.connect.providerField":"Fournisseur","settings.providers.page.connect.selectProviderPlaceholder":"Sélectionnez le fournisseur","settings.providers.page.connect.searchProvidersPlaceholder":"Recherche...","settings.providers.page.connect.noProvidersFound":"Aucun fournisseur trouvé","settings.providers.page.custom.optionLabel":"Autre / Personnalisé","settings.providers.page.custom.title":"Fournisseur personnalisé","settings.providers.page.custom.editTitle":"Modifier le fournisseur personnalisé","settings.providers.page.custom.description":"Ajoutez un fournisseur avec une URL de base, des identifiants, une liste de modèles et un protocole API pris en charge. Enregistré dans la configuration OpenCode pour le chat.","settings.providers.page.custom.field.providerID.label":"ID du fournisseur","settings.providers.page.custom.field.providerID.placeholder":"mon-fournisseur","settings.providers.page.custom.field.providerID.info":"Minuscules, chiffres, tirets et underscores. Utilisé comme ID de fournisseur OpenCode.","settings.providers.page.custom.field.name.label":"Nom affiché","settings.providers.page.custom.field.name.placeholder":"Mon fournisseur","settings.providers.page.custom.field.name.info":"Affiché dans les sélecteurs de fournisseur et de modèle.","settings.providers.page.custom.field.protocol.label":"Protocole API","settings.providers.page.custom.field.protocol.info":"Choisissez le format de requête implémenté par cette API.","settings.providers.page.custom.field.protocol.openaiChat":"OpenAI Chat Completions","settings.providers.page.custom.field.protocol.openaiResponses":"OpenAI Responses","settings.providers.page.custom.field.protocol.anthropicMessages":"Anthropic Messages","settings.providers.page.custom.field.baseURL.label":"URL de base","settings.providers.page.custom.field.baseURL.placeholder":"https://api.example.com/v1","settings.providers.page.custom.field.baseURL.info":"URL de base de l’API compatible OpenAI. Doit commencer par http:// ou https://.","settings.providers.page.custom.field.apiKey.label":"Clé API","settings.providers.page.custom.field.apiKey.placeholder":"sk-... ou {env:VAR_NAME}","settings.providers.page.custom.field.apiKey.info":"Stockée dans l’auth OpenCode, pas par AiWorker. Utilisez {env:VAR_NAME} pour lire une clé depuis l’environnement.","settings.providers.page.custom.field.apiKey.editInfo":"Laissez vide pour conserver l'identifiant existant, ou saisissez une nouvelle clé / {env:VAR_NAME}.","settings.providers.page.custom.field.apiKey.editPlaceholder":"Laissez vide pour conserver la clé existante","settings.providers.page.custom.models.title":"Modèles","settings.providers.page.custom.models.idLabel":"ID du modèle","settings.providers.page.custom.models.idPlaceholder":"gpt-4o","settings.providers.page.custom.models.nameLabel":"Nom du modèle","settings.providers.page.custom.models.namePlaceholder":"GPT-4o","settings.providers.page.custom.models.add":"Ajouter un modèle","settings.providers.page.custom.models.remove":"Supprimer le modèle","settings.providers.page.custom.headers.title":"En-têtes","settings.providers.page.custom.headers.description":"En-têtes de requête optionnels envoyés à chaque appel.","settings.providers.page.custom.headers.keyLabel":"Nom de l’en-tête","settings.providers.page.custom.headers.keyPlaceholder":"X-Custom-Header","settings.providers.page.custom.headers.valueLabel":"Valeur de l’en-tête","settings.providers.page.custom.headers.valuePlaceholder":"valeur","settings.providers.page.custom.headers.add":"Ajouter un en-tête","settings.providers.page.custom.headers.remove":"Supprimer l’en-tête","settings.providers.page.custom.actions.back":"Retour","settings.providers.page.custom.actions.save":"Enregistrer le fournisseur","settings.providers.page.custom.actions.update":"Mettre à jour le fournisseur","settings.providers.page.custom.error.providerID.required":"L’ID du fournisseur est obligatoire","settings.providers.page.custom.error.providerID.format":"Utilisez des minuscules, chiffres, tirets ou underscores","settings.providers.page.custom.error.providerID.exists":"Un fournisseur avec cet ID est déjà connecté","settings.providers.page.custom.error.name.required":"Le nom affiché est obligatoire","settings.providers.page.custom.error.baseURL.required":"L’URL de base est obligatoire","settings.providers.page.custom.error.baseURL.format":"L’URL de base doit commencer par http:// ou https://","settings.providers.page.custom.error.required":"Obligatoire","settings.providers.page.custom.error.duplicate":"Doublon","settings.providers.page.custom.error.apiKey.required":"Une clé API ou {env:VAR_NAME} est requise","settings.providers.page.custom.authFailure.configAfterAuth":"Les identifiants ont été enregistrés, mais pas la configuration du fournisseur. Corrigez l'erreur et réessayez, ou déconnectez pour effacer l'enregistrement partiel.","settings.providers.page.auth.title":"Authentification","settings.providers.page.auth.loadingMethods":"Chargement des méthodes d'authentification...","settings.providers.page.auth.apiKeyLabel":"Clé API","settings.providers.page.auth.apiKeyTooltip":"Les clés sont envoyées directement à OpenCode et ne sont jamais stockées par AiWorker.","settings.providers.page.auth.apiKeyPlaceholder":"sk-...","settings.providers.page.auth.oauthMethodFallback":"Méthode OAuth {index}","settings.providers.page.auth.pasteAuthorizationCodePlaceholder":"Coller le code d'autorisation","settings.providers.page.auth.oauth.starting":"Démarrage de l’autorisation…","settings.providers.page.auth.oauth.waiting":"En attente de l’autorisation…","settings.providers.page.auth.oauth.waitingHint":"Terminez la connexion dans votre navigateur. Laissez cette page ouverte : la connexion se finalisera d’elle-même.","settings.providers.page.auth.oauth.codeHint":"Copiez le code d’autorisation depuis votre navigateur et collez-le ici.","settings.providers.page.auth.oauth.deviceCodeLabel":"Code de l’appareil","settings.providers.page.auth.oauth.linkLabel":"Lien d’autorisation","settings.providers.page.auth.oauth.promptRequired":"Renseignez « {field} » pour continuer","settings.providers.page.auth.oauth.error.sessionExpired":"La demande d’autorisation a expiré. Reconnectez-vous pour la relancer.","settings.providers.page.auth.oauth.error.codeRequired":"Ce fournisseur a besoin du code d’autorisation de votre navigateur.","settings.providers.page.auth.oauth.error.declined":"L’autorisation a été refusée ou n’a pas abouti.","settings.providers.page.auth.oauth.error.invalidInput":"Les informations saisies ont été refusées.","settings.providers.page.auth.connected":"Connecté","settings.providers.page.auth.incomplete":"Identifiants manquants","settings.providers.page.auth.incompleteHint":"· Ajoutez une clé API ou {env:VAR} avant d’utiliser ce fournisseur dans le chat","settings.providers.page.auth.useReconnectHint":"· Utilisez Reconnect pour mettre à jour les informations d'identification","settings.providers.page.connectionDetails.title":"Détails de connexion","settings.providers.page.connectionDetails.configuredIn":"Configuré dans :","settings.providers.page.connectionDetails.noActiveSource":"Aucune source de configuration active","settings.providers.page.connectionDetails.source.authCredentials":"informations d'authentification","settings.providers.page.connectionDetails.source.userConfig":"configuration utilisateur","settings.providers.page.connectionDetails.source.projectConfig":"configuration du projet","settings.providers.page.connectionDetails.source.customConfig":"configuration personnalisée","settings.providers.page.models.title":"Modèles disponibles","settings.providers.page.models.filterPlaceholder":"Filtrer les modèles...","settings.providers.page.models.noModelsMatchFilter":"Aucun modèle ne correspond à ce filtre.","settings.providers.page.models.capability.toolCalling":"Appel d'outil","settings.providers.page.models.capability.reasoning":"Raisonnement","settings.providers.page.models.capability.imageInput":"Saisie d'images","settings.providers.page.models.tokenBadge.context":"cx","settings.providers.page.models.tokenBadge.output":"sortie","settings.providers.page.models.actions.hideModelFromSelectors":"Masquer le modèle des sélecteurs","settings.providers.page.models.actions.showModelInSelectors":"Afficher le modèle dans les sélecteurs","settings.providers.page.models.actions.hideModel":"Masquer le modèle","settings.providers.page.models.actions.showModel":"Afficher le modèle","settings.providers.page.actions.saving":"Enregistrement...","settings.providers.page.actions.saveKey":"Enregistrer la clé","settings.providers.page.actions.connect":"Connecter","settings.providers.page.actions.copyCode":"Copier le code","settings.providers.page.actions.open":"Ouvrir","settings.providers.page.actions.copy":"Copie","settings.providers.page.actions.complete":"Complet","settings.providers.page.actions.continue":"Continuer","settings.providers.page.actions.cancel":"Annuler","settings.providers.page.actions.tryAgain":"Réessayer","settings.providers.page.actions.hide":"Cacher","settings.providers.page.actions.reconnect":"Reconnecter","settings.providers.page.actions.edit":"Modifier","settings.providers.page.actions.disconnecting":"Déconnexion...","settings.providers.page.actions.disconnect":"Déconnecter","settings.providers.page.actions.hideAll":"Tout cacher","settings.providers.page.actions.showAll":"Afficher tout","settings.providers.page.toast.authMethodsLoadFailed":"Échec du chargement des méthodes d'authentification du fournisseur","settings.providers.page.toast.providerSourcesLoadFailed":"Échec du chargement des sources du fournisseur","settings.providers.page.toast.apiKeyRequired":"La clé API est requise","settings.providers.page.toast.apiKeySaveFailed":"Échec de l'enregistrement de la clé API","settings.providers.page.toast.apiKeySaved":"Clé API enregistrée","settings.providers.page.toast.oauthStartFailed":"Échec du démarrage du flux OAuth","settings.providers.page.toast.oauthDetailsMissing":"Aucun détail OAuth renvoyé","settings.providers.page.toast.oauthCompleteFailed":"Échec de la réalisation du flux OAuth","settings.providers.page.toast.oauthCompleted":"Connexion OAuth terminée","settings.providers.page.toast.oauthLinkCopied":"Lien OAuth copié","settings.providers.page.toast.oauthLinkCopyFailed":"Échec de la copie du lien OAuth","settings.providers.page.toast.deviceCodeCopied":"Code de l'appareil copié","settings.providers.page.toast.deviceCodeCopyFailed":"Échec de la copie du code de l'appareil","settings.providers.page.toast.providerDisconnected":"Fournisseur déconnecté","settings.providers.page.toast.providerDisconnectFailed":"Échec de la déconnexion du fournisseur","settings.providers.page.toast.customProviderSaved":"{provider} connecté","settings.providers.page.toast.customProviderSaveFailed":"Échec de l’enregistrement du fournisseur personnalisé","settings.mcp.page.empty.selectServer":"Sélectionnez un serveur MCP dans la barre latérale","settings.mcp.page.empty.addNewOne":"ou ajoutez-en un nouveau","settings.mcp.page.header.newServer":"Nouveau serveur MCP","settings.mcp.page.header.configureNewServer":"Configurer un nouveau serveur MCP","settings.mcp.page.header.transport":"Transport {type}","settings.mcp.page.transport.local":"Local · stdio","settings.mcp.page.transport.remote":"À distance · SSE","settings.mcp.page.status.label.connected":"Connecté","settings.mcp.page.status.label.failed":"Échoué","settings.mcp.page.status.label.needsAuth":"Nécessite une authentification","settings.mcp.page.status.label.needsRegistration":"Nécessite une inscription","settings.mcp.page.status.label.awaitingRestart":"En attente de redémarrage","settings.mcp.page.status.description.awaitingRestart":"Ce serveur est enregistré mais pas encore appliqué. Utilisez « Apply & Restart » pour le charger dans OpenCode — la connexion et l'autorisation seront ensuite disponibles.","settings.mcp.page.status.description.connected":"Connecté et prêt pour OpenCode pour découvrir des outils et des ressources.","settings.mcp.page.status.description.failedDefault":"OpenCode n'a pas pu atteindre ce serveur MCP.","settings.mcp.page.status.description.needsAuth":"Ce serveur MCP distant nécessite une autorisation avant de pouvoir se connecter.","settings.mcp.page.status.description.needsClientRegistrationDefault":"Ce serveur MCP distant nécessite l'enregistrement du client avant que l'autorisation puisse être effectuée.","settings.mcp.page.status.description.disabled":"Ce serveur MCP est désactivé en configuration.","settings.mcp.page.status.description.default":"Actualisez ou testez la connexion pour charger l’état d’exécution en direct.","settings.mcp.page.status.runtimeStatus":"Statut d'exécution","settings.mcp.page.status.projectScopedTo":"Projet limité à {directory}","settings.mcp.page.status.userScoped":"Configuration à l'échelle de l'utilisateur","settings.mcp.page.status.activeProject":"le projet actif","settings.mcp.page.actions.connect":"Connecter","settings.mcp.page.actions.disconnect":"Déconnecter","settings.mcp.page.actions.authorize":"Autoriser","settings.mcp.page.actions.reauthorize":"Réautoriser","settings.mcp.page.actions.clearAuth":"Effacer l'authentification","settings.mcp.page.actions.test":"Test","settings.mcp.page.actions.testConnection":"Tester la connexion","settings.mcp.page.actions.working":"Fonctionnement...","settings.mcp.page.actions.starting":"Démarrage...","settings.mcp.page.actions.clearing":"Effacement...","settings.mcp.page.actions.testing":"Essai...","settings.mcp.page.actions.completing":"Terminer...","settings.mcp.page.actions.completeAuthorization":"Autorisation complète","settings.mcp.page.actions.openInBrowser":"Ouvrir dans le navigateur","settings.mcp.page.actions.copyLink":"Copier le lien","settings.mcp.page.actions.deleting":"Suppression…","settings.mcp.page.auth.authorizationUrl":"Autorisation URL","settings.mcp.page.auth.manualFallbackTitle":"Autorisation manuelle de secours","settings.mcp.page.auth.manualFallbackDescription":"Si le navigateur revient à une autre machine ou affiche un rappel URL avec un code, collez ce URL complet ou le code brut ici.","settings.mcp.page.auth.callbackInputPlaceholder":"Collez le rappel URL ou le code d'autorisation","settings.mcp.page.auth.waitingForOpenCode":"En attendant que OpenCode observe le flux d'autorisation du navigateur terminé...","settings.mcp.page.server.title":"Serveur","settings.mcp.page.server.name":"Nom du serveur","settings.mcp.page.server.namePlaceholder":"mon-serveur-mcp","settings.mcp.page.server.importJson":"Importer à partir de l'extrait de code JSON","settings.mcp.page.server.importJsonTitle":"Importer une configuration complète du serveur MCP à partir d'un extrait de code JSON","settings.mcp.page.server.enable":"Activer le serveur","settings.mcp.page.server.enableAria":"Activer le serveur","settings.mcp.page.server.transportMode":"Mode de transport","settings.mcp.page.connection.command":"Commande","settings.mcp.page.connection.serverUrl":"Serveur URL","settings.mcp.page.connection.serverUrlPlaceholder":"https://mcp.example.com/mcp","settings.mcp.page.connection.pasteCommand":"Commande Coller","settings.mcp.page.connection.pasteCommandTitle":"Collez une commande locale à partir du presse-papiers et divisez-la automatiquement","settings.mcp.page.connection.previewArgs":"Aperçu (arguments {count})","settings.mcp.page.advanced.title":"Options avancées à distance","settings.mcp.page.advanced.configure":"Configurer les options avancées","settings.mcp.page.advanced.autoDetect":"Détection automatique","settings.mcp.page.advanced.custom":"Personnalisé","settings.mcp.page.advanced.headers":"en-têtes","settings.mcp.page.advanced.timeoutMs":"Délai d'expiration (ms)","settings.mcp.page.advanced.timeoutHint":"Laissez vide pour utiliser le délai d'expiration par défaut de OpenCode, MCP.","settings.mcp.page.advanced.requestHeaders":"En-têtes de demande","settings.mcp.page.advanced.headerNamePlaceholder":"Nom de l'en-tête","settings.mcp.page.advanced.pasteHeaders":"Coller les en-têtes","settings.mcp.page.advanced.pasteHeadersTitle":"Coller les lignes d'en-tête KEY=VALUE du presse-papiers","settings.mcp.page.advanced.oauthAutoDetection":"Activer la détection automatique OAuth","settings.mcp.page.advanced.oauthAutoDetectionAria":"Activer la détection automatique OAuth","settings.mcp.page.advanced.oauthClientIdPlaceholder":"ID client OAuth","settings.mcp.page.advanced.oauthClientSecretPlaceholder":"Secret client OAuth","settings.mcp.page.advanced.oauthScopesPlaceholder":"Portées (délimitées par des espaces)","settings.mcp.page.advanced.oauthRedirectUriPlaceholder":"URI de redirection","settings.mcp.page.advanced.oauthHint":"Laissez ces champs vides pour permettre à OpenCode de déduire les paramètres OAuth du serveur MCP.","settings.mcp.page.advanced.oauthCallbackHint":"L'autorisation MCP basée sur le navigateur utilise ce rappel URL lorsque l'URI de redirection est vide :","settings.mcp.page.env.title":"Variables d'environnement","settings.mcp.page.env.key":"Clé","settings.mcp.page.env.value":"Valeur","settings.mcp.page.env.valuePlaceholder":"valeur","settings.mcp.page.env.hide":"Cacher","settings.mcp.page.env.show":"Montrer","settings.mcp.page.env.addVariable":"Ajouter une variable","settings.mcp.page.env.addEnvironmentVariable":"Ajouter une variable d'environnement","settings.mcp.page.env.keyPlaceholder":"API_KEY","settings.mcp.page.env.pasteEnv":"Coller .env","settings.mcp.page.env.pasteEnvTitle":"Coller les lignes KEY=VALUE du presse-papiers","settings.mcp.page.env.plainTextWarning":"⚠ Les valeurs sont stockées sous forme de texte brut dans opencode.json","settings.mcp.page.env.removeVariableAria":"Supprimer une variable","settings.mcp.page.importDialog.title":"Importer l’extrait JSON","settings.mcp.page.importDialog.description":"Collez un extrait complet de MCP JSON à partir de la documentation ou d'un autre fichier de configuration. Les valeurs analysées rempliront ce formulaire pour examen avant de les enregistrer.","settings.mcp.page.importDialog.pasteFromClipboard":"Coller JSON à partir du Presse-papiers","settings.mcp.page.deleteDialog.title":"Supprimer « {name} » ?","settings.mcp.page.deleteDialog.descriptionPrefix":"Cela supprime le serveur de","settings.mcp.page.deleteDialog.descriptionSuffix":"OpenCode devra recharger.","settings.mcp.page.toast.clipboardReadFailed":"Impossible de lire le presse-papier","settings.mcp.page.toast.configImported":"Configuration MCP importée","settings.mcp.page.toast.nameRequired":"Le nom est requis","settings.mcp.page.toast.serverNameExists":"Un serveur portant ce nom existe déjà","settings.mcp.page.toast.localCommandRequired":"La commande ne peut pas être vide pour un serveur local","settings.mcp.page.toast.remoteUrlRequired":"URL ne peut pas être vide pour un serveur distant","settings.mcp.page.toast.serverCreatedReloadFailed":"Le serveur MCP a été créé, mais le rechargement du OpenCode a échoué.","settings.mcp.page.toast.savedReloadFailed":"Enregistré, mais le rechargement du OpenCode a échoué.","settings.mcp.page.toast.retryRefreshHint":"Réessayez d'actualiser ou de rouvrir les paramètres avant d'autoriser ce serveur.","settings.mcp.page.toast.serverCreatedReloading":"Serveur MCP créé. Rechargement du OpenCode…","settings.mcp.page.toast.savedReloading":"Enregistré. Rechargement du OpenCode…","settings.mcp.page.toast.saveFailed":"Échec de l'enregistrement","settings.mcp.page.toast.unexpectedError":"Une erreur s'est produite","settings.mcp.page.toast.serverDeletedReloadFailed":'"{name}" supprimé, mais le rechargement du OpenCode a échoué',"settings.mcp.page.toast.refreshListIfStale":"Actualisez la liste MCP si l'interface utilisateur semble obsolète.","settings.mcp.page.toast.serverDeleted":'"{name}" supprimé',"settings.mcp.page.toast.deleteFailed":"Échec de la suppression","settings.mcp.page.toast.disconnected":"Déconnecté","settings.mcp.page.toast.connected":"Connecté","settings.mcp.page.toast.connectionNeedsAuthorization":"La connexion nécessite une autorisation","settings.mcp.page.toast.connectionNeedsClientRegistration":"La connexion nécessite l'enregistrement du client","settings.mcp.page.toast.connectionFailed":"La connexion a échoué","settings.mcp.page.toast.connectionAttemptFinished":"Tentative de connexion terminée. Actualisez le statut pour plus de détails.","settings.mcp.page.toast.createServerBeforeLiveActions":"Créez le serveur avant d'exécuter des actions en direct","settings.mcp.page.toast.saveBeforeLiveActions":"Enregistrez les modifications avant d'exécuter des actions en direct","settings.mcp.page.toast.refreshStatusFailed":"Échec de l'actualisation du statut du MCP","settings.mcp.page.toast.oauthRedirectUrlBuildFailed":"Impossible de créer la redirection OAuth MCP URL","settings.mcp.page.toast.oauthBrowserCallbackSaveFailed":"Échec de l'enregistrement du rappel du navigateur URL pour l'autorisation MCP","settings.mcp.page.toast.openCodeReloadFailedAfterCallbackSave":"Le rechargement de OpenCode a échoué après l'enregistrement du rappel du navigateur URL","settings.mcp.page.toast.completeAuthorizationInBrowserWithPaste":"Complétez le flux d'autorisation MCP dans votre navigateur, puis collez le code renvoyé ou rappelez URL ici","settings.mcp.page.toast.completeAuthorizationInBrowser":"Complétez le flux d'autorisation MCP dans votre navigateur","settings.mcp.page.toast.openAuthorizationUrlFailed":"Impossible d'ouvrir automatiquement l'autorisation URL","settings.mcp.page.toast.authorizationStartFailed":"Échec du démarrage de l'autorisation","settings.mcp.page.toast.authSessionExpired":"La session d'autorisation a expiré ou a été effacée lors du rechargement. Cliquez à nouveau sur Autoriser.","settings.mcp.page.toast.savedAuthorizationRemoved":"L'autorisation MCP enregistrée a été supprimée","settings.mcp.page.toast.clearAuthorizationFailed":"Échec de l'autorisation","settings.mcp.page.toast.authorizationUrlCopied":"Autorisation URL copiée","settings.mcp.page.toast.authorizationUrlCopyFailed":"Échec de la copie de l'autorisation URL","settings.mcp.page.toast.pasteCallbackOrCodeFirst":"Collez d'abord le rappel URL ou le code d'autorisation","settings.mcp.page.toast.missingServerDetails":"Détails du serveur MCP manquants. Sélectionnez à nouveau le serveur ou collez le rappel complet URL.","settings.mcp.page.toast.authorizationCompleted":"Autorisation MCP terminée","settings.mcp.page.toast.authorizationCompletedFor":"Autorisation MCP complétée pour {name}","settings.mcp.page.toast.authorizationCompleteFailed":"Échec de l'autorisation MCP","settings.mcp.page.toast.enableServerBeforeTest":"Activez ce serveur avant de tester la connexion","settings.mcp.page.toast.connectionTestSucceeded":"Test de connexion réussi","settings.mcp.page.toast.connectionTestFailed":"Le test de connexion a échoué","settings.mcp.page.toast.connectionTestFinished":"Test de connexion terminé. Actualisez le statut pour plus de détails.","settings.mcp.page.toast.authorizationFailed":"L'autorisation a échoué","settings.mcp.page.toast.authorizationStillInProgress":"L'autorisation est toujours en cours dans votre navigateur. Collez le rappel URL ou le code si nécessaire.","settings.mcp.page.toast.noKeyValuePairsFound":"Aucune paire KEY=VALUE trouvée dans le presse-papiers","settings.mcp.page.toast.importedVariablesCount":"Variables importées : {count}","settings.mcp.page.toast.pastedArgumentsCount":"Arguments collés : {count}","settings.shared.projectSelector.fallbackProject":"Projet","settings.shared.projectSelector.switchProjectAria":"Changer de projet","settings.shared.projectSelector.switchProjectTitle":"Changer de projet","settings.aiworker.defaults.title":"Paramètres par défaut de la session","settings.aiworker.defaults.summaryPrefix":"Les nouvelles sessions débuteront avec :","settings.aiworker.defaults.summaryOpenCodeDefault":"Agent OpenCode par défaut","settings.aiworker.defaults.field.defaultModel":"Modèle par défaut","settings.aiworker.defaults.field.defaultThinking":"Pensée par défaut","settings.aiworker.defaults.field.thinkingPlaceholder":"Pensée","settings.aiworker.defaults.field.defaultAgent":"Agent par défaut","settings.aiworker.defaults.field.showDeletionDialogAria":"Afficher la boîte de dialogue de suppression","settings.aiworker.defaults.smallModel.title":"Petit modèle","settings.aiworker.defaults.smallModel.description":"Un modèle économique pour les tâches utilitaires rapides, comme les récapitulatifs et résumés courts.","settings.aiworker.defaults.smallModel.useDefault":"Utiliser le petit modèle par défaut","settings.aiworker.defaults.smallModel.useDefaultAria":"Utiliser le petit modèle par défaut","settings.aiworker.defaults.smallModel.overrideModel":"Modèle de remplacement","settings.aiworker.defaults.walkthroughModel.title":"Modèle du parcours des modifications","settings.aiworker.defaults.walkthroughModel.description":"La revue par IA de vos modifications exige une sortie structurée et de la place pour un diff entier, ce qu’un petit modèle économique ne fournit pas toujours. Les modèles que le catalogue déclare incapables de sortie structurée sont masqués ici. Sans choix explicite, le petit modèle est utilisé.","settings.aiworker.defaults.walkthroughModel.overrideModel":"Modèle du parcours","settings.aiworker.defaults.walkthroughModel.usesSmallModel":"Petit modèle","settings.aiworker.defaults.field.showDeletionDialog":"Afficher la boîte de dialogue de suppression","settings.aiworker.defaults.field.openFilesPreviewAria":"Ouvrir les fichiers prévisualisables en mode aperçu","settings.aiworker.defaults.field.openFilesPreview":"Ouvrir les fichiers prévisualisables en mode aperçu","settings.aiworker.defaults.option.default":"Défaut","settings.aiworker.defaults.option.defaultLowercase":"défaut","settings.aiworker.git.title":"Préférences Git","settings.aiworker.git.changesViewTitle":"Vue des modifications","settings.aiworker.git.changesViewAria":"Git change le mode d'affichage","settings.aiworker.git.option.flatList":"Liste plate","settings.aiworker.git.option.treeView":"Vue arborescente","settings.aiworker.git.optionAria":"Git change de mode d'affichage : {option}","settings.aiworker.git.enableGitmojiAria":"Activer le sélecteur Gitmoji","settings.aiworker.git.enableGitmoji":"Activer le sélecteur Gitmoji","settings.aiworker.git.showGitignoredAria":"Afficher les fichiers gitignorés","settings.aiworker.git.showGitignored":"Afficher les fichiers ignorés par Git","settings.github.page.tooltip.connectAccount":"Connectez un compte GitHub pour les PR et les workflows de problèmes dans l'application.","settings.github.page.avatarAlt.withLogin":"Avatar {login}","settings.github.page.avatarAlt.fallback":"Avatar GitHub","settings.github.page.label.unknownUser":"inconnu","settings.github.page.label.scopes":"Portées : {value}","settings.github.page.label.otherAccounts":"Autres comptes","settings.github.page.accountSource.oauth":"OAuth","settings.github.page.accountSource.cli":"CLI","settings.github.page.actions.disconnect":"Déconnecter","settings.github.page.actions.connect":"Connectez GitHub","settings.github.page.actions.switchTo":"Passer à","settings.github.page.actions.addAccount":"Ajouter un compte","settings.github.page.actions.openGithub":"Ouvrir GitHub","settings.github.page.status.notConnected":"Non connecté","settings.github.page.status.active":"Actif","settings.github.page.flow.title":"Autoriser AiWorker","settings.github.page.flow.description":"Dans GitHub, saisissez le code suivant pour autoriser cet appareil :","settings.github.page.flow.waiting":"En attente d'approbation… (actualisation automatique)","settings.github.page.toast.startConnectFailed":"Échec du démarrage de la connexion GitHub","settings.github.page.toast.connected":"GitHub connecté","settings.github.page.toast.authorizationFailed":"L'autorisation GitHub a échoué","settings.github.page.toast.disconnected":"GitHub déconnecté","settings.github.page.toast.disconnectFailed":"Échec de la déconnexion du GitHub","settings.github.page.toast.accountSwitched":"Le compte GitHub a changé","settings.github.page.toast.accountSwitchFailed":"Échec du changement de compte GitHub","settings.github.page.oauth.title":"Token OAuth GitHub","settings.github.page.ghCli.title":"Token CLI GitHub","settings.github.page.ghCli.activeDescription":"Authentifié via gh CLI","settings.github.page.ghCli.fallbackDescription":"Disponible comme solution de secours si l’authentification AiWorker est supprimée","settings.github.page.ghCli.disabledDescription":"Installé, mais non utilisé comme solution de secours","settings.github.page.ghCli.actions.disable":"Désactiver","settings.github.page.ghCli.actions.enable":"Activer","settings.github.page.toast.ghCliEnabled":"Solution de secours gh CLI activée","settings.github.page.toast.ghCliDisabled":"Solution de secours gh CLI désactivée","settings.github.page.toast.ghCliUpdateFailed":"Échec de la mise à jour du paramètre gh CLI","settings.notifications.page.delivery.title":"Envoi des notifications","settings.notifications.page.delivery.enableAria":"Activer les notifications","settings.notifications.page.delivery.enableLabel":"Activer les notifications","settings.notifications.page.delivery.focusedAria":"Notifier lorsque l'application est ciblée","settings.notifications.page.delivery.focusedLabel":"Notifier lorsque l'application est ciblée","settings.notifications.page.delivery.testAction":"Envoyer une notification de test","settings.notifications.page.delivery.browserPermissionHint":"Votre navigateur peut demander l'autorisation la première fois.","settings.notifications.page.delivery.permissionDenied":"Autorisation de notification refusée. Activez-le dans les paramètres de votre navigateur.","settings.notifications.page.delivery.permissionGrantedButDisabled":"Autorisation accordée, mais les notifications sont désactivées.","settings.notifications.page.delivery.vscodeHint":"Lorsqu'elles sont activées, les notifications sont envoyées via les notifications natives VS Code.","settings.notifications.page.events.title":"Événements de notification","settings.notifications.page.events.completionAria":"Achèvement de l'agent","settings.notifications.page.events.completionLabel":"Achèvement de l'agent","settings.notifications.page.events.subtaskAria":"Achèvement du sous-agent","settings.notifications.page.events.subtaskLabel":"Achèvement du sous-agent","settings.notifications.page.events.errorAria":"Erreurs d'agent","settings.notifications.page.events.errorLabel":"Erreurs d'agent","settings.notifications.page.events.questionAria":"Questions des agents","settings.notifications.page.events.questionLabel":"Questions aux agents","settings.notifications.page.template.title":"Modèles de notifications","settings.notifications.page.template.variablesLabel":"Variables :","settings.notifications.page.template.event.completion":"achèvement","settings.notifications.page.template.event.subtask":"Achèvement du sous-agent","settings.notifications.page.template.event.error":"erreur","settings.notifications.page.template.event.question":"question","settings.notifications.page.template.field.title":"Titre","settings.notifications.page.template.field.message":"Message","settings.notifications.page.template.defaults.completion.title":"{agent_name} est prêt","settings.notifications.page.template.defaults.completion.message":"{model_name} a terminé la tâche","settings.notifications.page.template.defaults.error.title":"Erreur d'outil","settings.notifications.page.template.defaults.error.message":"{last_message}","settings.notifications.page.template.defaults.question.title":"Entrée nécessaire","settings.notifications.page.template.defaults.question.message":"{last_message}","settings.notifications.page.template.defaults.subtask.title":"{agent_name} est prêt","settings.notifications.page.template.defaults.subtask.message":"{model_name} a terminé la tâche","settings.notifications.page.summary.title":"Résumé de l'IA","settings.notifications.page.summary.toggleAria":"Résumer le dernier message","settings.notifications.page.summary.toggleLabel":"Résumer le dernier message","settings.notifications.page.summary.requiresTemplateVariable":"Nécessite","settings.notifications.page.summary.modelLabel":"Modèle de synthèse","settings.notifications.page.summary.modelTooltip":"Utilisé pour les notifications et les résumés vocaux.","settings.notifications.page.summary.notSelected":"Non sélectionné","settings.notifications.page.summary.thresholdLabel":"Seuil","settings.notifications.page.summary.thresholdHint":"Les messages plus longs seront résumés","settings.notifications.page.summary.resetThresholdAria":"Réinitialiser le seuil","settings.notifications.page.summary.lengthLabel":"Longueur","settings.notifications.page.summary.lengthHint":"Longueur de caractères cible du résumé","settings.notifications.page.summary.resetLengthAria":"Réinitialiser la longueur du résumé","settings.notifications.page.summary.maxLengthLabel":"Longueur maximale","settings.notifications.page.summary.maxLengthHint":"Tronquer {last_message} à cette longueur","settings.notifications.page.summary.resetMaxLengthAria":"Réinitialiser la longueur maximale du message","settings.notifications.page.push.title":"Notifications push en arrière-plan","settings.notifications.page.push.enableAria":"Activer les notifications push","settings.notifications.page.push.enableLabel":"Activer les notifications push","settings.notifications.page.push.unsupportedHint":"Push non pris en charge. Desktop Chrome/Edge et Android prennent en charge le push. iOS nécessite une PWA installée.","settings.notifications.page.push.supportedHint":"Recevez des alertes via le service en arrière-plan de votre système d'exploitation","settings.notifications.page.push.loadingAria":"Chargement","settings.notifications.page.toast.permissionDenied.title":"Autorisation de notification refusée","settings.notifications.page.toast.permissionDenied.description":"Veuillez activer les notifications dans les paramètres de votre navigateur.","settings.notifications.page.toast.permissionDenied.enableInBrowser":"Activez les notifications dans les paramètres de votre navigateur.","settings.notifications.page.toast.requestPermissionFailed":"Échec de la demande d'autorisation de notification","settings.notifications.page.toast.notificationsApiUnavailable":"Notifications API non disponible","settings.notifications.page.toast.testNotificationSent":"Notification de test envoyée avec succès","settings.notifications.page.toast.testNotificationFailed":"Échec de l'envoi de la notification de test","settings.notifications.page.toast.pushUnsupported":"Notifications push non prises en charge","settings.notifications.page.toast.pushApiUnavailable":"Poussez API non disponible","settings.notifications.page.toast.pushKeyLoadFailed":"Échec du chargement de la touche push","settings.notifications.page.toast.enableBackgroundFailed":"Échec de l'activation des notifications en arrière-plan","settings.notifications.page.toast.backgroundEnabled":"Notifications en arrière-plan activées","settings.notifications.page.toast.backgroundDisabled":"Notifications en arrière-plan désactivées","settings.notifications.page.testNotification.title":"Avis de test","settings.notifications.page.testNotification.body":"Il s'agit d'une notification de test de AiWorker.","settings.voice.page.section.speechRecognition":"Reconnaissance vocale","settings.voice.page.field.enableVoiceInput":"Activer la saisie vocale","settings.voice.page.field.enableVoiceInputAria":"Activer la saisie vocale (dictée)","settings.voice.page.section.playbackAndSummary":"Lecture","settings.voice.page.field.provider":"Fournisseur","settings.voice.page.provider.browser":"Navigateur","settings.voice.page.provider.openai":"OpenAI","settings.voice.page.provider.custom":"Personnalisé","settings.voice.page.provider.say":"Dire","settings.voice.page.provider.server":"Serveur","settings.voice.page.provider.local":"Local","settings.voice.page.tooltip.sttLocal":"Transcription locale sur le serveur AiWorker. Les modèles se téléchargent automatiquement ; aucune clé d'API requise.","settings.voice.page.tooltip.localTts":"Synthèse locale sur le serveur AiWorker (Kokoro pour l’anglais ; les modèles des autres langues sont téléchargés à la première utilisation). Aucune clé API requise.","settings.voice.page.field.followTextLanguage":"Adapter la voix à la langue du texte","settings.voice.page.field.followTextLanguageAria":"Adapter la voix à la langue du texte","settings.voice.page.field.followTextLanguageInfo":"Si une réponse est dans une autre langue, une voix pour cette langue est utilisée : une voix macOS adaptée ou un modèle local téléchargé à la première utilisation.","settings.voice.page.stt.model.parakeetV2":"Parakeet v2 (anglais)","settings.voice.page.stt.model.parakeetV3":"Parakeet v3 (25 langues européennes)","settings.voice.page.stt.model.whisperBase":"Whisper base (multilingue)","settings.voice.page.stt.model.whisperTiny":"Whisper tiny (multilingue)","settings.voice.page.stt.badge.bestForEnglish":"Idéal pour l’anglais","settings.voice.page.stt.badge.bestForMultilingual":"Idéal multilingue","settings.voice.page.stt.meta.accuracy":"Précision","settings.voice.page.stt.meta.speed":"Vitesse","settings.voice.page.stt.modelInstalled":"Modèle installé","settings.voice.page.stt.modelDownloading":"Téléchargement du modèle...","settings.voice.page.stt.modelDownloadingProgress":"Téléchargement du modèle... {percent}%","settings.voice.page.stt.modelNotInstalled":"Modèle non téléchargé","settings.voice.page.stt.modelDownload":"Télécharger","settings.voice.page.stt.modelDelete":"Supprimer le modèle","settings.voice.page.stt.modelRetry":"Réessayer","settings.voice.page.provider.wasm":"Local","settings.voice.page.stt.wasmModel":"Modèle Whisper","settings.voice.page.stt.wasmLoaded":"Modèle chargé, prêt","settings.voice.page.stt.wasmDownloading":"Téléchargement du modèle...","settings.voice.page.stt.wasmLoading":"Chargement du modèle...","settings.voice.page.stt.wasmNotLoaded":"Le modèle se chargera lors de la première utilisation vocale","settings.voice.page.stt.wasmDownload":"Charger","settings.voice.page.stt.wasmRetry":"Réessayer","settings.voice.page.tooltip.browser":"Gratuit, hors ligne, prise en charge mobile limitée.","settings.voice.page.tooltip.openai":"Haute qualité, prêt pour le mobile, nécessite une clé API.","settings.voice.page.tooltip.custom":"Serveur compatible OpenAI (par exemple Kokoro).","settings.voice.page.tooltip.say":"Natif macOS. Rapide, gratuit, hors ligne.","settings.voice.page.tooltip.sttBrowser":"Discours Web API (Chrome/Edge). Gratuit, aucune configuration.","settings.voice.page.tooltip.sttServer":"Serveur Whisper compatible OpenAI. Une meilleure précision, dans n’importe quelle langue.","settings.voice.page.field.apiKey":"Clé API","settings.voice.page.field.apiKeyHintUsingConfig":"Utiliser la clé de la configuration","settings.voice.page.field.apiKeyHintRequired":"OpenAI TTS nécessite une clé API","settings.voice.page.field.apiKeyHintProvide":"Fournissez votre clé OpenAI","settings.voice.page.field.serverUrl":"Serveur URL","settings.voice.page.field.serverUrlHint":"Base URL du serveur TTS compatible OpenAI","settings.voice.page.field.model":"Modèle","settings.voice.page.field.voice":"Voix","settings.voice.page.field.voiceIdentifierHint":"Identifiant vocal pris en charge par le serveur","settings.voice.page.field.configuredAbove":"Configuré ci-dessus","settings.voice.page.actions.preview":"Aperçu","settings.voice.page.field.selectVoicePlaceholder":"Sélectionnez la voix","settings.voice.page.field.auto":"Auto","settings.voice.page.field.speechRate":"Taux de parole","settings.voice.page.field.speechPitch":"Hauteur de la voix","settings.voice.page.field.speechVolume":"Volume de la parole","settings.voice.page.field.language":"Langue","settings.voice.page.field.selectLanguagePlaceholder":"Sélectionnez la langue","settings.voice.page.field.sttBrowserSupportError":"MediaRecorder ou AudioContext ne sont pas disponibles dans ce navigateur. Le serveur STT peut ne pas fonctionner.","settings.voice.page.field.sttServerUrlHint":"Base URL du serveur compatible Whisper","settings.voice.page.field.sttLanguageHint":"Code BCP-47 (par exemple en, fr). Laissez vide pour la détection automatique.","settings.voice.page.field.silenceThreshold":"Seuil de silence","settings.voice.page.field.silenceHold":"Maintien du silence","settings.voice.page.field.transcribeOnStopAria":"Transcrire à l'arrêt de l'enregistrement","settings.voice.page.field.transcribeOnStop":"Transcrire à l'arrêt","settings.voice.page.field.millisecondsUnit":"MS","settings.voice.page.field.messageReadAloudButtonAria":"Bouton de lecture du message à voix haute","settings.voice.page.field.messageReadAloudButton":"Bouton Message lu à haute voix","settings.voice.page.field.summarizeBeforePlaybackAria":"Résumer avant la lecture","settings.voice.page.field.summarizeBeforePlayback":"Résumer avant la lecture","settings.voice.page.field.summarizeVoiceModeResponsesAria":"Résumer les réponses en mode vocal","settings.voice.page.field.summarizeVoiceModeResponses":"Résumer les réponses en mode vocal","settings.voice.page.field.summarizationThreshold":"Seuil de synthèse","settings.voice.page.field.summaryMaxLength":"Longueur maximale du résumé","settings.voice.page.hint.shiftClickPrefix":"Presse","settings.voice.page.hint.shiftClickSuffix":"sur le bouton du micro pour basculer en mode continu","settings.voice.page.preview.browserVoiceFallback":"la voix de votre navigateur","settings.voice.page.preview.voiceLine":"Bonjour! Je m'appelle {voiceName}. C'est ainsi que je parle.","settings.voice.page.preview.customServerLine":"Bonjour! Ceci est un aperçu du serveur TTS personnalisé.","settings.aiworker.visual.section.colorMode":"Mode couleur","settings.aiworker.visual.section.colorModeAndTheme":"Mode couleur et thème","settings.aiworker.visual.section.localization":"Localisation","settings.aiworker.visual.section.spacingAndLayout":"Espacement et disposition","settings.aiworker.visual.section.densityAndType":"Densité et typographie","settings.aiworker.visual.section.appInstall":"Installation de l’app","settings.aiworker.visual.section.navigation":"Navigation","settings.aiworker.visual.section.chatRenderMode":"Mode de rendu du chat","settings.aiworker.visual.section.chatRenderModeAria":"Mode de rendu du chat","settings.aiworker.visual.section.chatDisplay":"Affichage","settings.aiworker.visual.section.chatMessageOptions":"Options des messages","settings.aiworker.visual.section.chatFeatures":"Fonctionnalités","settings.aiworker.visual.section.messageStreamTransport":"Transport de flux de messages","settings.aiworker.visual.section.activityDefault":"Activité par défaut","settings.aiworker.visual.section.activityDefaultAria":"Mode d'activité par défaut","settings.aiworker.visual.section.showToolsOpenedByDefault":"Afficher les outils ouverts par défaut","settings.aiworker.visual.section.sessionAssistance":"Assistance de session","settings.aiworker.visual.section.reasoning":"Raisonnement","settings.aiworker.visual.section.streaming":"Streaming","settings.aiworker.visual.field.streamingAutoFollow":"Suivre le nouveau contenu pendant le streaming","settings.aiworker.visual.field.streamingAutoFollowAria":"Suivre automatiquement le nouveau contenu pendant la diffusion d’une réponse","settings.aiworker.visual.field.streamingAutoFollowInfo":"Pendant qu’une réponse arrive, la vue glisse vers le contenu le plus récent. Désactivez pour garder la vue immobile et défiler manuellement ; envoyer un message depuis le milieu de la conversation laisse alors aussi la vue en place.","settings.aiworker.visual.section.messageAppearance":"Apparence des messages","settings.aiworker.visual.section.toolsAndFiles":"Outils et fichiers","settings.aiworker.visual.section.composer":"Zone de saisie","settings.aiworker.visual.section.userMessageRendering":"Rendu des messages utilisateur","settings.aiworker.visual.section.userMessageRenderingAria":"Mode de rendu des messages utilisateur","settings.aiworker.visual.section.mermaidRendering":"Rendu Mermaid","settings.aiworker.visual.section.mermaidRenderingAria":"Mode de rendu Mermaid","settings.aiworker.visual.section.diffLayout":"Disposition différentielle","settings.aiworker.visual.section.diffLayoutAria":"Disposition différentielle","settings.aiworker.visual.section.privacy":"Confidentialité","settings.aiworker.visual.field.lightTheme":"Thème clair","settings.aiworker.visual.field.darkTheme":"Thème sombre","settings.aiworker.visual.field.selectLightThemeAria":"Sélectionnez le thème de la lumière","settings.aiworker.visual.field.selectDarkThemeAria":"Sélectionnez un thème sombre","settings.aiworker.visual.field.selectThemePlaceholder":"Sélectionner un thème","settings.aiworker.visual.field.timeFormat":"Format de l'heure","settings.aiworker.visual.field.weekStartsOn":"La semaine commence le","settings.aiworker.visual.field.selectTimeFormatAria":"Sélectionnez le format de l'heure","settings.aiworker.visual.field.selectWeekStartAria":"Sélectionnez le début de la semaine","settings.aiworker.visual.actions.reloadThemes":"Recharger les thèmes","settings.aiworker.visual.actions.reloadingThemes":"Rechargement des thèmes...","settings.aiworker.visual.field.themeImportInfoAria":"Informations sur l'importation du thème","settings.aiworker.visual.field.themeImportInfoTooltip":"Importez des thèmes personnalisés depuis ~/.config/openchamber/themes/","settings.aiworker.visual.field.installAppName":"Installer le nom de l'application","settings.aiworker.visual.field.installAppNameHint":"Utilisé par le processus d'installation de PWA.","settings.aiworker.visual.field.pwaInstallAppNameAria":"Nom de l'application d'installation PWA","settings.aiworker.visual.actions.resetInstallAppNameAria":"Réinitialiser le nom de l'application d'installation","settings.aiworker.visual.field.installOrientation":"Orientation de l'installation","settings.aiworker.visual.field.installOrientationHint":"Utilisé par l'application Web installée. Réinstallez la PWA après avoir modifié cela.","settings.aiworker.visual.field.pwaInstallOrientationAria":"Orientation d'installation de la PWA","settings.aiworker.visual.field.selectOrientationPlaceholder":"Sélectionner l'orientation","settings.aiworker.visual.actions.resetInstallOrientationAria":"Réinitialiser l'orientation d'installation","settings.aiworker.visual.field.mobileKeyboardMode":"Comportement du clavier mobile","settings.aiworker.visual.field.mobileKeyboardModeHint":"Le comportement par défaut du navigateur est le plus sûr. Redimensionner le contenu demande aux navigateurs pris en charge de réduire l'application lorsque le clavier à l'écran s'ouvre.","settings.aiworker.visual.field.mobileKeyboardModeAria":"Comportement du clavier mobile","settings.aiworker.visual.field.selectMobileKeyboardModePlaceholder":"Sélectionner le comportement du clavier","settings.aiworker.visual.actions.resetMobileKeyboardModeAria":"Réinitialiser le comportement du clavier mobile","settings.aiworker.visual.field.interfaceFontSize":"Taille de la police de l'interface","settings.aiworker.visual.field.interfaceFont":"Police d'interface","settings.aiworker.visual.field.selectInterfaceFontAria":"Sélectionnez la police de l'interface","settings.aiworker.visual.actions.resetInterfaceFontAria":"Réinitialiser la police de l'interface","settings.aiworker.visual.field.fontSizePercentageAria":"Pourcentage de taille de police","settings.aiworker.visual.actions.resetFontSizeAria":"Réinitialiser la taille de la police","settings.aiworker.visual.field.terminalFontSize":"Taille de la police du terminal","settings.aiworker.visual.field.terminalShell":"Shell du terminal","settings.aiworker.visual.field.terminalShellAria":"Sélectionner le shell du terminal","settings.aiworker.visual.field.terminalShellHint":"Redémarrez le terminal pour appliquer cette modification à la session actuelle.","settings.aiworker.visual.field.terminalLoginShell":"Démarrer comme shell de connexion","settings.aiworker.visual.option.terminalShell.auto":"Automatique","settings.aiworker.visual.field.editorFontSize":"Taille de la police de l'éditeur","settings.aiworker.visual.field.codeFont":"Police de code","settings.aiworker.visual.field.selectCodeFontAria":"Sélectionnez la police du code","settings.aiworker.visual.actions.resetCodeFontAria":"Réinitialiser la police du code","settings.aiworker.visual.actions.resetTerminalFontSizeAria":"Réinitialiser la taille de la police du terminal","settings.aiworker.visual.actions.resetEditorFontSizeAria":"Réinitialiser la taille de la police de l'éditeur","settings.aiworker.visual.field.spacingDensity":"Densité d'espacement","settings.aiworker.visual.actions.resetSpacingAria":"Réinitialiser l'espacement","settings.aiworker.visual.field.inputBarOffset":"Décalage de la barre d'entrée","settings.aiworker.visual.field.inputBarOffsetTooltip":"Augmentez la barre de saisie pour éviter les obstructions de l'écran au niveau du système d'exploitation, comme les barres d'accueil.","settings.aiworker.visual.actions.resetInputBarOffsetAria":"Réinitialiser le décalage de la barre d'entrée","settings.aiworker.visual.field.terminalQuickKeysAria":"Touches rapides du terminal","settings.aiworker.visual.field.terminalQuickKeys":"Touches rapides du terminal","settings.aiworker.visual.field.sessionTabsGroup":"Onglets de session","settings.aiworker.visual.field.sessionTabs":"Afficher les sessions sous forme d'onglets dans l'en-tête","settings.aiworker.visual.field.sessionTabsAria":"Basculer les onglets de session dans l'en-tête","settings.aiworker.visual.field.sessionTabsInfo":"Les sessions ouvertes s'alignent en onglets dans l'en-tête. Désactivé, l'en-tête n'affiche que le titre de la session.","settings.aiworker.visual.field.terminalQuickKeysTooltip":"Afficher Esc, Ctrl, Flèches dans la vue du terminal","settings.aiworker.visual.field.activityDefaultModeAria":"Mode d'activité par défaut : {option}","settings.aiworker.visual.field.showExpandedBashToolsAria":"Afficher les outils bash étendus","settings.aiworker.visual.field.showExpandedEditToolsAria":"Afficher les outils d'édition étendus","settings.aiworker.visual.field.bash":"Bash","settings.aiworker.visual.field.editTools":"Outils d'édition","settings.aiworker.visual.field.userMessageRenderingAria":"Rendu du message utilisateur : {option}","settings.aiworker.visual.field.mermaidRenderingAria":"Rendu Mermaid : {option}","settings.aiworker.visual.field.diffLayoutAria":"Disposition des différences : {option}","settings.aiworker.visual.field.sessionRecap":"Générer le récapitulatif de session","settings.aiworker.visual.field.sessionRecapAria":"Générer un récapitulatif quand l'agent termine","settings.aiworker.visual.field.sessionSuggestion":"Générer une suggestion de prochain message utilisateur","settings.aiworker.visual.field.sessionSuggestionAria":"Générer un prochain message utilisateur suggéré quand l'agent termine","settings.aiworker.visual.field.sessionGoal":"Activer les objectifs de session","settings.aiworker.visual.field.sessionGoalAria":"Faire travailler la session automatiquement vers un objectif","settings.aiworker.visual.goal.sectionTitle":"Objectif","settings.aiworker.visual.goal.budgetLabel":"Budget de tokens par défaut","settings.aiworker.visual.goal.budgetAria":"Appliquer un budget de tokens par défaut aux nouveaux objectifs","settings.aiworker.visual.goal.description":"Armez le bouton cible du composeur et le prochain message devient un objectif : l'agent continue d'y travailler automatiquement, audité par le petit modèle, même en votre absence.","settings.aiworker.visual.field.showReasoningTracesAria":"Afficher les traces de raisonnement","settings.aiworker.visual.field.showReasoningTraces":"Afficher les traces de raisonnement","settings.aiworker.visual.field.collapsibleThinkingBlocksAria":"Activer les blocs de raisonnement pliables","settings.aiworker.visual.field.collapsibleThinkingBlocks":"Activer les blocs de raisonnement pliables","settings.aiworker.visual.field.collapsibleUserMessagesAria":"Réduire les longs messages utilisateur","settings.aiworker.visual.field.collapsibleUserMessages":"Réduire les longs messages utilisateur","settings.aiworker.visual.field.stickyUserHeaderAria":"En-tête utilisateur collant","settings.aiworker.visual.field.stickyUserHeader":"En-tête utilisateur collant","settings.aiworker.visual.field.promptNavigatorEnabledAria":"Navigateur de prompts","settings.aiworker.visual.field.promptNavigatorEnabled":"Navigateur de prompts","settings.aiworker.visual.field.autoSaveEnabledAria":"Enregistrement automatique des fichiers","settings.aiworker.visual.field.autoSaveEnabled":"Enregistrement automatique des fichiers","settings.aiworker.visual.field.autoSaveEnabledInfo":"Enregistre automatiquement les modifications après l’arrêt de la saisie. Désactivez pour exiger un enregistrement manuel.","settings.aiworker.visual.field.wideChatLayoutAria":"Large disposition de discussion","settings.aiworker.visual.field.wideChatLayout":"Disposition de discussion large","settings.aiworker.visual.field.showSplitAssistantMessageActionsAria":"Actions intégrées de l'assistant","settings.aiworker.visual.field.showSplitAssistantMessageActions":"Actions intégrées de l'assistant","settings.aiworker.visual.field.showSplitAssistantMessageActionsTooltip":"Afficher Copier la réponse, Enregistrer en image et Lire à haute voix sur les blocs de texte de l'assistant qui apparaissent avant les appels d'outil suivants dans la même réponse.","settings.aiworker.visual.field.allowPromptingSubagentSessionsAria":"Autoriser les requêtes dans les sessions de sous-agents","settings.aiworker.visual.field.allowPromptingSubagentSessions":"Autoriser les requêtes dans les sessions de sous-agents","settings.aiworker.visual.field.draftStartersVisible":"Afficher les raccourcis sur l’écran de nouvelle session","settings.aiworker.visual.field.draftStartersVisibleAria":"Afficher les raccourcis sur l’écran de nouvelle session","settings.aiworker.visual.field.showToolFileIconsAria":"Afficher les icônes des fichiers d'outils","settings.aiworker.visual.field.codeBlockLineWrapAria":"Renvoyer à la ligne les blocs de code","settings.aiworker.visual.field.codeBlockLineWrap":"Renvoyer à la ligne les blocs de code","settings.aiworker.visual.field.showToolFileIcons":"Afficher les icônes des fichiers d'outils","settings.aiworker.visual.field.showDotfilesAria":"Afficher les fichiers de points","settings.aiworker.visual.field.showDotfiles":"Afficher les fichiers cachés","settings.aiworker.visual.field.queueMessagesByDefaultAria":"Mettre les messages en file d'attente par défaut","settings.aiworker.visual.field.queueMessagesByDefault":"Messages en file d'attente par défaut","settings.aiworker.visual.field.queueMessagesByDefaultTooltip":"Lorsqu'il est activé, Enter met les messages en file d'attente. Utilisez {modifier}+Entrée pour envoyer.","settings.aiworker.visual.field.persistDraftMessagesAria":"Conserver les brouillons de messages","settings.aiworker.visual.field.persistDraftMessages":"Conserver les brouillons de messages","settings.aiworker.visual.field.enableSpellcheckInTextInputsAria":"Activer la vérification orthographique dans les saisies de texte","settings.aiworker.visual.field.enableSpellcheckInTextInputs":"Activer la vérification orthographique dans les entrées de texte","settings.aiworker.visual.field.largeTextPaste":"Collage de texte volumineux","settings.aiworker.visual.field.largeTextPasteHint":"Lors d’un collage de plus d’environ 2 000 caractères ou 25 lignes, choisir de joindre le texte comme fichier, de le coller en ligne ou de demander à chaque fois.","settings.aiworker.visual.field.largeTextPasteAria":"Comportement du collage de texte volumineux","settings.aiworker.visual.field.largeTextPasteOptionAria":"Collage de texte volumineux : {option}","settings.aiworker.visual.option.largeTextPaste.ask.label":"Demander à chaque fois","settings.aiworker.visual.option.largeTextPaste.attach.label":"Joindre comme fichier","settings.aiworker.visual.option.largeTextPaste.inline.label":"Coller en ligne","settings.aiworker.visual.field.sendAnonymousUsageReportsAria":"Envoyer des rapports d'utilisation anonymes","settings.aiworker.visual.field.sendAnonymousUsageReports":"Envoyer des rapports d'utilisation anonymes","settings.aiworker.visual.field.sendAnonymousUsageReportsHint":"Nous aide à comprendre quelles versions de l'application sont activement utilisées afin que nous puissions prioriser les améliorations. Seules la version de l’application, la plate-forme et le runtime sont collectés – aucune donnée personnelle ni code.","settings.aiworker.visual.option.themeMode.system":"Système","settings.aiworker.visual.option.themeMode.system.description":"Suivre le réglage système","settings.aiworker.visual.option.themeMode.light":"Clair","settings.aiworker.visual.option.themeMode.light.description":"Toujours utiliser l’apparence claire","settings.aiworker.visual.option.themeMode.dark":"Sombre","settings.aiworker.visual.option.themeMode.dark.description":"Toujours utiliser l’apparence sombre","settings.aiworker.visual.option.diffLayout.dynamic.label":"Dynamique","settings.aiworker.visual.option.diffLayout.dynamic.description":"Choisit automatiquement entre la vue côte à côte et la vue intégrée selon le contenu modifié.","settings.aiworker.visual.option.diffLayout.inline.label":"Toujours intégré","settings.aiworker.visual.option.diffLayout.inline.description":"Afficher sous forme de vue unifiée unique.","settings.aiworker.visual.option.diffLayout.sideBySide.label":"Toujours côte à côte","settings.aiworker.visual.option.diffLayout.sideBySide.description":"Comparez les fichiers originaux et modifiés.","settings.aiworker.visual.option.mermaidRendering.svg.label":"SVG","settings.aiworker.visual.option.mermaidRendering.svg.description":"Rendre les diagrammes sous forme de graphiques évolutifs.","settings.aiworker.visual.option.mermaidRendering.ascii.label":"ASCII","settings.aiworker.visual.option.mermaidRendering.ascii.description":"Rendre les diagrammes sous forme de blocs de texte.","settings.aiworker.visual.option.pwaOrientation.system.label":"Suivre le système","settings.aiworker.visual.option.pwaOrientation.system.description":"Respectez le réglage de rotation de l'appareil.","settings.aiworker.visual.option.pwaOrientation.portrait.label":"Verrouillage portrait","settings.aiworker.visual.option.pwaOrientation.portrait.description":"Installez l'application verrouillée en mode portrait.","settings.aiworker.visual.option.pwaOrientation.landscape.label":"Verrouillage paysage","settings.aiworker.visual.option.pwaOrientation.landscape.description":"Installez l'application verrouillée en mode paysage.","settings.aiworker.visual.option.mobileKeyboardMode.native.label":"Suivre le navigateur","settings.aiworker.visual.option.mobileKeyboardMode.native.description":"Utilisez les paramètres par défaut du navigateur pour les modifications de panoramique et de fenêtre d'affichage lorsque le clavier s'ouvre.","settings.aiworker.visual.option.mobileKeyboardMode.resizeContent.label":"Redimensionner le contenu","settings.aiworker.visual.option.mobileKeyboardMode.resizeContent.description":"Demandez aux navigateurs pris en charge de réduire la présentation de l'application au lieu de vous fier uniquement au panoramique.","settings.aiworker.visual.option.userMessageRendering.markdown.label":"Markdown","settings.aiworker.visual.option.userMessageRendering.markdown.description":"Rendre le texte utilisateur avec un formatage markdown.","settings.aiworker.visual.option.userMessageRendering.plain.label":"Texte brut","settings.aiworker.visual.option.userMessageRendering.plain.description":"Rendre le texte utilisateur avec des espaces et des liens préservés.","chat.message.userText.collapseAria":"Réduire le message utilisateur","settings.aiworker.visual.option.chatRenderMode.sorted.label":"Trié","settings.aiworker.visual.option.chatRenderMode.sorted.description":"Restituez les messages de l'assistant terminés sans diffusion en direct.","settings.aiworker.visual.option.chatRenderMode.live.label":"En direct","settings.aiworker.visual.option.chatRenderMode.live.description":"Diffusez le texte et les outils de l’assistant dès leur arrivée.","settings.aiworker.visual.option.messageTransport.auto.label":"Auto","settings.aiworker.visual.option.messageTransport.auto.description":"Préférez WebSocket et revenez à SSE si besoin.","settings.aiworker.visual.option.messageTransport.ws.label":"WebSocket","settings.aiworker.visual.option.messageTransport.ws.description":"Utilisez WebSocket pour la diffusion de messages.","settings.aiworker.visual.option.messageTransport.sse.label":"SSE","settings.aiworker.visual.option.messageTransport.sse.description":"Utilisez les événements envoyés par le serveur pour la diffusion de messages.","settings.aiworker.visual.option.activityRenderMode.collapsed.label":"Effondré","settings.aiworker.visual.option.activityRenderMode.collapsed.description":"Gardez l'activité réduite par défaut.","settings.aiworker.visual.option.activityRenderMode.summary.label":"Étendu","settings.aiworker.visual.option.activityRenderMode.summary.description":"Développez Activité par défaut.","settings.aiworker.visual.option.timeFormat.auto.label":"Auto","settings.aiworker.visual.option.timeFormat.auto.description":"Utilisez les préférences local du système.","settings.aiworker.visual.option.timeFormat.24h.label":"24 heures","settings.aiworker.visual.option.timeFormat.24h.description":"Afficher l'heure à 14h15.","settings.aiworker.visual.option.timeFormat.12h.label":"12 heures","settings.aiworker.visual.option.timeFormat.12h.description":"Afficher l'heure à 14h15.","settings.aiworker.visual.option.weekStart.auto.label":"Auto","settings.aiworker.visual.option.weekStart.auto.description":"Utilisez le début de semaine local.","settings.aiworker.visual.option.weekStart.monday.label":"Lundi","settings.aiworker.visual.option.weekStart.sunday.label":"Dimanche","settings.magicPrompts.page.loading.aria":"Chargement","settings.magicPrompts.page.loading.text":"Chargement des prompts magiques...","settings.magicPrompts.page.block.visiblePrompt":"Prompt visible","settings.magicPrompts.page.block.instructions":"Instructions","settings.magicPrompts.page.group.gitCommitGenerate.title":"Génération de commit","settings.magicPrompts.page.group.gitCommitGenerate.description":"Prompts utilisés pour la génération du message de commit : message utilisateur visible + instructions masquées.","settings.magicPrompts.page.group.gitPrGenerate.title":"Génération de PR","settings.magicPrompts.page.group.gitPrGenerate.description":"Prompts utilisés pour la génération du titre/corps de la PR : message utilisateur visible + instructions masquées.","settings.magicPrompts.page.group.githubPrReview.title":"Revue de PR","settings.magicPrompts.page.group.githubPrReview.description":"Prompts utilisés pour le flux de revue des PR : message utilisateur visible + charge utile d'instruction cachée.","settings.magicPrompts.page.group.githubIssueReview.title":"Examen du problème","settings.magicPrompts.page.group.githubIssueReview.description":"Prompts utilisés pour le flux d’examen des issues : message utilisateur visible + charge utile d’instruction masquée.","settings.magicPrompts.page.group.githubPrFailedChecksReview.title":"Examen des checks PR en échec","settings.magicPrompts.page.group.githubPrFailedChecksReview.description":"Prompts utilisés pour l’analyse des checks PR en échec.","settings.magicPrompts.page.group.githubPrCommentsReview.title":"Examen des commentaires PR","settings.magicPrompts.page.group.githubPrCommentsReview.description":"Prompts utilisés pour l’analyse des commentaires PR.","settings.magicPrompts.page.group.githubSinglePrCommentReview.title":"Examen des commentaires PR uniques","settings.magicPrompts.page.group.githubSinglePrCommentReview.description":"Prompts utilisés pour l’analyse d’un seul commentaire PR.","settings.magicPrompts.page.group.gitConflictResolve.title":"Résolution des conflits de fusion/rebase","settings.magicPrompts.page.group.gitConflictResolve.description":"Prompts utilisés lors de la résolution des conflits de fusion/rebase avec l'IA.","settings.magicPrompts.page.group.gitCherrypickConflictResolve.title":"Résolution des conflits par sélection","settings.magicPrompts.page.group.gitCherrypickConflictResolve.description":"Prompts utilisés lors de la résolution des conflits de Cherry-pick dans le flux d'intégration.","settings.magicPrompts.page.group.planImprove.title":"Améliorer le plan","settings.magicPrompts.page.group.planImprove.description":"Prompt masqué utilisé lors de l’envoi d’un plan enregistré dans un flux d’amélioration.","settings.magicPrompts.page.group.planTodo.title":"Planification des tâches","settings.magicPrompts.page.group.planTodo.description":"Prompt masqué utilisé lors de l’envoi d’une tâche dans une nouvelle session de planification.","settings.magicPrompts.page.group.planImplement.title":"Plan de mise en œuvre","settings.magicPrompts.page.group.planImplement.description":"Prompt masqué utilisé lors de l’envoi d’un plan enregistré dans un flux d’implémentation.","settings.magicPrompts.page.group.sessionSummary.title":"Résumé de la session","settings.magicPrompts.page.group.sessionSummary.description":"Prompts utilisés par la commande slash /summary : message utilisateur visible + instructions masquées. Non destructif : ne compacte pas l'historique des sessions.","settings.magicPrompts.page.group.sessionWorkspaceReview.title":"Examen de l'espace de travail","settings.magicPrompts.page.group.sessionWorkspaceReview.description":"Prompts utilisés par la commande slash /workspace-review : message utilisateur visible + instructions masquées. Examine les modifications actuelles de l’espace de travail pour les problèmes de signal élevé uniquement.","settings.view.search.placeholder":"Rechercher dans les paramètres","settings.view.search.aria":"Rechercher dans les paramètres","settings.view.search.clear":"Effacer la recherche des paramètres","settings.view.search.noResults":"Aucun paramètre correspondant","settings.view.nav.group.general":"AiWorker","settings.view.nav.group.projects":"Espace de travail","settings.view.nav.group.opencode":"OpenCode","settings.view.nav.group.content":"Bibliothèque","settings.page.about.title":"À propos","settings.aiworker.tunnel.notAvailable.dependencyNotFound":"{dependency} est introuvable.","settings.magicPrompts.sidebar.item.sessionExplore":"Tour du codebase","settings.magicPrompts.sidebar.item.sessionFeaturePlan":"Planification de fonctionnalité","settings.magicPrompts.sidebar.item.sessionCraftGoal":"Création de Goal","settings.magicPrompts.page.group.sessionCraftGoal.title":"Création de Goal","settings.magicPrompts.page.group.sessionCraftGoal.description":"Prompts utilisés par la commande slash /craft-goal : message utilisateur visible + instructions masquées. Transforme une idée ou une tâche en Goal clair et vérifiable grâce à une exploration guidée.","settings.magicPrompts.sidebar.item.sessionCatchUp":"Rattrapage","settings.magicPrompts.sidebar.item.sessionDebug":"Débogage","settings.magicPrompts.sidebar.item.sessionWeigh":"Comparer les options","settings.remoteInstances.direct.sidebarTitle":"Liens de serveur","settings.remoteInstances.direct.sidebarDescription":"Se connecter avec un lien ou un token","settings.remoteInstances.direct.title":"Autres serveurs AiWorker","settings.remoteInstances.direct.description":"Serveurs vers lesquels cette application peut basculer. Importez un lien de connexion depuis un autre serveur ou ajoutez-le par adresse.","settings.remoteInstances.direct.addDialog.description":"Ajoutez un autre serveur AiWorker par URL. Utilisez ceci lorsque le serveur est déjà lancé et que vous disposez d’un token de connexion.","settings.remoteInstances.direct.field.labelPlaceholder":"Libellé (facultatif)","settings.remoteInstances.direct.field.urlPlaceholder":"https://hôte:port","settings.remoteInstances.direct.field.tokenPlaceholder":"Token de connexion (facultatif pour les serveurs locaux de confiance)","settings.remoteInstances.direct.note":"Les tokens de connexion sont enregistrés sur cet appareil et utilisés uniquement lorsque cette application se connecte à ce serveur.","settings.remoteInstances.direct.headers.title":"Additional headers","settings.remoteInstances.direct.headers.description":"Optional HTTP headers for desktop API requests. Authorization is reserved for the connection token.","settings.remoteInstances.direct.headers.field.namePlaceholder":"Header name","settings.remoteInstances.direct.headers.field.valuePlaceholder":"Header value","settings.remoteInstances.direct.headers.actions.add":"Add header","settings.remoteInstances.direct.headers.removeAria":"Remove header","settings.remoteInstances.direct.actions.add":"Ajouter le serveur","settings.remoteInstances.direct.import.description":"Collez un lien de connexion provenant d’un autre serveur AiWorker.","settings.remoteInstances.direct.import.placeholder":"aiworker://connect?...","settings.remoteInstances.direct.import.action":"Importer le lien","settings.remoteInstances.direct.error.invalidConnectLink":"Lien de connexion AiWorker invalide.","settings.remoteInstances.direct.state.loading":"Chargement des instances...","settings.remoteInstances.direct.state.empty":"Aucun autre serveur ajouté pour le moment.","settings.remoteInstances.clientAuth.title":"Se connecter à ce serveur","settings.remoteInstances.clientAuth.description":"Créez un lien ou un token sécurisé pour permettre à AiWorker Desktop de se connecter à ce serveur.","settings.remoteInstances.clientAuth.field.labelPlaceholder":"Nom du nouvel appareil — ex. Mon iPhone","settings.remoteInstances.clientAuth.actions.create":"Créer un token","settings.remoteInstances.clientAuth.actions.pair":"Créer un lien","settings.remoteInstances.clientAuth.actions.revoke":"Révoquer","settings.remoteInstances.clientAuth.actions.clearRevoked":"Effacer les révocations","settings.remoteInstances.clientAuth.qrAlt":"QR code de connexion AiWorker","settings.remoteInstances.clientAuth.qrEnlarge":"Agrandir le QR code","settings.remoteInstances.clientAuth.qrScanHint":"Scannez-le avec l'application AiWorker sur votre autre appareil. À usage unique et expire.","settings.remoteInstances.clientAuth.qrDialogTitle":"Scanner pour se connecter","settings.remoteInstances.clientAuth.actions.addDevice":"Ajouter un appareil","settings.remoteInstances.clientAuth.actions.copied":"Copié","settings.remoteInstances.clientAuth.addDevice.transportLabel":"Où utiliserez-vous cet appareil ?","settings.remoteInstances.clientAuth.addDevice.subtitle":"Créez un code QR à usage unique qui connecte un autre appareil à ce serveur.","settings.remoteInstances.clientAuth.addDevice.transport.local":"Cet ordinateur uniquement","settings.remoteInstances.clientAuth.addDevice.transport.localHint":"Pour les applications sur cette même machine.","settings.remoteInstances.clientAuth.addDevice.transport.lan":"Réseau domestique uniquement","settings.remoteInstances.clientAuth.addDevice.transport.lanHint":"Connexion directe via votre Wi-Fi. Ne fonctionne pas hors de ce réseau.","settings.remoteInstances.clientAuth.addDevice.transport.relay":"Partout","settings.remoteInstances.clientAuth.addDevice.transport.relayHint":"Fonctionne à la maison et en déplacement. En déplacement, le trafic passe par AiWorker Private Relay — un tunnel chiffré de bout en bout. Aucune configuration.","settings.remoteInstances.clientAuth.addDevice.fallback.relay":"Autoriser aussi le relais chiffré en déplacement","settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":"Préférer la connexion domestique directe quand elle est disponible","settings.remoteInstances.clientAuth.addDevice.create":"Créer le code QR","settings.remoteInstances.clientAuth.addDevice.done":"Terminé","settings.remoteInstances.clientAuth.addDevice.connectedToast":"Appareil connecté.","settings.remoteInstances.clientAuth.pairingUrl":"Lien de connexion","settings.remoteInstances.clientAuth.createdToken":"Copiez ce token maintenant. Pour des raisons de sécurité, il ne sera plus affiché.","settings.remoteInstances.clientAuth.state.loading":"Chargement des tokens...","settings.remoteInstances.clientAuth.state.empty":"Aucun appareil connecté pour le moment.","settings.remoteInstances.clientAuth.state.revoked":"Révoqué","settings.remoteInstances.clientAuth.state.thisDevice":"Cet appareil","settings.remoteInstances.clientAuth.state.pending":"En attente de connexion…","settings.remoteInstances.clientAuth.state.viaRelay":"Relay","settings.remoteInstances.clientAuth.state.connectedDirect":"Connecté · Réseau local","settings.remoteInstances.clientAuth.state.connectedRelay":"Connecté · Relais","settings.remoteInstances.clientAuth.lastUsed":"Dernière utilisation le {date}","settings.remoteInstances.clientAuth.neverUsed":"Jamais utilisé","settings.remoteInstances.relay.title":"AiWorker Relay","settings.remoteInstances.relay.autoHint":"Activé automatiquement lorsque vous associez un appareil via le relais.","settings.remoteInstances.relay.description":"Permettez à vos autres appareils de se connecter depuis n’importe où sans ouvrir de ports. Le trafic est chiffré de bout en bout — le relais ne peut pas le lire.","settings.remoteInstances.relay.enableHint":"Rien n’est partagé tant que vous n’activez pas le relais sur ce serveur.","settings.remoteInstances.relay.actions.enable":"Activer le relais","settings.remoteInstances.relay.actions.disable":"Désactiver","settings.remoteInstances.relay.confirm.disable":"Désactiver le relais ? Les appareils connectés via celui-ci seront déconnectés immédiatement.","settings.remoteInstances.relay.state.loading":"Vérification de l’état du relais...","settings.remoteInstances.relay.state.disabled":"Désactivé","settings.remoteInstances.relay.state.connecting":"Connexion","settings.remoteInstances.relay.state.connected":"Connecté","settings.remoteInstances.relay.state.reconnecting":"Reconnexion","settings.remoteInstances.relay.state.error":"Erreur","settings.remoteInstances.relay.status.clientsOne":"{count} appareil connecté","settings.remoteInstances.relay.status.clientsMany":"{count} appareils connectés","settings.remoteInstances.relay.pair.title":"Associer un appareil","settings.remoteInstances.relay.pair.labelPlaceholder":"Nom de l’appareil (facultatif)","settings.remoteInstances.relay.pair.includeToken":"Inclure le jeton d’accès (association en un seul scan)","settings.remoteInstances.relay.pair.noTokenHint":"Sans jeton, l’appareil se connecte avec le mot de passe de l’interface de ce serveur.","settings.remoteInstances.relay.pair.generate":"Créer un lien d’association","settings.remoteInstances.relay.pair.requiresConnected":"L’association devient disponible une fois le relais connecté.","settings.remoteInstances.relay.pair.linkLabel":"Lien d’association","settings.remoteInstances.relay.pair.warning":"Ce lien donne accès à ce serveur. Ne le partagez pas.","settings.remoteInstances.relay.pair.qrAlt":"Code QR d’association du relais","settings.remoteInstances.relay.pair.showQr":"Afficher le code QR","settings.remoteInstances.relay.pair.qrDialogTitle":"Scanner pour associer","settings.remoteInstances.relay.pair.qrDialogDescription":"Scannez ce code QR avec l’application AiWorker sur votre autre appareil.","settings.remoteInstances.relay.pair.manageHint":"Gérez ou révoquez les appareils associés dans la liste « Connexion à ce serveur » ci-dessus.","settings.remoteInstances.relay.toast.enableFailed":"Échec de l’activation du relais","settings.remoteInstances.relay.toast.disableFailed":"Échec de la désactivation du relais","settings.remoteInstances.relay.toast.offerFailed":"Échec de la création du lien d’association","settings.remoteInstances.relay.toast.linkCopied":"Lien d’association copié","settings.aiworker.about.field.openCodeVersion":"Version d’OpenCode","settings.aiworker.about.field.instanceUrls":"URLs de l’instance","settings.aiworker.about.field.applicationUrl":"Application","settings.aiworker.about.field.tunnelUrl":"Tunnel","settings.aiworker.about.state.unknown":"inconnue","settings.voice.page.field.ttsInputMode":"Mode d’entrée TTS","settings.voice.page.field.ttsInputModeSanitized":"Nettoyé","settings.voice.page.field.ttsInputModeRaw":"Markdown brut","settings.voice.page.field.ttsInputModeSummarized":"résumé","settings.aiworker.visual.field.dockBadge":"Badge du Dock","settings.aiworker.visual.field.dockBadgeHint":"Afficher sur l’icône du Dock de macOS le nombre de discussions avec une activité non vue.","settings.aiworker.visual.actions.saveAndRestart":"Enregistrer et redémarrer","settings.aiworker.visual.actions.restarting":"Redémarrage…","settings.aiworker.visual.field.fileEditorKeymap":"Keymap de l’éditeur de fichiers","settings.aiworker.visual.option.fileEditorKeymap.default":"Par défaut","settings.aiworker.visual.option.fileEditorKeymap.vim":"Vim","settings.aiworker.visual.field.showTurnChangedFilesAria":"Afficher les fichiers modifiés pour les tours terminés","settings.aiworker.visual.field.showTurnChangedFiles":"Afficher les fichiers modifiés pour les tours terminés","settings.magicPrompts.page.group.sessionExplore.title":"Tour du codebase","settings.magicPrompts.page.group.sessionExplore.description":"Prompts utilisés par la commande slash /explore : message utilisateur visible + instructions masquées. Analyse le dépôt et donne une orientation structurée — vue d’ensemble, principaux modules, liens entre eux et points de départ — plutôt qu’un inventaire fichier par fichier.","settings.magicPrompts.page.group.sessionFeaturePlan.title":"Planification de fonctionnalité","settings.magicPrompts.page.group.sessionFeaturePlan.description":"Prompts utilisés par la commande slash /plan-feature : message utilisateur visible + instructions masquées. Lance un dialogue guidé qui étudie le code et pose des questions de clarification par petits lots avant de produire un plan d’implémentation.","settings.magicPrompts.page.group.sessionCatchUp.title":"Rattrapage","settings.magicPrompts.page.group.sessionCatchUp.description":"Prompts utilisés par la commande slash /catch-up : message utilisateur visible + instructions masquées. Reconstruit le contexte de la branche — commits, PR et travail non commité — pour comprendre où vous en étiez, puis fournit un résumé digeste et une prochaine étape orientée produit.","settings.magicPrompts.page.group.sessionDebug.title":"Débogage","settings.magicPrompts.page.group.sessionDebug.description":"Prompts utilisés par la commande slash /debug : message utilisateur visible + instructions masquées. Mène une investigation guidée de la cause racine — capture le symptôme, formule des hypothèses, les vérifie dans le code et confirme la cause avant de proposer une correction.","settings.magicPrompts.page.group.sessionWeigh.title":"Comparer les options","settings.magicPrompts.page.group.sessionWeigh.description":"Prompts utilisés par la commande slash /weigh : message utilisateur visible + instructions masquées. Analyse le code, puis présente 2 à 3 approches distinctes avec compromis et recommandation — sans écrire de plan ni de code.","settings.magicPrompts.page.group.sessionFusion.title":"Fusion","settings.magicPrompts.page.group.sessionFusion.description":"Prompts utilisés lors de la combinaison de résultats multi-exécutions en une seule réponse finale : message utilisateur visible + instructions masquées avant les résultats source.","settings.magicPrompts.page.actions.resetting":"Réinitialisation...","settings.magicPrompts.page.actions.resetAllOverrides":"Réinitialiser tous les remplacements","settings.magicPrompts.page.actions.resetToDefault":"Réinitialiser aux valeurs par défaut","settings.magicPrompts.page.actions.save":"Sauvegarder","settings.magicPrompts.page.placeholdersLabel":"Espaces réservés :","settings.magicPrompts.page.validation.visiblePromptRequired":"Le prompt visible ne peut pas être vide.","settings.magicPrompts.page.status.unsavedChanges":"Modifications non enregistrées","settings.magicPrompts.page.status.usingSavedOverride":"Utilisation du remplacement enregistré","settings.magicPrompts.page.status.usingBuiltinDefault":"Utilisation des valeurs par défaut intégrées","settings.magicPrompts.page.toast.loadFailed":"Échec du chargement des prompts magiques","settings.magicPrompts.page.toast.visiblePromptRequired":"Le prompt visible ne peut pas être vide","settings.magicPrompts.page.toast.saved":"Magic Prompt enregistré","settings.magicPrompts.page.toast.saveFailed":"Échec de l'enregistrement du Magic Prompt","settings.magicPrompts.page.toast.resetSuccess":"Prompt réinitialisé aux valeurs par défaut","settings.magicPrompts.page.toast.resetFailed":"Échec de la réinitialisation du prompt","settings.magicPrompts.page.toast.resetAllSuccess":"Tous les prompts ont été réinitialisés","settings.magicPrompts.page.toast.resetAllFailed":"Échec de la réinitialisation de tous les prompts","settings.aiworker.visual.section.followUpBehavior":"Follow-up behavior","settings.aiworker.visual.section.followUpBehaviorAria":"Follow-up behavior","settings.aiworker.visual.field.followUpBehaviorAria":"Follow-up behavior: {option}","settings.aiworker.visual.field.followUpBehaviorDescription":"Choose what happens when you press Enter on a follow-up message while the agent is still responding.","settings.aiworker.visual.option.followUpBehavior.steer.label":"Steer","settings.aiworker.visual.option.followUpBehavior.queue.label":"Queue",...t.fr,...e.fr},Fe={...o,...i.fr,...s.fr,"terminalView.actions.attachSelection":"Joindre la sortie sélectionnée","terminalView.actions.restart":"Redémarrer le terminal","chat.message.terminalContext":"{terminal}, lignes {start}-{end}","chat.message.context.codeComment":"Commentaire sur {file}, lignes {start}-{end}","chat.message.context.codeCommentLine":"Commentaire sur {file}, ligne {line}","chat.message.context.chatQuote":"Citation d’un message précédent","chat.message.context.fileQuote":"Sélection de {file}","chat.chatInput.chatQuoteContext":"Citations du chat","chat.chatInput.chatQuoteContextRemove":"Supprimer les citations du chat","chat.chatInput.contextPreview.selectedLabel":"Texte sélectionné","chat.chatInput.contextPreview.commentLabel":"Commentaire de l’utilisateur","chat.chatInput.contextPreview.edit":"Modifier le commentaire","chat.chatInput.contextPreview.remove":"Supprimer","chat.message.context.browserAnnotation":"Annotation du navigateur ({page})","chat.message.context.prComment":"Commentaire de PR GitHub ({label})","chat.message.context.prCheck":"Vérification de PR GitHub échouée ({label})","chat.chatInput.terminalContext":"{terminal}, lignes {start}-{end}","chat.chatInput.terminalContextRemove":"Supprimer le contexte du terminal","chat.chatInput.prCommentContext":"Commentaires de PR","chat.chatInput.prCommentContextRemove":"Retirer le contexte des commentaires de PR","chat.chatInput.prCheckContext":"Vérifications de PR échouées","chat.chatInput.prCheckContextRemove":"Retirer le contexte des vérifications de PR","common.loading":"Chargement...","common.unavailable":"Indisponible","common.language.english":"Anglais","common.language.german":"Allemand","common.language.french":"Français","common.language.simplifiedChinese":"Chinois (simplifié)","common.language.traditionalChinese":"Chinois (traditionnel)","common.language.ukrainian":"Ukrainien","common.language.spanish":"Espagnol","common.language.brazilianPortuguese":"Portugais brésilien","common.language.korean":"Coréen","common.language.polish":"Polonais","common.language.japanese":"Japonais","common.language.turkish":"Turc","common.revealPath.finder":"Révéler dans le Finder","common.revealPath.fileExplorer":"Ouvrir dans l'explorateur de fichiers","common.revealPath.fileManager":"Ouvrir dans le gestionnaire de fichiers","pwa.installPrompt.description":"Installez AiWorker pour un accès plus rapide","pwa.installPrompt.action":"Installer","pwa.installPrompt.dismiss":"Ignorer","pwa.installPrompt.started":"Installation démarrée","pwa.installPrompt.installed":"AiWorker installé","layout.mainTab.chat":"Chat","layout.mainTab.plan":"Plan","layout.mainTab.diff":"Diff","layout.mainTab.files":"Fichiers","layout.mainTab.terminal":"Terminal","layout.mainTab.context":"Contexte","layout.rightSidebar.git":"Git","layout.rightSidebar.files":"Fichiers","layout.rightSidebar.context":"Contexte","layout.services.instance":"Instance","layout.services.usage":"Usage","sessions.sidebar.header.actions.closeSessions":"Fermer les sessions","sessions.sidebar.header.actions.addProject":"Ajouter un projet","sessions.sidebar.header.actions.newSession":"Nouvelle session","sessions.sidebar.header.actions.newMultiRun":"Nouveau multi-run","sessions.sidebar.header.actions.scheduledTasks":"Tâches planifiées","sessions.scheduledTasks.dialog.title":"Tâches planifiées","sessions.scheduledTasks.dialog.description":"Tâches côté serveur qui créent une nouvelle session et envoient un prompt configuré.","sessions.scheduledTasks.dialog.project.label":"Projet","sessions.scheduledTasks.dialog.project.placeholder":"Sélectionnez un projet","sessions.scheduledTasks.dialog.project.empty":"Aucun projet","sessions.scheduledTasks.dialog.actions.newTask":"Nouvelle tâche","sessions.scheduledTasks.dialog.actions.runNow":"Exécuter maintenant","sessions.scheduledTasks.dialog.actions.edit":"Modifier","sessions.scheduledTasks.dialog.actions.editAria":"Modifier {taskName}","sessions.scheduledTasks.dialog.actions.deleteAria":"Supprimer {taskName}","sessions.scheduledTasks.dialog.loading":"Chargement des tâches...","sessions.scheduledTasks.dialog.empty.noTasks":"Aucune tâche planifiée pour l'instant.","sessions.scheduledTasks.dialog.empty.selectProject":"Sélectionnez un projet pour gérer les tâches planifiées.","sessions.scheduledTasks.dialog.error.chooseProjectFirst":"Choisissez d'abord un projet","sessions.scheduledTasks.dialog.toast.loadFailed":"Échec du chargement des tâches planifiées","sessions.scheduledTasks.dialog.toast.saved":"Tâche planifiée enregistrée","sessions.scheduledTasks.dialog.toast.updateFailed":"Échec de la mise à jour de la tâche","sessions.scheduledTasks.dialog.toast.deleted":"Tâche planifiée supprimée","sessions.scheduledTasks.dialog.toast.deleteFailed":"Échec de la suppression de la tâche","sessions.scheduledTasks.dialog.toast.started":"Tâche démarrée","sessions.scheduledTasks.dialog.toast.startedPersistWarning":"Tâche démarrée, mais son statut n’a pas pu être enregistré. Elle peut encore apparaître comme en cours jusqu’à la prochaine exécution réussie.","sessions.scheduledTasks.dialog.toast.runFailed":"Échec de l'exécution de la tâche","sessions.scheduledTasks.dialog.confirm.deleteTask":"Supprimer la tâche planifiée « {taskName} » ?","sessions.scheduledTasks.dialog.confirm.deleteLoopFile":"Supprimer la tâche en boucle « {taskName} » et son fichier Markdown ?","sessions.scheduledTasks.dialog.schedule.daily":"Quotidien {time}","sessions.scheduledTasks.dialog.schedule.dailyWithTimezone":"Quotidien {time} ({timezone})","sessions.scheduledTasks.dialog.schedule.weekly":"Hebdomadaire {days} {time}","sessions.scheduledTasks.dialog.schedule.weeklyWithTimezone":"{days} hebdomadaire {time} ({timezone})","sessions.scheduledTasks.dialog.schedule.once":"{date} unique {time}","sessions.scheduledTasks.dialog.schedule.onceWithTimezone":"{date} unique {time} ({timezone})","sessions.scheduledTasks.dialog.schedule.cron":"Cron : {cron}","sessions.scheduledTasks.dialog.schedule.cronWithTimezone":"Cron : {cron} ({timezone})","sessions.scheduledTasks.dialog.schedule.unknownDate":"Date inconnue","sessions.scheduledTasks.dialog.schedule.weekdayShort.sun":"Dim","sessions.scheduledTasks.dialog.schedule.weekdayShort.mon":"Lun","sessions.scheduledTasks.dialog.schedule.weekdayShort.tue":"Mar","sessions.scheduledTasks.dialog.schedule.weekdayShort.wed":"Mer","sessions.scheduledTasks.dialog.schedule.weekdayShort.thu":"Jeu","sessions.scheduledTasks.dialog.schedule.weekdayShort.fri":"Ven","sessions.scheduledTasks.dialog.schedule.weekdayShort.sat":"Sam","sessions.scheduledTasks.dialog.schedule.weekdayShort.unknown":"?","sessions.scheduledTasks.dialog.relativeTime.inLessThanOneMinute":"dans <1 m","sessions.scheduledTasks.dialog.relativeTime.justNow":"à l’instant","sessions.scheduledTasks.dialog.relativeTime.inMinutes":"en {count}m","sessions.scheduledTasks.dialog.relativeTime.minutesAgo":"il y a {count} min","sessions.scheduledTasks.dialog.relativeTime.inDuration":"dans {duration}","sessions.scheduledTasks.dialog.relativeTime.durationAgo":"il y a {duration}","sessions.scheduledTasks.dialog.status.success":"Succès","sessions.scheduledTasks.dialog.status.error":"Erreur","sessions.scheduledTasks.dialog.status.running":"En cours d'exécution","sessions.scheduledTasks.dialog.status.idle":"Inactif","sessions.scheduledTasks.dialog.nextRun.label":"Suivant","sessions.scheduledTasks.dialog.lastRun.label":"Dernière exécution","sessions.scheduledTasks.dialog.lastRun.runningNow":"en cours d’exécution","sessions.scheduledTasks.dialog.lastRun.never":"jamais","sessions.scheduledTasks.dialog.taskToggle.enableAria":"Activer {taskName}","sessions.scheduledTasks.dialog.taskToggle.pauseAria":"Pause {taskName}","sessions.scheduledTasks.dialog.taskToggle.enabled":"Activé","sessions.scheduledTasks.dialog.taskToggle.paused":"En pause","sessions.scheduledTasks.dialog.loopFile.note":"Gérée par le fichier de boucle {file}","sessions.scheduledTasks.dialog.loopFile.toggleDisabled":"L'activation est contrôlée par le fichier de boucle ; définissez enabled dans le frontmatter Markdown","sessions.scheduledTasks.dialog.loopFile.actionsDisabled":"Les tâches de boucle sont configurées dans leur fichier Markdown .agents/loops","sessions.scheduledTasks.editor.title.edit":"Modifier une tâche planifiée","sessions.scheduledTasks.editor.title.new":"Nouvelle tâche planifiée","sessions.scheduledTasks.editor.description":"Configurez une tâche côté serveur qui crée une nouvelle session et envoie un prompt.","sessions.scheduledTasks.editor.taskName.label":"Nom de la tâche","sessions.scheduledTasks.editor.taskName.placeholder":"Synchronisation quotidienne","sessions.scheduledTasks.editor.scheduleType.label":"Type d'horaire","sessions.scheduledTasks.editor.scheduleType.daily":"Tous les jours","sessions.scheduledTasks.editor.scheduleType.weekly":"Hebdomadaire","sessions.scheduledTasks.editor.scheduleType.once":"Une fois","sessions.scheduledTasks.editor.scheduleType.cron":"Cron","sessions.scheduledTasks.editor.date.label":"Date","sessions.scheduledTasks.editor.date.placeholder":"Sélectionnez une date","sessions.scheduledTasks.editor.date.previousMonth":"Mois précédent","sessions.scheduledTasks.editor.date.nextMonth":"Mois prochain","sessions.scheduledTasks.editor.date.jumpToToday":"Aller à aujourd'hui","sessions.scheduledTasks.editor.date.today":"Aujourd'hui","sessions.scheduledTasks.editor.time.label":"Temps","sessions.scheduledTasks.editor.time.hourAria":"Heures","sessions.scheduledTasks.editor.time.minuteAria":"Minutes","sessions.scheduledTasks.editor.time.periodAria":"Période","sessions.scheduledTasks.editor.time.period.am":"AM","sessions.scheduledTasks.editor.time.period.pm":"PM","sessions.scheduledTasks.editor.times.label":"Fois","sessions.scheduledTasks.editor.times.add":"Ajouter du temps","sessions.scheduledTasks.editor.times.removeAria":"Supprimer l'heure","sessions.scheduledTasks.editor.timezone.label":"Fuseau horaire","sessions.scheduledTasks.editor.weekdays.label":"Jours de la semaine","sessions.scheduledTasks.editor.model.label":"Modèle","sessions.scheduledTasks.editor.thinkingLevel.label":"Niveau de réflexion","sessions.scheduledTasks.editor.thinkingLevel.default":"Défaut","sessions.scheduledTasks.editor.agent.label":"Agent","sessions.scheduledTasks.editor.prompt.label":"Prompt","sessions.scheduledTasks.editor.prompt.placeholder":"Résumer les tâches ouvertes et proposer les prochaines actions","sessions.scheduledTasks.editor.enabled.aria":"Activer la tâche","sessions.scheduledTasks.editor.enabled.label":"Activé","sessions.scheduledTasks.editor.goal.label":"Exécuter comme objectif","sessions.scheduledTasks.editor.goal.aria":"Exécuter cette tâche comme un objectif que l'agent poursuit jusqu'au bout","sessions.scheduledTasks.editor.goal.budgetLabel":"Budget de tokens","sessions.scheduledTasks.editor.goal.budgetAria":"Limiter l’objectif à un budget de tokens","sessions.scheduledTasks.editor.permissionAutoAccept.label":"Accepter automatiquement les autorisations","sessions.scheduledTasks.editor.permissionAutoAccept.aria":"Démarrer la session de la tâche avec l’acceptation automatique des autorisations activée","sessions.scheduledTasks.editor.actions.closeAria":"Fermer","sessions.scheduledTasks.editor.actions.cancel":"Annuler","sessions.scheduledTasks.editor.actions.save":"Sauvegarder","sessions.scheduledTasks.editor.actions.saving":"Enregistrement...","sessions.scheduledTasks.editor.toast.saveFailed":"Échec de l'enregistrement de la tâche","sessions.scheduledTasks.editor.validation.taskNameRequired":"Le nom de la tâche est obligatoire","sessions.scheduledTasks.editor.validation.promptRequired":"Un prompt est requis","sessions.scheduledTasks.editor.validation.modelRequired":"Le modèle est requis","sessions.scheduledTasks.editor.validation.dateFormat":"La date doit utiliser AAAA-MM-JJ","sessions.scheduledTasks.editor.validation.timeFormat":"L'heure doit utiliser HH : mm","sessions.scheduledTasks.editor.validation.atLeastOneTime":"Ajoutez au moins une heure valide","sessions.scheduledTasks.editor.validation.atLeastOneWeekday":"Sélectionnez au moins un jour de la semaine","sessions.scheduledTasks.editor.validation.timezoneRequired":"Le fuseau horaire est requis","sessions.scheduledTasks.editor.validation.cronRequired":"Une expression cron est requise","sessions.scheduledTasks.editor.validation.cronInvalid":"Expression cron invalide","sessions.scheduledTasks.editor.cronExpression.label":"Expression cron","sessions.scheduledTasks.editor.cronExpression.placeholder":"*/5 * * * *","sessions.scheduledTasks.editor.cronExpression.nextRuns":"Prochaines exécutions","sessions.scheduledTasks.editor.cronExpression.examples":"Exemples","sessions.scheduledTasks.editor.cronExpression.examples.every5min":"Toutes les 5 minutes","sessions.scheduledTasks.editor.cronExpression.examples.everyHour":"Toutes les heures","sessions.scheduledTasks.editor.cronExpression.examples.monday9am":"Chaque lundi à 9 h","sessions.scheduledTasks.editor.cronExpression.examples.9am5pm":"9 h et 17 h chaque jour","sessions.scheduledTasks.editor.cronExpression.examples.firstOfMonth":"Premier jour de chaque mois","multirun.launcher.title":"Nouveau multi-run","multirun.launcher.actions.closeEsc":"Fermer (Échap)","multirun.launcher.actions.cancel":"Annuler","multirun.launcher.actions.creating":"Création...","multirun.launcher.actions.startWithModelCount":"Démarrer (modèles {count})","multirun.launcher.project.label":"Projet","multirun.launcher.project.placeholder":"Sélectionnez un projet","multirun.launcher.project.empty":"Ajoutez d'abord un projet.","multirun.launcher.project.gitRequired":"Pas d'isolation par worktree : les exécutions utilisent le même répertoire.","multirun.launcher.groupName.label":"Nom du groupe","multirun.launcher.groupName.info":"Utilisé pour le répertoire du worktree et les noms de branches","multirun.launcher.groupName.placeholder":"fonctionnalité-auth, correction de bugs-connexion","multirun.launcher.baseBranch.label":"Branche de base","multirun.launcher.baseBranch.info":"Nouvelle branche créée à partir de cette base par modèle","multirun.launcher.isolateRuns.label":"Isoler les parcours","multirun.launcher.agent.label":"Agent","multirun.launcher.agent.info":"Agent utilisé pour toutes les exécutions. La valeur par défaut est votre agent configuré.","multirun.launcher.setupCommands.label":"Commandes de configuration","multirun.launcher.setupCommands.loading":"Chargement...","multirun.launcher.setupCommands.commandPlaceholder":"bun install","multirun.launcher.setupCommands.removeCommandAria":"Supprimer la commande","multirun.launcher.setupCommands.addCommand":"Ajouter une commande","multirun.launcher.prompt.label":"Prompt","multirun.launcher.prompt.placeholder":"Entrez le prompt à envoyer à tous les modèles...","multirun.launcher.attachments.attach":"Attacher","multirun.launcher.attachments.tooltip":"Mêmes fichiers envoyés à toutes les exécutions","multirun.launcher.models.label":"Modèles","multirun.launcher.models.info":"Sélectionnez 2 modèles ou plus. Le même modèle peut être ajouté plusieurs fois.","multirun.launcher.toast.fileTooLarge":'Le fichier "{fileName}" est trop volumineux (max 10 Mo)',"multirun.launcher.toast.attachFailed":'Échec de la connexion de "{fileName}"',"multirun.launcher.toast.attachedSingle":"Fichier {count} joint","multirun.launcher.toast.attachedPlural":"Fichiers {count} joints","multirun.modelMultiSelect.actions.addModel":"Ajouter un modèle","multirun.modelMultiSelect.search.placeholder":"Rechercher des modèles","multirun.modelMultiSelect.search.noResults":"Aucun modèle trouvé","multirun.modelMultiSelect.sections.favorites":"Favoris","multirun.modelMultiSelect.sections.recent":"Récents","multirun.modelMultiSelect.variant.placeholder":"Pensée","multirun.modelMultiSelect.variant.default":"Défaut","multirun.modelMultiSelect.keyboard.hint":"↑↓ naviguer • Entrer sélectionner • Esc fermer","multirun.modelMultiSelect.validation.minOnly":"Sélectionnez au moins les modèles {min}.","multirun.modelMultiSelect.validation.minToMax":"Choisissez parmi les modèles {min} à {max}.","multirun.agentSelector.placeholder":"Sélectionnez un agent","multirun.fusion.title":"Exécuter la fusion","multirun.fusion.description":"Combinez les résultats multi-exécutions sélectionnés en une seule réponse plus solide.","multirun.fusion.provider.placeholder":"Fournisseur","multirun.fusion.model.placeholder":"Modèle","multirun.fusion.sources.label":"Sources ({count})","multirun.fusion.actions.cancel":"Annuler","multirun.fusion.actions.start":"Démarrer la fusion","multirun.fusion.actions.starting":"Démarrage...","multirun.fusion.toast.noOutputs":"Aucune sortie assistante trouvée pour fusionner.","multirun.fusion.toast.failed":"Échec du démarrage de la fusion.","multirun.launcher.attachments.label":"Fichiers","multirun.launcher.actions.startWithRunCount":"Démarrer ({count} s'exécute)","multirun.launcher.groups.addGroup":"Ajouter un groupe d'exécution","multirun.launcher.groups.removeGroup":"Supprimer le groupe","multirun.launcher.groups.groupLabel":"Groupe d'exécution {index}","multirun.launcher.groups.template.label":"Modèle","multirun.launcher.groups.template.placeholder":"Sélectionnez un modèle...","multirun.launcher.groups.template.custom":"Prompt personnalisé","multirun.launcher.groups.prompt.label":"Prompt","multirun.launcher.groups.prompt.placeholder":"Entrez le prompt pour ce groupe...","sessions.sidebar.header.actions.searchSessions":"Sessions de recherche","sessions.sidebar.header.actions.exitSelection":"Quitter la sélection","sessions.sidebar.header.actions.selectSessions":"Sélectionnez des sessions","sessions.sidebar.header.actions.sortProjects":"Trier les projets","sessions.sidebar.header.actions.sessionDisplayMode":"Mode d'affichage des sessions","sessions.sidebar.header.displayMode.label":"Mode d'affichage","sessions.sidebar.header.displayMode.default":"Défaut","sessions.sidebar.header.displayMode.minimal":"Minimal","sessions.sidebar.header.displayMode.showRecent":"Afficher la section récente","sessions.sidebar.header.displayMode.collapseAll":"Tout réduire","sessions.sidebar.header.displayMode.expandAll":"Tout développer","sessions.sidebar.header.projectSort.manual":"Manuel","sessions.sidebar.header.projectSort.aToZ":"A → Z","sessions.sidebar.header.projectSort.zToA":"Z → A","sessions.sidebar.header.projectSort.dateAdded":"Les plus récentes","sessions.sidebar.header.projectSort.recent":"Récentes","sessions.sidebar.header.search.matchCountSingle":"Correspondance {count}","sessions.sidebar.header.search.matchCountPlural":"Correspondances {count}","sessions.sidebar.header.search.escapeHint":"Echap pour effacer","sessions.sidebar.header.search.placeholder":"Sessions de recherche...","sessions.sidebar.header.search.clear":"Effacer la recherche","sessions.sidebar.footer.actions.settings":"Paramètres","sessions.sidebar.footer.actions.shortcuts":"Raccourcis","sessions.sidebar.footer.actions.aboutAiWorker":"À propos de AiWorker","sessions.sidebar.footer.actions.update":"Mise à jour","sessions.sidebar.empty.noSessions.title":"Aucune session pour l'instant","sessions.sidebar.empty.noSessions.description":"Créez votre première session pour commencer à coder.","sessions.sidebar.empty.noMatches.title":"Aucune session correspondante","sessions.sidebar.empty.noMatches.description":"Essayez un autre titre, branche, dossier ou chemin.","sessions.sidebar.activity.recentTitle":"récent","sessions.sidebar.activity.chatsTitle":"discussions","sessions.sidebar.activity.chatsEmpty":"Aucune discussion pour le moment.","chat.chatInput.chooseProject":"Choisir un projet","sessions.archivePage.allDirectories":"Tous les répertoires","sessions.sidebar.header.displayMode.stickyHeaders":"Épingler les en-têtes de projet","sessions.sidebar.header.grouping.label":"Regrouper les sessions","sessions.sidebar.header.projectDisplay.label":"Afficher les projets","sessions.sidebar.header.projectDisplay.all":"Tous les projets","sessions.sidebar.header.projectDisplay.single":"Un projet","sessions.sidebar.project.selectAria":"Sélectionner un projet, actuellement {project}","sessions.sidebar.header.grouping.byWorktree":"Par worktree","sessions.sidebar.header.grouping.flat":"Liste plate","sessions.sidebar.project.actions.manageWorktrees":"Gérer les worktrees","sessions.worktreesPage.title":"Worktrees dans {project}","sessions.worktreesPage.description":"Créez, inspectez et supprimez les worktrees git de ce projet.","sessions.worktreesPage.closeAria":"Fermer les worktrees","sessions.scheduledTasks.page.closeAria":"Fermer les tâches planifiées","sessions.sidebar.nav.archive":"Archives","sessions.archivePage.title":"Archives","sessions.archivePage.countSingle":"{count} session archivée","sessions.archivePage.countPlural":"{count} sessions archivées","sessions.archivePage.closeAria":"Fermer les archives","sessions.archivePage.searchPlaceholder":"Rechercher des sessions archivées","sessions.archivePage.empty.noArchived":"Aucune session archivée","sessions.archivePage.empty.noMatches":"Aucune session archivée correspondante","sessions.archivePage.otherProjects":"autres projets","sessions.archivePage.deleteProject":"Supprimer toutes les sessions archivées de ce projet","sessions.archivePage.deleteProjectAria":"Supprimer toutes les sessions archivées de {label}","sessions.archivePage.deleteSessionAria":"Supprimer {title}","sessions.archivePage.restoreSessionAria":"Restaurer {title}","sessions.switcher.openAria":"Sélecteur de session ouvert","header.sessionTabs.stripAria":"Sessions ouvertes","header.sessionTabs.tabMenuAria":"Actions de l'onglet de session","header.sessionTabs.closeTab":"Fermer l'onglet","header.sessionTabs.closeOtherTabs":"Fermer les autres onglets","sessions.switcher.empty":"Aucune session récente","sessions.switcher.draftTitle":"Nouvelle session","sessions.sidebar.updateCheck.errorTitle":"Échec de la vérification des mises à jour","sessions.sidebar.updateCheck.latestVersion":"Vous êtes sur la dernière version","sessions.sidebar.directory.errorAddProjectTitle":"Échec de l'ajout du projet","sessions.sidebar.directory.errorAddProjectDescription":"Veuillez sélectionner un répertoire valide.","sessions.sidebar.directory.errorSelectDirectoryTitle":"Échec de la sélection du répertoire","sessions.sidebar.folder.newFolderName":"Nouveau dossier","sessions.sidebar.bulkActions.delete":"Supprimer","sessions.sidebar.bulkActions.archive":"Archive","sessions.sidebar.bulkActions.selectedCount":"{count} sélectionné","sessions.sidebar.bulkActions.moveToFolder":"Déplacer vers le dossier","sessions.sidebar.bulkActions.deletedSingle":"Session {count} supprimée","sessions.sidebar.bulkActions.deletedPlural":"Sessions {count} supprimées","sessions.sidebar.bulkActions.failedDeleteSingle":"Échec de la suppression de la session {count}","sessions.sidebar.bulkActions.failedDeletePlural":"Échec de la suppression des sessions {count}","sessions.sidebar.bulkActions.archivedSingle":"Session {count} archivée","sessions.sidebar.bulkActions.archivedPlural":"Sessions {count} archivées","sessions.sidebar.bulkActions.failedArchiveSingle":"Échec de l'archivage de la session {count}","sessions.sidebar.bulkActions.failedArchivePlural":"Échec de l'archivage des sessions {count}","sessions.sidebar.bulkActions.restore":"Restaurer","sessions.sidebar.bulkActions.restoredSingle":"Session {count} restaurée","sessions.sidebar.bulkActions.restoredPlural":"Sessions {count} restaurées","sessions.sidebar.bulkActions.failedRestoreSingle":"Échec de la restauration de la session {count}","sessions.sidebar.bulkActions.failedRestorePlural":"Échec de la restauration des sessions {count}","sessions.sidebar.folders.none":"Aucun dossier pour l'instant","sessions.sidebar.folders.newFolderEllipsis":"Nouveau dossier...","sessions.sidebar.folders.removeFromFolder":"Supprimer du dossier","sessions.sidebar.folders.moveToFolder":"Déplacer vers le dossier","sessions.sidebar.project.actions.newWorktree":"Nouveau worktree","sessions.sidebar.project.actions.newWorktreeEllipsis":"Nouveau worktree...","sessions.sidebar.project.actions.projectMenu":"Menu Projet","sessions.sidebar.project.actions.newSession":"Nouvelle session","sessions.sidebar.project.actions.closeProject":"Fermer le projet","sessions.sidebar.project.actions.edit":"Modifier","sessions.sidebar.project.actions.newDraftSession":"Nouveau brouillon de session","sessions.sidebar.session.menu.rename":"Rebaptiser","sessions.sidebar.session.menu.copyId":"Copier l’ID de session","sessions.sidebar.session.copyId.success":"ID de session copié","sessions.sidebar.session.copyId.error":"Impossible de copier l’ID de session","header.sessionActions.openAria":"Ouvrir les actions de session","sessions.sidebar.session.rename.save":"Enregistrer le nom de la session","sessions.sidebar.session.rename.cancel":"Annuler la session de changement de nom","sessions.sidebar.session.menu.unpin":"Désépingler la session","sessions.sidebar.session.menu.pin":"Session d'épinglage","sessions.sidebar.session.menu.share":"Partager","sessions.sidebar.session.menu.copied":"Copié","sessions.sidebar.session.menu.copyLink":"Copier le lien","sessions.sidebar.session.menu.unshare":"Annuler le partage","sessions.sidebar.session.menu.exportMarkdown":"Exporter le Markdown","sessions.sidebar.session.menu.moveToWorktree":"Déplacer vers un nouveau worktree","sessions.sidebar.session.menu.moveToWorktreeTargets":"Déplacer vers un worktree","sessions.sidebar.session.menu.newWorktree":"Nouveau worktree...","sessions.sidebar.session.moveToWorktree.success":"Session déplacée vers un nouveau worktree","sessions.sidebar.session.moveToWorktree.failed":"Impossible de déplacer la session vers un nouveau worktree","sessions.sidebar.session.moveToWorktree.main":"Worktree principal","sessions.sidebar.session.moveToWorktree.refreshing":"Actualisation des worktrees...","sessions.sidebar.session.moveToWorktree.loadFailed":"Impossible de charger les worktrees","sessions.sidebar.session.moveToWorktree.current":"Worktree actuel","sessions.sidebar.session.moveToWorktree.existingSuccess":"Session déplacée vers le worktree","sessions.sidebar.session.moveToWorktree.existingFailed":"Impossible de déplacer la session vers le worktree","sessions.sidebar.session.moveToWorktree.tooltipTargets":"Affiche les worktrees existants et l’option d’en créer un nouveau pour cette session.","sessions.sidebar.session.moveToWorktree.tooltip":"Crée un nouveau worktree depuis la branche actuelle et y déplace cette session et ses sous-sessions. Si la source contient des modifications non validées, vous choisissez de les transférer ou non.","sessions.sidebar.session.moveToWorktree.tooltipBusy":"Disponible lorsque la session est inactive. Arrêtez l’activité en cours ou attendez sa fin.","sessions.sidebar.session.moveToWorktree.tooltipMoving":"Cette session est déjà en cours de déplacement vers un nouveau worktree.","sessions.sidebar.session.moveToWorktree.confirm.title":"La source contient des modifications non validées","sessions.sidebar.session.moveToWorktree.confirm.changedFiles":"Fichiers modifiés dans ce worktree : {count}.","sessions.sidebar.session.moveToWorktree.confirm.ownership":"OpenCode suit ces modifications par répertoire, pas par session.","sessions.sidebar.session.moveToWorktree.confirm.sessionOnlyHelp":"Déplace cette session et ses sous-sessions en laissant chaque fichier source inchangé.","sessions.sidebar.session.moveToWorktree.confirm.allChangesHelp":"Transfère les modifications du répertoire de la session. Les fichiers non indexés et non suivis quittent la source après succès.","sessions.sidebar.session.moveToWorktree.confirm.stagedWarning":"Les modifications indexées restent dans la source et sont copiées vers la destination.","sessions.sidebar.session.moveToWorktree.confirm.baseWarning":"Le transfert peut échouer si la destination utilise une base Git différente.","sessions.sidebar.session.moveToWorktree.confirm.sessionOnly":"Déplacer la session uniquement","sessions.sidebar.session.moveToWorktree.confirm.allChanges":"Déplacer toutes les modifications de la source","sessions.sidebar.session.moveToWorktree.confirm.cancel":"Annuler","sessions.sidebar.session.moveToWorktree.sourceVerificationFailed":"Les modifications de la source n’ont pas pu être vérifiées. Aucun worktree ni session n’a été modifié.","sessions.sidebar.session.moveToWorktree.applyChangesFailed":"La destination n’a pas pu accepter les modifications de la source. La session et les modifications n’ont pas été déplacées. Réessayez et choisissez Déplacer la session uniquement.","sessions.sidebar.session.moveToWorktree.changesMayBeInDestination":"La connexion a été perdue avant que la destination ne confirme le déplacement. La session n’a peut-être pas été déplacée, et vos modifications non validées se trouvent peut-être déjà dans le worktree de destination. Vérifiez-le avant de réessayer.","sessions.sidebar.session.menu.runFusion":"Exécuter la fusion","sessions.sidebar.session.menu.openInSidePanel":"Ouvrir dans le panneau latéral","sessions.sidebar.session.actions.openInEditor":"Ouvrir dans l'éditeur","sessions.sidebar.session.menu.betaBadge":"bêta","sessions.sidebar.session.menu.label":"Menu des sessions","sessions.sidebar.session.untitled":"Session sans titre","sessions.sidebar.session.export.nothingToExport":"Rien à exporter","sessions.sidebar.session.export.failedLoadHistory":"Impossible de charger l’historique complet de la session","sessions.sidebar.session.export.success":"Session exportée","sessions.sidebar.session.export.failedRevealPath":"Impossible de révéler le chemin","sessions.sidebar.session.export.untitledSubagent":"Sous-agent sans titre","sessions.sidebar.session.export.skippedSubtaskSingle":"Session exportée, mais tâche de sous-agent {count} ignorée qui n'a pas pu être chargée.","sessions.sidebar.session.export.skippedSubtaskMany":"Session exportée, mais tâches du sous-agent {count} ignorées qui n'ont pas pu être chargées.","sessions.sidebar.session.export.dialog.title":"Exporter le Markdown","sessions.sidebar.session.export.dialog.descriptionSingle":"Cette session comporte une tâche de sous-agent {count}. L'inclure dans l'exportation ?","sessions.sidebar.session.export.dialog.descriptionMany":"Cette session comporte des tâches de sous-agent {count}. Les inclure dans l'exportation ?","sessions.sidebar.session.export.dialog.includeSubtasks":"Inclure les tâches des sous-agents","sessions.sidebar.session.export.dialog.confirm":"Exporter","sessions.sidebar.session.status.active":"Session active","sessions.sidebar.session.status.unread":"Mises à jour non lues","sessions.sidebar.session.status.pinned":"Session épinglée","sessions.sidebar.session.status.movingToWorktree":"Déplacement de la session vers un nouveau worktree","sessions.sidebar.session.status.permissionRequired":"Autorisation requise","sessions.sidebar.session.status.questionPendingSingle":"1 question en attente","sessions.sidebar.session.status.questionPendingMany":"{count} questions en attente","sessions.sidebar.session.status.activeFor":"Active depuis {duration}","sessions.sidebar.session.status.lastTurnDuration":"Le dernier tour a duré {duration}","sessions.sidebar.session.subsessions.collapse":"Réduire les sous-sessions","sessions.sidebar.session.subsessions.expand":"Développer les sous-sessions","sessions.sidebar.dialogs.deleteSession.title":"Supprimer la session ?","sessions.sidebar.dialogs.archiveSession.title":"Session d'archivage ?","sessions.sidebar.dialogs.deleteSession.withOneSubtask":'"{sessionTitle}" et sa sous-tâche {count} seront définitivement supprimées.',"sessions.sidebar.dialogs.deleteSession.withManySubtasks":'"{sessionTitle}" et ses sous-tâches {count} seront définitivement supprimées.',"sessions.sidebar.dialogs.archiveSession.withOneSubtask":'"{sessionTitle}" et sa sous-tâche {count} seront archivées.',"sessions.sidebar.dialogs.archiveSession.withManySubtasks":'"{sessionTitle}" et ses sous-tâches {count} seront archivées.',"sessions.sidebar.dialogs.deleteSession.single":'"{sessionTitle}" sera définitivement supprimé.',"sessions.sidebar.dialogs.archiveSession.single":'"{sessionTitle}" sera archivé.',"sessions.sidebar.dialogs.neverAsk":"Ne demandez jamais","sessions.sidebar.dialogs.cancel":"Annuler","sessions.sidebar.dialogs.deleteSession.titleAction":"Supprimer la session","sessions.sidebar.dialogs.deleteSessions.titleAction":"Supprimer des sessions","sessions.sidebar.dialogs.deleteSessions.title":"Supprimer des sessions ?","sessions.sidebar.dialogs.archiveSessions.title":"Archiver des sessions ?","sessions.sidebar.dialogs.deleteSessions.singleDescription":"La session {count} sera définitivement supprimée.","sessions.sidebar.dialogs.deleteSessions.pluralDescription":"Les sessions {count} seront définitivement supprimées.","sessions.sidebar.dialogs.archiveSessions.singleDescription":"La session {count} sera archivée.","sessions.sidebar.dialogs.archiveSessions.pluralDescription":"Les sessions {count} seront archivées.","sessions.sidebar.dialogs.deleteFolder.title":"Supprimer le dossier ?","sessions.sidebar.dialogs.deleteFolder.withOneSubfolder":'"{folderName}" sera supprimé avec le sous-dossier {count}. Les sessions à l’intérieur ne seront pas supprimées.',"sessions.sidebar.dialogs.deleteFolder.withManySubfolders":'"{folderName}" sera supprimé avec les sous-dossiers {count}. Les sessions à l’intérieur ne seront pas supprimées.',"sessions.sidebar.dialogs.deleteFolder.withContentsNoSubfolders":'"{folderName}" sera supprimé. Les sessions à l’intérieur ne seront pas supprimées.',"sessions.sidebar.dialogs.deleteFolder.single":'"{folderName}" sera définitivement supprimé.',"sessions.sidebar.dialogs.deleteResult.singleFailedToDelete":"La session {count} n'a pas pu être supprimée.","sessions.sidebar.dialogs.deleteResult.manyFailedToDelete":"Les sessions {count} n'ont pas pu être supprimées.","sessions.sidebar.dialogs.deleteResult.singleFailedToArchive":"La session {count} n'a pas pu être archivée.","sessions.sidebar.dialogs.deleteResult.manyFailedToArchive":"Les sessions {count} n'ont pas pu être archivées.","sessions.sidebar.dialogs.deleteResult.removedFromDate":"Suppression de toutes les sessions de {dateLabel}.","sessions.sidebar.dialogs.deleteResult.tryAgain":"Veuillez réessayer dans un instant.","sessions.sidebar.dialogs.worktreeDelete.descriptionNoLinked":"Cela supprime le worktree sélectionné.","sessions.sidebar.dialogs.worktreeDelete.descriptionOneLinked":"Cela supprime le worktree sélectionné et archive la session liée {count}.","sessions.sidebar.dialogs.worktreeDelete.descriptionManyLinked":"Cela supprime le worktree sélectionné et archive les {count} sessions liées.","sessions.sidebar.dialogs.sessionDelete.descriptionOne":"Cette action supprime définitivement 1 session.","sessions.sidebar.dialogs.sessionDelete.descriptionOneWithDate":"Cette action supprime définitivement 1 session de {dateLabel}.","sessions.sidebar.dialogs.sessionDelete.descriptionMany":"Cette action supprime définitivement les sessions {count}.","sessions.sidebar.dialogs.sessionDelete.descriptionManyWithDate":"Cette action supprime définitivement les sessions {count} de {dateLabel}.","sessions.sidebar.dialogs.sessionList.more":"+{count} plus","sessions.sidebar.session.share.successTitle":"Session partagée","sessions.sidebar.session.share.successDescription":"Le lien de partage a été copié dans le presse-papiers.","sessions.sidebar.session.share.error":"Impossible de partager la session","sessions.sidebar.session.share.copyUrlError":"Échec de la copie de URL","sessions.sidebar.session.unshare.success":"Session non partagée","sessions.sidebar.session.unshare.error":"Impossible d'annuler le partage de session","sessions.sidebar.session.delete.success":"Session supprimée","sessions.sidebar.session.delete.error":"Échec de la suppression de la session","sessions.sidebar.session.archive.success":"Session archivée","sessions.sidebar.session.archive.error":"Échec de l'archivage de la session","sessions.sidebar.session.restore.success":"Session restaurée","sessions.sidebar.session.restore.error":"Échec de la restauration de la session","sessions.sidebar.group.pr.checksPassed":"Contrôles {success}/{total} réussis","sessions.sidebar.group.pr.failingCount":"Échec de {count}","sessions.sidebar.group.pr.pendingCount":"{count} en attente","sessions.sidebar.group.pr.conflictsOrBlocked":"Conflits ou blocage","sessions.sidebar.group.pr.mergeable":"Fusionnable","sessions.sidebar.group.pr.mergeState":"État de fusion : {state}","sessions.sidebar.group.pr.status.merged":"Fusionné","sessions.sidebar.group.pr.status.readyToMerge":"Prêt à fusionner","sessions.sidebar.group.pr.status.open":"PR ouverte","sessions.sidebar.group.pr.status.mergeConflicts":"Fusionner les conflits","sessions.sidebar.group.pr.status.mergeBlocked":"Fusion bloquée","sessions.sidebar.group.pr.status.draft":"PR en brouillon","sessions.sidebar.group.pr.status.closed":"Fermé","sessions.sidebar.group.empty.noArchivedSessions":"Aucune session archivée pour l'instant.","sessions.sidebar.group.empty.noSessionsInWorkspace":"Aucune session dans cet espace de travail pour le moment.","sessions.sidebar.group.showMoreSingle":"Afficher plus de session sur {count}","sessions.sidebar.group.showMorePlural":"Afficher {count} plus de sessions","sessions.sidebar.group.showFewer":"Afficher moins de sessions","sessions.sidebar.group.expandAria":"Développer {label}","sessions.sidebar.group.collapseAria":"Réduire {label}","sessions.sidebar.group.actions.deleteArchivedInGroupAria":"Supprimer les sessions archivées dans {label}","sessions.sidebar.group.actions.deleteArchivedSessions":"Supprimer les sessions archivées","sessions.sidebar.group.actions.deleteGroupAria":"Supprimer {label}","sessions.sidebar.group.actions.deleteWorktree":"Supprimer ce worktree","sessions.sidebar.group.actions.newDraftInGroupAria":"Nouvelle session de brouillon dans {label}","sessions.sidebar.grouping.projectRoot":"racine du projet","sessions.sidebar.grouping.projectRootWithBranch":"racine du projet : {branch}","sessions.sidebar.grouping.archived":"archivé","sessions.sidebar.grouping.archivedDescription":"Sessions archivées et non attribuées","sessions.sidebar.folderItem.expandAria":"Développer le dossier {folderName}","sessions.sidebar.folderItem.collapseAria":"Réduire le dossier {folderName}","sessions.sidebar.folderItem.namePlaceholder":"Nom du dossier","sessions.sidebar.folderItem.newSessionAria":"Nouvelle session dans {folderName}","sessions.sidebar.folderItem.newSubfolderAria":"Nouveau sous-dossier dans {folderName}","sessions.sidebar.folderItem.newSubfolder":"Nouveau sous-dossier","sessions.sidebar.folderItem.renameAria":"Renommer le dossier {folderName}","sessions.sidebar.folderItem.deleteArchivedInFolderAria":"Supprimer les sessions archivées dans le dossier {folderName}","sessions.sidebar.folderItem.deleteFolderAria":"Supprimer le dossier {folderName}","sessions.sidebar.folderItem.emptyFolder":"Dossier vide","sessions.sidebar.sessionDialogs.ok":"D'ACCORD","sessions.sidebar.sessionDialogs.linkedSessionSingle":"Session liée","sessions.sidebar.sessionDialogs.linkedSessionPlural":"Sessions liées","sessions.sidebar.sessionDialogs.delete.note":"Les répertoires Worktree restent intacts. Les sous-sessions liées aux sessions sélectionnées seront également supprimées.","sessions.sidebar.sessionDialogs.directory.errorSelectTitle":"Échec de la sélection du répertoire","sessions.sidebar.sessionDialogs.directory.errorOpenTitle":"Échec de l'ouverture du répertoire","sessions.sidebar.sessionDialogs.directory.errorOpenDescription":"Desktop n'a pas pu accorder l'accès aux fichiers.","sessions.sidebar.sessionDialogs.directory.errorAddProjectTitle":"Échec de l'ajout du projet","sessions.sidebar.sessionDialogs.directory.errorAddProjectDescription":"Veuillez sélectionner un chemin de répertoire valide.","sessions.sidebar.sessionDialogs.worktree.errorRemoveTitle":"Échec de la suppression du worktree","sessions.sidebar.sessionDialogs.worktree.removedTitle":"Worktree supprimé","sessions.sidebar.sessionDialogs.worktree.removed":"Worktree supprimé.","sessions.sidebar.sessionDialogs.worktree.removedWithRemote":"Worktree et branche du dépôt distant supprimés.","sessions.sidebar.sessionDialogs.worktree.attachedArchived":"Worktree ci-joint archivé.","sessions.sidebar.sessionDialogs.worktree.attachedArchivedPlural":"Worktrees joints archivés.","sessions.sidebar.sessionDialogs.worktree.archivedAndRemoteRemoved":"Worktrees archivés et branches du dépôt distant supprimées.","sessions.sidebar.sessionDialogs.worktree.label":"Worktree","sessions.sidebar.sessionDialogs.worktree.pathUnavailable":"Chemin du worktree indisponible.","sessions.sidebar.sessionDialogs.worktree.uncommittedWarning":"Les modifications non validées seront ignorées.","sessions.sidebar.sessionDialogs.actions.deleteRemoteBranch":"Supprimer la branche du dépôt distant","sessions.sidebar.sessionDialogs.actions.remoteBranchInfoUnavailable":"Informations sur la branche du dépôt distant indisponibles","sessions.sidebar.sessionDialogs.actions.deleteLocalBranch":"Supprimer la branche locale","sessions.sidebar.sessionDialogs.actions.deleting":"Suppression…","sessions.sidebar.sessionDialogs.actions.deleteWorktree":"Supprimer le worktree","gitView.branch.branchToMergeInto":"Branche à fusionner avec {branch}","gitView.branch.branchToRebaseOnto":"Branche sur laquelle rebaser","gitView.branch.create":"Créer une nouvelle branche...","gitView.branch.currentBadge":"Actuel","gitView.branch.currentBranchFallback":"branche actuelle","gitView.branch.currentBranchTooltip":"Branche actuelle","gitView.branch.detachedHead":"HEAD détaché","gitView.branch.dialogDescriptionPrefix":"Choisissez comment intégrer une autre branche","gitView.branch.empty":"Aucune branche trouvée.","gitView.branch.localBranches":"Branches locales","gitView.branch.mergeDescription":"Créez un commit de fusion et conservez l’historique des branches.","gitView.branch.mergeRebase":"Fusionner/Rebase","gitView.branch.mergeRebaseTooltip":"Mettez à jour cette branche depuis une autre branche.","gitView.branch.mergingInProgress":"Fusion en cours","gitView.branch.namePlaceholder":"Nom de la branche","gitView.branch.newBranchPlaceholder":"Nouveau nom de branche","gitView.branch.noLocalBranches":"Aucune branche locale","gitView.branch.noRemoteBranches":"Aucune branche du dépôt distant","gitView.branch.operation":"Opération","gitView.branch.operationCompleted":"Opération terminée","gitView.branch.operationFailed":"Échec de l'opération","gitView.branch.pushToPrefix":"Appuyer pour préfixer","gitView.branch.pushToSuffix":"Appuyer pour suffixer","gitView.branch.rebaseDescription":"Rejouez vos commits au-dessus de la branche sélectionnée.","gitView.branch.rebasingInProgress":"Rebasage en cours","gitView.branch.remoteBranches":"Branches du dépôt distant","gitView.branch.renameTitle":"Renommer la branche","gitView.branch.renameSave":"Enregistrer le nom de la branche","gitView.branch.renameSaving":"Enregistrer le nom de la branche","gitView.branch.renameCancel":"Annuler le changement de nom de la branche","gitView.branch.searchPlaceholder":"Rechercher des branches...","gitView.branch.selectBranch":"Sélectionnez une branche","gitView.branch.summaryMergeInfix":"dans","gitView.branch.summaryMergePrefix":"Cela fusionnera","gitView.branch.summaryRebaseInfix":"sur","gitView.branch.summaryRebasePrefix":"Cela va rebaser","gitView.branch.updateDescriptionPrefix":"Apportez les dernières modifications dans","gitView.branch.updateTitle":"Mettre à jour la branche","gitView.changes.changedFilesAria":"Fichiers modifiés","gitView.changes.clearSelectionAria":"Effacer la sélection de fichiers","gitView.changes.collapseDirectoryAria":"Réduire le répertoire","gitView.changes.expandDirectoryAria":"Développer le répertoire","gitView.changes.revertAll":"Tout rétablir","gitView.changes.revertAllDescriptionPlural":"Rétablir toutes les modifications sélectionnées ?","gitView.changes.revertAllDescriptionSingle":"Rétablir la modification sélectionnée ?","gitView.changes.revertAllDialogTitle":"Annuler toutes les modifications ?","gitView.changes.revertFileAria":"Rétablir le fichier","gitView.changes.revertFileTooltip":"Annuler les modifications","gitView.changes.reverting":"Revenant...","gitView.changes.selectAllAria":"Sélectionnez tous les fichiers","gitView.changes.selectFileAria":"Sélectionner le fichier","gitView.changes.stagedTitle":"Mise en scène","gitView.changes.resizeSplitAria":"Redimensionner les modifications planifiées et non planifiées","gitView.changes.stageAllAria":"Organiser tous les changements","gitView.changes.stageDirectoryAria":"Ajoutez à l’index tous les changements dans {path}","gitView.changes.stageFileAria":"Ajouter à l’index {path}","gitView.changes.title":"Changements","gitView.changes.toggleDirectorySelectionAria":"Basculer la sélection du répertoire","gitView.changes.unstageAllAria":"Annuler toutes les modifications","gitView.changes.unstageDirectoryAria":"Annuler toutes les modifications dans {path}","gitView.changes.unstageFileAria":"Retirer de l’index {path}","gitView.commit.addGitmoji":"Ajouter un gitmoji","gitView.commit.aiHighlights.insertAria":"Insérer","gitView.commit.aiHighlights.insertTooltip":"Insérer une info-bulle","gitView.commit.aiHighlights.title":"Points forts","gitView.commit.commit":"Commettre","gitView.commit.commitAria":"Valider le commit","gitView.commit.committing":"S'engager...","gitView.commit.generate":"Générer","gitView.commit.generateAria":"Générer un message de commit","gitView.commit.messagePlaceholder":"Message de commit","gitView.commit.push":"Valider et synchroniser","gitView.commit.pushAria":"Valider et synchroniser","gitView.commit.pushing":"Synchronisation...","gitView.commit.selectFilesHint":"Sélectionnez les fichiers dans Modifications pour activer le commit.","gitView.commit.stageFilesHint":"Ajoutez des fichiers à l’index pour activer le commit.","gitView.commit.title":"Commettre","gitView.common.cancel":"Annuler","gitView.common.close":"Fermer","gitView.common.done":"Fait","gitView.common.processing":"Traitement...","gitView.common.reset":"Réinitialiser","gitView.conflict.abortOperation":"Abandonner l’opération","gitView.conflict.conflictedFiles":"Fichiers en conflit :","gitView.conflict.continueLater":"Continuer plus tard","gitView.conflict.detectedDescription":"Un conflit Git a été détecté.","gitView.conflict.detectedTitle":"Conflit détecté","gitView.conflict.errorLoadingDetails":"Erreur de chargement des détails","gitView.conflict.headInfo":"Informations HEAD :","gitView.conflict.loadFailed":"Échec du chargement","gitView.conflict.loading":"Chargement des détails du conflit...","gitView.conflict.noActiveSession":"Aucune session active","gitView.conflict.noActiveSessionDescription":"Ouvrez une session active pour continuer.","gitView.conflict.resolveCurrentSession":"Résoudre dans la session en cours","gitView.conflict.resolveNewSession":"Résoudre dans une nouvelle session","gitView.empty.cleanDescription":"Tous les changements ont été validés","gitView.empty.cleanTitle":"Worktree sans modifications","gitView.empty.pullBehindPlural":"Extraire les commits {count}","gitView.empty.pullBehindSingle":"Extraire le commit {count}","gitView.header.identityTooltip":"Identité Git","gitView.header.noIdentity":"Aucune identité","gitView.header.noProfiles":"Aucun profil disponible à appliquer.","gitView.header.repositoryViews":"Vues du dépôt","gitView.header.updateBranch":"Mettre à jour la branche","gitView.header.openPullRequest":"Ouvrir la pull request","gitView.header.removeRemoteAria":"Supprimer le remote","gitView.header.removeRemoteTitle":"Supprimer le remote","gitView.header.upstreamSynced":"synchronisé","gitView.header.upstreamTooltip":"Par rapport au {target}.","gitView.header.upstreamTooltipTracking":"Par rapport au {target}. Les badges de synchronisation principaux reflètent toujours {tracking}.","gitView.history.actions.cancelButton":"Annuler","gitView.history.actions.checkout":"Basculer","gitView.history.actions.checkoutConfirm":"Basculer sur ce commit en HEAD détaché ?","gitView.history.actions.cherryPick":"Cherry-pick","gitView.history.actions.cherryPickConfirm":"Cherry-pick ce commit sur la branche actuelle ?","gitView.history.actions.conflictToastDescription":"Conflits dans : {files}. Résolvez manuellement et validez, ou abandonnez avec git Cherry-pick/revert --abort.","gitView.history.actions.conflictToastTitle":"Conflit","gitView.history.actions.confirmButton":"Confirmer","gitView.history.actions.createBranch":"Créer une branche ici","gitView.history.actions.createBranchConfirm":"Créer","gitView.history.actions.createBranchPlaceholder":"Nom de la branche","gitView.history.actions.detachedHead":"Checkout (HEAD détaché)","gitView.history.actions.merge":"Fusionner avec le courant","gitView.history.actions.mergeConfirm":"Fusionner ce commit dans la branche actuelle ?","gitView.history.actions.rebase":"Rebase sur ce commit","gitView.history.actions.rebaseConfirm":"Rebaser la branche actuelle sur ce commit ?","gitView.history.actions.reset":"Réinitialiser...","gitView.history.actions.resetHard":"Hard — annuler toutes les modifications","gitView.history.actions.resetHardConfirm":"Réinitialisation matérielle - HEAD se déplace, toutes les modifications non validées sont définitivement supprimées.","gitView.history.actions.resetHardConfirmButton":"Ignorer les modifications","gitView.history.actions.resetMixed":"Mixte – modifications hors index","gitView.history.actions.resetMixedConfirm":"Réinitialisation mixte - HEAD bouge, change hors index.","gitView.history.actions.resetSoft":"Soft — conserver l'index","gitView.history.actions.resetSoftConfirm":"Réinitialisation logicielle - HEAD se déplace, modifications dans l’index préservées.","gitView.history.actions.revert":"Revenir","gitView.history.actions.revertConfirm":"Organiser un retour à ce commit ?","gitView.history.binary":"Binaire","gitView.history.binaryNoDiff":"Fichier binaire — aucune différence disponible","gitView.history.commitsPlaceholder":"Rechercher des commits","gitView.history.copySha":"Copier SHA","gitView.history.diffError":"Échec du chargement du diff. Cliquez pour réessayer.","gitView.history.largeDiffDescription":"Le rendu peut être lent. Vous pouvez toujours voir la différence en cliquant ci-dessous.","gitView.history.largeDiffTitle":"Grand diff ({count} a modifié les lignes)","gitView.history.loadingDiff":"Chargement du différentiel...","gitView.history.loadingFiles":"Chargement des fichiers...","gitView.history.loadMore":"Charger plus","gitView.history.loadingMore":"Chargement...","gitView.history.logSize100":"Taille du journal 100","gitView.history.logSize25":"Taille du journal25","gitView.history.logSize50":"Taille du journal50","gitView.history.noCommits":"Aucun commit trouvé","gitView.history.noFiles":"Aucun fichier","gitView.history.renamedNoDiff":"Fichier renommé – diff non pris en charge","gitView.history.renderDiffAnyway":"Rendre quand même","gitView.history.title":"Historique","gitView.history.refresh":"Actualiser","gitView.graph.title":"Graphique","gitView.integrate.checking":"Vérification…","gitView.integrate.cherryPickAbortedToast":"Cherry-pick annulé","gitView.integrate.cherryPickConflictDescription":"Des conflits sont apparus pendant le Cherry-pick.","gitView.integrate.cherryPickConflictToast":"Conflits pendant le Cherry-pick","gitView.integrate.cherryPickContinueFailedToast":"Impossible de continuer le Cherry-pick","gitView.integrate.cherryPickFinishedToast":"Cherry-pick terminé","gitView.integrate.commitsMovedDescriptionPlural":"{count} commits déplacés","gitView.integrate.commitsMovedDescriptionSingle":"1 commit déplacé","gitView.integrate.commitsMovedToast":"Commits déplacés","gitView.integrate.commitsToMove":"Commits à déplacer","gitView.integrate.conflictsInFiles":"Conflits dans les fichiers","gitView.integrate.currentCommit":"Commit actuel","gitView.integrate.currentSession":"Session en cours","gitView.integrate.failedToMoveToast":"Échec du déplacement des commits","gitView.integrate.moreFiles":"Plus de fichiers","gitView.integrate.move":"Se déplacer","gitView.integrate.moveCommits":"Déplacer les commits","gitView.integrate.moving":"Déplacement…","gitView.integrate.newSession":"Nouvelle session","gitView.integrate.noActiveSession":"Aucune session active","gitView.integrate.noActiveSessionDescription":"Ouvrez une session active pour déplacer des commits.","gitView.integrate.noCommitsToMove":"Aucun commit à déplacer.","gitView.integrate.noCommitsToMoveToast":"Aucun commit à déplacer","gitView.integrate.previewUnavailable":"Aperçu indisponible","gitView.integrate.showAll":"Afficher tout","gitView.integrate.showLess":"Afficher moins","gitView.integrate.showingFirstCommits":"Affichage des premiers commits","gitView.integrate.target":"Cible","gitView.integrate.title":"Réintégrer les commits","gitView.integrate.toMoveCount":"Nombre de commits à déplacer","gitView.operation.abort":"Avorter","gitView.operation.continue":"Continuer","gitView.operation.inProgressTitle":"{operation} en cours","gitView.operation.inProgressTitleManyConflicts":"{operation} en cours : {count} conflits","gitView.operation.inProgressTitleOneConflict":"{operation} en cours : {count} conflit","gitView.operation.merge":"Fusionner","gitView.operation.mergeInProgressWithHead":"Fusion de {head}","gitView.operation.mergingMessage":"Fusion : {message}","gitView.operation.rebase":"Rebase","gitView.operation.rebaseInProgress":"Rebase en cours","gitView.operation.rebasingOnto":"Rebaser {headName} sur {onto}","gitView.operation.readyToContinueHint":"Tous les conflits sont résolus. Poursuivez pour terminer l’opération.","gitView.operation.resolveConflictsHint":"Résolvez les conflits, puis poursuivez l'opération.","gitView.operation.resolveWithAi":"Résoudre avec l'IA","gitView.stash.confirmButton":"Confirmer","gitView.stash.description":"Des modifications locales doivent être mises en stash pour continuer.","gitView.stash.mergeWith":"Fusionner avec","gitView.stash.rebaseOnto":"Rebase sur","gitView.stash.restoreAfterOperation":"Restaurer après l'opération","gitView.stash.restoreAria":"Restaurer le stash","gitView.stash.stepRestore":"Restaurez vos modifications cachées","gitView.stash.stepStash":"Cachez vos modifications non validées","gitView.stash.thisWill":"Cela va :","gitView.stash.title":"Modifications non validées","gitView.stashes.actions.apply":"Appliquer","gitView.stashes.actions.drop":"Drop","gitView.stashes.actions.pop":"Pop","gitView.stashes.actions.stashCurrent":"Mettre les modifications actuelles en stash","gitView.stashes.actions.stashCurrentWithCount":"Cacher les fichiers {count}","gitView.stashes.confirm.drop":"Supprimer {ref} ?","gitView.stashes.description":"Enregistrez, restaurez et nettoyez les stashes Git pour ce dépôt.","gitView.stashes.empty.list":"Aucun stash pour l'instant.","gitView.stashes.empty.search":"Aucun stash correspondant.","gitView.stashes.includeUntrackedHint":"Les fichiers non suivis sont inclus automatiquement.","gitView.stashes.fileCount":"Fichiers {count}","gitView.stashes.fileCountLoading":"compter les fichiers...","gitView.stashes.itemNumber":"#{number}","gitView.stashes.latestLabel":"Dernier","gitView.stashes.messagePlaceholder":"Nom du stash","gitView.stashes.searchPlaceholder":"Rechercher des stashes","gitView.stashes.title":"Stashes","gitView.stashes.toast.applyFailed":"Échec de l'application du cache","gitView.stashes.toast.applySuccess":"Stash appliqué","gitView.stashes.toast.createFailed":"Échec de la sauvegarde des modifications","gitView.stashes.toast.created":"Modifications cachées","gitView.stashes.toast.dropFailed":"Échec de la suppression du stash","gitView.stashes.toast.dropSuccess":"Stash supprimé","gitView.stashes.toast.loadFailed":"Échec du chargement des stashes","gitView.stashes.toast.noChanges":"Aucune modification locale à stocker","gitView.stashes.toast.popFailed":"Échec du pop du stash","gitView.stashes.toast.popSuccess":"Le stash a été pop","gitView.stashes.untitled":"Stash sans titre","gitView.sync.fetch":"Aller chercher","gitView.sync.fetchFromRemote":"Récupérer depuis {name}","gitView.sync.fetchTooltip":"Récupérer à distance","gitView.sync.commitOrStashTooltip":"Validez ou cachez vos modifications avant la synchronisation","gitView.sync.moreActionsAria":"Plus d'actions de synchronisation","gitView.sync.noRemoteTooltip":"Aucun dépôt distant n’est configuré","gitView.sync.pull":"Tirer","gitView.sync.pullTooltip":"Extraire les modifications","gitView.sync.pullTooltipBehind":"Tirer les modifications ({count} derrière)","gitView.sync.push":"Pousser","gitView.sync.pushTooltip":"Pousser les changements","gitView.sync.pushTooltipAhead":"Pousser les modifications ({count} en avance)","gitView.sync.sync":"synchroniser","gitView.sync.syncChanges":"Synchroniser les modifications","gitView.sync.syncChangesTooltip":"Modifications de synchronisation ({behind} vers le bas, {ahead} vers le haut)","gitView.sync.syncChangesWithCounts":"Modifications de synchronisation {behind}↓ {ahead}↑","gitView.sync.syncCounts":"{behind}↓ {ahead}↑","gitView.branch.actionsUnavailable":"Actions de branchement indisponibles dans cet état du dépôt","gitView.conflict.noDetailsAvailable":"Aucun détail de conflit disponible","gitView.empty.notGitRepository":"Ce répertoire n'est pas un dépôt Git","gitView.empty.notGitRepositoryDescription":"Initialisez Git dans ce répertoire ou ouvrez un dépôt.","gitView.empty.selectSessionOrDirectory":"Sélectionnez une session ou un répertoire pour afficher l'état de Git","gitView.empty.worktreeFeaturesUnavailable":"Les fonctionnalités Worktree ne sont pas disponibles dans ce mode d’espace de travail.","gitView.empty.worktreeSetupDescription":"Termine la configuration du worktree et prépare l'état du dépôt.","gitView.empty.worktreeSetupInProgress":"Configuration de worktree en cours","gitView.empty.discoveringRepositories":"Recherche des dépôts Git...","gitView.empty.discoverFailed":"Impossible d’analyser les dépôts Git","gitView.empty.retryDiscovery":"Réessayer","gitView.empty.selectRepositoryPlaceholder":"Sélectionnez un dépôt...","gitView.gitmoji.empty":"Aucun gitmoji trouvé","gitView.gitmoji.searchPlaceholder":"Rechercher des gitmoji...","gitView.gitmoji.title":"Insérer un gitmoji","gitView.history.dialogDescription":"Parcourez les commits récents et inspectez les fichiers modifiés.","gitView.loading.checkingRepository":"Vérification du dépôt...","gitView.loading.loading":"Chargement...","gitView.pr.actions.add":"Ajouter","gitView.pr.actions.cancelEditing":"Annuler la modification","gitView.pr.actions.cancelEditingAria":"Annuler la modification des PR","gitView.pr.actions.createPr":"Créer une PR","gitView.pr.actions.edit":"Modifier","gitView.pr.actions.editPr":"Modifier la PR","gitView.pr.actions.editPrAria":"Modifier la PR","gitView.pr.actions.hide":"Cacher","gitView.pr.actions.markReady":"Marquez prêt","gitView.pr.actions.markReadyAria":"Marquer la demande d'extraction comme prête à être examinée","gitView.pr.actions.mergePr":"Fusionner la PR","gitView.pr.actions.mergePrAria":"Fusionner la PR","gitView.pr.actions.openChecks":"Chèques ouverts","gitView.pr.actions.openChecksAria":"Ouvrir les chèques échoués","gitView.pr.actions.openComments":"Commentaires ouverts","gitView.pr.actions.openCommentsAria":"Ouvrir les commentaires de la PR","gitView.pr.actions.openOnGitHub":"Ouvert sur GitHub","gitView.pr.actions.openOnGitHubAria":"Ouvrir la PR sur GitHub","gitView.pr.actions.openSettings":"Ouvrir les paramètres","gitView.pr.actions.repo":"Dépôt","gitView.pr.actions.resolveFailedChecks":"Joindre les vérifications échouées","gitView.pr.actions.resolveFailedChecksAria":"Joindre les vérifications échouées au contexte du chat","gitView.pr.actions.savePr":"Enregistrer la PR","gitView.pr.actions.savePrAria":"Enregistrer les modifications de la PR","gitView.pr.actions.sendCommentToAgent":"Joindre le commentaire au contexte du chat","gitView.pr.actions.sendCommentToAgentAria":"Joindre ce commentaire au contexte du chat","gitView.pr.actions.sendToAgent":"Joindre au chat","gitView.pr.actions.shareComments":"Joindre les commentaires","gitView.pr.actions.shareCommentsAria":"Joindre les commentaires de la pull request au contexte du chat","gitView.pr.actions.toggleDraftAria":"Basculer l'état de brouillon","gitView.pr.actions.refresh":"Actualiser le statut PR","gitView.pr.actions.refreshAria":"Actualiser l'état de la demande d'extraction","gitView.pr.additionalContext.added":"Ajouté","gitView.pr.additionalContext.hint":"Ajoutez un contexte supplémentaire pour une meilleure qualité d’évaluation.","gitView.pr.additionalContext.optional":"Facultatif","gitView.pr.additionalContext.title":"Contexte supplémentaire","gitView.pr.checkDetails.empty":"Aucun détail de chèque disponible","gitView.pr.checkDetails.title":"Détails de la vérification ayant échoué","gitView.pr.checkingStatus":"Vérification de l'état de la PR...","gitView.pr.checks.label":"chèques","gitView.pr.checks.completedLabel":"Complété","gitView.pr.checks.conclusionLabel":"Conclusion","gitView.pr.checks.startedLabel":"Commencé","gitView.pr.checks.statusLabel":"Statut","gitView.pr.checks.stepLabel":"Étape","gitView.pr.checks.steps":"Mesures","gitView.pr.comments.empty":"Aucun commentaire trouvé","gitView.pr.comments.generalContext":"Commentaire général","gitView.pr.comments.reviewContext":"Revoir le commentaire","gitView.pr.comments.title":"Commentaires","gitView.pr.comments.unknownAuthor":"Auteur inconnu","gitView.pr.createTitle":"Créer une PR","gitView.pr.draftMustBeReady":"Le brouillon de PR doit être marqué comme prêt avant la fusion.","gitView.pr.field.baseBranch":"Branche de base","gitView.pr.field.description":"Description","gitView.pr.field.draft":"Brouillon","gitView.pr.field.title":"Titre","gitView.pr.githubNotConnected":"GitHub n'est pas connecté","gitView.pr.history.merged":"La PR #{number} a été fusionnée dans {base}.","gitView.pr.history.closed":"La PR #{number} a été fermée.","gitView.pr.loadingDescription":"Chargement de la description de la PR...","gitView.pr.mergeMethod.merge":"Créer un commit de fusion","gitView.pr.mergeMethod.rebase":"Rebase et fusionner","gitView.pr.mergeMethod.squash":"Écraser et fusionner","gitView.pr.noDescription":"Aucune description","gitView.pr.noMergePermission":"Vous n'êtes pas autorisé à fusionner cette demande d'extraction.","gitView.pr.notMergeable":"Non fusionnable","gitView.pr.numberLabel":"PR #{number}","gitView.pr.segment.overview":"Aperçu","gitView.pr.segment.checks":"Vérifications","gitView.pr.segment.comments":"Commentaires","gitView.pr.comments.addAll":"Tout joindre au chat","gitView.pr.placeholder.additionalContext":"Toute contrainte, note de déploiement ou contexte du réviseur...","gitView.pr.placeholder.description":"Décrivez le changement...","gitView.pr.placeholder.main":"Résumez votre PR","gitView.pr.placeholder.selectBaseBranch":"Sélectionnez la branche de base","gitView.pr.placeholder.title":"Titre de la PR","gitView.pr.placeholder.whatChanged":"Qu'est-ce qui a changé et pourquoi ?","gitView.pr.statusUnavailable":"Statut PR indisponible","gitView.pr.toast.baseBranchRequired":"Sélectionnez une branche de base","gitView.pr.toast.baseMustDifferFromHead":"La branche de base doit différer de la branche actuelle","gitView.pr.toast.createPrFailed":"Échec de la création de la PR","gitView.pr.toast.generateDescriptionFailed":"Échec de la génération de la description de la PR","gitView.pr.toast.githubApiUnavailable":"GitHub API n'est pas disponible","gitView.pr.toast.loadCheckDetailsFailed":"Échec du chargement des détails du chèque","gitView.pr.toast.loadChecksFailed":"Échec du chargement des vérifications de la PR","gitView.pr.toast.loadCommentsFailed":"Échec du chargement des commentaires","gitView.pr.toast.loadPrCommentsFailed":"Échec du chargement des commentaires de la PR","gitView.pr.toast.markReadyFailed":"Impossible de marquer la PR comme prête","gitView.pr.toast.markedReady":"PR marquée comme prête pour relecture","gitView.pr.toast.mergeFailed":"Échec de la fusion de la PR","gitView.pr.toast.noActiveSession":"Aucune session de chat active","gitView.pr.toast.noActiveSessionDescription":"Ouvrez ou créez une session de discussion pour envoyer du contexte à un agent.","gitView.pr.toast.noFailedChecks":"Aucun chèque échoué trouvé","gitView.pr.toast.noModelSelected":"Sélectionnez d'abord un modèle","gitView.pr.toast.noPrComments":"Aucun commentaire de PR trouvé","gitView.pr.toast.prCreated":"PR créée","gitView.pr.toast.prMerged":"PR fusionnée","gitView.pr.toast.prNotMerged":"La PR n'a pas été fusionnée","gitView.pr.toast.prUpdated":"PR mise à jour","gitView.pr.toast.sendMessageFailed":"Échec de l'envoi du message à l'agent","gitView.pr.toast.titleRequired":"Le titre est requis","gitView.pr.toast.updatePrFailed":"Échec de la mise à jour de la PR","gitView.pullRequest.createHint":"Créez et gérez les PR depuis cette branche.","gitView.pullRequest.availableOnFeatureBranches":"Disponible lorsque la branche actuelle peut ouvrir une PR.","gitView.pullRequest.title":"PR","gitView.tabs.worktree":"Worktree","gitView.toast.abortOperationFailed":"Échec de l'annulation de l'opération","gitView.toast.appliedIdentity":"Identité appliquée : {name}","gitView.toast.applyIdentityFailed":"Échec de l'application de l'identité","gitView.toast.branchCreatedLocally":"Branche créée localement, mais n'a pas pu être configurée en amont.","gitView.toast.cannotCheckout":"Impossible de basculer sur la branche : {reason}","gitView.toast.cannotCreateBranch":"Impossible de créer une branche : {reason}","gitView.toast.cannotRemoveOriginRemote":"Impossible de supprimer le dépôt distant origin","gitView.toast.cannotRenameBranch":"Impossible de renommer la branche : {reason}","gitView.toast.checkedOut":"J'ai vérifié {name}","gitView.toast.checkoutFailed":"Échec du checkout de {name}","gitView.toast.commitCreated":"Commit créé","gitView.toast.commitHashCopied":"Hachage du commit copié","gitView.toast.continueOperationFailed":"Échec de la poursuite de l'opération","gitView.toast.copyFailed":"Échec de la copie","gitView.toast.createBranchFailed":"Échec de la création de la branche","gitView.toast.createCommitFailed":"Échec de la création du commit","gitView.toast.createdBranch":"Branche créée {name}","gitView.toast.enterCommitMessage":"Entrez un message de commit","gitView.toast.fetchedFromRemote":"Récupéré depuis {name}","gitView.toast.generateCommitMessageFailed":"Échec de la génération du message de commit","gitView.toast.mergeAborted":"Fusion interrompue","gitView.toast.mergeCompleted":"Fusion terminée","gitView.toast.mergeConflictsDetected":"Conflits de fusion détectés","gitView.toast.mergedIntoBranch":"Fusion de {branch} dans {currentBranch}","gitView.toast.pulledFilesPlural":"Récupération de {count} fichiers depuis {name}","gitView.toast.pulledFilesSingle":"Récupération de {count} fichier depuis {name}","gitView.toast.pushedToUpstream":"Poussé vers {name}","gitView.toast.commitOrStashBeforeSync":"Validez ou cachez vos modifications avant la synchronisation","gitView.toast.alreadyUpToDate":"Déjà à jour","gitView.toast.syncedPulledPluralAndPushed":"Extrait les fichiers {count} de {name} et poussé vers l'amont","gitView.toast.syncedPulledSingleAndPushed":"Récupération de {count} fichier depuis {name} puis push vers l’amont","gitView.toast.syncedChanges":"Modifications synchronisées","gitView.toast.rebaseAborted":"Rebase abandonné","gitView.toast.rebaseConflictsDetected":"Conflits de rebase détectés","gitView.toast.rebaseStepCompleted":"Ajouter à l’index de rebase terminée","gitView.toast.rebasedOntoBranch":"Rebasage de {currentBranch} sur {branch}","gitView.toast.refreshRepositoryFailed":"Échec de l'actualisation du dépôt","gitView.toast.remoteNameRequired":"Le nom du dépôt distant est requis","gitView.toast.removedRemote":"Remote supprimé : {name}","gitView.toast.renameBranchFailed":"Échec du renommage de {oldName} en {newName}","gitView.toast.renamedBranch":"Renommé {oldName} en {newName}","gitView.toast.restoreStashFailed":"Échec de la restauration du cache","gitView.toast.restoreStashManually":"Cache restauré manuellement requis","gitView.toast.revertFailed":"Échec de l'annulation des modifications","gitView.toast.revertedFile":"{path} inversé","gitView.toast.revertedFilesPlural":"Fichiers {count} rétablis","gitView.toast.revertedFilesSingle":"Fichier {count} rétabli","gitView.toast.revertedSomePlural":"Fichiers {success} annulés, échec de {failed}","gitView.toast.revertedSomeSingle":"Fichier {success} rétabli, échec de {failed}","gitView.toast.stageFileFailed":"Échec de l'ajout des modifications à l'index","gitView.toast.stageFileToCommit":"Préparez au moins un fichier à valider","gitView.toast.stageFileToDescribe":"Mettre en scène au moins un fichier à décrire","gitView.toast.selectFileToCommit":"Sélectionnez au moins un fichier à valider","gitView.toast.selectFileToDescribe":"Sélectionnez au moins un fichier à décrire","gitView.toast.stashedRestored":"Modifications cachées restaurées","gitView.toast.syncActionFailed":"Échec du {action}","gitView.toast.unstageFileFailed":"Échec de l'annulation du transfert des modifications","gitView.toast.upstreamSet":"Réglé en amont pour {branch} à {remote}","gitView.worktree.availableInWorktreeMode":"Disponible uniquement en mode worktree","contextPanel.mode.chat":"Chat","contextPanel.mode.files":"Fichiers","contextPanel.mode.diff":"Changements","contextPanel.mode.stagedDiff":"Différence par étapes","contextPanel.mode.workingDiff":"Différentiel de travail","contextPanel.mode.plan":"Plan","contextPanel.mode.pr":"Pull Request","contextPanel.mode.context":"Contexte","contextPanel.mode.preview":"Aperçu","contextPanel.mode.browser":"Navigateur","contextRail.configure.open":"Configurer les panneaux","contextRail.configure.dialogTitle":"Panneaux de la barre","contextRail.configure.dialogDescription":"Choisissez les panneaux affichés par la barre. Les panneaux masqués conservent leurs données et restent accessibles via la palette de commandes.","contextRail.configure.showAll":"Tout afficher","contextRail.configure.noneWarning":"Tous les panneaux sont masqués.","contextRail.aria.rail":"Surfaces du panneau","contextPanel.editorEmpty.title":"Aucun fichier ouvert","contextPanel.editorEmpty.description":"Choisissez un fichier dans l’arborescence pour commencer.","contextRail.surface.editor.description":"Modifier les fichiers du projet","contextRail.surface.git.description":"Commits, branches et pull requests","contextRail.surface.git.changesCountAriaSingle":"{label}, {count} fichier modifié","contextRail.surface.git.changesCountAriaPlural":"{label}, {count} fichiers modifiés","contextRail.surface.git.changesCountTooltipSingle":"{count} fichier modifié","contextRail.surface.git.changesCountTooltipPlural":"{count} fichiers modifiés","contextRail.surface.terminal.description":"Terminal intégré","contextRail.surface.diff.description":"Passer en revue les modifications","contextPanel.mode.walkthrough":"Parcours","contextRail.surface.walkthrough.description":"Un parcours de vos modifications guidé par l’IA","walkthrough.scope.all":"Tout non validé","walkthrough.scope.group.workingTree":"Copie de travail","walkthrough.scope.group.committed":"Validé","walkthrough.scope.staged":"Indexées","walkthrough.scope.working":"Non indexées","walkthrough.scope.branch":"Cette branche","walkthrough.scope.selectorAria":"Choisir ce qui est examiné","walkthrough.language.menuLabel":"Langue du parcours","walkthrough.missing.language":"Pas encore de parcours en {requested} — voici celui en {shown}.","walkthrough.missing.model":"Pas encore de parcours généré par {model} — voici le dernier généré ici.","walkthrough.missing.languageAndModel":"Pas encore de parcours dans cette langue avec ce modèle — voici le dernier généré ici.","walkthrough.language.selectorAria":"Choisir la langue du parcours","walkthrough.scope.pullRequest":"PR n° {number}","walkthrough.action.generate":"Générer le parcours","walkthrough.action.regenerate":"Régénérer","walkthrough.action.cancel":"Annuler","walkthrough.action.next":"Étape suivante","walkthrough.action.previous":"Étape précédente","walkthrough.action.refresh":"Actualiser","walkthrough.action.open":"Parcours","walkthrough.stage.collecting":"Collecte des modifications","walkthrough.stage.asking":"En attente du modèle","walkthrough.stage.assembling":"Assemblage du parcours","walkthrough.empty.title":"Aucun parcours pour l’instant","walkthrough.empty.description":"Construisez un parcours de lecture guidé à travers ces modifications. Cela appelle le petit modèle et consomme des jetons, donc rien ne se lance sans votre demande.","walkthrough.stale.banner":"Le code a changé après cette revue. Étapes obsolètes : {count}","walkthrough.stop.staleAll":"Tout le code décrit par cette étape a changé.","walkthrough.stop.stalePartial":"Une partie du code décrit par cette étape a changé. Fragments manquants : {count}","walkthrough.stop.staleShort":"Obsolète","walkthrough.stop.noCode":"Le code de cette étape est absent du diff actuel.","walkthrough.uncovered.title":"Modifications non traitées par la revue : {count}","walkthrough.uncovered.description":"La revue les a jugées courantes. Dépliez pour les vérifier vous-même.","walkthrough.toc.moreFiles":"Autres fichiers : {count}","walkthrough.toc.uncovered":"Non traité : {count}","walkthrough.toc.resize":"Redimensionner la colonne du sommaire","walkthrough.importance.critical":"Changement clé","walkthrough.importance.criticalHint":"Cette étape porte l'essentiel du changement, lisez-la attentivement. Ce n'est pas un problème détecté dans votre code.","walkthrough.importance.context":"Contexte","walkthrough.importance.contextHint":"Un changement de soutien, présent pour que le reste ait du sens.","walkthrough.help.guide":"Comment fonctionnent les walkthroughs","walkthrough.blocked.noModel.title":"Aucun petit modèle disponible","walkthrough.blocked.noModel.description":"Connectez-vous à un fournisseur de modèles pour générer une revue.","walkthrough.blocked.emptyDiff.title":"Rien à examiner","walkthrough.blocked.emptyDiff.description":"Il n’y a encore aucune modification dans cette portée.","walkthrough.blocked.contextTooSmall.title":"Ce diff est trop volumineux pour le modèle actuel","walkthrough.blocked.contextTooSmall.description":"{model} accepte environ {available} k caractères et ce diff en demande environ {required} k. Rien n’est tronqué : choisissez un modèle au contexte plus large.","walkthrough.blocked.structuredOutput.title":"Ce modèle ne produit pas de sortie structurée","walkthrough.blocked.structuredOutput.description":"{model} ne prend pas en charge les réponses structurées nécessaires à un parcours.","walkthrough.blocked.chooseModel":"Choisissez le petit modèle","walkthrough.blocked.outputExhausted.title":"Le modèle a épuisé son budget de réponse","walkthrough.blocked.outputExhausted.description":"{model} a dépensé toute sa marge de sortie en raisonnement et n’a rien renvoyé. Les modèles de raisonnement le font souvent sur de gros diffs : essayez un modèle qui réfléchit moins, ou une portée plus étroite.","walkthrough.blocked.outputExhausted.descriptionUnknownModel":"Le petit modèle a dépensé toute sa marge de sortie en raisonnement et n’a rien renvoyé. Les modèles de raisonnement le font souvent sur de gros diffs : essayez un modèle qui réfléchit moins, ou une portée plus étroite.","walkthrough.blocked.onlyGenerated.title":"Seuls des fichiers générés ont changé","walkthrough.blocked.onlyGenerated.description":"Toutes les modifications concernent des fichiers de verrouillage ou d’autres sorties générées, que la revue ignore délibérément.","walkthrough.blocked.serverUnsupported.title":"Ce serveur ne prend pas en charge les walkthroughs","walkthrough.blocked.serverUnsupported.description":"Le serveur AiWorker auquel cette application est connectée n'a pas répondu à l'API walkthrough : il est donc plus ancien que l'application. Mettez le serveur à jour en 1.18 ou plus récent, puis actualisez.","walkthrough.blocked.contextTooSmall.descriptionUnknownModel":"Le petit modèle accepte environ {available} k caractères et ce diff en demande environ {required} k. Rien n’est tronqué : choisissez un modèle au contexte plus large.","walkthrough.blocked.structuredOutput.descriptionUnknownModel":"Le petit modèle ne prend pas en charge les réponses structurées nécessaires à un parcours.","contextRail.surface.plan.description":"Voir le plan actuel","contextRail.surface.pr.description":"Créer, relire et fusionner la pull request de la branche actuelle","contextRail.surface.notes.description":"Notes, tâches, plans et mémoire de l’agent pour le projet","contextRail.surface.context.description":"Contexte de session et utilisation des tokens","contextRail.surface.browser.description":"Navigateur web intégré","contextRail.surface.preview.description":"Aperçu du serveur de développement","contextRail.surface.chat.description":"Session ouverte côte à côte","contextRail.surface.notes":"Connaissances du projet","contextRail.editorTree.toggle":"Afficher/masquer l’arborescence de fichiers","contextPanel.browser.open":"Ouvrir le panneau du navigateur","contextPanel.browser.addressAria":"Adresse du navigateur","contextPanel.browser.history.label":"Adresses récentes","contextPanel.browser.history.forget":"Retirer de l’historique","contextPanel.browser.newTab":"Nouvel onglet du navigateur","contextPanel.browser.empty":"Navigateur Internet","contextPanel.browser.emptyHint":"Entrez une adresse ci-dessus pour commencer à naviguer sur le Web","contextPanel.tab.closeTabAria":"Fermer l'onglet {label}","contextPanel.tab.menu.close":"Fermer","contextPanel.tab.menu.closeOthers":"Fermer les autres","contextPanel.tab.menu.closeToLeft":"Fermer les onglets à gauche","contextPanel.tab.menu.closeToRight":"Fermer les onglets à droite","contextPanel.tab.menu.closeAll":"Fermer tous les onglets","contextPanel.actions.collapsePanel":"Réduire le panneau","contextPanel.actions.expandPanel":"Agrandir le panneau","contextPanel.actions.closePanel":"Fermer le panneau","contextPanel.actions.resizePanelAria":"Redimensionner le panneau contextuel","contextPanel.iframe.sessionChatTitle":"Session de discussion {sessionID}","contextPanel.preview.actions.reload":"Recharger l'aperçu","contextPanel.preview.actions.openExternal":"Ouvrir dans le navigateur","contextPanel.preview.actions.retry":"Réessayer","contextPanel.preview.iframeTitle":"Aperçu","contextPanel.preview.invalidUrl":"L'aperçu nécessite un http(s) URL valide.","contextPanel.preview.empty":"Pas d'aperçu URL","contextPanel.preview.loading":"Connexion du proxy d'aperçu...","contextPanel.preview.proxyError":"Impossible de démarrer le proxy d'aperçu.","contextPanel.preview.upstreamUnreachable":"Le serveur de développement ne répond pas.","contextPanel.preview.upstreamUnreachableHint":"Assurez-vous que votre serveur de développement est toujours en cours d'exécution, puis réessayez.","contextPanel.preview.startingServer":"Démarrage du serveur de développement...","contextPanel.preview.startingServerHint":"En attente que le serveur accepte les connexions.","contextPanel.preview.title":"Aperçu","contextPanel.preview.description":"Utilisez les actions du projet ou un bouton Aperçu du terminal pour ouvrir un aperçu.","contextPanel.preview.startPreview":"Démarrer l'aperçu","contextPanel.preview.starting":"Démarrage...","contextPanel.preview.noDevServer":'Aucune commande de serveur de développement trouvée. Configurez une action de projet ou ajoutez un script "dev" à package.json.',"contextPanel.preview.startFailed":"Échec du démarrage du serveur d'aperçu.","contextPanel.preview.serverExited":"Le serveur de développement s'est arrêté de manière inattendue.","contextPanel.preview.noUrlDetected":"Le serveur de développement a démarré, mais aucun URL n'a été détecté dans sa sortie. Ouvrez l'onglet Aperçu du terminal pour vérifier les journaux.","contextPanel.preview.serverExitedWithLog":`Le serveur de développement s'est arrêté de manière inattendue. Dernière sortie :
8
-
9
- {log}`,"contextPanel.preview.noUrlDetectedWithLog":`Le serveur de développement n'est pas devenu accessible. Dernière sortie :
10
-
11
- {log}`,"contextPanel.preview.console.open":"Ouvrir la console d'aperçu","contextPanel.preview.console.waiting":"En attente de la console de prévisualisation","contextPanel.preview.console.title":"Console de prévisualisation","contextPanel.preview.console.attach":"Attacher","contextPanel.preview.console.copy":"Copie","contextPanel.preview.console.clear":"Effacer","contextPanel.preview.console.empty":"Aucun événement de console d’aperçu pour l’instant.","contextPanel.preview.console.noFilteredEvents":"Aucun événement ne correspond à ce filtre.","contextPanel.preview.console.runtimeError":"Erreur d'exécution","contextPanel.preview.console.copied":"Console d'aperçu copiée","contextPanel.preview.console.copyFailed":"Échec de la copie de la console d'aperçu","contextPanel.preview.console.attached":"Console de prévisualisation attachée au chat","contextPanel.preview.console.attachNoSession":"Ouvrir une session de discussion avant de joindre les journaux d'aperçu","contextPanel.preview.console.attachAnnotation":"Il s'agit des journaux de la console du navigateur du serveur de développement exécuté pour ce projet.","contextPanel.preview.inspect.toggle":"Inspecter l'élément d'aperçu","contextPanel.preview.inspect.attached":"Aperçu de l'annotation jointe au chat","contextPanel.preview.inspect.attachNoSession":"Ouvrir une session de discussion avant de joindre des annotations d'aperçu","contextPanel.preview.inspect.attachAnnotation":"Il s'agit d'un élément DOM sélectionné dans l'aperçu de l'application.","contextPanel.preview.inspect.attachAnnotationWithScreenshot":"Il s'agit d'un élément DOM sélectionné dans l'aperçu de l'application. Une capture d'écran de la zone d'aperçu visible avec l'élément sélectionné en surbrillance est jointe.","contextPanel.preview.console.filter.all":"Tous","contextPanel.preview.console.filter.errors":"Erreurs","contextPanel.preview.console.filter.warnings":"Avertissements","contextPanel.preview.console.filter.logs":"Journaux","terminalView.preview.open":"Aperçu","terminalView.preview.openTitle":"Ouvrir le volet d'aperçu","sidebarFilesTree.menu.rename":"Rebaptiser","sidebarFilesTree.menu.copyPath":"Copier le chemin","sidebarFilesTree.menu.save":"Sauvegarder","sidebarFilesTree.menu.download":"Télécharger","sidebarFilesTree.menu.newFile":"Nouveau fichier","sidebarFilesTree.menu.newFolder":"Nouveau dossier","sidebarFilesTree.menu.delete":"Supprimer","sidebarFilesTree.toast.pathCopied":"Chemin copié","sidebarFilesTree.toast.copyFailed":"Échec de la copie","sidebarFilesTree.toast.revealFailed":"Impossible de révéler le chemin","sidebarFilesTree.toast.filenameRequired":"Le nom du fichier est obligatoire","sidebarFilesTree.toast.writeNotSupported":"Écriture non prise en charge","sidebarFilesTree.toast.fileCreated":"Fichier créé","sidebarFilesTree.toast.operationFailed":"L'opération a échoué","sidebarFilesTree.toast.uploaded":"Fichiers téléversés","sidebarFilesTree.toast.uploadedWithoutConflicts":"Les fichiers sans conflit ont été téléversés","sidebarFilesTree.toast.uploadFailed":"Certains fichiers n’ont pas pu être téléversés","sidebarFilesTree.drop.target":"Téléverser dans {path}","sidebarFilesTree.drop.uploading":"Téléversement des fichiers dans {path}","sidebarFilesTree.dialog.uploadConflicts.title":"Remplacer les fichiers existants ?","sidebarFilesTree.dialog.uploadConflicts.description":"Des fichiers portant ces noms existent déjà dans {path}. Leur remplacement est irréversible.","sidebarFilesTree.dialog.uploadConflicts.replace":"Remplacer","sidebarFilesTree.toast.folderNameRequired":"Le nom du dossier est requis","sidebarFilesTree.toast.folderCreated":"Dossier créé","sidebarFilesTree.toast.nameRequired":"Le nom est requis","sidebarFilesTree.toast.renameNotSupported":"Renommer non pris en charge","sidebarFilesTree.toast.renamedSuccessfully":"Renommé avec succès","sidebarFilesTree.toast.deleteNotSupported":"Suppression non prise en charge","sidebarFilesTree.toast.deletedSuccessfully":"Supprimé avec succès","sidebarFilesTree.search.placeholder":"Rechercher des fichiers...","sidebarFilesTree.search.clearAria":"Effacer la recherche","sidebarFilesTree.actions.newFileTitle":"Nouveau fichier","sidebarFilesTree.actions.newFolderTitle":"Nouveau dossier","sidebarFilesTree.actions.refreshTitle":"Rafraîchir","sidebarFilesTree.actions.collapseAllTitle":"Réduire tous les dossiers","sidebarFilesTree.actions.fileMenuTitle":"Menu Fichier","sidebarFilesTree.state.searching":"Recherche...","sidebarFilesTree.state.loading":"Chargement...","sidebarFilesTree.dialog.createFile.title":"Créer un fichier","sidebarFilesTree.dialog.createFolder.title":"Créer un dossier","sidebarFilesTree.dialog.rename.title":"Rebaptiser","sidebarFilesTree.dialog.delete.title":"Supprimer","sidebarFilesTree.dialog.createFile.description":"Créer un nouveau fichier dans {path}","sidebarFilesTree.dialog.createFolder.description":"Créez un nouveau dossier dans {path}","sidebarFilesTree.dialog.rename.description":"Renommer {name}","sidebarFilesTree.dialog.delete.description":"Etes-vous sûr de vouloir supprimer {name} ? Cette action ne peut pas être annulée.","sidebarFilesTree.dialog.rootFallback":"racine","sidebarFilesTree.dialog.rename.placeholder":"Nouveau nom","sidebarFilesTree.dialog.namePlaceholder":"Nom","sidebarFilesTree.dialog.cancel":"Annuler","sidebarFilesTree.dialog.confirm":"Confirmer","sidebarFilesTree.dialog.delete.confirm":"Supprimer","filesView.dialog.createFile.title":"Créer un fichier","filesView.dialog.createFolder.title":"Créer un dossier","filesView.dialog.rename.title":"Rebaptiser","filesView.dialog.delete.title":"Supprimer","filesView.dialog.createFile.description":"Créer un nouveau fichier dans {path}","filesView.dialog.createFolder.description":"Créez un nouveau dossier dans {path}","filesView.dialog.rename.description":"Renommer {name}","filesView.dialog.delete.description":"Etes-vous sûr de vouloir supprimer {name} ? Cette action ne peut pas être annulée.","filesView.dialog.rootFallback":"racine","filesView.dialog.rename.placeholder":"Nouveau nom","filesView.dialog.namePlaceholder":"Nom","filesView.dialog.cancel":"Annuler","filesView.dialog.confirm":"Confirmer","filesView.dialog.delete.confirm":"Supprimer","filesView.editor.saving":"Enregistrement...","filesView.editor.saved":"Enregistré","filesView.editor.autoSaveOn":"Sauvegarde automatique activée","filesView.editor.manualSave":"Sauvegarde manuelle","filesView.editor.saveNowTitle":"Enregistrer maintenant ({shortcut}) - sauvegarde automatique après 1.5s","filesView.editor.saveNowManualTitle":"Enregistrer maintenant ({shortcut})","filesView.editor.saveAria":"Enregistrer ({shortcut})","filesView.editor.openInDesktopApp":"Ouvrir dans l'application de bureau","filesView.editor.refreshApps":"Actualiser les applications","filesView.editor.disableLineWrap":"Désactiver le retour à la ligne","filesView.editor.enableLineWrap":"Activer le retour à la ligne","filesView.editor.findInFile":"Rechercher dans le fichier","filesView.preview.find.placeholder":"Rechercher dans l'aperçu","filesView.preview.find.nextAria":"Correspondance suivante","filesView.preview.find.previousAria":"Correspondance précédente","filesView.preview.find.closeAria":"Fermer la recherche","filesView.preview.find.noMatches":"Aucune correspondance","filesView.preview.find.countAria":"{current} sur {total}","filesView.editor.goToLine":"Aller à la ligne","filesView.editor.switchToEditMode":"Passer en mode édition","filesView.editor.switchToPreviewMode":"Passer en mode aperçu","filesView.editor.switchToTextView":"Passer à l'affichage texte","filesView.editor.switchToTreeView":"Passer à l'arborescence","filesView.toast.copyFailed":"Échec de la copie","filesView.toast.openInAppFailed":"Échec de l'ouverture dans {app}","filesView.toast.savingNotSupported":"Enregistrement non pris en charge","filesView.toast.writeFileFailed":"Échec de l'écriture du fichier","filesView.toast.saveFailed":"Échec de l'enregistrement","filesView.editor.copyFileContents":"Copier le contenu du fichier","filesView.editor.copyFilePathTitle":"Copier le chemin du fichier ({path})","filesView.editor.saveFile":"Enregistrer le fichier","filesView.editor.exitFullscreen":"Quitter le plein écran","filesView.editor.fullscreen":"Plein écran","filesView.unsaved.title":"Modifications non enregistrées","filesView.unsaved.description":"Enregistrer vos modifications avant de continuer ?","filesView.unsaved.saveChanges":"Enregistrer les modifications","filesView.unsaved.discard":"Jeter","filesView.editor.back":"Retour","filesView.editor.openFilesAria":"Ouvrir des fichiers","filesView.editor.closeFileAria":"Fermer {name}","filesView.editor.selectFile":"Sélectionnez un fichier","filesView.editor.showControlsAria":"Afficher les contrôles de l'éditeur","filesView.editor.controlsTitle":"Contrôles de l'éditeur","filesView.editor.pickFileFromTree":"Choisissez un fichier dans l'arborescence.","filesView.editor.cannotPreviewBinary":"Impossible de prévisualiser le fichier binaire","filesView.editor.binaryFileDescription":"Ce fichier est binaire et ne peut pas être modifié dans AiWorker. Téléchargez-le pour l’ouvrir avec une autre application.","filesView.state.loading":"Chargement...","filesView.state.openingFileAtChange":"Ouverture du fichier lors du changement...","filesView.tree.search.placeholder":"Rechercher des fichiers...","filesView.tree.search.clearAria":"Effacer la recherche","filesView.tree.search.searching":"Recherche...","filesView.tree.actions.newFileTitle":"Nouveau fichier","filesView.tree.actions.newFolderTitle":"Nouveau dossier","filesView.tree.actions.refreshTitle":"Rafraîchir","filesView.editor.imageAltFallback":"Image","filesView.error.jsonViewerUnavailable":"Visionneuse JSON indisponible","filesView.error.switchToTextMode":"Passez en mode texte pour afficher le contenu brut.","filesView.warning.largeFilePreviewLimited":"Ce fichier est volumineux ({sizeKb}KB). L'aperçu peut être limité.","filesView.error.previewUnavailable":"Aperçu indisponible","filesView.error.switchToEditMode":"Passez en mode édition pour résoudre le problème.","filesView.error.readFileFailed":"Échec de la lecture du fichier","filesView.editor.htmlPreviewTitle":"Aperçu HTML","contextUsage.aria.label":"Utilisation du contexte","contextUsage.mobile.title":"Utilisation du contexte","contextUsage.mobile.usedTokens":"Jetons utilisés","contextUsage.mobile.contextLimit":"Limite de contexte","contextUsage.mobile.outputLimit":"Limite de sortie","contextUsage.mobile.cost":"Coût","contextUsage.mobile.usage":"Usage","contextUsage.tooltip.usedTokens":"Jetons utilisés : {tokens}","contextUsage.tooltip.contextLimit":"Limite de contexte : {tokens}","contextUsage.tooltip.outputLimit":"Limite de sortie : {tokens}","contextUsage.tooltip.cost":"Coût : {cost}","contextSidebar.session.untitled":"Session sans titre","contextSidebar.empty.openSession":"Ouvrez une session pour inspecter le contexte.","contextSidebar.section.context":"Contexte","contextSidebar.section.lastAssistantMessage":"Dernier message de l'assistant","contextSidebar.section.rawMessages":"Messages bruts","contextSidebar.context.percentUsed":"{percent}% utilisé","contextSidebar.breakdown.user":"Utilisateur","contextSidebar.breakdown.assistant":"Assistant","contextSidebar.breakdown.toolCalls":"Appels d'outils","contextSidebar.breakdown.other":"Autre","contextSidebar.stats.messages":"Messages","contextSidebar.stats.user":"Utilisateur","contextSidebar.stats.assistant":"Assistant","contextSidebar.stats.cost":"Coût","contextSidebar.tokens.input":"Entrée","contextSidebar.tokens.output":"Sortie","contextSidebar.tokens.reasoning":"Raisonnement","contextSidebar.tokens.cacheRead":"Lecture du cache","contextSidebar.tokens.cacheWrite":"Écriture du cache","contextSidebar.tokens.cacheHit":"Succès du cache","contextSidebar.actions.copyJson":"Copier JSON","contextSidebar.actions.copy":"Copie","contextSidebar.actions.copied":"Copié","planView.file.defaultName":"plan","planView.title.default":"Plan","planView.error.saveFailed":"Échec de l'enregistrement","planView.error.loadFailed":"Impossible de charger ce plan","planView.error.previewUnavailable":"Aperçu indisponible","planView.error.switchToEditMode":"Passez en mode édition pour résoudre le problème.","planView.error.writeFailed":"Échec de l'écriture","planView.error.writePlanFileFailed":"Échec de l'écriture du fichier de plan ({status})","planView.actions.improvePlanAria":"Améliorer le plan","planView.actions.improve":"Améliorer","planView.actions.implementPlanAria":"Plan de mise en œuvre","planView.actions.implement":"Mettre en œuvre","planView.actions.sendToNewSession":"Envoyer à une nouvelle session","planView.actions.sendToNewWorktreeSession":"Envoyer à une nouvelle session Worktree","planView.actions.copyPlanContents":"Copier le contenu du plan","planView.state.loading":"Chargement...","diffView.binary.unavailable":"Le contenu de ce fichier ne peut pas être visualisé.","diffView.change.untracked":"Fichier non suivi","diffView.change.new":"Nouveau fichier","diffView.change.deleted":"Fichier supprimé","diffView.change.renamed":"Fichier renommé","diffView.change.copied":"Fichier copié","diffView.change.modified":"Fichier modifié","diffView.selector.selectFile":"Sélectionner un fichier","diffView.image.original":"Original","diffView.image.modified":"Modifié","diffView.image.new":"Nouveau","diffView.image.originalAlt":"Original: {path}","diffView.image.modifiedAlt":"Modifié : {path}","diffView.section.files":"Fichiers","diffView.state.selectSessionDirectory":"Sélectionnez un répertoire de session pour afficher les différences","diffView.state.loadingRepositoryStatus":"Chargement de l'état du dépôt...","diffView.state.notGitRepository":"Pas un dépôt git. Utilisez l'onglet Git pour initialiser ou modifier des répertoires.","diffView.state.cleanWorkingTree":"Worktree sans modifications, rien à afficher","diffView.state.noLastTurnChanges":"Aucun changement du dernier tour à afficher","diffView.state.failedToLoadDiff":"Échec du chargement du différentiel","diffView.state.loadingDiff":"Chargement du différentiel...","diffView.state.loadingChanges":"Chargement des modifications...","diffView.state.largeDiff":"Diff volumineux ({count} lignes modifiées)","diffView.state.largeDiffDescription":"Le rendu peut être lent. Vous pouvez tout de même afficher le diff avec le bouton ci-dessous.","diffView.summary.changedFilesSingle":"Le fichier {count} a été modifié","diffView.summary.changedFilesPlural":"Fichiers {count} modifiés","diffView.scope.changed":"Modifiés","diffView.scope.staged":"Staged","diffView.scope.lastTurn":"Dernier tour","diffView.scope.branch":"Branche","diffView.branch.resolvingBase":"Détection de la branche de base...","diffView.branch.noBaseTitle":"Aucune branche de base","diffView.branch.noBaseDescription":"Git ne conserve aucune trace de la branche d’origine de cette branche. Choisissez une branche de base pour la comparaison.","diffView.branch.loadError":"Échec du chargement des modifications de la branche","diffView.branch.loadingFiles":"Chargement des modifications de la branche...","diffView.branch.empty":"Aucune modification sur cette branche par rapport à {base}","diffView.scope.selectorAria":"Sélectionner le mode de changements","diffView.actions.retry":"Réessayer","diffView.actions.renderAnyway":"Afficher quand même","diffView.actions.expandAll":"Tout développer","diffView.actions.collapseAll":"Tout réduire","diffView.actions.loadFullFiles":"Charger les fichiers complets","diffView.actions.disableFullFiles":"Ne plus charger les fichiers complets","diffView.actions.disableLineWrap":"Désactiver le retour à la ligne","diffView.actions.enableLineWrap":"Activer le retour à la ligne","diffView.actions.openFileInEditorAtChange":"Ouvrez ce fichier dans l'éditeur lors du changement","diffView.actions.openFileAtFirstChangedLine":"Ouvrez ce fichier à la première ligne modifiée","diffView.actions.review":"Revoir","diffView.actions.reviewAria":"Revoir les changements","diffView.reviewDialog.title":"Revoir les changements","diffView.reviewDialog.description":"Démarre une session de revue séparée pour les changements actuels.","diffView.reviewDialog.generateHandoff":"Générer un handoff","diffView.reviewDialog.autoReview":"Lancer la boucle de revue automatique","diffView.reviewDialog.info":"Ce flux fonctionne mieux lorsqu’il est lancé depuis la session où les changements ont été implémentés.","diffView.reviewDialog.actions.cancel":"Annuler","diffView.reviewDialog.actions.start":"Revoir","diffView.reviewDialog.actions.starting":"Démarrage...","diffView.reviewDialog.toast.noSessionDirectory":"Le dossier de session est indisponible","diffView.reviewDialog.toast.startFailed":"Impossible de démarrer le flux de revue","chat.history.loadOlder":"Charger les messages précédents","chat.appLink.confirm.title":"Ouvrir ce lien dans une autre application ?","chat.appLink.confirm.description":"Ce lien de discussion utilise le protocole {scheme} et s'ouvrira dans une autre application.","chat.appLink.confirm.descriptionPlain":"Ce lien de discussion s'ouvrira dans une autre application.","chat.appLink.confirm.cancel":"Annuler","chat.appLink.confirm.open":"Ouvrir une fois","chat.appLink.confirm.trustAndOpen":"Approuver et ouvrir","chat.autoReview.title":"La boucle de revue de code est en cours","chat.autoReview.status.waitingForReviewer":"En attente du reviewer","chat.autoReview.status.waitingForImplementer":"En attente de l’implémenteur","chat.autoReview.reviewSessionLabel":"Session de revue","chat.autoReview.actions.open":"Ouvrir","chat.autoReview.actions.stop":"Arrêter","diffView.hunk.label":"Sections","diffView.hunk.stage":"Préparer","diffView.hunk.unstage":"Retirer","diffView.hunk.discard":"Annuler","diffView.hunk.stageTitle":"Préparer la section {index}","diffView.hunk.unstageTitle":"Retirer la section {index} de la préparation","diffView.hunk.discardTitle":"Annuler la section {index}","diffView.hunk.unavailable":"Cette section n'est plus disponible. Actualisez le diff et réessayez.","diffView.hunk.unsupported":"La préparation de sections individuelles n'est pas prise en charge dans cet environnement.","rightSidebar.contextNotesTodo.plan.defaultTitle":"Plan","rightSidebar.contextNotesTodo.empty.selectProject":"Sélectionnez un projet pour ajouter des notes et des tâches.","rightSidebar.contextNotesTodo.notes.placeholder":"Capturez le contexte, les rappels ou les liens","rightSidebar.contextNotesTodo.notes.addAria":"Ajouter une note","rightSidebar.contextNotesTodo.notes.empty":"Aucune note pour le moment. Notez du contexte, des rappels ou des liens.","rightSidebar.contextNotesTodo.notes.actions.expand":"Développer la note","rightSidebar.contextNotesTodo.notes.actions.collapse":"Réduire la note","rightSidebar.contextNotesTodo.notes.actions.delete":"Supprimer la note","rightSidebar.contextNotesTodo.notes.actions.pin":"Épingler au contexte de l'agent","rightSidebar.contextNotesTodo.notes.actions.unpin":"Détacher du contexte de l'agent","rightSidebar.contextNotesTodo.notes.source.selection":"Depuis le chat","rightSidebar.contextNotesTodo.notes.source.agent":"Depuis l'agent","rightSidebar.contextNotesTodo.search.placeholder":"Rechercher","rightSidebar.contextNotesTodo.search.clear":"Effacer la recherche","rightSidebar.contextNotesTodo.search.noResults":'Aucun résultat pour "{query}".',"rightSidebar.contextNotesTodo.toast.deleteNoteFailed":"Échec de la suppression de la note","rightSidebar.contextNotesTodo.toast.createNoteFailed":"Échec de la création de la note","rightSidebar.contextNotesTodo.tabs.notes":"Notes","rightSidebar.contextNotesTodo.tabs.todos":"Tâches","rightSidebar.contextNotesTodo.tabs.plans":"Plans","rightSidebar.contextNotesTodo.plans.actions.back":"Retour aux plans","rightSidebar.contextNotesTodo.tabs.memory":"Mémoire","rightSidebar.contextNotesTodo.sections.label":"Sections du contexte du projet","rightSidebar.contextNotesTodo.sections.resize":"Redimensionner la barre des sections","rightSidebar.contextNotesTodo.memory.scope.project":"Projet","rightSidebar.contextNotesTodo.memory.scope.label":"Portée de la mémoire","rightSidebar.contextNotesTodo.memory.scope.global":"À votre sujet","rightSidebar.contextNotesTodo.memory.type.fact":"fait","rightSidebar.contextNotesTodo.memory.badge.new":"nouveau","rightSidebar.contextNotesTodo.memory.flagged":"Retenu — se lit comme une instruction","rightSidebar.contextNotesTodo.memory.badge.changed":"modifié","rightSidebar.contextNotesTodo.memory.type.preference":"préférence","rightSidebar.contextNotesTodo.memory.type.reference":"référence","rightSidebar.contextNotesTodo.memory.actions.delete":"Oublier cette mémoire","rightSidebar.contextNotesTodo.memory.actions.editTitle":"Titre de la mémoire","rightSidebar.contextNotesTodo.memory.actions.editBody":"Texte de la mémoire","rightSidebar.contextNotesTodo.memory.toast.saveFailed":"Impossible d’enregistrer la mémoire","rightSidebar.contextNotesTodo.memory.toast.deleteFailed":"Impossible d’oublier la mémoire","rightSidebar.contextNotesTodo.memory.empty.nothing":"L’agent n’a encore rien enregistré ici.","rightSidebar.contextNotesTodo.memory.empty.noMatches":"Aucune mémoire enregistrée ne correspond à votre recherche.","rightSidebar.contextNotesTodo.memory.empty.noProject":"Ouvrez un projet pour voir ce que l’agent en retient.","rightSidebar.contextNotesTodo.memory.empty.unavailable":"Impossible de charger la mémoire enregistrée. Rien n’est perdu — réessayez.","rightSidebar.contextNotesTodo.todo.clearCompleted":"Effacer terminé","rightSidebar.contextNotesTodo.todo.inputPlaceholder":"Ajouter une tâche","rightSidebar.contextNotesTodo.todo.addAria":"Ajouter une tâche","rightSidebar.contextNotesTodo.todo.empty":"Aucune tâche pour l'instant. Ajoutez une petite liste de contrôle pour ce projet.","rightSidebar.contextNotesTodo.todo.actions.markComplete":'Marque "{text}" terminée',"rightSidebar.contextNotesTodo.todo.actions.collapse":'Réduire la tâche "{text}"',"rightSidebar.contextNotesTodo.todo.actions.expand":'Développer la tâche "{text}"',"rightSidebar.contextNotesTodo.todo.actions.delete":'Supprimer "{text}"',"rightSidebar.contextNotesTodo.todo.actions.send":'Envoyer "{text}"',"rightSidebar.contextNotesTodo.todo.actions.reorder":'Récommander "{text}"',"rightSidebar.contextNotesTodo.todo.sendMenu.currentSession":"Envoyer à la session en cours","rightSidebar.contextNotesTodo.todo.sendMenu.newSession":"Envoyer à une nouvelle session","rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession":"Envoyer à une nouvelle session Worktree","rightSidebar.contextNotesTodo.plans.importFromFile":"Importer un plan à partir d'un fichier","rightSidebar.contextNotesTodo.plans.empty":"Aucun plan enregistré pour l'instant.","rightSidebar.contextNotesTodo.plans.deletePlan":"Supprimer le forfait","rightSidebar.contextNotesTodo.plans.deletePlanWithTitle":'Supprimer le plan "{title}"',"rightSidebar.contextNotesTodo.sendDialog.title.newSession":"Envoyer à une nouvelle session","rightSidebar.contextNotesTodo.sendDialog.title.newWorktree":"Envoyer vers un nouvel worktree","rightSidebar.contextNotesTodo.sendDialog.variant.default":"Défaut","rightSidebar.contextNotesTodo.sendDialog.actions.cancel":"Annuler","rightSidebar.contextNotesTodo.sendDialog.actions.send":"Envoyer","rightSidebar.contextNotesTodo.sendDialog.actions.sending":"Envoi","rightSidebar.contextNotesTodo.toast.saveNotesFailed":"Échec de l'enregistrement des notes du projet","rightSidebar.contextNotesTodo.toast.loadNotesFailed":"Échec du chargement des notes de projet","rightSidebar.contextNotesTodo.toast.noActiveSession":"Aucune session active sélectionnée","rightSidebar.contextNotesTodo.toast.sentToCurrentSession":"Todo envoyé à la session en cours","rightSidebar.contextNotesTodo.toast.worktreeRequiresGitRepo":"Les actions Worktree ne sont disponibles que pour les dépôts Git","rightSidebar.contextNotesTodo.toast.createSessionFailed":"Échec de la création de la session","rightSidebar.contextNotesTodo.toast.sentToNewSession":"Todo envoyé à une nouvelle session","rightSidebar.contextNotesTodo.toast.sentToNewWorktreeSession":"Todo envoyé à une nouvelle session Worktree","rightSidebar.contextNotesTodo.toast.sendTodoFailed":"Échec de l'envoi de la tâche","rightSidebar.contextNotesTodo.toast.updatePlanFailed":"Échec de la mise à jour du plan","rightSidebar.contextNotesTodo.toast.deletePlanFailed":"Échec de la suppression du plan","rightSidebar.contextNotesTodo.toast.planFileEmpty":"Le fichier de plan est vide","rightSidebar.contextNotesTodo.toast.importPlanFailed":"Échec de l'importation du plan","rightSidebar.contextNotesTodo.toast.planImported":"Forfait importé","rightSidebar.contextNotesTodo.toast.readPlanFileFailed":"Échec de la lecture du fichier de plan","inlineComment.range.lines":"Lignes {start}-{end}","inlineComment.input.placeholder":"Ajouter un commentaire... ({shortcut} pour enregistrer)","inlineComment.actions.cancel":"Annuler","inlineComment.actions.save":"Sauvegarder","inlineComment.actions.comment":"Commentaire","inlineComment.actions.showLess":"Afficher moins","inlineComment.actions.showMore":"Afficher plus","inlineComment.actions.editComment":"Modifier le commentaire","inlineComment.actions.deleteComment":"Supprimer le commentaire","inlineComment.toast.selectSessionToSave":"Sélectionnez une session pour enregistrer le commentaire","header.github.connectedWithLogin":"GitHub : {login}","header.github.connected":"GitHub connecté","header.github.avatarWithLogin":"Avatar {login}","header.github.avatar":"Avatar GitHub","header.github.accountsTitle":"Comptes GitHub","header.github.accountSource.oauth":"OAuth","header.github.accountSource.cli":"CLI","header.services.openWithCurrent":"Instance ouverte, utilisation et MCP (actuel : {current})","header.services.open":"Services ouverts, utilisation et MCP","header.services.title":"Services","header.services.viewAria":"Voir les prestations","header.services.closeAria":"Fermer les prestations","header.services.rateLimits":"Limites de taux","header.services.refreshRateLimitsAria":"Limites du taux de rafraîchissement","header.services.noRateLimits":"Aucune limite de taux disponible.","header.services.noRateLimitsReported":"Aucune limite de taux signalée.","header.services.used":"Utilisé","header.services.remaining":"Restant","header.services.modelFamily.other":"Autre","header.actions.openPlanAria":"Plan ouvert","header.actions.toggleChangesPanel":"Panneau des changements","header.actions.toggleChangesPanelAria":"Basculer le panneau des changements","header.actions.planWithShortcut":"Forfait ({shortcut})","header.actions.terminalPanelWithShortcut":"Panneau à bornes ({shortcut})","chat.recap.aria":"Récapitulatif de la session","chat.recap.label":"Récap :","chat.sessionError.title":"OpenCode a interrompu cette réponse","chat.sessionError.noDetails":"OpenCode n'a fourni aucun détail. Ouvrez le rapport d'état (Ctrl/Cmd+Maj+L) pour voir les erreurs récentes.","chat.sessionError.noReply":"OpenCode n'a pas commencé de réponse à ce message.","chat.goal.dialog.titleCreate":"Définir un objectif de session","chat.goal.dialog.titleManage":"Objectif de session","chat.goal.dialog.objectiveLabel":"Objectif","chat.goal.dialog.objectivePlaceholder":"Décrivez l'état final que l'agent doit atteindre et vérifier…","chat.goal.dialog.budgetLabel":"Budget de tokens","chat.goal.dialog.evaluationModelLabel":"Modèle d’évaluation","chat.goal.status.active":"Actif","chat.goal.status.evaluating":"Évaluation…","chat.goal.status.paused":"En pause","chat.goal.status.blocked":"Bloqué","chat.goal.status.budgetLimited":"Budget atteint","chat.goal.status.complete":"Terminé","chat.goal.usage.tokens":"{used} tokens","chat.goal.usage.tokensWithBudget":"{used}/{budget} tokens","chat.goal.usage.turns":"{turns} continuations","chat.goal.action.pause":"Mettre en pause","chat.goal.action.resume":"Reprendre","chat.goal.action.markComplete":"Marquer comme terminé","chat.goal.action.clear":"Supprimer l'objectif","chat.goal.action.cancel":"Annuler","chat.goal.action.save":"Enregistrer l'objectif","chat.goal.action.start":"Lancer l'objectif","chat.goal.toast.actionFailed":"Échec de la mise à jour de l'objectif","chat.goal.toast.distillFallback":"L'objectif dépassait la limite et n'a pas pu être condensé — l'auditeur utilise une version tronquée","chat.goal.row.aria":"Objectif de session — ouvrir les détails","chat.goal.button.createAria":"Définir un objectif de session","chat.goal.button.manageAria":"Gérer l'objectif de session","chat.goal.button.armAria":"Démarrer un objectif avec le prochain message","chat.goal.counter.aria":"Limite de longueur de l'objectif","chat.goal.button.disarmAria":"Objectif armé — touchez pour désarmer","chat.goal.button.cancelAria":"Objectif en cours — touchez pour l’annuler","chat.goal.cancelDialog.title":"Annuler cet objectif ?","chat.goal.cancelDialog.description":"L'agent cessera de travailler automatiquement vers cet objectif.","chat.goal.cancelDialog.keep":"Garder l'objectif","chat.goal.cancelDialog.confirm":"Annuler l'objectif","chat.suggestion.applyAria":"Utiliser le message suggéré","chat.suggestion.dismissAria":"Ignorer la suggestion","header.actions.toggleTerminalPanelAria":"Basculer le panneau à bornes","terminalView.stream.processExitedMessage":"[Processus terminé{exitCodeSegment}{signalSegment}]","terminalView.stream.processExitedWithCode":"avec le code {exitCode}","terminalView.stream.processExitedWithSignal":"(signal {signal})","terminalView.error.sessionEnded":"Session terminale terminée","terminalView.error.connectionFailed":"Échec de la connexion : {message}","terminalView.error.startSessionFailed":"Échec du démarrage de la session de terminal","terminalView.error.restartFailed":"Échec du redémarrage du terminal","terminalView.error.sendInputFailed":"Échec de l'envoi de l'entrée","terminalView.empty.noWorkingDirectory":"Aucun répertoire de travail disponible pour le terminal.","terminalView.empty.selectSession":"Sélectionnez une session pour ouvrir le terminal.","terminalView.empty.noWorkingDirectoryForSession":"Aucun répertoire de travail disponible pour cette session.","terminalView.actions.retry":"Réessayer","terminalView.actions.hardRestart":"Redémarrage dur","terminalView.actions.hardRestartTitle":"Forcer la mise à mort et créer une nouvelle session","terminalView.quickKeys.escape":"Échap","terminalView.quickKeys.tabAria":"Languette","terminalView.quickKeys.controlLabel":"Ctrl","terminalView.quickKeys.controlModifierAria":"Modificateur de contrôle","terminalView.quickKeys.altLabel":"Alt","terminalView.quickKeys.altModifierAria":"Modificateur Alt","terminalView.quickKeys.commandModifierAria":"Modificateur de commande","terminalView.quickKeys.arrowUpAria":"Flèche vers le haut","terminalView.quickKeys.arrowLeftAria":"Flèche vers la gauche","terminalView.quickKeys.arrowDownAria":"Flèche vers le bas","terminalView.quickKeys.arrowRightAria":"Flèche vers la droite","terminalView.quickKeys.enterAria":"Entrer","terminalView.tabs.closeTabTitle":"Fermer l'onglet","terminalView.tabs.newTabTitle":"Nouvel onglet","terminalView.viewport.inputAria":"Entrée de borne","directoryExplorerDialog.title":"Ajouter un répertoire de projet","directoryExplorerDialog.description":"Choisissez un dossier à ajouter en tant que projet.","directoryExplorerDialog.toggle.showHidden":"Afficher masqué","directoryExplorerDialog.pathInput.placeholder":"Entrez le chemin ou sélectionnez dans l'arborescence...","directoryExplorerDialog.actions.openingFinder":"Ouverture...","directoryExplorerDialog.actions.openInFinder":"Ouvrir dans le Finder","directoryExplorerDialog.actions.adding":"Ajout...","directoryExplorerDialog.actions.addProject":"Ajouter un projet","directoryExplorerDialog.actions.addSelected":"Ajouter la sélection","directoryExplorerDialog.actions.addLocalProject":"Ajouter un projet local","directoryExplorerDialog.actions.cloneRepository":"Cloner le dépôt","directoryExplorerDialog.actions.cloneAndAdd":"Cloner et ajouter","directoryExplorerDialog.actions.cloning":"Clonage...","directoryExplorerDialog.actions.createAndAdd":"Créer et ajouter","directoryExplorerDialog.actions.alreadyAdded":"Déjà ajouté","directoryExplorerDialog.clone.remoteUrlPlaceholder":"URL du dépôt (HTTPS ou SSH)","directoryExplorerDialog.browse.directories":"Annuaires","directoryExplorerDialog.browse.loading":"Chargement des répertoires...","directoryExplorerDialog.browse.empty":"Aucun répertoire correspondant.","directoryExplorerDialog.browse.permissionDenied":"AiWorker doit accéder à ce dossier.","directoryExplorerDialog.browse.loadFailed":"Impossible de charger ce dossier.","directoryExplorerDialog.browse.grantAccess":"Autoriser l’accès","directoryExplorerDialog.browse.retry":"Réessayer","directoryExplorerDialog.browse.parentDirectory":"Annuaire parent","directoryExplorerDialog.browse.addedBadge":"Ajouté","directoryExplorerDialog.browse.quickAdd":"Ajouter","directoryExplorerDialog.browse.selectForAdd":"Sélectionner pour ajouter","directoryExplorerDialog.footer.navigate":"Naviguer","directoryExplorerDialog.footer.select":"Sélectionner","directoryExplorerDialog.footer.add":"Ajouter","directoryExplorerDialog.shortcut.enter":"Entrer","directoryExplorerDialog.toast.unableToAccessDirectory":"Impossible d'accéder au répertoire","directoryExplorerDialog.toast.desktopDeniedAccess":"Le bureau a refusé l'accès au répertoire.","directoryExplorerDialog.toast.failedToOpenDirectory":"Échec de l'ouverture du répertoire","directoryExplorerDialog.toast.desktopCouldNotGrantAccess":"Desktop n'a pas pu accorder l'accès aux fichiers.","directoryExplorerDialog.toast.addedProjects":"{count} projet(s) ajouté(s)","directoryExplorerDialog.toast.failedToAddProject":"Échec de l'ajout du projet","directoryExplorerDialog.toast.cloneUrlRequired":"Entrez dans un dépôt URL avant le clonage.","directoryExplorerDialog.toast.selectValidDirectoryPath":"Veuillez sélectionner un chemin de répertoire valide.","directoryExplorerDialog.toast.failedToSelectDirectory":"Échec de la sélection du répertoire","directoryExplorerDialog.toast.unknownError":"Une erreur inconnue s'est produite.","directoryTree.actions.createNewDirectory":"Créer un nouveau répertoire","directoryTree.actions.pinDirectory":"Répertoire des épingles","directoryTree.actions.unpinDirectory":"Détacher le répertoire","directoryTree.actions.createDirectory":"Créer un répertoire","directoryTree.actions.cancel":"Annuler","directoryTree.actions.selectWorkingDirectoryAria":"Sélectionnez le répertoire de travail","directoryTree.state.locatingHomeDirectory":"Localisation du répertoire personnel...","directoryTree.state.loading":"Chargement...","directoryTree.state.noDirectoriesFound":"Aucun répertoire trouvé","directoryTree.section.pinned":"Épinglé","directoryTree.section.browse":"Parcourir","aboutDialog.versionLabel":"Version {version}","aboutDialog.openChamberVersionLabel":"Version AiWorker {version}","aboutDialog.openCodeVersionLabel":"Version OpenCode {version}","aboutDialog.actions.copyDiagnostics":"Copier les diagnostics","aboutDialog.actions.preparingDiagnostics":"Préparation du diagnostic...","aboutDialog.actions.diagnosticsCopied":"Diagnostic copié","aboutDialog.diagnosticsDescription":"Comprend l’état AiWorker, l’état de santé OpenCode, les répertoires et les projets.","aboutDialog.footerNote":"Fabriqué avec amour pour la communauté","aboutDialog.toast.copyFailed":"Échec de la copie","aboutDialog.toast.diagnosticsNotReady":"Les diagnostics ne sont pas encore prêts. Attendez une seconde et réessayez.","aboutDialog.toast.diagnosticsCopied":"Diagnostic copié","helpDialog.title":"Raccourcis clavier","helpDialog.description":"Utilisez ces raccourcis clavier pour naviguer efficacement dans AiWorker","helpDialog.section.navigationCommands":"Navigation et commandes","helpDialog.section.sessionManagement":"Gestion des sessions","helpDialog.section.panels":"Panneaux","helpDialog.section.interface":"Interface","helpDialog.item.openCommandPalette":"Ouvrir la palette de commandes","helpDialog.item.showKeyboardShortcuts":"Afficher les raccourcis clavier (cette boîte de dialogue)","helpDialog.item.toggleSessionSidebar":"Toggle la barre latérale de la session","helpDialog.item.addSelectionToChat":"Ajouter la sélection au chat","helpDialog.item.cycleAgent":"Agent de cycle (entrée de chat)","helpDialog.item.openModelSelector":"Ouvrir le sélecteur de modèle","helpDialog.item.navigateModels":"Naviguer dans les modèles (dans le sélecteur)","helpDialog.item.adjustThinkingMode":"Ajuster le mode de réflexion (dans le sélecteur, lorsqu'il est pris en charge)","helpDialog.item.cycleThinkingVariant":"Variante de pensée cyclique (raccourci global)","helpDialog.item.newWindow":"Nouvelle fenêtre (ordinateur de bureau uniquement)","helpDialog.item.createNewSession":"Créer une nouvelle session","helpDialog.item.createNewWorktreeDraft":"Créer un nouveau brouillon d'worktree","helpDialog.item.focusChatInput":"Concentration sur la saisie du chat","helpDialog.item.togglePromptNavigator":"Afficher ou masquer le navigateur de prompts","helpDialog.item.abortActiveRun":"Abandonner l’exécution active (double pression)","helpDialog.item.toggleTerminalDock":"Basculer la station d'accueil du terminal","helpDialog.item.toggleTerminalExpanded":"Terminal à bascule étendu","helpDialog.item.cycleTheme":"Basculer le thème (clair → sombre → système)","helpDialog.item.switchSessionTab":"Basculer l’onglet de session","helpDialog.item.switchContextSurface":"Basculer la surface du panneau contextuel (touche numérique)","helpDialog.item.toggleServicesMenu":"Basculer le menu des services","helpDialog.item.openSettings":"Ouvrir les paramètres","helpDialog.keyCombiner.or":"ou","helpDialog.proTips.title":"Conseils de pro :","helpDialog.proTips.commandPalette":"Utilisez la palette de commandes ({shortcut}) pour accéder rapidement à toutes les actions","helpDialog.proTips.recentSessions":"Les 5 sessions les plus récentes apparaissent dans la palette de commandes","helpDialog.proTips.leaderSequences":"Raccourcis en deux temps : appuyez sur la combinaison, puis sur la seconde touche — Échap annule","header.actions.rightSidebarWithShortcut":"Barre latérale droite ({shortcut})","header.actions.toggleRightSidebarAria":"Basculer la barre latérale droite","header.actions.openAppMenu":"Menu de AiWorker","header.actions.openAppMenuAria":"Ouvrir le menu AiWorker","header.actions.openSessionsWithShortcut":"Sessions ouvertes ({shortcut})","header.actions.openSessionsAria":"Sessions ouvertes","header.actions.closeSessionsAria":"Fermer les sessions","header.actions.newSessionAria":"Nouvelle session","header.actions.newSessionWithShortcut":"Nouvelle session ({shortcut})","header.actions.backAria":"Retour","header.navigation.mainAria":"Navigation principale","header.sessions.title":"Sessions","header.changes.availableAria":"Modifications disponibles","session.githubIssuePicker.error.noActiveProject":"Aucun projet actif","session.githubIssuePicker.error.runtimeUnavailable":"Exécution GitHub API indisponible","session.githubIssuePicker.error.notConnected":"GitHub non connecté","session.githubIssuePicker.error.repoNotResolvable":"Repo non résoluble","session.githubIssuePicker.error.repoMustBeGithub":"Le dépôt distant origin doit pointer vers une URL GitHub","session.githubIssuePicker.error.issueNotFound":"Problème introuvable","session.githubIssuePicker.error.noModelSelected":"Aucun modèle sélectionné","session.githubIssuePicker.toast.loadMoreFailed":"Échec du chargement d'autres problèmes","session.githubIssuePicker.toast.loadIssueDetailsFailed":"Échec du chargement des détails du problème","session.githubIssuePicker.toast.sendContextFailed":"Échec de l'envoi du contexte du problème","session.githubIssuePicker.toast.sessionCreated":"Session créée à partir du problème","session.githubIssuePicker.toast.startSessionFailed":"Échec du démarrage de la session","session.githubIssuePicker.title.select":"Lien vers le problème GitHub","session.githubIssuePicker.title.createSession":"Nouvelle session du numéro GitHub","session.githubIssuePicker.description.select":"Sélectionnez un problème à lier à cette session.","session.githubIssuePicker.description.createSession":"Lance une nouvelle session avec un contexte de problème masqué (titre/corps/étiquettes/commentaires).","session.githubIssuePicker.searchPlaceholder":"Recherchez par titre ou #123, ou collez le numéro URL","session.githubIssuePicker.empty.noActiveProject":"Aucun projet actif sélectionné.","session.githubIssuePicker.empty.runtimeUnavailable":"L'environnement d'exécution GitHub API n'est pas disponible.","session.githubIssuePicker.empty.notConnected":"GitHub non connecté. Connectez votre compte GitHub dans les paramètres.","session.githubIssuePicker.empty.noIssuesFound":"Aucun problème trouvé","session.githubIssuePicker.empty.noOpenIssuesFound":"Aucun problème ouvert trouvé","session.githubIssuePicker.loading.issues":"Problèmes de chargement...","session.githubIssuePicker.loading.more":"Chargement...","session.githubIssuePicker.actions.openSettings":"Ouvrir les paramètres","session.githubIssuePicker.actions.useIssue":"Utilisez le numéro {number}","session.githubIssuePicker.actions.openInGitHubAria":"Ouvrir dans GitHub","session.githubIssuePicker.actions.loadMore":"Charger plus","session.githubIssuePicker.actions.sectionTitle":"Actions","session.githubIssuePicker.actions.toggleWorktreeAria":"Basculer le worktree","session.githubIssuePicker.actions.createInWorktree":"Créer dans le worktree","session.githubIssuePicker.actions.openRepo":"Ouvrir le dépôt","session.githubIssuePicker.actions.refresh":"Rafraîchir","session.githubPrPicker.error.noActiveProject":"Aucun projet actif","session.githubPrPicker.error.runtimeUnavailable":"Exécution GitHub API indisponible","session.githubPrPicker.error.notConnected":"GitHub non connecté","session.githubPrPicker.error.prNotFound":"Demande d'extraction introuvable","session.githubPrPicker.error.repoNotResolvable":"Repo non résoluble","session.githubPrPicker.error.repoMustBeGithub":"Le dépôt distant origin doit pointer vers une URL GitHub","session.githubPrPicker.toast.loadMoreFailed":"Échec du chargement d'autres demandes d'extraction","session.githubPrPicker.toast.loadDetailsFailed":"Échec du chargement des détails de la demande d'extraction","session.githubPrPicker.title":"Lier la PR GitHub","session.githubPrPicker.description":"Sélectionnez une PR pour joindre un contexte de revue à ce message.","session.githubPrPicker.searchPlaceholder":"Recherchez par titre ou #123, ou collez la demande d'extraction URL","session.githubPrPicker.includeDiffAria":"Inclure la différence PR dans le contexte ci-joint","session.githubPrPicker.includeDiff":"Inclure la différence PR","session.githubPrPicker.empty.noActiveProject":"Aucun projet actif sélectionné.","session.githubPrPicker.empty.runtimeUnavailable":"L'environnement d'exécution GitHub API n'est pas disponible.","session.githubPrPicker.empty.notConnected":"GitHub non connecté. Connectez votre compte GitHub dans les paramètres.","session.githubPrPicker.empty.noPullRequestsFound":"Aucune demande d'extraction trouvée","session.githubPrPicker.empty.noOpenPullRequestsFound":"Aucune demande d'extraction ouverte trouvée","session.githubPrPicker.loading.pullRequests":"Chargement des demandes d'extraction...","session.githubPrPicker.loading.more":"Chargement...","session.githubPrPicker.actions.openSettings":"Ouvrir les paramètres","session.githubPrPicker.actions.usePullRequest":"Utiliser la demande d'extraction #{number}","session.githubPrPicker.actions.openInGitHubAria":"Ouvrir dans GitHub","session.githubPrPicker.actions.loadMore":"Charger plus","session.newWorktree.title":"Nouveau worktree","session.newWorktree.mode.newBranch":"Nouvelle branche","session.newWorktree.mode.existingBranch":"Branche existante","session.newWorktree.selectBranch":"Sélectionnez une branche","session.newWorktree.chooseBranch":"Choisissez une branche...","session.newWorktree.fetchBranches":"Récupérer des branches","session.newWorktree.searchBranches":"Rechercher des branches...","session.newWorktree.loadingBranches":"Chargement des branches...","session.newWorktree.noBranchesFound":"Aucune branche trouvée","session.newWorktree.matchingBranches":"Branches correspondantes","session.newWorktree.noMatchingBranches":"Aucune branche correspondante","session.newWorktree.localBranches":"Branches locales","session.newWorktree.remoteBranches":"Branches du dépôt distant","session.newWorktree.branchName":"Nom de la branche","session.newWorktree.branchNamePlaceholder":"fonctionnalité/ma-fonctionnalité-géniale","session.newWorktree.actions.change":"Changement","session.newWorktree.actions.startFromGitHubIssuePr":"À partir de GitHub Issue/PR","session.newWorktree.usingPrBranch":"Utilisation de la branche PR : {branch}","session.newWorktree.fromIssue":"Extrait du numéro {number} : {title}","session.newWorktree.worktreeDirectory":"Répertoire du worktree","session.newWorktree.worktreeDirectoryPlaceholder":"mon-répertoire-worktree","session.newWorktree.resetToMatchBranchName":"Réinitialiser pour correspondre au nom de la branche","session.newWorktree.sourceBranch":"Branche source","session.newWorktree.selectSourceBranch":"Sélectionnez la branche source","session.newWorktree.selectSourceBranchPlaceholder":"Sélectionnez la branche source...","session.newWorktree.newBranchFromSource":"Une nouvelle branche sera créée à partir de {source}","session.newWorktree.issueNumber":"Numéro {number}","session.newWorktree.prNumber":"PR #{number}","session.newWorktree.includeDiffBadge":"+diff","session.newWorktree.newSessionTitle":"Nouvelle session","session.newWorktree.fromSource":"de {source}","session.newWorktree.actions.cancel":"Annuler","session.newWorktree.actions.creating":"Création...","session.newWorktree.actions.createWorktree":"Créer un worktree","session.newWorktree.actions.reset":"Réinitialiser","session.newWorktree.error.noModelSelected":"Aucun modèle sélectionné","session.newWorktree.error.noActiveProject":"Aucun projet actif","session.newWorktree.error.branchNameRequired":"Le nom de la branche est requis","session.newWorktree.error.worktreeDirectoryRequired":"Le répertoire du worktree est requis","session.newWorktree.error.sendGitHubContextFailed":"Échec de l'envoi du contexte GitHub","session.newWorktree.error.createWorktreeFailed":"Échec de la création du worktree","session.newWorktree.toast.sessionFromIssue":"Session créée à partir du problème","session.newWorktree.toast.sessionFromPr":"Session créée à partir de PR","session.newWorktree.toast.worktreeCreated":"Worktree créé","session.newWorktree.toast.worktreeCreatedDescription":"{target} - démarrage en arrière-plan","session.githubIntegration.title":"Sélectionnez parmi GitHub","session.githubIntegration.tabs.issues":"Problèmes","session.githubIntegration.tabs.pullRequests":"PR","session.githubIntegration.connect.title":"Connectez-vous à GitHub","session.githubIntegration.connect.description":"Lier des issues ou des PR pour remplir automatiquement les détails du worktree","session.githubIntegration.connect.action":"Connectez GitHub","session.githubIntegration.search.issuesPlaceholder":"Recherchez des problèmes ou entrez #123...","session.githubIntegration.search.prsPlaceholder":"Recherchez les PR ou entrez #456...","session.githubIntegration.empty.noIssuesFound":"Aucun problème trouvé","session.githubIntegration.empty.noPullRequestsFound":"Aucune PR trouvée","session.githubIntegration.actions.loadMore":"Charger plus","session.githubIntegration.actions.cancel":"Annuler","session.githubIntegration.actions.select":"Sélectionner","session.githubIntegration.selected.issueNumber":"Numéro {number}","session.githubIntegration.selected.prNumber":"PR #{number}","session.githubIntegration.includeDiffAria":"Inclure la différence PR dans le contexte de la session","session.githubIntegration.includeDiff":"Inclure la différence PR","session.githubIntegration.error.notConnected":"GitHub non connecté","session.githubIntegration.error.loadDataFailed":"Échec du chargement des données","session.githubIntegration.validation.branchAlreadyCheckedOut":"La branche est déjà checkout dans un worktree","session.githubIntegration.validation.branchAlreadyExists":"Une branche existe déjà localement","session.githubIntegration.validation.failed":"Échec de la validation","chat.fileAttachment.toast.attachFailed":"Impossible de joindre le fichier","chat.fileAttachment.toast.someFilesSkipped":`Certains fichiers ont été ignorés :
12
- {summary}`,"chat.fileAttachment.toast.vscodePickFailed":"Échec de la sélection des fichiers dans VS Code","chat.fileAttachment.fileFallback":"déposer","chat.fileAttachment.skippedFallback":"ignoré","chat.fileAttachment.actions.attachAria":"Joindre des fichiers","chat.fileAttachment.actions.attach":"Joindre des fichiers","chat.fileAttachment.actions.removeNamed":"Supprimer {name}","chat.fileAttachment.actions.removeImage":"Supprimer l'image","chat.fileAttachment.activeEditor.addFile":"Ajouter le fichier : {name} au contexte","chat.fileAttachment.activeEditor.pinSelection":"Épingler la sélection au contexte","chat.fileAttachment.activeEditor.remove":"Retirer du contexte","chat.pendingChanges.fileCountSingle":"Fichier {count}","chat.pendingChanges.fileCountPlural":"Fichiers {count}","chat.pendingChanges.changedInWorkspace":"changé dans l'espace de travail","chat.changedFiles.title":"Fichiers modifiés","chat.changedFiles.actions.openFileTitle":"Ouvrir {path}","chat.emptyState.opencodeUnreachable":"OpenCode n'est pas accessible","chat.emptyState.startNewChat":"Démarrer une nouvelle discussion","chat.emptyState.draftTitle":"Sur quoi travaillons-nous ?","chat.emptyState.draftTitleWithProject":"Sur quoi travaillons-nous dans {project} ?","chat.scrollToBottom.aria":"Faire défiler vers le bas","chat.promptNavigator.aria":"Navigation des prompts","chat.promptNavigator.currentPrompt":"Prompt actuel","chat.promptNavigator.loadMore":"Charger plus de prompts","chat.timeline.relative.justNow":"à l’instant","chat.timeline.relative.minutesAgo":"il y a {count} min","chat.timeline.relative.hoursAgo":"il y a {count} h","chat.timeline.relative.daysAgo":"il y a {count} j","chat.timeline.title":"Chronologie des conversations","chat.timeline.description":"Accédez à n’importe quel point de la conversation ou créez une nouvelle session","chat.timeline.searchPlaceholder":"Rechercher des messages...","chat.timeline.empty.search":"Aucun message trouvé","chat.timeline.empty.session":"Aucun message dans cette session pour le moment","chat.timeline.noTextContent":"[Aucun contenu textuel]","chat.timeline.actions.title":"Actions","chat.timeline.actions.revertFromHere":"Revenir à partir d'ici","chat.timeline.actions.forkFromHere":"Fourche d'ici","chat.timeline.actions.previousTurn":"Tour précédent","chat.timeline.actions.latest":"Dernier","chat.timeline.help.clickMessage":"Cliquez sur un message pour y faire défiler la conversation","chat.timeline.help.undoToPoint":"Annuler jusqu'à présent (le texte du message remplira la saisie)","chat.timeline.help.createSessionFromHere":"Créez une nouvelle session à partir d'ici","chat.statusRow.todo.status.inProgress":"En cours","chat.statusRow.todo.status.pending":"En attente","chat.statusRow.todo.status.completed":"Complété","chat.statusRow.todo.status.cancelled":"Annulé","chat.statusRow.todo.priority.high":"Haute priorité","chat.statusRow.todo.priority.medium":"Priorité moyenne","chat.statusRow.todo.priority.low":"Faible priorité","chat.statusRow.actions.stopGeneratingAria":"Arrêter de générer","chat.statusRow.tasksTitle":"Tâches","chat.statusRow.modelStatus":"{model} · {status}","chat.statusRow.summary.activeLeft":"{active} actif · {left} gauche","chat.revertIndicator.redo":"Refaire","chat.revertIndicator.redoAria":"Rétablir : restaurer les messages annulés","chat.revertPopover.title":"Rétabli","chat.revertPopover.noTextContent":"Aucun contenu textuel","chat.revertPopover.forkFromHere":"Fourche d'ici","chat.revertPopover.forkFromMessage":"Fork de ce message","chat.revertPopover.restoreAll":"Tout restaurer","chat.revertPopover.restore":"Restaurer","chat.revertPopover.revert":"Revenir","chat.revertPopover.fork":"Fourchette","chat.revert.toast.undo":"Revenu à {preview}","chat.revert.toast.redo":"Refait","chat.revert.toast.restored":"Restauré tous les messages","chat.toast.opencodeRestartInterrupted.title":"Discussion interrompue","chat.toast.opencodeRestartInterrupted.description":"OpenCode a redémarré alors qu’une réponse était encore en cours. Envoyez un message pour continuer.","chat.toast.opencodeRestartInterrupted.openSession":"Ouvrir la session","chat.errorBoundary.title":"Erreur de discussion","chat.errorBoundary.description":"L'interface de discussion a rencontré une erreur. Cela peut être dû à un problème de réseau temporaire ou à des données de message corrompues.","chat.errorBoundary.sessionLabel":"Session","chat.errorBoundary.detailsSummary":"Détails de l'erreur","chat.errorBoundary.resetAction":"Réinitialiser le chat","chat.errorBoundary.persistentHint":"Si le problème persiste, essayez d'actualiser la page.","chat.autocomplete.tabs.commands":"Commandes","chat.autocomplete.tabs.agents":"Agents","chat.autocomplete.tabs.files":"Fichiers","chat.autocomplete.keyboardHint":"↑↓ naviguer • Entrer sélectionner • Esc fermer","chat.commandAutocomplete.command.initDescription":"Créer/mettre à jour le fichier AGENTS.md","chat.commandAutocomplete.command.undoDescription":"Annuler le dernier message","chat.commandAutocomplete.command.redoDescription":"Refaire les messages précédemment annulés","chat.commandAutocomplete.command.timelineDescription":"Ouvrir la chronologie de la conversation","chat.commandAutocomplete.command.compactDescription":"Compresser l'historique des sessions à l'aide de l'IA pour réduire la taille du contexte","chat.commandAutocomplete.command.summaryDescription":"Résumé de session non destructif. Indice de sujet facultatif après la commande.","chat.commandAutocomplete.command.workspaceReviewDescription":"Examinez les modifications actuelles de l’espace de travail pour les problèmes de signal élevé uniquement.","chat.commandAutocomplete.badge.skill":"skill","chat.commandAutocomplete.badge.command":"commande","chat.commandAutocomplete.badge.system":"système","chat.commandAutocomplete.empty":"Aucune commande trouvée","chat.agentMentionAutocomplete.badge.system":"système","chat.agentMentionAutocomplete.empty":"Aucun agent trouvé","chat.fileMentionAutocomplete.searchMoreAgents":"Tapez pour rechercher plus d'agents","chat.fileMentionAutocomplete.empty":"Aucune correspondance trouvée","chat.queuedMessage.attachments":"+Fichier(s) {count}","chat.queuedMessage.empty":"(vide)","chat.queuedMessage.title":"Messages en file d'attente","chat.queuedMessage.edit":"modifier","chat.queuedMessage.send":"envoyer","chat.queuedMessage.removeAria":"Supprimer de la file d'attente","chat.queuedMessage.reorderAria":"Glisser pour réorganiser","chat.container.returnToParent.aria":"Retour à la session parents","chat.container.returnToParent.titleNamed":"Retourner à : {title}","chat.container.returnToParent.title":"Retour à la session parents","chat.container.returnToParent.label":"Mère","chat.btw.destroyAria":"Détruire cette session btw","chat.btw.titleFallback":"session btw","chat.btw.mainComposerPlaceholder":"Poser une question dans cette session btw…","chat.btw.loading":"Démarrage de la session btw…","chat.btw.toast.emptyArgument":"Saisissez une question après /btw","chat.btw.toast.createFailed":"Échec du démarrage de la session btw","chat.btw.toast.destroyFailed":"Échec de la suppression de la session btw. Elle restera dans la barre latérale.","chat.btw.working":"En cours…","chat.btw.collapseAria":"Réduire le panneau btw","chat.btw.expandAria":"Développer le panneau btw","chat.btw.promoteAria":"Conserver comme session à part","chat.btw.toast.promoteFailed":"Échec de la conservation de la session btw","chat.container.readOnlySubagentPromptBanner":"Les sessions de sous-agent ne peuvent pas être invitées.","chat.container.sessionLoadError.title":"Impossible de charger la session","chat.container.sessionLoadError.description":"Impossible de récupérer la conversation — le serveur est peut-être hors ligne ou injoignable. Rien n'est perdu ; réessayez quand il sera de retour.","chat.container.sessionLoadError.authDescription":"Votre session a expiré, le serveur a donc refusé la requête. Connectez-vous et la conversation se chargera.","chat.container.sessionLoadError.retry":"Réessayer","sessions.sidebar.group.empty.loadingSessions":"Chargement des sessions…","sessions.sidebar.group.empty.loadFailed":"Impossible d’actualiser les sessions.","sessions.sidebar.group.empty.retry":"Réessayer","sessions.sidebar.group.empty.permissionDenied":"L’accès au dossier est requis.","sessions.sidebar.group.empty.grantAccess":"Autoriser l’accès","chat.unifiedControls.title":"Contrôles","chat.unifiedControls.model.title":"Modèle","chat.unifiedControls.model.noRecent":"Aucun modèle récent","chat.unifiedControls.model.moreAria":"Plus de modèles","chat.unifiedControls.effort.title":"Effort","chat.unifiedControls.effort.moreAria":"Plus d'options d'effort","chat.questionCard.summaryTab":"Résumé","chat.questionCard.noAnswer":"(pas de réponse)","chat.questionCard.inputNeeded":"Entrée nécessaire","chat.questionCard.fromSubagent":"Du sous-agent","chat.questionCard.questionFallback":"Question {index}","chat.questionCard.selectMultiple":"Sélectionnez plusieurs","chat.questionCard.recommended":"recommandé","chat.questionCard.other":"Autre…","chat.questionCard.yourAnswer":"Votre Réponse","chat.questionCard.submit":"Soumettre","chat.questionCard.next":"Suivant","chat.questionCard.dismiss":"Ignorer","chat.questionCard.copyMarkdown":"Copier en Markdown","chat.questionCard.copyJson":"Copier sous JSON","chat.questionCard.copiedMarkdown":"Question copiée en tant que Markdown","chat.questionCard.copiedJson":"Question copiée sous le nom JSON","chat.questionCard.copyFailed":"Échec de la copie de la question","chat.textSelection.toast.noProject":"Aucun projet trouvé pour cette session","chat.textSelection.toast.addToNotesFailed":"Échec de l'ajout aux notes","chat.textSelection.toast.addToNotesSuccess":"Ajout du texte sélectionné aux notes","chat.textSelection.toast.addToNotesSummaryFailed":"Impossible de résumer la sélection, ajout du texte sélectionné aux notes","chat.textSelection.actions.addToInput":"Ajouter à la saisie","chat.textSelection.actions.comment":"Commenter","chat.textSelection.title.commentOnSelection":"Commenter la sélection","chat.textSelection.comment.placeholder":"Ajouter un commentaire facultatif...","chat.textSelection.comment.attach":"Joindre","chat.textSelection.actions.addToNotes":"Ajouter aux notes","chat.textSelection.title.addToCurrentChat":"Ajouter au chat actuel","chat.textSelection.title.saveInsightToNotes":"Enregistrer le texte sélectionné dans les notes","chat.messageBody.actions.revertAria":"Revenir à ce message","chat.messageBody.actions.revert":"Revenir à partir d'ici","chat.messageBody.actions.forkAria":"Fork de ce message","chat.messageBody.actions.fork":"Fourche d'ici","chat.messageBody.actions.copyMessageAria":"Copier le texte du message","chat.messageBody.actions.copyMessage":"Copier le message","chat.messageBody.actions.pinContext":"Épingler dans le contexte (conservé après compactage)","chat.messageBody.actions.unpinContext":"Désépingler du contexte (non conservé après compactage)","chat.messageBody.actions.contextPinFailed":"Impossible de modifier l’épinglage dans le contexte","chat.messageBody.actions.openPreviewAria":"Ouvrir l'aperçu","chat.messageBody.actions.openPreview":"Ouvrir l'aperçu","chat.messageBody.actions.copyAnswer":"Copier la réponse","chat.messageBody.actions.savingImage":"Enregistrement de l'image...","chat.messageBody.actions.saveAsImage":"Enregistrer sous image","chat.messageBody.actions.saveAsPlan":"Enregistrer comme forfait","chat.messageBody.actions.startNewSession":"Démarrer une nouvelle session à partir de cette réponse","chat.messageBody.actions.startNewMultiRun":"Démarrer une nouvelle exécution multiple à partir de cette réponse","chat.generatedResult.actions.copy":"Copie","chat.generatedResult.actions.copied":"Copié","chat.generatedResult.commit.title":"Message de commit généré","chat.generatedResult.commit.highlights":"Points forts","chat.generatedResult.pullRequest.title":"Demande d'extraction générée","chat.generatedResult.pullRequest.titleLabel":"Titre","chat.generatedResult.pullRequest.bodyLabel":"Corps","chat.messageBody.tts.stopSpeaking":"Arrête de parler","chat.messageBody.tts.readAloud":"Lire à haute voix","chat.messageBody.tts.readAloudWithProvider":"Lire à haute voix (voix {provider})","chat.messageBody.toast.noProject":"Aucun projet trouvé pour cette session","chat.messageBody.toast.savePlanFailed":"Échec de l'enregistrement du plan","chat.messageBody.toast.planSaved":"Forfait enregistré","chat.messageBody.toast.imageSaved":"Image enregistrée","chat.messageBody.toast.generateImageFailed":"Échec de la génération de l'image","chat.chatInput.actions.commands":"Commandes","chat.chatInput.actions.attachFiles":"Joindre des fichiers","chat.chatInput.actions.addAttachment":"Ajouter une pièce jointe","chat.chatInput.actions.linkGithubIssue":"Lien vers le problème GitHub","chat.chatInput.actions.linkGithubPr":"Lien GitHub PR","chat.chatInput.actions.modelAgentSettings":"Paramètres du modèle et de l'agent","chat.chatInput.actions.sendMessageAria":"Envoyer un message","chat.chatInput.actions.queueMessageAria":"Message de file d'attente","chat.chatInput.actions.stopGeneratingAria":"Arrêter de générer","chat.chatInput.focusMode.toggleAria":"Basculer le mode de mise au point","chat.chatInput.focusMode.label":"Mode de mise au point","chat.chatInput.permissionAutoAccept.disable":"Désactiver l'acceptation automatique des autorisations","chat.chatInput.permissionAutoAccept.enable":"Activer l'acceptation automatique des autorisations","chat.chatInput.permissionAutoAccept.on":"Acceptation automatique des autorisations : activée","chat.chatInput.permissionAutoAccept.off":"Acceptation automatique des autorisations : désactivée","chat.chatInput.linked.byAuthor":"par {author}","chat.chatInput.linked.issue.openInBrowserAria":"Problème ouvert dans le navigateur","chat.chatInput.linked.issue.removeAria":"Supprimer le problème lié","chat.chatInput.linked.pr.number":"PR #{number}","chat.chatInput.linked.pr.openInBrowserAria":"Ouvrir la demande d'extraction dans le navigateur","chat.chatInput.linked.pr.removeAria":"Supprimer la demande d'extraction liée","chat.chatInput.placeholder.shell":"Entrez la commande shell...","chat.chatInput.placeholder.chat":"@ pour les fichiers/agents ; / pour les commandes et les skills ; ! pour shell ; # pour les extraits","chat.chatInput.placeholder.chatCompact":"Utiliser @ / ! # pour les aides","chat.chatInput.placeholder.selectSession":"Sélectionnez ou créez une session pour commencer à discuter","chat.dictation.start":"Démarrer la dictée","chat.dictation.overlayAria":"Dictée","chat.dictation.downloadingModel":"Téléchargement du modèle vocal...","chat.dictation.downloadingModelProgress":"Téléchargement du modèle vocal... {percent}%","chat.dictation.listening":"Écoute...","chat.dictation.processing":"Transcription...","chat.dictation.failed":"Échec de la transcription","chat.dictation.cancel":"Abandonner la dictée","chat.dictation.insert":"Insérer la transcription","chat.dictation.insertAndSend":"Insérer et envoyer","chat.dictation.retry":"Réessayer la transcription","chat.dictation.discard":"Abandonner l'enregistrement","chat.snippetAutocomplete.action.addNew":"+ Ajouter un nouvel extrait","chat.snippetAutocomplete.empty":"Aucun extrait trouvé","chat.snippetAutocomplete.footer":"↑↓ naviguer • Entrer sélectionner • Esc fermer","snippets.source.global":"mondial","snippets.source.project":"projet","chat.chatInput.toast.compactFailed":"Échec du compactage de la session","chat.chatInput.toast.summaryFailed":"Échec de la génération du résumé","chat.chatInput.toast.reviewFailed":"Échec de l'examen des modifications","chat.chatInput.toast.attachmentsTooLarge":"Les pièces jointes sont trop volumineuses pour être envoyées. Veuillez essayer de réduire le nombre ou la taille des images.","chat.chatInput.toast.sendAttachmentsFailed":"Échec de l'envoi des pièces jointes. Essayez moins de fichiers ou des images plus petites.","chat.chatInput.toast.messageSendFailed":"Le message n'a pas pu être envoyé. Pièces jointes restaurées.","chat.chatInput.toast.noModelSelected":"Sélectionnez un fournisseur et un modèle avant d'envoyer.","chat.chatInput.toast.clipboardAttachFailed":"Échec de la pièce jointe de l'image du presse-papiers","chat.chatInput.toast.clipboardTextAttachFailed":"Échec de la pièce jointe du texte collé comme fichier","chat.chatInput.toast.largeTextPaste.title":"Texte volumineux détecté","chat.chatInput.toast.largeTextPaste.attach":"Joindre comme fichier","chat.chatInput.toast.largeTextPaste.inline":"Coller en ligne","chat.chatInput.toast.addedFileMentions":"Ajout des mentions du fichier {count}","chat.chatInput.toast.attachFileFailed":"Impossible de joindre le fichier","chat.chatInput.toast.attachNamedFailed":"Échec de la connexion du {name}","chat.chatInput.toast.unsupportedAttachmentModalities":"{model} ne prend pas en charge l’entrée {modalities} requise par {files}. Vous pouvez tout de même envoyer le message, mais ces pièces jointes risquent d’être ignorées.","chat.chatInput.toast.someFilesSkipped":`Certains fichiers ont été ignorés :
13
- {summary}`,"chat.chatInput.toast.vscodePickFailed":"Échec de la sélection des fichiers dans VS Code","chat.chatInput.toast.openSessionFirst":"Ouvrir d'abord une session","chat.chatInput.toast.togglePermissionAutoAcceptFailed":"Échec de l'activation de l'acceptation automatique des autorisations","chat.chatInput.reviewComments":"Commentaires de révision :","chat.chatInput.previewAnnotations":"Aperçu des annotations :","chat.chatInput.previewContext":"Contexte d'aperçu :","chat.chatInput.previewContextRemove":"Supprimer le contexte d'aperçu","chat.chatInput.projectRoot":"Racine du projet","chat.chatInput.branch":"Bifurquer","chat.chatInput.draftPicker.projectTitle":"Projet","chat.chatInput.draftPicker.searchProjects":"Rechercher des projets...","chat.chatInput.draftPicker.searchBranches":"Rechercher des branches...","chat.chatInput.worktrees":"Worktrees","chat.chatInput.worktreeNew":"+ Nouveau","chat.chatInput.drop.insertMention":"Déposer pour insérer comme mention","chat.chatInput.drop.attachFiles":"Déposez les fichiers ici pour les joindre","chat.chatInput.fileFallback":"déposer","chat.toolOutputDialog.image.previousAria":"Image précédente","chat.toolOutputDialog.image.nextAria":"Image suivante","chat.toolOutputDialog.image.closeAria":"Fermer l'aperçu de l'image","chat.toolOutputDialog.mermaid.missingSource":"URL de source Mermaid manquante.","chat.toolOutputDialog.mermaid.loadFailed":"Impossible de charger le diagramme Mermaid.","chat.toolOutputDialog.mermaid.dataUrlMalformed":"L'URL de données Mermaid est mal formée.","chat.toolOutputDialog.mermaid.invalidLocalPath":"Le chemin du fichier Mermaid local est invalide.","chat.toolOutputDialog.mermaid.readFileFailedWithStatus":"Impossible de lire le fichier Mermaid. Statut : {status}.","chat.toolOutputDialog.mermaid.unsupportedUrlProtocol":"Le protocole de l'URL Mermaid n'est pas pris en charge.","chat.toolOutputDialog.mermaid.loadFailedWithStatus":"Impossible de charger le diagramme Mermaid. Statut : {status}.","chat.toolOutputDialog.mermaid.closeAria":"Fermer l'aperçu du diagramme","chat.toolOutputDialog.mermaid.loading":"Diagramme de chargement...","chat.toolOutputDialog.mermaid.renderFailed":"Impossible d'afficher le diagramme Mermaid.","chat.toolOutputDialog.mermaid.retry":"Réessayer","chat.toolOutputDialog.commandCompleted":"Commande terminée avec succès","chat.toolOutputDialog.noOutputProduced":"Aucune sortie n'a été produite","chat.toolPart.lspErrors":"Erreurs LSP","chat.toolPart.moreErrors":"+{count} plus d'erreurs","chat.toolPart.error":"Erreur:","chat.toolPart.awaitingResponse":"En attente de réponse...","chat.toolPart.noOutputProduced":"Aucune sortie produite","chat.toolPart.output":"Sortie","chat.toolPart.openSubtask":"Ouvrir la sous-tâche {type}","chat.todo.total":"Total","chat.todo.inProgress":"En cours","chat.todo.pending":"En attente","chat.todo.completed":"Complété","chat.todo.cancelled":"Annulé","chat.permissionCard.workingDirectory":"Répertoire de travail :","chat.permissionCard.timeout":"Temps mort:","chat.permissionCard.request":"Demande:","chat.permissionCard.headers":"En-têtes :","chat.permissionCard.body":"Corps:","chat.permissionCard.action":"Action:","chat.permissionCard.details":"Détails:","chat.permissionCard.patterns":"Motifs:","chat.permissionToast.sessionFallback":"Session","chat.permissionToast.permissionFallback":"Détails de l'autorisation indisponibles","chat.permissionToast.labels.session":"Session:","chat.permissionToast.labels.permission":"Autorisation:","chat.permissionToast.actions.once":"Une fois","chat.permissionToast.actions.always":"Toujours","chat.permissionToast.actions.deny":"Refuser","chat.permissionToast.actions.approveOnceAria":"Approuver une fois","chat.permissionToast.actions.approveOnceAriaWithSession":"Approuver une fois pour {session}","chat.permissionToast.actions.approveAlwaysAria":"Approuver toujours","chat.permissionToast.actions.approveAlwaysAriaWithSession":"Approuver toujours pour {session}","chat.permissionToast.actions.denyAria":"Refuser l'autorisation","chat.permissionToast.actions.denyAriaWithSession":"Refuser l'autorisation pour {session}","chat.permissionRequest.required":"Autorisation requise :","chat.permissionRequest.actions.once":"Une fois","chat.permissionRequest.actions.always":"Toujours","chat.permissionRequest.actions.reject":"Refuser","chat.modelControls.provider":"Fournisseur","chat.modelControls.capability.toolCalling":"Appel d'outil","chat.modelControls.capability.reasoning":"Raisonnement","chat.modelControls.modality.text":"Texte","chat.modelControls.modality.image":"Image","chat.modelControls.modality.video":"Vidéo","chat.modelControls.modality.audio":"Audio","chat.modelControls.modality.pdf":"PDF","chat.modelControls.capabilities":"Capacités","chat.modelControls.modalities":"Modalités","chat.modelControls.input":"Entrée","chat.modelControls.output":"Sortie","chat.modelControls.limits":"Limites","chat.modelControls.context":"Contexte","chat.modelControls.metadata":"Métadonnées","chat.modelControls.knowledge":"Connaissance","chat.modelControls.release":"Libérer","chat.modelControls.mode":"Mode","chat.modelControls.model":"Modèle","chat.modelControls.temperature":"Température","chat.modelControls.topP":"Haut P","chat.modelControls.permissions":"Autorisations","chat.modelControls.edit":"Modifier","chat.modelControls.bash":"Bash","chat.modelControls.webFetch":"WebFetch","chat.modelControls.customPrompt":"Prompt personnalisé","chat.modelControls.selectModel":"Sélectionnez le modèle","chat.modelControls.searchProvidersOrModels":"Rechercher des fournisseurs ou des modèles","chat.modelControls.clearSearch":"Effacer la recherche","chat.modelControls.current":"Actuel","chat.modelControls.thinking":"Pensée","chat.modelControls.default":"Défaut","chat.modelControls.selectAgent":"Sélectionnez un agent","chat.modelControls.costPerMillion":"Coût ($/1 million de jetons)","chat.modelControls.metadataUnavailable":"Métadonnées du modèle indisponibles.","chat.modelControls.addNewProvider":"Ajouter un nouveau fournisseur","chat.modelControls.noAgentSelected":"Aucun agent sélectionné.","chat.modelControls.resetToDefault":"Réinitialiser aux valeurs par défaut","chat.modelControls.searchModels":"Rechercher des modèles","chat.modelControls.searchAgents":"Agents de recherche","chat.modelControls.noModelsFound":"Aucun modèle trouvé","chat.modelControls.favorites":"Favoris","chat.modelControls.recent":"Récents","chat.modelControls.addToFavorites":"Ajouter aux favoris","chat.modelControls.removeFromFavorites":"Supprimer des favoris","chat.modelControls.favoriteAria":"Préféré","chat.modelControls.unfavoriteAria":"Supprimer des favoris","chat.modelControls.collapseProvider":"Fournisseur de réduction","chat.modelControls.expandProvider":"Développer le fournisseur","chat.modelControls.keyboardHint":"↑↓ naviguer{thinking} • Entrer sélectionner • Esc fermer","chat.modelControls.keyboardHintNavigate":"↑↓ naviguer","chat.modelControls.keyboardHintSwitchAgent":"Agent de commutation {shortcut}","chat.modelControls.keyboardHintThinking":"←→ penser","chat.modelControls.showThinkingModes":"Afficher les modes de réflexion","chat.modelControls.hideThinkingModes":"Masquer les modes de réflexion","chat.modelControls.moreThinkingModes":"Plus de modes de réflexion","chat.modelControls.noProvidersOrModelsFound":"Aucun fournisseur ou modèle ne correspond à votre recherche.","chat.modelControls.reorderFavoriteAria":"Réorganiser les favoris","chat.modelControls.reorderFavoriteTitle":"Faites glisser pour réorganiser les favoris","chat.modelControls.reorderProviderTitle":"Faites glisser pour réorganiser le fournisseur","chat.modelControls.permissionLabel.custom":"Personnalisé","chat.modelControls.permissionLabel.allow":"Permettre","chat.modelControls.permissionLabel.deny":"Refuser","chat.modelControls.permissionLabel.ask":"Demander","chat.modelControls.modeValue.primary":"Primaire","chat.modelControls.modeValue.subagent":"Sous-agent","chat.modelControls.modeValue.all":"Tous","chat.modelControls.modeValue.none":"—","chat.reasoningTrace.thinking":"Pensée","chat.reasoningTrace.justification":"Justification","chat.reasoningTrace.expandAria":"Développer la trace du raisonnement","chat.reasoningTrace.collapseAria":"Réduire la trace du raisonnement","chat.reasoningTrace.thought":"Pensée","chat.messageBody.subtask.title":"Tâche déléguée","chat.messageBody.subtask.hidePrompt":"Masquer le prompt","chat.messageBody.subtask.showPrompt":"Afficher le prompt","chat.messageBody.subtask.openSession":"Ouvrir une session de sous-tâche","chat.messageBody.shellCommand.title":"Commande Shell","chat.messageBody.shellCommand.hideOutput":"Masquer la sortie","chat.messageBody.shellCommand.showOutput":"Afficher la sortie","chat.messageBody.shellCommand.copied":"Copié","chat.messageBody.shellCommand.copyOutput":"Copier la sortie","commandPalette.title":"Palette de commandes","commandPalette.description":"Recherchez des fichiers, des sessions et des commandes.","commandPalette.input.placeholder":"Rechercher des fichiers, des sessions, des commandes...","commandPalette.empty.noResults":"Aucun résultat trouvé.","commandPalette.empty.searchingFiles":"Recherche de fichiers...","commandPalette.item.newSession":"Nouvelle session","commandPalette.item.newMiniChat":"Nouvelle mini-fenêtre de discussion","commandPalette.item.newWorktreeDraft":"Nouveau brouillon d'worktree","commandPalette.item.addProject":"Ajouter un projet","commandPalette.item.showSessionSwitcher":"Afficher le sélecteur de session","commandPalette.item.toggleSidebar":"Basculer la barre latérale","commandPalette.item.showContextUsage":"Afficher l'utilisation du contexte","commandPalette.item.toggleTerminal":"Basculer le terminal","commandPalette.item.cycleTheme":"Changer de thème","commandPalette.item.showOpenCodeStatus":"Afficher le statut OpenCode","commandPalette.item.toggleMemoryDebug":"Basculer le panneau de débogage mémoire","commandPalette.item.pinSession":"Épingler ou désépingler la session","commandPalette.item.copySessionId":"Copier l'ID de session","commandPalette.item.openMultiRun":"Ouvrir le lanceur multi-run","commandPalette.item.openArchive":"Ouvrir les sessions archivées","commandPalette.item.openNotes":"Ouvrir le panneau de notes","commandPalette.item.openTodos":"Ouvrir le panneau de tâches","commandPalette.item.openSettings":"Ouvrez les paramètres...","commandPalette.session.untitled":"Session sans titre","openCodeStatusDialog.title":"Statut OpenCode","openCodeStatusDialog.description":"Inspectez l’état et les diagnostics actuels du OpenCode.","openCodeStatusDialog.actions.copy":"Copie","openCodeStatusDialog.empty.noData":"Aucune donnée.","openCodeStatusDialog.toast.copiedTitle":"Copié","openCodeStatusDialog.toast.copiedDescription":"Statut copié dans le presse-papiers","openCodeStatusDialog.toast.copyFailed":"Échec de la copie du statut","saveProjectPlanDialog.title":"Enregistrer le plan de projet","saveProjectPlanDialog.description":"Enregistrez ce plan dans votre projet en tant que fichier Markdown.","saveProjectPlanDialog.field.title":"Titre","saveProjectPlanDialog.field.titlePlaceholder":"Titre du plan","saveProjectPlanDialog.field.contentPreview":"Aperçu du contenu","saveProjectPlanDialog.actions.cancel":"Annuler","saveProjectPlanDialog.actions.save":"Sauvegarder","saveProjectPlanDialog.actions.saving":"Enregistrement...","branchPickerDialog.title":"Sélecteur de branches","branchPickerDialog.description.localBranchesForProject":"Branches locales pour {project}","branchPickerDialog.description.selectProject":"Sélectionnez un projet pour afficher les branches","branchPickerDialog.search.placeholder":"Rechercher des branches...","branchPickerDialog.search.renameBranchPlaceholder":"Renommer la branche","branchPickerDialog.state.noProjectSelected":"Aucun projet sélectionné","branchPickerDialog.state.loadingBranches":"Chargement des branches...","branchPickerDialog.state.noMatchingBranches":"Aucune branche correspondante","branchPickerDialog.state.noBranchesFound":"Aucune branche trouvée","branchPickerDialog.badge.head":"HEAD","branchPickerDialog.badge.worktree":"worktree","branchPickerDialog.actions.createWorktreeAria":"Créer un worktree à partir d'une branche","branchPickerDialog.actions.renameAria":"Renommer la branche","branchPickerDialog.actions.deleteAria":"Supprimer la branche","branchPickerDialog.actions.deleteWorktreeAria":"Supprimer le worktree","branchPickerDialog.actions.confirmRenameAria":"Confirmer le changement de nom","branchPickerDialog.actions.cancelRenameAria":"Annuler le changement de nom","branchPickerDialog.actions.confirmDeleteAria":"Confirmer la suppression de la branche","branchPickerDialog.actions.cancelDeleteAria":"Annuler la suppression de la branche","branchPickerDialog.actions.deletePrompt":"Supprimer","branchPickerDialog.actions.forceDeletePrompt":"Forcer la suppression","branchPickerDialog.tooltip.createWorktree":"Créer un worktree","branchPickerDialog.tooltip.worktreeAlreadyExists":"Le worktree existe déjà","branchPickerDialog.tooltip.rename":"Renommer la branche","branchPickerDialog.tooltip.renameDisabledForRoot":"Impossible de renommer la branche racine","branchPickerDialog.tooltip.delete":"Supprimer la branche","branchPickerDialog.tooltip.deleteCurrentBranch":"Impossible de supprimer la branche actuelle","branchPickerDialog.tooltip.deleteDisabledForRoot":"Impossible de supprimer la branche racine","branchPickerDialog.tooltip.deleteWorktree":"Supprimer le worktree","branchPickerDialog.tooltip.deleteWorktreeRootProtected":"Impossible de supprimer le worktree racine","branchPickerDialog.toast.branchRenamed":"Branche renommée","branchPickerDialog.toast.failedToRenameBranch":"Échec du renommage de la branche","branchPickerDialog.toast.branchDeleted":"Branche supprimée","branchPickerDialog.toast.branchNotMerged":"La branche n'est pas entièrement fusionnée","branchPickerDialog.toast.confirmAgainToForceDelete":"Confirmez à nouveau pour forcer la suppression","branchPickerDialog.toast.failedToDeleteBranch":"Échec de la suppression de la branche","branchPickerDialog.toast.worktreeCreated":"Worktree créé","branchPickerDialog.toast.failedToCreateWorktree":"Échec de la création du worktree","branchPickerDialog.error.failedToLoad":"Échec du chargement des branches","branchPickerDialog.error.renameRejected":"Le changement de nom a été refusé","branchPickerDialog.error.renameFailed":"Échec du renommage de la branche","branchPickerDialog.error.deleteRejected":"La suppression a été refusée","branchPickerDialog.error.deleteFailed":"Échec de la suppression de la branche","branchPickerDialog.error.createWorktreeFailed":"Échec de la création du worktree","projectEditDialog.title":"Modifier le projet","projectEditDialog.field.name":"Nom","projectEditDialog.field.namePlaceholder":"Nom du projet","projectEditDialog.field.color":"Couleur","projectEditDialog.field.icon":"Icône","projectEditDialog.field.preview":"Aperçu","projectEditDialog.field.iconBackground":"Fond d'icône","projectEditDialog.field.iconBackgroundAria":"Couleur d’arrière-plan de l’icône du projet","projectEditDialog.option.none":"Aucun","projectEditDialog.actions.uploadIcon":"Icône de téléchargement","projectEditDialog.actions.uploading":"Téléchargement...","projectEditDialog.actions.discoverFavicon":"Découvrez Favicon","projectEditDialog.actions.discovering":"Découverte...","projectEditDialog.actions.removeProjectIcon":"Supprimer l'icône du projet","projectEditDialog.actions.removing":"Suppression...","projectEditDialog.actions.undoRemove":"Annuler Supprimer","projectEditDialog.actions.clear":"Effacer","projectEditDialog.actions.cancel":"Annuler","projectEditDialog.actions.save":"Sauvegarder","projectEditDialog.toast.failedToUploadIcon":"Échec du téléchargement de l'icône du projet","projectEditDialog.toast.iconUpdated":"Icône du projet mise à jour","projectEditDialog.toast.failedToRemoveIcon":"Échec de la suppression de l'icône du projet","projectEditDialog.toast.iconRemoved":"Icône du projet supprimée","projectEditDialog.toast.failedToDiscoverIcon":"Échec de la découverte de l'icône du projet","projectEditDialog.toast.customIconAlreadySet":"Icône personnalisée déjà définie pour ce projet","projectEditDialog.toast.iconDiscovered":"Icône de projet découverte","agentManager.sidebar.search.placeholder":"Rechercher des groupes d'agents...","agentManager.sidebar.actions.newAgentGroup":"Nouveau groupe d'agents","agentManager.sidebar.actions.more":"... Plus ({count})","agentManager.sidebar.actions.showLess":"Afficher moins","agentManager.sidebar.section.agentGroups":"Groupes d'agents","agentManager.sidebar.state.loading":"Chargement...","agentManager.sidebar.state.noGroupsFound":"Aucun groupe trouvé","agentManager.sidebar.state.noGroupsYet":"Aucun groupe d'agents pour l'instant","agentManager.sidebar.state.createToGetStarted":"Créez un nouveau groupe d'agents pour commencer","agentManager.sidebar.item.modelCountSingle":"Modèle {count}","agentManager.sidebar.item.modelCountPlural":"Modèles {count}","agentManager.sidebar.item.groupMenuAria":"Menu de groupe","agentManager.sidebar.item.delete":"Supprimer","agentManager.sidebar.relativeTime.now":"maintenant","agentManager.sidebar.relativeTime.minutes":"{count}m","agentManager.sidebar.relativeTime.hours":"{count}h","agentManager.sidebar.relativeTime.days":"{count}d","agentManager.sidebar.dialog.deleteGroupTitle":"Supprimer le groupe d'agents","agentManager.sidebar.dialog.deleteGroupDescription":"Supprimer « {group} » ? Cela supprime tous les worktrees et sessions de ce groupe.","agentManager.sidebar.dialog.cancel":"Annuler","agentManager.sidebar.dialog.delete":"Supprimer","agentManager.sidebar.dialog.deleting":"Suppression...","agentManager.sidebar.toast.deletingGroup":'Suppression de "{group}"...',"agentManager.sidebar.toast.deletedGroup":'"{group}" supprimé',"agentManager.sidebar.toast.failedToDeleteGroup":'Échec de la suppression complète de "{group}"',"agentManager.detail.header.modelCountSingle":"Modèle {count}","agentManager.detail.header.modelCountPlural":"Modèles {count}","agentManager.detail.header.noBranch":"Pas de branche","agentManager.detail.actions.worktreeActionsAria":"Actions du worktree","agentManager.detail.actions.removeThisWorktree":"Supprimer ce worktree","agentManager.detail.actions.keepThisRemoveOthers":"Laissez celui-ci, supprimez les autres","agentManager.detail.actions.copyWorktreePath":"Copier le chemin du worktree","agentManager.detail.dialog.removeWorktreeTitle":"Supprimer le worktree","agentManager.detail.dialog.removeOtherWorktreesTitle":"Supprimer les autres worktrees","agentManager.detail.dialog.removeWorktreeDescription":"Supprimer « {label} » ? Cela supprime toutes les sessions de ce worktree ainsi que le worktree lui-même.","agentManager.detail.dialog.removeOtherWorktreesDescription":'Conservez "{label}" et supprimez les autres worktrees dans "{group}".',"agentManager.detail.dialog.cancel":"Annuler","agentManager.detail.dialog.remove":"Retirer","agentManager.detail.dialog.removeOthers":"Supprimer les autres","agentManager.detail.dialog.working":"Fonctionnement...","agentManager.detail.state.loadingSessionFor":"Session de chargement pour {label}","agentManager.detail.state.sessionId":"ID de session : {id}","agentManager.detail.state.noSessionsInGroup":"Aucune session dans ce groupe","agentManager.detail.toast.noWorktreePath":"Aucun chemin de worktree disponible","agentManager.detail.toast.worktreePathCopied":"Chemin du worktree copié","agentManager.detail.toast.failedToCopyPath":"Échec de la copie du chemin","agentManager.detail.toast.removingWorktree":"Suppression du worktree...","agentManager.detail.toast.removingOtherWorktrees":"Suppression d'autres worktrees...","agentManager.detail.toast.failedToFullyRemoveWorktree":"Échec de la suppression complète du worktree","agentManager.detail.toast.worktreeRemoved":"Worktree supprimé","agentManager.detail.toast.otherWorktreesRemoved":"Suppression d'autres worktrees","agentManager.empty.groupName.label":"Nom du groupe","agentManager.empty.groupName.placeholder":"e.g. fonctionnalité-auth, correction de bugs-connexion","agentManager.empty.groupName.description":"Utilisé pour le répertoire du worktree et le nommage des branches","agentManager.empty.baseBranch.label":"Branche de base","agentManager.empty.baseBranch.description":"Crée de nouvelles branches à partir de {branch}","agentManager.empty.setupCommands.label":"Commandes de configuration","agentManager.empty.setupCommands.configured":"{count} configuré","agentManager.empty.setupCommands.description":"Les commandes s'exécutent dans chaque nouveau worktree. Utilisez $ROOT_PROJECT_PATH pour la racine du projet.","agentManager.empty.setupCommands.loading":"Chargement...","agentManager.empty.setupCommands.commandPlaceholder":"p. ex. bun install","agentManager.empty.setupCommands.removeCommandAria":"Supprimer la commande","agentManager.empty.setupCommands.addCommand":"Ajouter une commande","agentManager.empty.agent.label":"Agent","agentManager.empty.agent.description":"Par défaut, votre agent par défaut configuré","agentManager.empty.models.label":"Modèles","agentManager.empty.models.addModel":"Ajouter un modèle","agentManager.empty.models.selectedSingle":"Modèle {count} sélectionné","agentManager.empty.models.selectedPlural":"Modèles {count} sélectionnés","agentManager.empty.prompt.label":"Invite","agentManager.empty.prompt.placeholder":"Demandez n'importe quoi...","agentManager.empty.prompt.addAttachmentAria":"Ajouter une pièce jointe","agentManager.empty.actions.startAgentGroupAria":"Démarrer le groupe d'agents","agentManager.empty.toast.fileTooLarge":'Le fichier "{fileName}" est trop volumineux (max 10 Mo)',"agentManager.empty.toast.failedToAttach":'Échec de la connexion de "{fileName}"',"agentManager.empty.toast.attachedSingle":"Fichier {count} joint","agentManager.empty.toast.attachedPlural":"Fichiers {count} joints","agentManager.empty.toast.failedToCreateGroup":"Échec de la création du groupe d'agents","openInApp.actions.open":"Ouvrir","openInApp.actions.openInAria":"Ouvert dans {app}","openInApp.actions.chooseAppAria":"Choisissez l'application à ouvrir","openInApp.actions.copyPath":"Copier le chemin","openInApp.actions.refreshApps":"Actualiser les applications","openInApp.toast.pathCopied":"Chemin copié dans le presse-papiers","projectActions.actions.addActionAria":"Ajouter une action","projectActions.actions.addAction":"Ajouter une action","projectActions.actions.addNewAction":"Ajouter une nouvelle action","projectActions.actions.autoDiscover":"Découverte automatique","projectActions.actions.autoDiscoverTooltip":"Détecte et lance automatiquement le serveur de développement","projectActions.actions.chooseActionAria":"Choisir l'action du projet","projectActions.actions.openPreview":"Ouvrir l'aperçu","projectActions.actions.runNamedAria":"Exécutez {name}","projectActions.actions.stopNamedAria":"Arrêter {name}","projectActions.label.fallbackAction":"Action","projectActions.toast.openedUrlFromOutput":"URL ouvert à partir de la sortie d'action","projectActions.toast.openedForwardedUrl":"Ouvert transmis URL","projectActions.toast.openedActionUrl":"Action ouverte URL","projectActions.error.noActiveDirectory":"Pas de répertoire actif","projectActions.error.noActiveDirectoryForAction":"Pas de répertoire actif pour l'action","projectActions.error.failedToCreateTerminalSession":"Échec de la création d'une session de terminal","projectActions.error.invalidCustomUrlFormat":"Format URL personnalisé non valide","projectActions.error.selectedDesktopSshForwardUnavailable":"Le transfert du bureau SSH sélectionné n'est pas disponible","projectActions.error.failedToRunAction":"Échec de l'exécution de l'action","mcpDropdown.title":"Serveurs MCP","mcpDropdown.actions.refreshAria":"Rafraîchir","mcpDropdown.actions.openAria":"Serveurs MCP","mcpDropdown.statusAria":"Statut MCP","mcpDropdown.status.unknown":"Inconnu","mcpDropdown.status.connected":"Connecté","mcpDropdown.status.failed":"Échec : {error}","mcpDropdown.status.unknownError":"Erreur inconnue","mcpDropdown.status.needsAuth":"Nécessite une authentification","mcpDropdown.status.needsRegistration":"Nécessite un enregistrement : {error}","mcpDropdown.empty.configureInConfig":"Configurez les serveurs MCP dans la configuration OpenCode.","sessionAuth.error.rateLimitTitle":"Trop de tentatives","sessionAuth.error.networkTitle":"Impossible d'atteindre le serveur","sessionAuth.error.rateLimitDescriptionSingle":"Veuillez attendre {minutes} minute avant de réessayer.","sessionAuth.error.rateLimitDescriptionPlural":"Veuillez attendre {minutes} minutes avant de réessayer.","sessionAuth.error.networkDescription":"Nous n'avons pas pu vérifier la session d'interface utilisateur. Si vous ouvrez AiWorker depuis un autre appareil sur votre réseau local, activez l'accès au réseau du bureau dans l'application de bureau et utilisez l'adresse LAN indiquée dans les paramètres.","sessionAuth.error.retry":"Réessayer","sessionAuth.error.passkeySetupFailed":"La configuration du mot de passe a échoué.","sessionAuth.error.incorrectPassword":"Mot de passe incorrect. Essayer à nouveau.","sessionAuth.error.unexpectedResponse":"Réponse inattendue du serveur.","sessionAuth.error.networkRetry":"Erreur réseau. Vérifiez la connexion et réessayez.","sessionAuth.error.passkeySignInCanceled":"La connexion par mot de passe a été annulée.","sessionAuth.error.enterPasswordForPasskey":"Entrez votre mot de passe pour ajouter un mot de passe.","sessionAuth.locked.tunnelTitle":"Accès au tunnel requis","sessionAuth.expired.banner":"Votre session a expiré — connectez-vous pour continuer.","sessionAuth.expired.loginAction":"Se connecter","sessionAuth.expired.sendBlocked":"Session expirée — connectez-vous pour envoyer des messages.","sessionAuth.locked.unlockTitle":"Débloquez AiWorker","sessionAuth.locked.tunnelDescription":"Ouvrez ce tunnel à l'aide du lien de connexion unique depuis l'application de bureau.","sessionAuth.locked.passwordDescription":"Cette session est protégée par mot de passe.","sessionAuth.locked.hostSwitcherHint":"Utilisez local si la remote est inaccessible.","sessionAuth.actions.cancelPasskey":"Annuler le mot de passe","sessionAuth.actions.usePasskey":"Utiliser le mot de passe","sessionAuth.actions.unlockingAria":"Déverrouillage","sessionAuth.actions.unlockAria":"Ouvrir","sessionAuth.actions.trustDevice":"Faites confiance à cet appareil","sessionAuth.actions.trustDeviceAria":"Faites confiance à cet appareil","sessionAuth.actions.cancelPasskeySetup":"Annuler la configuration du mot de passe","sessionAuth.actions.addPasskey":"Ajouter un mot de passe","sessionAuth.password.placeholder":"Entrez le mot de passe","sessionAuth.toast.passkeyAdded":"Clé d'accès ajoutée","sessionAuth.toast.passkeySetupCanceled":"Configuration du mot de passe annulée","desktopHostSwitcher.title":"Instance","desktopHostSwitcher.description":"Basculer entre les serveurs AiWorker locaux et distants","desktopHostSwitcher.header.current":"Actuel","desktopHostSwitcher.header.default":"Défaut","desktopHostSwitcher.header.currentColon":"Actuel:","desktopHostSwitcher.header.currentDefaultColon":"Valeur par défaut actuelle :","desktopHostSwitcher.status.connected":"Connecté","desktopHostSwitcher.status.authRequired":"Authentification requise","desktopHostSwitcher.status.wrongService":"Mauvais service","desktopHostSwitcher.status.unreachable":"Injoignable","desktopHostSwitcher.status.unknown":"Inconnu","desktopHostSwitcher.status.ping":"· Ping {ms}ms","desktopHostSwitcher.statusAria":"Statut de l'instance","desktopHostSwitcher.sshPhase.ready":"Prêt","desktopHostSwitcher.sshPhase.error":"Erreur","desktopHostSwitcher.sshPhase.reconnecting":"Reconnexion","desktopHostSwitcher.sshPhase.resolvingConfig":"Résolution de la configuration","desktopHostSwitcher.sshPhase.checkingAuth":"Vérification de l'authentification","desktopHostSwitcher.sshPhase.connectingSsh":"Connexion du SSH","desktopHostSwitcher.sshPhase.probingRemote":"Sondage à distance","desktopHostSwitcher.sshPhase.installing":"Installation","desktopHostSwitcher.sshPhase.updating":"Mise à jour","desktopHostSwitcher.sshPhase.detectingServer":"Serveur de détection","desktopHostSwitcher.sshPhase.startingServer":"Démarrage du serveur","desktopHostSwitcher.sshPhase.forwardingPorts":"Ports de transfert","desktopHostSwitcher.sshPhase.idle":"Inactif","desktopHostSwitcher.ssh.needInstancesHint":"Besoin d'instances SSH ? Gérez-les dans Paramètres.","desktopHostSwitcher.ssh.instanceFallback":"Instance SSH","desktopHostSwitcher.ssh.connectingTo":"Connexion à {host}","desktopHostSwitcher.actions.refresh":"Rafraîchir","desktopHostSwitcher.actions.refreshInstancesAria":"Actualiser les instances","desktopHostSwitcher.actions.remoteSsh":"SSH remote","desktopHostSwitcher.actions.instanceActionsAria":"Actions d'instance","desktopHostSwitcher.actions.edit":"Modifier","desktopHostSwitcher.actions.delete":"Supprimer","desktopHostSwitcher.actions.connect":"Connecter","desktopHostSwitcher.actions.defaultInstanceAria":"Instance par défaut","desktopHostSwitcher.actions.setAsDefaultAria":"Définir par défaut","desktopHostSwitcher.actions.setAsDefault":"Définir par défaut","desktopHostSwitcher.actions.openInNewWindowAria":"Ouvrir dans une nouvelle fenêtre","desktopHostSwitcher.actions.openInNewWindow":"Ouvrir dans une nouvelle fenêtre","desktopHostSwitcher.actions.addInstance":"Ajouter une instance","desktopHostSwitcher.actions.cancel":"Annuler","desktopHostSwitcher.actions.save":"Sauvegarder","desktopHostSwitcher.actions.add":"Ajouter","desktopHostSwitcher.actions.switchToLocal":"Passer au local","desktopHostSwitcher.actions.retry":"Réessayer","desktopHostSwitcher.actions.switchInstanceAria":"Changer d'instance","desktopHostSwitcher.actions.switchInstance":"Changer d'instance","desktopHostSwitcher.actions.switchToAria":"Passer à {instance}","desktopHostSwitcher.field.labelPlaceholder":"Étiquette","desktopHostSwitcher.field.labelOptionalPlaceholder":"Étiquette (facultatif)","desktopHostSwitcher.field.urlPlaceholder":"https://hôte:port","desktopHostSwitcher.state.limitedOnPage":"Le sélecteur d'instance est limité sur cette page. Utilisez Local pour récupérer.","desktopHostSwitcher.state.loading":"Chargement...","desktopHostSwitcher.state.instanceUnreachable":"Instance inaccessible","desktopHostSwitcher.edit.title":"Modifier l'instance","desktopHostSwitcher.add.title":"Ajouter une instance","desktopHostSwitcher.error.failedToSave":"Échec de l'enregistrement","desktopHostSwitcher.error.failedToLoad":"Échec du chargement","desktopHostSwitcher.error.invalidUrl":"URL non valide (doit être http/https)","desktopHostSwitcher.error.failedToOpenNewWindow":"Échec de l'ouverture d'une nouvelle fenêtre","desktopHostSwitcher.instance.local":"Local","desktopHostSwitcher.instance.fallback":"Instance","desktopHostSwitcher.startup.title":"Instance SSH par défaut indisponible","desktopHostSwitcher.startup.connectingTo":"Connexion à {host}...","desktopHostSwitcher.startup.failed":"Échec de la connexion de l'instance SSH par défaut.","desktopHostSwitcher.toast.sshConnected":'Instance SSH "{host}" connectée',"desktopHostSwitcher.toast.sshFailedToConnect":`L'instance SSH "{host}" n'a pas réussi à se connecter`,"desktopHostSwitcher.toast.instanceUnreachable":`L'instance "{host}" est inaccessible`,"miniChat.header.newSession":"Nouvelle session","miniChat.header.session":"Session","miniChat.header.defaultAgent":"Agent par défaut","miniChat.header.noModel":"Aucun modèle","miniChat.status.busy":"En cours d'exécution","miniChat.status.retry":"Réessayer","miniChat.status.idle":"Inactif","miniChat.actions.pin":"Épingler au-dessus des autres fenêtres","miniChat.actions.unpin":"Détacher la fenêtre","miniChat.actions.pinAria":"Épingler la fenêtre Mini Chat","miniChat.actions.unpinAria":"Désépingler la fenêtre Mini Chat","miniChat.actions.openMain":"Ouvrir dans la fenêtre principale","miniChat.actions.openMainAria":"Ouvrir la session dans la fenêtre principale","miniChat.unavailable.title":"Session indisponible","miniChat.unavailable.description":"Cette session n'a pas pu être chargée. Il peut avoir été supprimé, archivé ou ouvert à partir d'un contexte de projet différent.","sessions.sidebar.session.menu.openMiniChatWindow":"Ouvrir dans la mini-fenêtre de discussion","header.actions.newMiniChat":"Nouvelle mini-fenêtre de discussion","header.actions.newMiniChatAria":"Ouvrir une nouvelle fenêtre de mini-chat","header.actions.openSessionMiniChat":"Session ouverte dans le mini-chat","header.actions.openSessionMiniChatAria":"Ouvrir la session en cours dans Mini Chat","header.windowControls.groupAria":"Champs de fenêtre","header.windowControls.minimize":"Réduire la fenêtre","header.windowControls.maximize":"Agrandir la fenêtre","header.windowControls.restore":"Fenêtre de restauration","header.windowControls.close":"Fermer la fenêtre","errorBoundary.title":"Quelque chose s'est mal passé","errorBoundary.description":"L'application a rencontré une erreur inattendue. Cela a été enregistré pour le débogage.","errorBoundary.state.unknownError":"Erreur inconnue","errorBoundary.state.componentStackLabel":"Pile de composants :","errorBoundary.actions.errorDetails":"Détails de l'erreur","errorBoundary.actions.tryAgain":"Essayer à nouveau","errorBoundary.actions.copy":"Copie","errorBoundary.actions.copied":"Copié","jsonTreeView.error.emptyJson":"Contenu JSON vide","jsonTreeView.error.invalidJson":"JSON invalide","jsonTreeView.error.invalidJsonTitle":"JSON invalide","jsonTreeView.actions.expandAll":"Développer tout","jsonTreeView.actions.collapseAll":"Réduire tout","numberInput.actions.decreaseAria":"Diminuer la valeur","numberInput.actions.increaseAria":"Augmenter la valeur","goToLineDialog.field.linePlaceholderShort":"Ligne","goToLineDialog.field.linePlaceholder":"Numéro de ligne","goToLineDialog.actions.go":"Aller","goToLineDialog.helper.editorUnavailable":"Éditeur indisponible.","goToLineDialog.helper.currentLineRange":"Ligne actuelle : {current}. Tapez un numéro de ligne compris entre 1 et {max} vers lequel accéder.","goToLineDialog.helper.goToLine":"Aller à la ligne {line}","dialog.common.actions.close":"Fermer","filesView.toast.relativePathCopied":"Chemin relatif copié","filesView.tree.menu.copyRelativePath":"Copier le chemin relatif","multiRun.branchSelector.placeholder.selectSourceBranch":"Sélectionnez la branche source...","multiRun.branchSelector.status.loadingBranches":"Chargement des branches...","multiRun.branchSelector.status.noBranchesFound":"Aucune branche trouvée","multiRun.branchSelector.status.notInGitRepository":"Pas dans un dépôt git.","multiRun.branchSelector.groups.localBranches":"Branches locales","multiRun.branchSelector.groups.remoteBranches":"Branches du dépôt distant","multiRun.window.actions.closeAria":"Fermer le multi-exécution","multiRun.window.description":"Fenêtre multi-exécution AiWorker.","voice.status.idle":"Prêt pour la voix","voice.status.listening":"Écoute...","voice.status.processing":"Traitement...","voice.status.speaking":"Parlant...","voice.status.error":"Erreur vocale","voice.status.conversationModeActiveAria":"Mode conversation actif","voice.action.finishAndTranscribe":"Terminer et transcrire la saisie vocale","onboarding.common.actions.back":"Retour","onboarding.common.copyToClipboard":"Copier dans le presse-papier","onboarding.common.status.copiedToClipboard":"Copié dans le presse-papiers","onboarding.chooser.title":"Bienvenue sur AiWorker","onboarding.chooser.description":"Choisissez comment vous souhaitez vous connecter pour commencer.","onboarding.chooser.tabs.localInstall":"Installation locale","onboarding.chooser.tabs.connectRemote":"Se connecter en remote","onboarding.localSetup.title":"Configuration de OpenCode","onboarding.localSetup.description":"Installez OpenCode CLI pour continuer.","onboarding.localSetup.dialog.selectOpencodeBinary":"Sélectionnez le binaire OpenCode","onboarding.localSetup.errors.cliNotReady":"OpenCode CLI n’est pas encore prêt. Veuillez confirmer que l'installation est terminée et réessayer.","onboarding.localSetup.errors.detectionFailed":"Échec de la détection","onboarding.localSetup.windows.title":"Configuration de Windows (WSL recommandé)","onboarding.localSetup.windows.stepInstallWsl":"Installez WSL (si nécessaire) avec","onboarding.localSetup.windows.stepInstallWslSuffix":"dans PowerShell.","onboarding.localSetup.windows.stepRunInstallInWsl":"Exécutez la commande d'installation ci-dessous dans votre terminal WSL.","onboarding.localSetup.windows.stepSetBinaryPath":"Si AiWorker ne détecte pas automatiquement OpenCode, définissez le chemin binaire ci-dessous.","onboarding.localSetup.intro":"OpenCode est le cœur de AiWorker — installez-le pour commencer.","onboarding.localSetup.docs.windows":"Documents OpenCode Windows + WSL","onboarding.localSetup.docs.default":"Documents OpenCode","onboarding.localSetup.actions.checking":"Vérification…","onboarding.localSetup.actions.checkNow":"Vérifiez maintenant","onboarding.localSetup.actions.checkAndContinue":"J’ai terminé l’installation, vérifier et continuer","onboarding.localSetup.helper.checkAndContinue":"Cliquez pour vérifier si OpenCode CLI est disponible. En cas de succès, vous entrerez automatiquement dans l'écran principal.","onboarding.localSetup.status.watching":"En attendant OpenCode","onboarding.localSetup.status.autoContinue":"Nous continuerons automatiquement une fois qu’il sera détecté.","onboarding.localSetup.field.alreadyInstalled":"Déjà installé ? Définissez le chemin OpenCode CLI :","onboarding.localSetup.advanced.title":"Définir un chemin binaire personnalisé","onboarding.localSetup.troubleshoot.title":"Vous avez des problèmes ?","onboarding.localSetup.actions.browse":"Parcourir","onboarding.localSetup.actions.apply":"Appliquer","onboarding.localSetup.helper.saveAndReload":"Enregistre dans les paramètres AiWorker et recharge la configuration OpenCode.","onboarding.localSetup.remotePreference":"Vous préférez utiliser un serveur distant ?","onboarding.localSetup.actions.connectRemoteServer":"Se connecter au serveur distant →","onboarding.localSetup.windows.hintInstallInWsl":"Sous Windows, installez et exécutez OpenCode dans WSL pour une meilleure compatibilité.","onboarding.localSetup.windows.hintDetectionFailed":"Si la détection échoue, définissez un chemin natif (opencode.cmd/opencode.exe), wsl.exe ou wsl:/usr/local/bin/opencode.","onboarding.localSetup.hint.ensurePath":"Déjà installé ? Assurez-vous qu'OpenCode est dans votre PATH.","onboarding.localSetup.hint.setEnv":"Ou définissez la variable d'environnement OPENCODE_BINARY.","onboarding.localSetup.hint.missingRuntime":"Si vous voyez « env: node : No such file or directory » ou « env: bun : No such file or directory », installez ce runtime ou assurez-vous qu'il se trouve sur PATH.","onboarding.remoteConnection.title":"Se connecter au serveur distant","onboarding.remoteConnection.titleRecovery":"Connectez-vous à un autre serveur","onboarding.remoteConnection.description":"Saisissez l'adresse d'un serveur AiWorker auquel vous connecter.","onboarding.remoteConnection.field.serverAddress":"Adresse du serveur","onboarding.remoteConnection.field.serverAddressPlaceholder":"https://your-server.example.com:4096","onboarding.remoteConnection.field.nameOptional":"Nom (facultatif)","onboarding.remoteConnection.field.namePlaceholder":"Mon serveur distant","onboarding.remoteConnection.errors.connectionTestFailed":"Le test de connexion a échoué","onboarding.remoteConnection.errors.failedToSaveConnection":"Échec de l'enregistrement de la connexion","onboarding.remoteConnection.status.connectedSuccessfully":"Connecté avec succès ({latencyMs}ms)","onboarding.remoteConnection.status.authWarning":"Le serveur nécessite une authentification. Vous pouvez toujours vous connecter.","onboarding.remoteConnection.status.connectionFailed":"Échec de la connexion","onboarding.remoteConnection.status.suggestionsUnreachable":"Suggestions : vérifiez l'adresse du serveur, vérifiez que le serveur est en cours d'exécution ou vérifiez votre connexion réseau.","onboarding.remoteConnection.status.suggestionsWrongService":"Suggestions : vérifiez que l’URL pointe vers un serveur AiWorker ou contactez l'administrateur du serveur.","onboarding.remoteConnection.actions.testing":"Essai…","onboarding.remoteConnection.actions.testConnection":"Tester la connexion","onboarding.remoteConnection.actions.connectAndRestart":"Connectez-vous et redémarrez","onboarding.remoteConnection.actions.whatToDo":"Qu'aimeriez-vous faire ?","onboarding.remoteConnection.actions.chooseDifferentServer":"Choisissez un autre serveur","onboarding.remoteConnection.actions.useLocalInstead":"Utilisez plutôt local","onboarding.remoteConnection.probe.authMessage":"Le serveur nécessite une authentification. Vous pouvez toujours vous connecter, mais vous devrez peut-être fournir des informations d'identification.","onboarding.remoteConnection.probe.wrongServiceMessage":"Le serveur a répondu mais n'exécute pas AiWorker. Vérifiez que l'adresse pointe vers un serveur AiWorker.","onboarding.remoteConnection.probe.unreachableMessage":"Le serveur est inaccessible. Vérifiez votre connexion réseau et vérifiez l'adresse du serveur.","onboarding.desktopRecovery.localUnavailable.title":"OpenCode local indisponible","onboarding.desktopRecovery.localUnavailable.description":"OpenCode CLI n'a pas pu être démarré ou n'est pas installé. Installez OpenCode ou connectez-vous plutôt à un serveur distant.","onboarding.desktopRecovery.localUnavailable.retry":"Réessayer en local","onboarding.desktopRecovery.localUnavailable.useLocal":"Configurer localement","onboarding.desktopRecovery.noDefaultConnection.title":"Aucune connexion par défaut","onboarding.desktopRecovery.noDefaultConnection.description":"Votre connexion par défaut enregistrée est introuvable. Choisissez comment vous souhaitez vous connecter.","onboarding.desktopRecovery.remoteUnreachable.title":"Serveur distant inaccessible","onboarding.desktopRecovery.remoteUnreachable.description":`Impossible de se connecter à "{host}". Vérifiez votre connexion réseau et vérifiez l'adresse du serveur.`,"onboarding.desktopRecovery.remoteUnreachable.retry":"Réessayer la connexion","onboarding.desktopRecovery.incompatibleServer.title":"Serveur incompatible","onboarding.desktopRecovery.incompatibleServer.description":"Le serveur « {host} » n'exécute pas AiWorker. Vérifiez que l'adresse pointe vers un serveur AiWorker.","onboarding.desktopRecovery.common.useLocal":"Utiliser local","onboarding.desktopRecovery.common.useRemote":"Utiliser le remote","onboarding.desktopRecovery.actions.retrying":"Nouvelle tentative…","onboarding.desktopRecovery.actions.retryConnection":"Réessayer la connexion","startup.initRecovery.title":"Le démarrage a échoué","startup.initRecovery.description":"AiWorker n'a pas pu terminer l'initialisation. Vérifiez que le serveur est en cours d'exécution, puis réessayez.","startup.initRecovery.retry":"Réessayer","startup.initRecovery.retrying":"Nouvelle tentative…","onboarding.desktopRecovery.placeholders.remoteServer":"le serveur distant","onboarding.desktopRecovery.placeholders.unknownServer":"inconnu","vscodeLayout.title.chat":"Chat","vscodeLayout.title.newSession":"Nouvelle session","vscodeLayout.title.sessions":"Sessions","vscodeLayout.title.sessionFallback":"Session","vscodeLayout.actions.backToSessionsAria":"Retour aux sessions","vscodeLayout.actions.newSessionAria":"Nouvelle session","vscodeLayout.actions.openAgentManagerAria":"Ouvrir le gestionnaire d'agents","vscodeLayout.actions.resizeSessionsSidebarAria":"Redimensionner la barre latérale des sessions","vscodeLayout.actions.settingsAria":"Paramètres","vscodeLayout.quota.title":"Limites de taux","vscodeLayout.quota.mode.used":"Utilisé","vscodeLayout.quota.mode.remaining":"Restant","vscodeLayout.quota.lastUpdated":"Dernière mise à jour {time}","vscodeLayout.quota.noRateLimitsAvailable":"Aucune limite de taux disponible.","vscodeLayout.quota.noRateLimitsReported":"Aucune limite de taux signalée.","vscodeLayout.quota.actions.rateLimitsAria":"Limites de taux","vscodeLayout.quota.actions.showUsedAria":"Afficher le quota utilisé","vscodeLayout.quota.actions.showRemainingAria":"Afficher le quota restant","vscodeLayout.quota.actions.refreshAria":"Limites du taux de rafraîchissement","updateDialog.header.updateAvailable":"Mise à jour disponible","updateDialog.header.updating":"Mise à jour de AiWorker...","updateDialog.status.installingUpdate":"Installation de la mise à jour...","updateDialog.status.serverRestarting":"Redémarrage du serveur...","updateDialog.status.waitingForServer":"En attente du serveur...","updateDialog.status.autoReloadHint":"La page se rechargera automatiquement une fois la mise à jour terminée.","updateDialog.fallback.updateViaTerminal":"Ou mettre à jour via le terminal :","updateDialog.actions.copyCommand":"Commande Copier","updateDialog.actions.copied":"Copié!","updateDialog.status.downloadingPayload":"Téléchargement de la charge utile de la mise à jour...","updateDialog.actions.downloadUpdate":"Télécharger la mise à jour","updateDialog.status.downloading":"Téléchargement...","updateDialog.actions.restartToUpdate":"Redémarrer pour mettre à jour","updateDialog.actions.updateNow":"Mettre à jour maintenant","updateDialog.actions.openMobileUpdate":"Ouvrir la mise à jour","updateDialog.changelog.title":"Nouveautés","updateDialog.status.updating":"Mise à jour...","updateDialog.error.updateFailed":"La mise à jour a échoué","updateDialog.error.takingLonger":"La mise à jour prend plus de temps que prévu. Attendez un peu et actualisez, ou exécutez : aiworker update","updateDialog.error.signatureRejected":"La mise à jour téléchargée a été rejetée : sa signature de code ne correspond pas à cette installation. Cela signifie généralement que la copie en cours n’a pas été installée depuis une version officielle signée. Installez AiWorker depuis une version officielle, puis relancez la mise à jour.","updateDialog.error.updaterDisabled":"Le programme de mise à jour s’est arrêté après une installation échouée. Quittez AiWorker, rouvrez-le, puis réessayez la mise à jour.","updateDialog.error.restartFailed":"Impossible de redémarrer pour installer la mise à jour.","updateDialog.error.restartUnavailable":"L’installation de la mise à jour nécessite l’application de bureau AiWorker.","mobileUpdate.toast.available.title":"Mise à jour AiWorker disponible","mobileUpdate.toast.available.description":"La version {version} est prête pour Android.","mobileUpdate.toast.actions.download":"Télécharger","mobileUpdate.toast.actions.dismiss":"Ignorer","opencodeUpdate.toast.available.title":"Mise à jour OpenCode","opencodeUpdate.toast.available.description":"Version {version} disponible.","opencodeUpdate.toast.actions.update":"Mise à jour","opencodeUpdate.toast.actions.dismiss":"Ignorer","opencodeUpdate.toast.actions.reload":"Recharger OpenCode","opencodeUpdate.toast.upgrading.title":"Mise à jour de OpenCode...","opencodeUpdate.toast.upgrading.description":"Gardez AiWorker ouvert.","opencodeUpdate.toast.updated.title":"OpenCode mis à jour","opencodeUpdate.toast.updated.description":"Mise à jour installée.","opencodeUpdate.toast.updated.descriptionWithVersion":"Version {version} installée.","opencodeUpdate.toast.failed.title":"Impossible de mettre à jour OpenCode","opencodeUpdate.toast.failed.description":"La mise à niveau du OpenCode a échoué.","opencodeUpdate.toast.reload.message":"Redémarrage de OpenCode...","memoryDebugPanel.title":"Panneau de débogage","memoryDebugPanel.tabs.memory":"Mémoire","memoryDebugPanel.tabs.streaming":"Streaming","memoryDebugPanel.tabs.requests":"Requêtes","memoryDebugPanel.section.sessionsInMemory":"Sessions en mémoire","memoryDebugPanel.section.uiStreamingMetrics":"Métriques de streaming de l'interface utilisateur","memoryDebugPanel.section.vscodeBridgeMetrics":"Métriques du pont VS Code","memoryDebugPanel.section.noUiSamples":"Aucun échantillon de streaming d'interface utilisateur pour l'instant. Démarrez un flux et gardez ce panneau ouvert.","memoryDebugPanel.section.noVscodeSamples":"Aucun échantillon de pont VS Code pour l'instant.","memoryDebugPanel.metric.totalMessages":"Nombre total de messages","memoryDebugPanel.metric.cachedSessions":"Sessions mises en cache","memoryDebugPanel.metric.userMessages":"Messages utilisateur","memoryDebugPanel.metric.assistantMessages":"Messages assistant","memoryDebugPanel.metric.viewportWindow":"Fenêtre d'affichage","memoryDebugPanel.metric.zombieTimeout":"Délai d'attente des zombies","memoryDebugPanel.metric.githubTotalRequests":"GitHub Total des demandes","memoryDebugPanel.metric.metrics":"Métrique","memoryDebugPanel.metric.samples":"Échantillons","memoryDebugPanel.metric.lastUpdate":"Dernière mise à jour","memoryDebugPanel.metric.uiMetrics":"Métriques de l'interface utilisateur","memoryDebugPanel.metric.vscodeMetrics":"VS Code Métriques","memoryDebugPanel.metric.messageListRenders":"Rendus de liste de messages","memoryDebugPanel.metric.messageListStreamRenders":"Rendus de flux MsgList","memoryDebugPanel.metric.chatMessageRenders":"Rendus de messages de chat","memoryDebugPanel.metric.chatMessageStreamRenders":"Rendus de flux de messages ChatMessage","memoryDebugPanel.metric.chatMessageStaticDuringStream":"ChatMessage statique pendant le flux","memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn":"ChatMessage statique en dehors du tour actif","memoryDebugPanel.metric.messagesValue":"Messages {count}","memoryDebugPanel.metric.minutesValue":"Minutes {count}","memoryDebugPanel.metric.msgsValue":"Messages {count}","memoryDebugPanel.metric.roleMsgsValue":"U {user} / A {assistant}","memoryDebugPanel.metric.countValue":"compter {value}","memoryDebugPanel.metric.avgValue":"moyenne {value}","memoryDebugPanel.metric.maxValue":"maximum {value}","memoryDebugPanel.metric.totalValue":"total {value}","memoryDebugPanel.actions.logState":"État du journal","memoryDebugPanel.actions.copyJson":"Copier JSON","memoryDebugPanel.tooltip.logCurrentState":"Enregistrer l'état actuel de la mémoire sur la console du navigateur","memoryDebugPanel.streaming.copy.copied":"Débogage en streaming JSON copié","memoryDebugPanel.streaming.copy.failed":"Échec de la copie de JSON","memoryDebugPanel.streaming.copy.hint":"La copie exporte les métriques de streaming de l'interface utilisateur et de VS Code en tant que JSON.","memoryDebugPanel.requests.inFlight":"En cours","memoryDebugPanel.requests.peak":"Pic","memoryDebugPanel.requests.duration":"Durée","memoryDebugPanel.requests.totalRequests":"Requêtes totales","memoryDebugPanel.requests.tracking":"Suivi","memoryDebugPanel.requests.now":"maintenant","memoryDebugPanel.requests.noSamples":"Aucune requête enregistrée. Gardez ce panneau ouvert pour enregistrer l'activité fetch.","memoryDebugPanel.requests.chartLabel":"Requêtes fetch en cours dans le temps, pic {peak}","memoryDebugPanel.requests.windowHint":"{seconds}s dernières","memoryDebugPanel.requests.percentileChartLabel":"Percentiles d'âge des requêtes en cours (p50, p90, p99, max) dans le temps","memoryDebugPanel.common.idle":"inactif","memoryDebugPanel.common.live":"en direct","memoryDebugPanel.common.notAvailable":"n / A","memoryDebugPanel.common.untitled":"Sans titre","directoryTree.field.newDirectoryPlaceholder":"nouveau_répertoire","textarea.resizeHandleAria":"Redimensionner la zone de texte","sidebar.resize.leftPanelAria":"Redimensionner le panneau de gauche","sidebar.resize.rightPanelAria":"Redimensionner le panneau de droite","mainLayout.mobile.closeDrawerAria":"Fermer le tiroir","sortableTabsStrip.aria.tabs":"Onglets","openChamberLogo.aria.logo":"Logo AiWorker","markdownRenderer.code.actions.copyTitle":"Copier le code","markdownRenderer.code.actions.copiedTitle":"Copié","markdownRenderer.table.actions.copyTitle":"Copier le tableau","markdownRenderer.code.actions.enableWrapTitle":"Activer le retour à la ligne","markdownRenderer.code.actions.disableWrapTitle":"Désactiver le retour à la ligne","markdownRenderer.table.actions.downloadTitle":"Télécharger le tableau","markdownRenderer.table.toast.downloadedAsFormat":"Table téléchargée sous le nom {format}","markdownRenderer.mermaid.actions.copyTitle":"Copie","markdownRenderer.mermaid.actions.copySourceTitle":"Copier la source","markdownRenderer.mermaid.actions.downloadSvgTitle":"Télécharger SVG","markdownRenderer.mermaid.actions.zoomInTitle":"Zoom avant","markdownRenderer.mermaid.actions.zoomOutTitle":"Zoom arrière","markdownRenderer.mermaid.actions.resetViewTitle":"Réinitialiser la vue","markdownRenderer.mermaid.toast.downloadFailed":"Échec du téléchargement du diagramme","common.date.today":"Aujourd’hui","common.date.yesterday":"Hier","common.date.yesterdayWithTime":"Hier {time}","common.relative.justNow":"À l’instant","common.relative.minutesAgoShort":"il y a {count} min","common.relative.hoursAgoShort":"il y a {count} h","common.relative.daysAgoShort":"il y a {count} j","common.relative.weeksAgoShort":"il y a {count} sem","common.relative.yearsAgoShort":"il y a {count} a","common.relative.daysAgoCompact":"{count} j","common.relative.weeksAgoCompact":"{count} sem","common.relative.yearsAgoCompact":"{count} a","common.duration.secondsCompact":"{seconds}s","common.duration.minutesSecondsCompact":"{minutes}m {seconds}s","common.duration.hoursMinutesCompact":"{hours}h {minutes}m","contextFileOpen.failure.tooLarge":"Le fichier est trop volumineux pour être ouvert (> {count} lignes)","contextFileOpen.failure.missing":"Fichier introuvable","contextFileOpen.failure.unreadable":"Impossible d’ouvrir le fichier","quota.window.5h":"5 heures","quota.window.7d":"Limite sur 7 jours","quota.window.extraUsage":"Utilisation supplémentaire","quota.window.weekly":"Hebdomadaire","quota.window.daily":"Quotidien","quota.window.monthly":"Mensuel","quota.window.credits":"Crédits","quota.window.creditsBalance":"Solde de crédits","quota.window.monthlyCredits":"Crédits mensuels","quota.window.purchasedCredits":"Crédits achetés","quota.window.freeCredits":"Crédits gratuits","quota.window.billingCycle":"Cycle de facturation","quota.window.auto":"Auto","quota.window.api":"API","quota.window.planLimit":"Limite du forfait","quota.window.onDemand":"À la demande","quota.window.session":"Session","quota.window.premium":"Interactions premium","quota.window.chat":"Requêtes de chat","quota.window.completions":"Complétions","quota.window.premiumInteractions":"Crédits IA","layout.mainTab.diagram":"Diagramme","mobile.nav.aria":"Navigation mobile","mobile.connect.welcome.title":"Se connecter à AiWorker","mobile.connect.welcome.description":"Ajoutez une URL de serveur ou scannez un code QR d'appairage pour commencer à utiliser l'app mobile.","mobile.connect.url.label":"URL du serveur","mobile.connect.url.placeholder":"http://192.168.1.74:2606","mobile.connect.token.label":"Jeton client","mobile.connect.token.placeholder":"Collez le jeton d'accès","mobile.connect.token.hint":"Nécessaire uniquement si votre serveur exige un jeton au lieu d'un mot de passe.","mobile.connect.password.label":"Mot de passe","mobile.connect.password.placeholder":"Mot de passe AiWorker","mobile.connect.connectButton":"Se connecter","mobile.connect.unlockButton":"Déverrouiller et se connecter","mobile.connect.cancelPassword":"Utiliser un autre serveur","mobile.connect.connecting":"Connexion...","mobile.connect.notice.unreachable":"Impossible de joindre {label}. Vérifiez que le serveur est en marche.","mobile.connect.notice.authExpired":"L'accès à {label} a expiré ou a été révoqué. Reconnectez-vous.","mobile.connect.recovery.description":"Connexion au serveur enregistré impossible. Vérifiez qu'il est en marche ou choisissez une autre instance.","mobile.connect.scanQr":"Scanner le code QR","mobile.connect.welcome.scanHint":"Sur votre ordinateur, ouvrez « Ajouter un appareil » pour afficher un code QR, puis scannez-le ici.","mobile.connect.advanced":"Avancé","mobile.connect.manual.toggle":"Connexion par adresse","mobile.connect.scan.permissionDenied":"L'accès à la caméra est désactivé. Activez-le dans les Réglages pour scanner un code QR.","mobile.connect.scan.failed":"Impossible de scanner ce code QR. Réessayez ou saisissez l'URL manuellement.","mobile.connect.scan.invalid":"Ce code QR n'est pas un code de connexion AiWorker.","mobile.connect.scan.unsupported":"Le scan QR est disponible uniquement dans l'app mobile installée.","mobile.connect.saved.title":"Connexions enregistrées","mobile.connect.saved.empty":"Aucune connexion enregistrée pour le moment.","mobile.connect.relay.badge":"via AiWorker Relay","mobile.connect.error.urlRequired":"Saisissez une URL de serveur.","mobile.connect.splash.connectingTo":"Connexion à l’appareil :","mobile.connect.error.invalidUrl":"Cette URL de serveur n'est pas valide.","mobile.connect.error.unreachable":"Impossible de joindre ce serveur AiWorker.","mobile.connect.error.authRequired":"Ce serveur nécessite un mot de passe ou un jeton client.","mobile.connect.error.passwordFailed":"Impossible de déverrouiller ce serveur. Vérifiez le mot de passe.","mobile.instances.addTitle":"Ajouter une instance","mobile.instances.addManual":"Ajouter par adresse","mobile.instances.editTitle":"Modifier l'instance","mobile.instances.edit":"Modifier","mobile.instances.delete":"Supprimer","mobile.instances.deleteAria":"Supprimer {label}","mobile.instances.confirmDeleteAria":"Confirmer la suppression de {label}","mobile.instances.cancelDeleteAria":"Conserver {label}","mobile.instances.cancelEdit":"Annuler","mobile.instances.label.label":"Nom","mobile.instances.label.placeholder":"Nom d'affichage facultatif","mobile.instances.saveNew":"Enregistrer l'instance","mobile.instances.status.connectedDirect":"Connecté · Réseau local","mobile.instances.status.connectedRelay":"Connecté · Relais privé","mobile.instances.saveEdit":"Enregistrer les modifications","mobile.connectionDebug.title":"Journal de connexion","mobile.connectionDebug.copy":"Copier","mobile.connectionDebug.copied":"Copié","mobile.connectionDebug.close":"Fermer","mobile.connectionDebug.empty":"Aucun événement de connexion pour le moment.","mobile.nav.changes":"Modifications","mobile.nav.settings":"Paramètres","mobile.surface.closeAria":"Fermer","mobile.header.openWorkspaceAria":"Ouvrir le panneau de travail","mobile.header.openMetadataAria":"Ouvrir les métadonnées de session","mobile.header.metadata.context":"Contexte","mobile.header.metadata.usage":"Utilisation","mobile.menu.titleAria":"Outils de l’espace de travail","mobile.menu.files":"Fichiers","mobile.menu.changes":"Modifications","mobile.menu.terminal":"Terminal","mobile.menu.mcp":"MCP","mobile.menu.instances":"Instances","mobile.menu.update":"Mettre à jour","mobile.menu.settings":"Paramètres","mobile.sessions.newChatCta":"Nouveau chat dans {project}","mobile.sessions.dateGroup.today":"Aujourd’hui","mobile.sessions.dateGroup.yesterday":"Hier","mobile.sessions.dateGroup.thisWeek":"Plus tôt cette semaine","mobile.sessions.dateGroup.older":"Plus ancien","mobile.sessions.section.worktrees":"Worktrees","mobile.sessions.section.otherProjects":"Changer de projet","mobile.sessions.section.projects":"Projets","mobile.sessions.section.chats":"Discussions","mobile.sessions.empty.noProjectsTitle":"Aucun projet pour le moment","mobile.sessions.empty.noProjectsDescription":"Ajoutez un projet pour commencer à discuter avec votre code.","mobile.sessions.empty.noSessionsTitle":"Aucune session pour le moment","mobile.sessions.empty.noSessionsDescription":"Démarrez votre premier chat pour le voir ici.","mobile.sessions.empty.searchTitle":"Aucun résultat","mobile.sessions.empty.searchDescription":"Essayez un autre terme de recherche.","mobile.sessions.showArchived":"Afficher les archivées ({count})","mobile.sessions.hideArchived":"Masquer les archivées","mobile.sessions.activeWorktreeAria":"Worktree actif","mobile.sessions.activeProjectAria":"Projet actif","mobile.sessions.startNewChat":"Démarrer un nouveau chat","mobile.sessions.newChat":"Nouveau chat","mobile.sessions.editOrder":"Réordonner les projets","mobile.sessions.doneEditing":"Terminé","mobile.sessions.editOrderHint":"Faites glisser la poignée pour réorganiser les projets. Touchez un projet pour afficher ses worktrees et les faire glisser aussi. Touchez la coche pour terminer.","mobile.sessions.editProjectAria":"Modifier {label}","mobile.sessions.dragHandleAria":"Faire glisser {label} pour réordonner","mobile.sessions.moveUpAria":"Déplacer {label} vers le haut","mobile.sessions.moveDownAria":"Déplacer {label} vers le bas","mobile.sessions.removeProjectAria":"Supprimer {label}","mobile.sessions.confirmRemoveProjectAria":"Confirmer la suppression de {label}","mobile.sessions.toast.projectRemoved":"{label} supprimé","mobile.sessions.archiveSessionAria":"Archiver {title}","mobile.sessions.cancelArchiveAria":"Annuler l’archivage de {title}","mobile.sessions.renameSessionAria":"Renommer {title}","mobile.sessions.renameError":"Échec du renommage de la session","mobile.sessions.deleteSessionAria":"Supprimer {title}","mobile.sessions.confirmDeleteSessionAria":"Confirmer la suppression de {title}","mobile.projectEdit.worktreesTitle":"Worktrees","mobile.projectEdit.worktreesEmpty":"Aucun worktree dans ce projet pour le moment.","mobile.projectEdit.reorderHint":"Faites glisser pour réordonner les worktrees.","mobile.projectEdit.dragWorktreeAria":"Faire glisser {label} pour réordonner","mobile.projectEdit.deleteWorktreeAria":"Supprimer le worktree {label}","mobile.projectEdit.deleteWorktreeTitle":"Supprimer le worktree","mobile.projectEdit.deleteWorktreeConfirmButton":"Supprimer","mobile.projectEdit.deleteWorktreeConfirm":"Supprimer le worktree « {name} » ? Cette action est irréversible.","mobile.projectEdit.deleteWorktreeDirty":"Ce worktree contient des modifications non commitées qui seront perdues.","mobile.projectEdit.deleteWorktreeArchiveNote":"{count} session(s) associée(s) seront archivées.","mobile.projectEdit.deleteLocalBranch":"Supprimer aussi la branche locale","mobile.projectEdit.deleteRemoteBranch":"Supprimer aussi la branche distante","mobile.sessions.showMore":"Afficher {count} de plus","mobile.sessions.search.section.sessions":"Sessions","mobile.sessions.search.section.archived":"Archivées","mobile.sessions.search.section.projects":"Projets","mobile.sessions.clearSearchAria":"Effacer la recherche","mobile.header.noProject":"Sélectionnez un projet","mobile.header.activeSession":"Session active","mobile.header.noSession":"Aucune session active","mobile.sessions.openSheetAria":"Ouvrir les sessions et projets","mobile.sessions.closeSheetAria":"Fermer les sessions et projets","mobile.sessions.sheet.title":"Sessions","mobile.sessions.sheet.description":"Changez de projet, ouvrez des sessions ou démarrez un nouveau chat.","mobile.sessions.search.placeholder":"Rechercher des sessions","mobile.sessions.empty":"Aucune session trouvée.","mobile.sessions.unassignedProject":"Autres sessions","mobile.sessions.newSessionAria":"Démarrer une nouvelle session dans ce projet","mobile.sessions.untitled":"Session sans titre","mobile.sessions.project.sessionsSingle":"1 session","mobile.sessions.project.sessionsPlural":"{count} sessions","mobile.files.refreshAria":"Actualiser les fichiers","mobile.files.backToParentAria":"Retour à {name}","mobile.files.rootDirectory":"Fichiers du projet","mobile.files.search.placeholder":"Rechercher des fichiers","mobile.files.search.empty":"Aucun fichier trouvé.","mobile.files.parentDirectory":"Dossier parent","mobile.files.empty.noDirectory":"Sélectionnez un projet pour parcourir les fichiers.","mobile.files.empty.directory":"Ce dossier est vide.","mobile.files.error.listFailed":"Impossible de charger les fichiers","mobile.files.error.readUnavailable":"L’aperçu du fichier n’est pas disponible dans ce runtime.","mobile.files.file.truncated":"Aperçu du fichier tronqué sur mobile.","mobile.files.copyPathAria":"Copier le chemin du fichier","mobile.files.copyContent":"Copier le contenu","mobile.files.copyContentAria":"Copier le contenu du fichier","mobile.files.editAria":"Modifier le fichier","mobile.files.doneEditingAria":"Terminer la modification","mobile.files.toast.pathCopied":"Chemin copié","mobile.files.toast.contentCopied":"Contenu copié","mobile.files.toast.copyFailed":"Échec de la copie","mobile.changes.placeholder.title":"Modifications","mobile.changes.placeholder.description":"La revue du working tree, la synchronisation et les actions de commit seront ici.","mobile.changes.branchLabel":"Branche : {branch}","mobile.changes.noRemote":"Aucun remote disponible","mobile.changes.cleanDescription":"Aucun fichier modifié dans cet espace de travail.","mobile.changes.diffDetail.subtitle":"Diff en lecture seule","mobile.changes.diffDetail.loadFailed":"Impossible de charger le diff","mobile.changes.diffDetail.missingTitle":"Le fichier n’est plus modifié","mobile.changes.diffDetail.missingDescription":"Retournez aux modifications et actualisez la liste.","mobile.changes.diffDetail.imageUnavailable":"Les diffs d’images ne sont pas encore disponibles dans les modifications mobile.","mobile.settings.placeholder.title":"Paramètres","mobile.settings.placeholder.description":"Les paramètres mobiles ciblés de connexion et d’application seront ici.","sessions.sidebar.header.displayMode.showArchived":"Afficher les sessions archivées","sessions.sidebar.group.showMore":"Afficher plus de sessions","gitView.changes.revertDirectoryAria":"Annuler les modifications dans {path}","gitView.changes.revertDirectory":"Annuler le dossier","gitView.changes.revertDirectoryDescriptionPlural":"Cela supprimera les modifications locales dans {count} fichiers sous {path}.","gitView.changes.revertDirectoryDescriptionSingle":"Cela supprimera les modifications locales dans {count} fichier sous {path}.","gitView.changes.revertDirectoryDialogTitle":"Annuler les modifications du dossier ?","gitView.changes.revertDirectoryTooltip":"Annuler les modifications du dossier","worktree.bootstrap.toast.failed":"Échec de la configuration du worktree","worktree.bootstrap.toast.failedDescription":"Le worktree a été créé, mais la configuration en arrière-plan ne s’est pas terminée.","worktree.bootstrap.toast.timeoutDescription":"Le worktree a été créé, mais la configuration en arrière-plan a expiré.","contextPanel.browser.inspectUnavailable":"Cette page ne peut pas être inspectée depuis le panneau de navigateur.","contextPanel.browser.back":"Retour","contextPanel.browser.forward":"Suivant","contextPanel.browser.reload":"Recharger","contextPanel.browser.hardReload":"Recharger en ignorant le cache","contextPanel.browser.zoomIn":"Zoom avant","contextPanel.browser.zoomOut":"Zoom arrière","contextPanel.browser.zoomReset":"Réinitialiser le zoom","contextPanel.browser.clearCookies":"Effacer les cookies","contextPanel.browser.clearCache":"Vider le cache","contextPanel.browser.clearedCookies":"Cookies effacés","contextPanel.browser.clearedCache":"Cache vidé","contextPanel.browser.clearFailed":"Impossible d’effacer les données de navigation","contextPanel.browser.stop":"Arrêter","contextPanel.browser.openExternal":"Ouvrir dans le navigateur système","contextPanel.browser.devTools":"Ouvrir les DevTools","contextPanel.browser.deviceToolbar":"Barre d’appareils","contextPanel.browser.device.preset":"Préréglage d’appareil","contextPanel.browser.device.responsive":"Adaptatif","contextPanel.browser.device.width":"Largeur du viewport","contextPanel.browser.device.height":"Hauteur du viewport","contextPanel.browser.device.rotate":"Pivoter","contextPanel.browser.device.schemeSystem":"Auto","contextPanel.browser.device.schemeLight":"Clair","contextPanel.browser.device.schemeDark":"Sombre","contextPanel.browser.device.schemeFailed":"Impossible de changer l’apparence de la page","contextPanel.browser.frameTitle":"Navigateur","contextPanel.browser.loadFailed":"Impossible de charger cette page","contextPanel.browser.waitingForServer":"En attente du serveur de développement","contextPanel.browser.waitingForServerHint":"Il n’accepte pas encore de connexions. La page se chargera dès que ce sera le cas.","contextPanel.browser.tunnelFailed":"Ce serveur de dev n’a pas pu être atteint","contextPanel.browser.tunnelFailedHint":"{url} tourne sur la machine où se trouve AiWorker, et la connexion vers elle n’a pas pu être ouverte. Rien de votre propre machine n’est affiché ici.","contextPanel.browser.loadFailedUnknown":"La page n’a pas pu être atteinte.","contextPanel.browser.crashed":"Cette page ne répond plus","contextPanel.browser.crashedHint":"La page a planté plusieurs fois de suite. Rechargez pour réessayer.","contextPanel.browser.devServers.title":"Serveurs de développement actifs","projectActions.toast.multipleServers":"Plusieurs serveurs ont démarré — choisissez-en un dans le panneau navigateur","contextPanel.browser.devServers.justStarted":"Démarrés à l’instant","contextPanel.browser.devServers.unavailable":"Impossible de vérifier les serveurs de développement actifs.","contextPanel.browser.devServers.remoteOnly":"Ils tournent sur la machine qui héberge AiWorker. Les ouvrir nécessite l’application de bureau.","contextPanel.browser.annotate.toggle":"Annoter la page","contextPanel.browser.annotate.intro":"Ceci est une sélection annotée du navigateur intégré.","contextPanel.browser.annotate.attached":"Annotation jointe à la discussion","contextPanel.browser.annotate.noSession":"Ouvrez une session de discussion avant de joindre une annotation","contextPanel.browser.annotate.noPage":"Chargez une page avant d’annoter","contextPanel.browser.annotate.failed":"Impossible d’annoter cette page","contextPanel.browser.annotate.tool.element":"Élément","contextPanel.browser.annotate.tool.region":"Zone","contextPanel.browser.annotate.tool.draw":"Dessin","contextPanel.browser.annotate.commentPlaceholder":"Décrivez le changement...","contextPanel.browser.annotate.submit":"Joindre","contextPanel.browser.trustNotice":"Les pages ouvertes ici s’exécutent avec un accès complet à AiWorker — nécessaire pour l’inspection et les captures d’écran. N’ouvrez que des sites de confiance : une page malveillante pourrait lire vos données ou agir en votre nom.","filesView.diagram.closeDiagramView":"Fermer la vue diagramme","filesView.diagram.saveDiagram":"Enregistrer le diagramme","inlineComment.input.placeholderShort":"Ajouter un commentaire...","header.services.remoteUpdate.title":"Mise à jour de l’instance distante","header.services.remoteUpdate.checking":"Recherche de mises à jour...","header.services.remoteUpdate.upToDate":"Cette instance est à jour.","header.services.remoteUpdate.available":"La version {version} est disponible pour cette instance.","header.services.remoteUpdate.error":"Impossible de vérifier les mises à jour de l’instance distante","header.services.remoteUpdate.actions.open":"Mettre à jour","chat.fileAttachment.openInDiagram":"Ouvrir dans la vue diagramme","chat.draftPresets.explore.label":"Explorer le codebase","chat.draftPresets.catchup.label":"Me remettre à niveau","chat.draftPresets.weigh.label":"Comparer mes options","chat.draftPresets.plan.label":"Lancer la planification de fonctionnalité","chat.draftPresets.craftGoal.label":"Créer un Goal","chat.draftPresets.scheduleTask.label":"Planifier une tâche","chat.draftPresets.debug.label":"Déboguer un problème","chat.draftPresets.review.label":"Revoir mes modifications","chat.draftStarters.add":"Ajouter un démarrage","chat.draftStarters.searchPlaceholder":"Rechercher des commandes et skills…","chat.draftStarters.empty":"Rien à ajouter","chat.draftStarters.sectionBuiltIn":"Intégré","chat.draftStarters.sectionCommands":"Commandes","chat.draftStarters.sectionSkills":"Skills","chat.draftStarters.remove":"Retirer","chat.commandAutocomplete.command.handoffReviewDescription":"Créer ou réutiliser une session de revue séparée à partir d’un handoff généré.","chat.commandAutocomplete.command.featurePlanDescription":"Lancer une session guidée et interactive de planification pour une nouvelle fonctionnalité.","chat.commandAutocomplete.command.craftGoalDescription":"Transformer une idée ou une tâche en Goal clair et vérifiable.","chat.commandAutocomplete.command.scheduleTaskDescription":"Définir une tâche planifiée via un dialogue guidé.","chat.chatInput.toast.craftGoalFailed":"Impossible de démarrer la création du Goal","chat.chatInput.toast.scheduleTaskFailed":"Impossible de démarrer la configuration de la tâche planifiée","chat.commandAutocomplete.command.catchUpDescription":"Rétablir le contexte : ce que vous faisiez et où reprendre.","chat.commandAutocomplete.command.debugDescription":"Investigation guidée de la cause racine d’un bug avant de proposer une correction.","chat.commandAutocomplete.command.weighDescription":"Comparer 2 à 3 approches avec compromis et recommandation avant de vous engager.","chat.commandAutocomplete.command.btwDescription":"Posez une question annexe dans une session enfant temporaire sans interrompre cette conversation.","chat.commandAutocomplete.command.exploreDescription":"Vous orienter dans ce codebase : tour d’ensemble de l’architecture et des parties principales.","chat.questionCard.submitFailed":"Impossible d’envoyer la réponse","chat.questionCard.dismissFailed":"Impossible d’ignorer la question","chat.questionCard.noLongerPending":"Cette question n’attend plus de réponse.","chat.questionCard.tryAgain":"Veuillez réessayer dans un instant.","chat.messageBody.forkDialog.instructions.label":"Instructions","chat.messageBody.forkDialog.instructions.placeholder":"Ajouter des instructions pour la nouvelle session…","chat.messageBody.forkDialog.createWorktree":"Créer un worktree","planView.tts.readAloud":"Lire le plan à voix haute","planView.tts.stopSpeaking":"Arrêter la lecture","filesView.tts.readAloud":"Lire le fichier à voix haute","filesView.tts.stopSpeaking":"Arrêter la lecture","chat.messageBody.actions.sendReviewFeedback":"Envoyer le retour de revue à l’agent d’implémentation","chat.messageBody.actions.sendImplementationResponse":"Envoyer la réponse d’implémentation à l’agent de revue","chat.chatInput.toast.planFeatureFailed":"Impossible de lancer la planification de fonctionnalité","chat.chatInput.toast.catchUpFailed":"Impossible de rattraper le contexte","chat.chatInput.toast.debugFailed":"Impossible de lancer le débogage","chat.chatInput.toast.weighFailed":"Impossible de comparer les options","chat.chatInput.toast.exploreFailed":"Impossible de lancer le tour","chat.chatInput.reviewCommentsRemove":"Retirer les commentaires de revue","chat.toolPart.showRawJson":"Afficher le JSON brut","chat.toolPart.showFormattedJson":"Afficher le JSON formaté","chat.toolPart.showNavigableJson":"Afficher le JSON navigable","chat.toolPart.openFile":"Ouvrir le fichier","chat.toolPart.openFileAtFirstChange":"Ouvrir le fichier à la première modification","chat.toolPart.openFileDiff":"Ouvrir les différences du fichier","chat.toolPart.copyOutput":"Copier la sortie","chat.toolPart.copiedOutput":"Sortie copiée","chat.toolPart.copyOutputFailed":"Impossible de copier la sortie","desktopHostSwitcher.status.checking":"Vérification","desktopHostSwitcher.status.updateRecommended":"Mise à jour recommandée","desktopHostSwitcher.status.incompatible":"Incompatible","onboarding.remoteConnection.probe.updateRecommendedMessage":"Cette instance utilise une version différente d’AiWorker. Vous pouvez vous connecter, mais mettez les deux applications à jour si quelque chose ne fonctionne pas.","onboarding.remoteConnection.probe.incompatibleMessage":"Le serveur exécute AiWorker mais n’est pas compatible avec cette version de l’application. Mettez AiWorker à jour sur le serveur, puis réessayez.","onboarding.desktopRecovery.remoteIncompatible.title":"Mise à jour du serveur requise","onboarding.desktopRecovery.remoteIncompatible.description":"Le serveur AiWorker à l’adresse « {host} » n’est pas compatible avec cette version de l’application. Mettez AiWorker à jour sur le serveur, puis réessayez.","vscodeLayout.actions.archiveAllAria":"Archiver toutes les sessions","vscodeLayout.actions.archiveAllConfirm":"Tout archiver","vscodeLayout.actions.archiveAllSuccess":"{count} session(s) archivée(s)","vscodeLayout.actions.archiveAllError":"Impossible d’archiver {count} session(s)","vscodeLayout.actions.cancel":"Annuler","chat.workStatus.ariaLabel":"État du travail","chat.workStatus.context.label":"Contexte","chat.workStatus.cost.breakdown":"Session {session} · Sous-agents {subagents}","chat.workStatus.git.changedFileSingle":"{count} fichier modifié","chat.workStatus.git.changedFilePlural":"{count} fichiers modifiés","chat.workStatus.pr.untitled":"Pull request sans titre","chat.workStatus.pr.draft":"Brouillon","chat.workStatus.pr.checks":"Vérifications","chat.workStatus.pr.checksFailed":"{count} en échec","chat.workStatus.pr.checksPending":"{count} en cours","chat.workStatus.pr.checksPassed":"{count} réussies","chat.workStatus.attention.merge":"Fusion en cours","chat.workStatus.attention.rebase":"Rebase en cours","chat.workStatus.attention.cherryPick":"Cherry-pick en cours","chat.workStatus.attention.revert":"Revert en cours","chat.workStatus.attention.bisect":"Bisect en cours","chat.workStatus.subagent.done":"Terminé","chat.workStatus.subagent.untitled":"Sous-agent","chat.workStatus.mcp.toggle":"Basculer {name}","chat.workStatus.mcp.needsAuth":"Se connecter","chat.workStatus.mcp.failed":"Échec","chat.workStatus.pinned.unavailable":"Message épinglé","chat.workStatus.section.session":"Session","chat.workStatus.section.project":"Projet","chat.workStatus.section.subagents":"Sous-agents","chat.workStatus.section.mcp":"MCP","chat.workStatus.section.pinned":"Messages épinglés","chat.workStatus.section.tasks":"Tâches","chat.workStatus.subagent.working":"travaille","chat.workStatus.subagent.needsPermission":"demande une autorisation","chat.workStatus.subagent.askedQuestion":"a posé une question","chat.workStatus.section.contextBreakdown":"Sources de contexte","chat.workStatus.breakdown.skills":"Compétences","chat.workStatus.breakdown.pinnedNote":"note","chat.workStatus.breakdown.unpin":"Détacher du contexte","chat.workStatus.breakdown.pinnedPlan":"plan","chat.workStatus.breakdown.memory":"Mémoire de l’agent","chat.workStatus.breakdown.pinnedKnowledgeSingle":"{count} épinglé","chat.workStatus.breakdown.pinnedKnowledgePlural":"{count} épinglés","chat.workStatus.breakdown.mcp":"Serveurs MCP","chat.workStatus.action.openChanges":"Ouvrir les modifications","chat.workStatus.action.openGit":"Ouvrir le panneau Git","chat.workStatus.action.openPr":"Ouvrir la pull request","chat.workStatus.action.openSubagent":"Ouvrir {name}","chat.workStatus.section.usage":"Utilisation","chat.workStatus.goal.open":"Gérer l’objectif","chat.workStatus.goal.pause":"Mettre en pause","chat.workStatus.goal.resume":"Reprendre","chat.workStatus.goal.updateFailed":"Impossible de mettre à jour l’objectif","chat.workStatus.pinned.unpin":"Détacher le message","chat.workStatus.pinned.reveal":"Aller au message","chat.workStatus.pinned.unpinFailed":"Impossible de détacher le message","chat.workStatus.action.openContext":"Ouvrir le panneau de contexte","chat.workStatus.section.linkedIssues":"Liés","chat.workStatus.linkedIssues.open":"Ouvrir #{number} sur GitHub","chat.workStatus.linkedIssues.unlink":"Retirer le lien","chat.workStatus.linkedIssues.unlinkFailed":"Impossible de retirer le lien","chat.workStatus.linkedIssues.link":"Lier à la session","chat.workStatus.linkedIssues.linkFailed":"Impossible de lier","chat.workStatus.breakdown.issueCountSingle":"{count} ticket","chat.workStatus.breakdown.issueCountPlural":"{count} tickets","chat.workStatus.breakdown.prCountSingle":"{count} PR","chat.workStatus.breakdown.prCountPlural":"{count} PR","chat.workStatus.breakdown.skillCountSingle":"{count} compétence","chat.workStatus.breakdown.skillCountPlural":"{count} compétences","chat.workStatus.breakdown.mcpCountSingle":"{count} MCP","chat.workStatus.breakdown.mcpCountPlural":"{count} MCP","chat.workStatus.sections.open":"Choisir les sections","chat.workStatus.sections.dialogTitle":"Sections du panneau","chat.workStatus.sections.dialogDescription":"Choisis ce qu'affiche le panneau d'état. Les sections masquées conservent leurs données, elles sont seulement absentes du panneau.","chat.workStatus.sections.allHidden":"Aucune section sélectionnée","chat.workStatus.sections.showAll":"Tout afficher","chat.workStatus.sections.noneWarning":"Le panneau apparaîtra vide.","header.workStatusPanel.toggleAria":"Basculer le panneau d'état","header.workStatusPanel.hide":"Masquer l'état du travail","header.workStatusPanel.show":"Afficher l'état du travail","chat.workStatus.mcp.authorizeOpenFailed":"Impossible d'ouvrir la page d'autorisation","chat.workStatus.mcp.authorizeFailed":"Échec de l'autorisation","mcpDropdown.toast.authorizeOpenFailed":"Impossible d'ouvrir la page d'autorisation","mcpDropdown.toast.authorizeFailed":"Échec de l'autorisation","header.services.tooltip.currentInstance":"Instance actuelle : {current} ({toggle})","header.workStatusPanel.showOverlay":"Afficher l'état par-dessus le chat","settings.mcp.page.connection.title":"Comment le joindre","settings.mcp.page.connection.description":"Colle la commande qui le démarre, ou le lien vers un serveur hébergé.","settings.mcp.page.registration.title":"Ce serveur exige sa propre app","settings.mcp.page.registration.description":"Il ne fournit pas d’identifiants automatiquement. Crée une app dans les réglages du service, colle ses informations ici, puis connecte-toi.","settings.mcp.page.registration.callbackLabel":"Donne cette adresse au service","settings.mcp.page.registration.clientId":"ID de l’app","settings.mcp.page.registration.clientSecret":"Secret de l’app","settings.mcp.page.registration.afterSaving":"Enregistre, puis appuie sur Autoriser.","settings.mcp.page.toast.copiedCallbackUrl":"Adresse copiée","settings.mcp.page.toast.clipboardWriteFailed":"Impossible de copier dans le presse-papiers","settings.mcp.page.scope.everywhere":"Disponible dans tous les projets","settings.mcp.page.scope.thisProject":"Seulement dans ce projet","settings.mcp.page.env.description":"Valeurs dont le serveur a besoin, par exemple une clé d’API.","settings.mcp.page.connection.kindCommand":"Commande","settings.mcp.page.connection.kindLink":"Lien","settings.mcp.page.connection.hintCommand":"S’exécute sur cette machine. Collez une commande entière : elle est découpée en un argument par ligne.","settings.mcp.page.connection.hintLink":"Se connecte à un serveur hébergé par quelqu’un d’autre. Collez son adresse https."};export{Fe as dict};