@objectstack/console 17.6.0 → 17.7.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 (277) hide show
  1. package/CHANGELOG.md +428 -0
  2. package/dist/.objectstack-injection.json +2 -2
  3. package/dist/.objectui-sha +1 -1
  4. package/dist/assets/{ActionResultDialog-4kHDGnT3.js → ActionResultDialog-ChYnuROr.js} +3 -3
  5. package/dist/assets/{AiPendingActionsPage-JjOddm0h.js → AiPendingActionsPage-Dh3-i4BB.js} +1 -1
  6. package/dist/assets/{ApiConsolePage-BgS26lbp.js → ApiConsolePage-CKYEqlMs.js} +1 -1
  7. package/dist/assets/{AppDocsIndex-BDoH5ECM.js → AppDocsIndex-B5Tky2xg.js} +1 -1
  8. package/dist/assets/{AppManagementPage-CCgKmNTj.js → AppManagementPage-ZwyvnHpM.js} +1 -1
  9. package/dist/assets/ApprovalsInboxPage-DD4fe0Em.js +1 -0
  10. package/dist/assets/AuditLogPage-Sed6iMqP.js +1 -0
  11. package/dist/assets/BookPage-DYjUsQIc.js +1 -0
  12. package/dist/assets/{ComponentNavView-B5g9c6fx.js → ComponentNavView-DrlxM4SY.js} +1 -1
  13. package/dist/assets/CreateViewDialog-Cp72x_O7.js +1 -0
  14. package/dist/assets/{DashboardView-BOcovpPd.js → DashboardView-juicRxcP.js} +1 -1
  15. package/dist/assets/DocPage-CxJaQ-pC.js +1 -0
  16. package/dist/assets/{DocsIndex-DwW2QsYY.js → DocsIndex-LALVtIVR.js} +1 -1
  17. package/dist/assets/{DocsLayout-D63StSgd.js → DocsLayout-BAwlJQQf.js} +1 -1
  18. package/dist/assets/{DocsSlug-CP9fcabi.js → DocsSlug-CkF1E-Zs.js} +1 -1
  19. package/dist/assets/ExpressionProvider-Dr0e99r1.js +1 -0
  20. package/dist/assets/FlowRunsPage-R3W3t2s4.js +1 -0
  21. package/dist/assets/{IntegrationsPage-DvG0x0Nb.js → IntegrationsPage-DIuFLEbF.js} +2 -2
  22. package/dist/assets/InterfaceListPage-BfoCldGu.js +1 -0
  23. package/dist/assets/{MarketplaceInstalledPage-B7KETQG2.js → MarketplaceInstalledPage-DyjhcUNB.js} +1 -1
  24. package/dist/assets/MarketplacePackagePage-BbO27Pgs.js +4 -0
  25. package/dist/assets/MarketplacePage-DO2_b64U.js +1 -0
  26. package/dist/assets/{MetadataInspector-EP0I3-Kq.js → MetadataInspector-BQyu9pOE.js} +1 -1
  27. package/dist/assets/ObjectDataPage-DIY-yefK.js +1 -0
  28. package/dist/assets/PageView-C-qWu3Jw.js +1 -0
  29. package/dist/assets/ProfilePage-Qp8DL8CF.js +1 -0
  30. package/dist/assets/{PublicFormsPage-D3uCTR-8.js → PublicFormsPage-D3AT2EH9.js} +1 -1
  31. package/dist/assets/RecordDetailView-B3XBEgk2.js +3 -0
  32. package/dist/assets/{RecordFormPage-kiJI-ieF.js → RecordFormPage-CcoZfUJ3.js} +1 -1
  33. package/dist/assets/ReportDefaultInspector-DVcWM6sh.js +1 -0
  34. package/dist/assets/ReportView-pJCFptzp.js +2 -0
  35. package/dist/assets/RuntimeDraftBar-DObTyFu2.js +1 -0
  36. package/dist/assets/SchemaForm-BWSWYMLE.js +3 -0
  37. package/dist/assets/SearchResultsPage-ChVIzFob.js +1 -0
  38. package/dist/assets/{SettingsHub-DP1mrzEN.js → SettingsHub-CPP9FDe8.js} +1 -1
  39. package/dist/assets/{SettingsView-u7mc6pcc.js → SettingsView-CrHAROu9.js} +1 -1
  40. package/dist/assets/{SkeletonDetail-DIwlbHTr.js → SkeletonDetail-CP-35B8x.js} +1 -1
  41. package/dist/assets/{af-DPUgkQl0.js → af-Bhbso4Pg.js} +1 -1
  42. package/dist/assets/ai-BAPiCsNk.js +3 -0
  43. package/dist/assets/app-shell-eager-leaves-D9tgfJOe.js +1 -0
  44. package/dist/assets/{ar-B-6GTIRU.js → ar-DG8TAFtm.js} +1 -1
  45. package/dist/assets/{ar-DZ-wEl298ti.js → ar-DZ-BtSien-d.js} +1 -1
  46. package/dist/assets/{ar-EG-YBT90_S0.js → ar-EG-DpXC0zoY.js} +1 -1
  47. package/dist/assets/{ar-MA-3uT-EYh6.js → ar-MA-D1qVJLyE.js} +1 -1
  48. package/dist/assets/{ar-SA-SiQsjhhc.js → ar-SA-BIYKNgv8.js} +1 -1
  49. package/dist/assets/{ar-TN-CfzXjKzS.js → ar-TN-mUR5Mq3s.js} +1 -1
  50. package/dist/assets/{az-BqAfcNza.js → az-B7IqwHGK.js} +1 -1
  51. package/dist/assets/{be-CQgWXa9_.js → be-CnZyPaSX.js} +1 -1
  52. package/dist/assets/{be-tarask-BmNg0Sir.js → be-tarask--uMMCC7l.js} +1 -1
  53. package/dist/assets/{bg-D3evgRuS.js → bg-CZwuirtY.js} +1 -1
  54. package/dist/assets/{bn-uItkARwm.js → bn-BbOX0r-z.js} +1 -1
  55. package/dist/assets/{bs-DueReOpO.js → bs-B5W75cYR.js} +1 -1
  56. package/dist/assets/{ca-Cr3AHktR.js → ca-Be69LdIM.js} +1 -1
  57. package/dist/assets/{ckb-CTi5BET7.js → ckb-B-nKM1Vn.js} +1 -1
  58. package/dist/assets/{createDerive-CjN1i5vn.js → createDerive-CynsXU-B.js} +1 -1
  59. package/dist/assets/{cs-43mFX9jr.js → cs-qHngxH7l.js} +1 -1
  60. package/dist/assets/{cy-BBSkg3F8.js → cy-DscO2Pgf.js} +1 -1
  61. package/dist/assets/{da-C5oA5qcs.js → da-vibkaLMF.js} +1 -1
  62. package/dist/assets/data-adapter-BDsrq0TX.js +2 -0
  63. package/dist/assets/{de-AT-CApxwJzu.js → de-AT--JneEuBw.js} +1 -1
  64. package/dist/assets/{de-CPtbLlAf.js → de-BCT78XYW.js} +1 -1
  65. package/dist/assets/default-inspector-registry-Dktr6x_q.js +1 -0
  66. package/dist/assets/dist-yh3dYtHt.js +14 -0
  67. package/dist/assets/drillUrlFilters-N0RngQg6.js +1 -0
  68. package/dist/assets/{el-Dto2xBQU.js → el-Cl0y9T2b.js} +1 -1
  69. package/dist/assets/en-AU-By42tTB7.js +1 -0
  70. package/dist/assets/{en-CA-DKuJPN1U.js → en-CA-BqEEoj-Y.js} +1 -1
  71. package/dist/assets/en-GB-Cx8B9nkB.js +1 -0
  72. package/dist/assets/en-IE-CX9nv6uO.js +1 -0
  73. package/dist/assets/en-IN-ByGSBHa4.js +1 -0
  74. package/dist/assets/en-NZ-BPMwa2ZN.js +1 -0
  75. package/dist/assets/en-ZA-lj_N4R6c.js +1 -0
  76. package/dist/assets/{eo-BL8JXIWd.js → eo-oOXROuhF.js} +1 -1
  77. package/dist/assets/{es-BnoaNxsu.js → es-EudscwjH.js} +1 -1
  78. package/dist/assets/{et-tPYLNenO.js → et-CB-5LLh6.js} +1 -1
  79. package/dist/assets/{eu-CUBG6bT0.js → eu-B4-hcseX.js} +1 -1
  80. package/dist/assets/{fa-IR-Rr2d9xSs.js → fa-IR-CogavcMJ.js} +1 -1
  81. package/dist/assets/{fi-B0NVIZsV.js → fi-CIBE0mYa.js} +1 -1
  82. package/dist/assets/{formatLong-1-gt9bpo.js → formatLong-qqgm7lV1.js} +1 -1
  83. package/dist/assets/{fr-CA-CBDvLXFg.js → fr-CA-BugXMutW.js} +1 -1
  84. package/dist/assets/{fr-BbhHek8e.js → fr-CDReXYWW.js} +1 -1
  85. package/dist/assets/{fr-CH-WPNmwPn7.js → fr-CH-fiTiB6X1.js} +1 -1
  86. package/dist/assets/framework-CAuH4h0L.js +35 -0
  87. package/dist/assets/{fy-DvOBbvEF.js → fy-t_GzIAg_.js} +1 -1
  88. package/dist/assets/{gd-BQPiTPX5.js → gd-CSncIxtN.js} +1 -1
  89. package/dist/assets/getIcon-BDkBRQFw.js +1 -0
  90. package/dist/assets/{gl-BJCXK8uO.js → gl-_138Mj2S.js} +1 -1
  91. package/dist/assets/{gu-CctPRz3V.js → gu-COfH-YUT.js} +1 -1
  92. package/dist/assets/{he-CVFMk6p2.js → he-BXL4lOKY.js} +1 -1
  93. package/dist/assets/{hi-Ba30-RwS.js → hi-kXuYI0TJ.js} +1 -1
  94. package/dist/assets/{highlighted-body-OFNGDK62-BQ57IrBV.js → highlighted-body-OFNGDK62-CK7x7Gzm.js} +1 -1
  95. package/dist/assets/{hr-BZUqTbZs.js → hr-DAOsQWzI.js} +1 -1
  96. package/dist/assets/{ht-BLe05tPx.js → ht-Ch8SKz8p.js} +1 -1
  97. package/dist/assets/{hu-2CQ_Mkww.js → hu-q6W_rWPT.js} +1 -1
  98. package/dist/assets/{hy-CclcPG4H.js → hy-0M8OmwnM.js} +1 -1
  99. package/dist/assets/{i18n-BnUsCaSC.js → i18n-DTfZonAM.js} +3 -3
  100. package/dist/assets/i18n-locale-ar-O6rs-Cir.js +4 -0
  101. package/dist/assets/i18n-locale-de-CMc1jk4a.js +4 -0
  102. package/dist/assets/i18n-locale-en-CbRQO81h.js +4 -0
  103. package/dist/assets/i18n-locale-es-t47nyoCX.js +4 -0
  104. package/dist/assets/i18n-locale-fr-E425EqJM.js +4 -0
  105. package/dist/assets/i18n-locale-ja-y_fk77fz.js +4 -0
  106. package/dist/assets/i18n-locale-ko-CdnY2uCg.js +4 -0
  107. package/dist/assets/i18n-locale-pt-BaUOXS6y.js +4 -0
  108. package/dist/assets/i18n-locale-ru-pFlhX9wg.js +4 -0
  109. package/dist/assets/i18n-locale-zh-Dkj4ROTN.js +4 -0
  110. package/dist/assets/i18n-runtime-CdWyaiOD.js +1 -0
  111. package/dist/assets/{id-6JLB8s-f.js → id-BM_H1_jv.js} +1 -1
  112. package/dist/assets/index-ocmkyCt6.js +19 -0
  113. package/dist/assets/index-v2Ijn9Gr.css +2 -0
  114. package/dist/assets/{infrastructure-Cc34lEqb.js → infrastructure-CSnL6ntj.js} +2 -2
  115. package/dist/assets/integration-7NqwVHuJ.js +1 -0
  116. package/dist/assets/{is-to0CWzm1.js → is-B_7jXZfS.js} +1 -1
  117. package/dist/assets/isSameWeek-D90tBsli.js +1 -0
  118. package/dist/assets/{it-ea0B8Ujp.js → it-CBM0J9cD.js} +1 -1
  119. package/dist/assets/{it-CH-DhdfjP5Z.js → it-CH-BQltCNsR.js} +1 -1
  120. package/dist/assets/{ja-B1bzkgDW.js → ja-DBjnsx21.js} +1 -1
  121. package/dist/assets/{ja-Hira-CMrY5hXO.js → ja-Hira-BZfSmj1i.js} +1 -1
  122. package/dist/assets/{ka-DKSXLnXP.js → ka-HwpuKgUY.js} +1 -1
  123. package/dist/assets/{kk-DHwMv8Dn.js → kk-DLKA9paj.js} +1 -1
  124. package/dist/assets/{km-tpLG1xNr.js → km-BU5kermq.js} +1 -1
  125. package/dist/assets/{kn-MLreVnHA.js → kn-BNFqbCoi.js} +1 -1
  126. package/dist/assets/{ko-CI0DBazn.js → ko-D8n4uMqQ.js} +1 -1
  127. package/dist/assets/{lb-CmL572Xe.js → lb-B1empQ7m.js} +1 -1
  128. package/dist/assets/{lt-DRtUOLdw.js → lt-gMukpK3G.js} +1 -1
  129. package/dist/assets/{lv-COSHgkOP.js → lv-D2O5AnsZ.js} +1 -1
  130. package/dist/assets/{match-BQoOW8Cj.js → match-BTF6WqJh.js} +1 -1
  131. package/dist/assets/{match-B-ergJQb.js → match-Cyum2eeW.js} +1 -1
  132. package/dist/assets/{match-dfBS0YSQ.js → match-ScHH8kYk.js} +1 -1
  133. package/dist/assets/mermaid-GHXKKRXX-D4H6EVJQ.js +1 -0
  134. package/dist/assets/metadata-admin-CEhVmXFv.js +9 -0
  135. package/dist/assets/{mk-B0IH_YL_.js → mk-D-Zl0xVN.js} +1 -1
  136. package/dist/assets/{mn-P-QdQ2n3.js → mn-jJbTslgD.js} +1 -1
  137. package/dist/assets/{ms-CtyEOINy.js → ms-CUuJHLA4.js} +1 -1
  138. package/dist/assets/{mt-DfuZ2HRm.js → mt-yIcbfxKY.js} +1 -1
  139. package/dist/assets/{nb-2Hp-5Tnt.js → nb-D9WNypoj.js} +1 -1
  140. package/dist/assets/{nl-BE-mmxbfNoR.js → nl-BE-B1vKiw2h.js} +1 -1
  141. package/dist/assets/{nl-CZ_nLREz.js → nl-DC7b5e90.js} +1 -1
  142. package/dist/assets/{nn-ccWhYsNa.js → nn-uP4yJ9s0.js} +1 -1
  143. package/dist/assets/{oc-z504BFRV.js → oc-DHTqadJI.js} +1 -1
  144. package/dist/assets/{pl-DeQ7ASt-.js → pl-Bxnnizf5.js} +1 -1
  145. package/dist/assets/plugin-calendar-b7C35ANT.js +1 -0
  146. package/dist/assets/plugin-charts-b-yVtmdI.js +7 -0
  147. package/dist/assets/{plugin-chatbot-Ck47EhDX.js → plugin-chatbot-D1KW_oIO.js} +8 -8
  148. package/dist/assets/plugin-dashboard-DTkPoPEb.js +6 -0
  149. package/dist/assets/plugin-form-UIRm-FpQ.js +1 -0
  150. package/dist/assets/plugin-gantt-9dtc8zzX.js +63 -0
  151. package/dist/assets/plugin-grid-Cp4RKtMJ.js +10 -0
  152. package/dist/assets/plugin-kanban-B2JOPZIJ.js +1 -0
  153. package/dist/assets/plugin-map-CBJcVJYk.js +1 -0
  154. package/dist/assets/{plugin-markdown-BOkHcir_.js → plugin-markdown-CNlDzqP-.js} +1 -1
  155. package/dist/assets/plugin-report-IZzgQb-Q.js +59 -0
  156. package/dist/assets/plugin-timeline-DsmtjcJ3.js +1 -0
  157. package/dist/assets/plugin-tree-DTRPBdhe.js +1 -0
  158. package/dist/assets/plugin-view-D9ixsNDG.js +1 -0
  159. package/dist/assets/plugins-views-CnvkdSJK.js +3 -0
  160. package/dist/assets/{pt-BR-D80_lPYF.js → pt-BR-D416seHT.js} +1 -1
  161. package/dist/assets/{pt-CJJ1RmXd.js → pt-DwHBy9_c.js} +1 -1
  162. package/dist/assets/{ro-EuFb2TCj.js → ro-DDf1X3Np.js} +1 -1
  163. package/dist/assets/{ru-CMaVQScp.js → ru-8eM3mcgK.js} +1 -1
  164. package/dist/assets/{runtime-metadata-persistence-ClOTznqa.js → runtime-metadata-persistence-DX29lQ62.js} +1 -1
  165. package/dist/assets/{se-DsfdKLdF.js → se-D4JvQeRX.js} +1 -1
  166. package/dist/assets/{sk-BNV9omI8.js → sk-DvpgttGI.js} +1 -1
  167. package/dist/assets/{sl-DJS_nINU.js → sl-B3gCZ-_a.js} +1 -1
  168. package/dist/assets/{sq-HEgjcbHe.js → sq-CVaTmL0V.js} +1 -1
  169. package/dist/assets/{sr-CO0CFu4X.js → sr-CnH5Ffyz.js} +1 -1
  170. package/dist/assets/{sr-Latn-eE1Idzey.js → sr-Latn-Dw9w61q6.js} +1 -1
  171. package/dist/assets/src-BUry7633.js +2 -0
  172. package/dist/assets/{src-BU7L2v4J.js → src-DMDT5a27.js} +1 -1
  173. package/dist/assets/src-ZxH3AOCu.js +16 -0
  174. package/dist/assets/{studioEntry-WeMfaSGn.js → studioEntry-DAqcBFtr.js} +1 -1
  175. package/dist/assets/{submitRedirect-C2lfZSHt.js → submitRedirect-iy0oOi7I.js} +1 -1
  176. package/dist/assets/{sv-5uTzgQT3.js → sv-CU7wdxyK.js} +1 -1
  177. package/dist/assets/{ta-BzgdkBZG.js → ta-DPH6q0HR.js} +1 -1
  178. package/dist/assets/{te-Ct_pl7ZJ.js → te-BSaThkGV.js} +1 -1
  179. package/dist/assets/{th-DouAlk0-.js → th-NXP8_Qb8.js} +1 -1
  180. package/dist/assets/{tr-3XNBsI40.js → tr-DDXoH663.js} +1 -1
  181. package/dist/assets/types-zod-ChJ30y25.js +1 -0
  182. package/dist/assets/{ug-B9n24h9G.js → ug-Guus6pPe.js} +1 -1
  183. package/dist/assets/ui-components-D8wcRNrt.js +37 -0
  184. package/dist/assets/ui-layout-BYO3rRIl.js +1 -0
  185. package/dist/assets/{uk-DCAenByf.js → uk-uiy4vsp8.js} +1 -1
  186. package/dist/assets/use-book-data-DFTswcKm.js +1 -0
  187. package/dist/assets/{useActionModal-Blp4rhOk.js → useActionModal-h52Z5Pkl.js} +1 -1
  188. package/dist/assets/useCanAuthorMetadata-TDrVrYGB.js +1 -0
  189. package/dist/assets/useDatasetCatalog-BOd0Ybr1.js +1 -0
  190. package/dist/assets/{useNavTargetLabel-BOJncjIb.js → useNavTargetLabel-D8lRdb6O.js} +1 -1
  191. package/dist/assets/useOpenRecordList-C7oqUD3F.js +1 -0
  192. package/dist/assets/{usePackageL10n-Ci9uVkRZ.js → usePackageL10n-Jl2XiF2F.js} +1 -1
  193. package/dist/assets/{useSettingsLabel-CeMnMWsh.js → useSettingsLabel-CSpBDTdy.js} +1 -1
  194. package/dist/assets/{uz-Cyrl-JSeHEqu-.js → uz-Cyrl-Cmb5bvbf.js} +1 -1
  195. package/dist/assets/{uz-DT3s9bZS.js → uz-DJWxoTz4.js} +1 -1
  196. package/dist/assets/vendor-objectstack-C4eD5dbT.js +139 -0
  197. package/dist/assets/{vi-D2p-h6bY.js → vi-Bb3QoIJC.js} +1 -1
  198. package/dist/assets/{zh-CN-DHOKqAit.js → zh-CN-C-Hts1ZR.js} +1 -1
  199. package/dist/assets/{zh-HK-D4iIPY7I.js → zh-HK-CtBAZ_ZS.js} +1 -1
  200. package/dist/assets/{zh-TW-gORQ_tZh.js → zh-TW-B7DDahD-.js} +1 -1
  201. package/dist/chunk-membership.json +28 -26
  202. package/dist/eager-closure.json +107 -101
  203. package/dist/index.html +4 -4
  204. package/dist/sdui.manifest.json +486 -63
  205. package/package.json +1 -1
  206. package/dist/assets/ApprovalsInboxPage-C6S1vk0X.js +0 -1
  207. package/dist/assets/AuditLogPage-v2dKXMuk.js +0 -1
  208. package/dist/assets/BookPage-DwFMcTSN.js +0 -1
  209. package/dist/assets/CreateViewDialog-D3l-tYHM.js +0 -1
  210. package/dist/assets/DocPage-B6AkH5WI.js +0 -1
  211. package/dist/assets/ExpressionProvider-CrL6jhVq.js +0 -1
  212. package/dist/assets/FlowRunsPage-CxdaiUyk.js +0 -1
  213. package/dist/assets/InterfaceListPage-C4wPYohR.js +0 -1
  214. package/dist/assets/MarketplacePackagePage-CfgKDpNH.js +0 -4
  215. package/dist/assets/MarketplacePage-DNEyU5AE.js +0 -1
  216. package/dist/assets/ObjectDataPage-CykEm9MD.js +0 -1
  217. package/dist/assets/PageView-C6u86tni.js +0 -1
  218. package/dist/assets/ProfilePage-C3SjXMzi.js +0 -1
  219. package/dist/assets/RecordDetailView-DgR_zhP4.js +0 -3
  220. package/dist/assets/ReportDefaultInspector-BIinF0EQ.js +0 -1
  221. package/dist/assets/ReportView-BREO-ADE.js +0 -2
  222. package/dist/assets/RuntimeDraftBar-BCWfd2yS.js +0 -1
  223. package/dist/assets/SchemaForm-C4uMMZ13.js +0 -3
  224. package/dist/assets/SearchResultsPage-C6Hw_Lpn.js +0 -1
  225. package/dist/assets/ai-DPBykF2N.js +0 -3
  226. package/dist/assets/app-shell-eager-leaves-Cf2bM6uT.js +0 -1
  227. package/dist/assets/data-adapter-Cymvlczj.js +0 -1
  228. package/dist/assets/default-inspector-registry-Bs6GBn00.js +0 -1
  229. package/dist/assets/dist-BF-ssUpn.js +0 -14
  230. package/dist/assets/drillUrlFilters-hi-2d3DW.js +0 -1
  231. package/dist/assets/en-AU-FVwCiDJO.js +0 -1
  232. package/dist/assets/en-GB-DQ_y5VbJ.js +0 -1
  233. package/dist/assets/en-IE-DaXOhsZW.js +0 -1
  234. package/dist/assets/en-IN-CnRZnAom.js +0 -1
  235. package/dist/assets/en-NZ-CBZLEToK.js +0 -1
  236. package/dist/assets/en-ZA-BE59v0wZ.js +0 -1
  237. package/dist/assets/framework-DFR4HNtj.js +0 -35
  238. package/dist/assets/getIcon-Cfwf-Egt.js +0 -1
  239. package/dist/assets/i18n-locale-ar-92O_xtDZ.js +0 -4
  240. package/dist/assets/i18n-locale-de-T5ic3yH9.js +0 -4
  241. package/dist/assets/i18n-locale-en-rxr7WJYl.js +0 -4
  242. package/dist/assets/i18n-locale-es-D_WOifJ_.js +0 -4
  243. package/dist/assets/i18n-locale-fr-3cvyjMkp.js +0 -4
  244. package/dist/assets/i18n-locale-ja-DXlIkB8I.js +0 -4
  245. package/dist/assets/i18n-locale-ko-DngRpS45.js +0 -4
  246. package/dist/assets/i18n-locale-pt-BkPaFCqZ.js +0 -4
  247. package/dist/assets/i18n-locale-ru-E5wLh-y6.js +0 -4
  248. package/dist/assets/i18n-locale-zh-BL4_Yand.js +0 -4
  249. package/dist/assets/i18n-runtime-97_bDVjP.js +0 -1
  250. package/dist/assets/index-Cadlh4t_.css +0 -2
  251. package/dist/assets/index-D98sa5GF.js +0 -20
  252. package/dist/assets/integration-CeAF4JFT.js +0 -1
  253. package/dist/assets/isSameWeek-DBXaA1Gd.js +0 -1
  254. package/dist/assets/mermaid-GHXKKRXX-Bb17TtNP.js +0 -1
  255. package/dist/assets/metadata-admin-CABUxbJl.js +0 -9
  256. package/dist/assets/plugin-calendar-Cn5HaZU8.js +0 -1
  257. package/dist/assets/plugin-charts-B6RcFWbo.js +0 -7
  258. package/dist/assets/plugin-dashboard-DjEx8e5Y.js +0 -6
  259. package/dist/assets/plugin-form-CLDvL0up.js +0 -1
  260. package/dist/assets/plugin-gantt-CrVrxVdi.js +0 -63
  261. package/dist/assets/plugin-grid-D2rmQEW_.js +0 -11
  262. package/dist/assets/plugin-kanban-BUNHFfIC.js +0 -1
  263. package/dist/assets/plugin-map-y-7RQQC5.js +0 -1
  264. package/dist/assets/plugin-report-mT3jpna0.js +0 -59
  265. package/dist/assets/plugin-timeline-B1EF83D3.js +0 -1
  266. package/dist/assets/plugin-tree-MTHUt3_S.js +0 -1
  267. package/dist/assets/plugin-view-DHJI-ahf.js +0 -1
  268. package/dist/assets/plugins-views-CfkgqD30.js +0 -3
  269. package/dist/assets/src-BUtIBFDA.js +0 -1
  270. package/dist/assets/src-C0eXlKtx.js +0 -16
  271. package/dist/assets/types-zod-DXpXw10W.js +0 -1
  272. package/dist/assets/ui-components-D6cEVg0T.js +0 -37
  273. package/dist/assets/ui-layout-DgVDuPEM.js +0 -1
  274. package/dist/assets/use-book-data-CwRldFxP.js +0 -1
  275. package/dist/assets/useCanAuthorMetadata-BxCMgFRf.js +0 -1
  276. package/dist/assets/useOpenRecordList-BrwJFojQ.js +0 -1
  277. package/dist/assets/vendor-objectstack-DFqu45yM.js +0 -138
@@ -1,4 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-C0FnF6B9.js";var t=e({default:()=>n}),n={impersonation:{banner:{message:`Vous incarnez {{user}} — chaque action est enregistrée en son nom.`,startedBy:`Démarré par l’administrateur {{admin}}.`,stop:`Arrêter l’usurpation`,stopping:`Arrêt en cours…`,stopFailed:`Impossible d’arrêter l’usurpation : {{reason}}`,notRestored:`Le serveur a accepté la demande mais n’a pas restauré votre session administrateur — vous incarnez toujours {{user}}. Déconnectez-vous puis reconnectez-vous pour y mettre fin.`}},capability:{label:{manage_users:`Gérer les utilisateurs`,manage_org_users:`Gérer les utilisateurs de l'organisation`,manage_metadata:`Gérer les métadonnées`,manage_org_presentation:`Gérer la présentation de l'organisation`,manage_platform_settings:`Gérer les paramètres de la plateforme`,setup_access:`Accès à la configuration`,setup_write:`Écriture des paramètres`,studio_access:`Accès à Studio`,manage_sharing:`Gérer le partage`},group:{platform:`Plateforme`,org:`Organisation`,other:`Autre`}},perm:{facet:{none:`Aucun`,more:`+{{count}} de plus`,objects:`{{count}} objets`,objects_one:`{{count}} objet`,fields:`{{count}} règles de champ`,fields_one:`{{count}} règle de champ`,rls:`{{count}} politiques RLS`,rls_one:`{{count}} politique RLS`,tabs:`{{count}} règles d'onglet`,tabs_one:`{{count}} règle d'onglet`,adminScope:`Administration déléguée configurée`,designInStudio:`Concevoir dans Studio →`,designInStudioHint:`Concevoir dans Studio`}},lookup:{recentlyUsed:`Récemment utilisés`,allResults:`Tous les résultats`,createNew:`Créer`,createNamed:`Créer « {{name}} »`,showingResults:`Affichage de {{shown}} sur {{total}} résultats`,showAllResults:`Afficher tous les résultats ({{count}})`,selectedBadge:`Sélectionné`,browseAll:`Parcourir tous les enregistrements`,remove:`Supprimer {{label}}`,selectFirst:`Sélectionnez d’abord {{fields}}`,selectRecord:`Sélectionner un enregistrement`,recordCount:`{{count}} enregistrements`,recordCountOne:`1 enregistrement`,pageOf:`Page {{current}} sur {{total}}`,filters:`Filtres`,clear:`Effacer`,yes:`Oui`,filterPlaceholder:`Filtrer {{label}}`,prevPage:`Page précédente`,nextPage:`Page suivante`,jumpToPage:`Aller à la page`,retry:`Réessayer`,loading:`Chargement…`,noOptions:`Aucune option trouvée`,noRecords:`Aucun enregistrement trouvé`},common:{addToFavorites:`Ajouter aux favoris`,removeFromFavorites:`Retirer des favoris`,loading:`Chargement…`,save:`Enregistrer`,discard:`Abandonner`,cancel:`Annuler`,delete:`Supprimer`,edit:`Modifier`,create:`Créer`,filter:`Filtrer`,reset:`Réinitialiser`,confirm:`Confirmer`,close:`Fermer`,back:`Retour`,next:`Suivant`,previous:`Précédent`,submit:`Soumettre`,refresh:`Actualiser`,export:`Exporter`,import:`Importer`,yes:`Oui`,no:`Non`,ok:`OK`,actions:`Actions`,more:`Plus`,selectAll:`Tout sélectionner`,clearAll:`Tout effacer`,noData:`Aucune donnée`,noResults:`Aucun résultat trouvé`,required:`Obligatoire`,optional:`Facultatif`,selectOption:`Sélectionner une option`,select:`Sélectionner…`,openChat:`Ouvrir le chat`,closeChat:`Fermer le chat`,closePanel:`Fermer le panneau`,resizeDrawer:`Redimensionner le panneau`,itemCount:`{{count}} éléments`,itemCountOne:`{{count}} élément`,toggleSidebar:`Basculer la barre latérale`,package:`Package`,done:`Terminé`,editInStudio:`Modifier dans Studio`,record:`Enregistrement`,retry:`Réessayer`,printDialogHint:`Ouvre la boîte de dialogue d'impression de votre navigateur (ce n'est pas un export PDF)`,rowCeilingNote:`Affichage des {{shown}} premiers enregistrements sur {{total}}. Affinez le filtre.`,rowCeilingNoteUnknownTotal:`Affichage des {{shown}} premiers enregistrements. Affinez le filtre.`},actions:{decisionOutput:{help:`Transmis au flux comme sortie de décision.`,helpMultiValue:`Transmis au flux comme sortie de décision. Séparez les valeurs multiples par des virgules.`},resultDialog:{defaultTitle:`Enregistrez cette valeur maintenant`,acknowledge:`Je l'ai enregistrée`,copyAll:`Tout copier`},notAvailableHere:`« {{action}} » n'est pas disponible sur la page actuelle.`,completedSuccessfully:`Action effectuée avec succès`,failed:`Échec de l'action`,parallelFailed:`Une ou plusieurs actions parallèles ont échoué`,undo:`Annuler`,undone:`Modification annulée`,undoneOperation:`Annuler : {{description}}`,redoneOperation:`Rétablir : {{description}}`},validation:{required:`{{field}} est obligatoire`,minLength:`{{field}} doit contenir au moins {{min}} caractères`,maxLength:`{{field}} doit contenir au plus {{max}} caractères`,min:`{{field}} doit être au moins {{min}}`,max:`{{field}} doit être au plus {{max}}`,email:`Veuillez saisir une adresse e-mail valide`,url:`Veuillez saisir une URL valide`,pattern:`Le format de {{field}} est invalide`,formInvalid:`Veuillez vérifier les champs en surbrillance : {{fields}}`,formInvalidJoiner:`, `,unique:`{{field}} doit être unique`,type:`{{field}} doit être un {{type}} valide`},form:{noPermissionToSave:`Vous n'avez pas l'autorisation d'enregistrer cet enregistrement.`,noPermissionToCreate:`Vous n'avez pas l'autorisation de créer des enregistrements {{object}}. Les champs sont en lecture seule.`,noPermissionToEdit:`Vous n'avez pas l'autorisation de modifier les enregistrements {{object}}. Les champs sont en lecture seule.`,submitFailed:`Échec de l'enregistrement. Veuillez réessayer.`,uploadInFlight:`Attendez la fin du téléversement avant de sauvegarder.`,clearedOnHide:`Ce qui ne s'applique plus aux valeurs actuelles a été effacé : {{fields}}`,visibleWhenFaulted:`Envoi impossible : la règle visibleWhen de {{fields}} n'a pas pu être évaluée. La règle doit être corrigée avant que ce formulaire puisse être envoyé.`,discardTitle:`Abandonner les modifications ?`,discardMessage:`Vous avez des modifications non enregistrées. Si vous fermez ce formulaire maintenant, vos modifications seront perdues.`,dialogDescriptionFallback:`Remplissez les champs du formulaire, puis envoyez ou annulez.`,deniedDescription:`Vous n'avez pas l'autorisation de modifier ce champ.`,masterDetail:{loadingColumns:`Chargement des colonnes…`,subtotal:`Sous-total`,tax:`Taxe ({{rate}} %)`,total:`Total`,lineItem:`Ligne`,rowTitle:`{{title}} — ligne {{row}}`,applyRow:`Appliquer`,editorDescription:`Saisissez l'enregistrement et ses lignes, puis enregistrez.`,noChildObject:`Aucun objet enfant n'est configuré pour cette collection : définissez {{property}} sur l'objet dont elle liste les lignes.`,schemaUnavailable:`Impossible de charger le schéma de {{object}} : cette collection n'a donc aucune colonne à afficher. Vérifiez que l'objet existe et est lisible, puis rechargez.`,noRelationshipField:`Impossible de déterminer comment {{object}} est lié à {{parent}} : aucun champ lookup ou master_detail de cet objet ne référence le parent. Définissez {{property}} sur cette collection avec le champ qui contient l'enregistrement parent.`},lineItems:{title:`Lignes`,saveRecordFirst:`Enregistrez d'abord l'enregistrement pour ajouter des lignes.`,notLoaded:`Les lignes de cet enregistrement n'ont pas été chargées.`,loadFailed:`Échec du chargement des lignes`,saveFailed:`Échec de l'enregistrement des lignes`,noChildObject:`Aucun objet enfant n'est configuré pour ce panneau : définissez {{property}} sur l'objet dont il liste les lignes.`},keepEditing:`Continuer l'édition`,discard:`Abandonner`,conflictTitle:`Conflit d'enregistrement`,conflictMessage:`Cet enregistrement a été modifié par quelqu'un d'autre pendant votre édition. L'écrasement remplacera ses modifications par les vôtres.`,conflictLatestVersion:`Son enregistrement : {{time}}`,conflictOverwrite:`Écraser`,removeItem:`Supprimer un élément`,fieldRequired:`Ce champ est obligatoire`,invalidFormat:`Format invalide`,saveSuccess:`Enregistré avec succès`,saveError:`Échec de l'enregistrement`,unsavedChanges:`Vous avez des modifications non enregistrées. Voulez-vous vraiment quitter ?`,stepOf:`Étape {{current}} sur {{total}}`,createTitle:`Créer {{object}}`,editTitle:`Modifier {{object}}`,viewTitle:`Afficher {{object}}`,createTargetOrg:`Création dans {{org}}`,saveRecord:`Enregistrer`,create:`Créer`,update:`Mettre à jour`,createSuccess:`{{object}} créé`,updateSuccess:`{{object}} mis à jour`,deleteSuccess:`{{object}} supprimé`,created:`Créé`,saved:`Enregistré`,savedNamed:`{{title}} enregistré`,submitted:`Envoyé`,errorLoading:`Erreur de chargement du formulaire`,navigateRefused:"La destination `navigateOnSuccess` déclarée pour ce formulaire a été refusée, la navigation n’a donc pas eu lieu.",fullscreen:{title:`Modifier le texte`,description:`Modifiez la valeur texte complète, puis enregistrez ou annulez vos modifications.`,done:`Terminé`,toggle:`Modifier {{label}} en plein écran`,textFallback:`le texte`}},fields:{image:{upload:`Téléverser une image`,addMore:`Ajouter d'autres images`,uploading:`Téléversement…`,imageAlt:`Image {{index}}`,crop:`Recadrer l'image {{index}}`,remove:`Supprimer l'image {{index}}`,enlarge:`Agrandir {{name}}`,preview:`Aperçu de l'image`,previous:`Image précédente`,next:`Image suivante`,counter:`{{current}} / {{total}}`},relativeDate:{overdue:`En retard de {{count}} j`},file:{dragDropHere:`Glissez-déposez des fichiers ici`,dropFilesHere:`Déposez les fichiers ici`,browseHint:`ou cliquez pour parcourir`,browseHintCamera:`ou cliquez pour parcourir • utilisez le bouton appareil photo ci-dessous`,takePhoto:`Prendre une photo`,takeSelfie:`Prendre un selfie`,cameraCapture:`Capture photo`,uploading:`Téléversement…`,uploadingPct:`Téléversement… ({{pct}} %)`,fileFallback:`Fichier`,upload:`Téléverser`,remove:`Supprimer {{name}}`,exceedsMaxSize:`« {{name}} » dépasse la taille maximale ({{max}} Mo)`,uploadFailed:`Échec du téléversement de « {{name}} » : {{error}}`,uploadIncomplete:`Le téléversement de « {{name}} » n’a pas abouti : aucun identifiant de fichier n’a été renvoyé, rien n’a été enregistré`},richText:{format:`Format : {{format}}`,basicEditorHint:`Éditeur de texte enrichi (basique)`,placeholder:`Écrivez quelque chose…`},options:{empty:`Aucune option disponible`,selectFirst:`Sélectionnez d’abord {{fields}}`},objectRef:{loading:`Chargement des objets…`,placeholder:`Sélectionner un objet`,search:`Rechercher des objets…`,empty:`Aucun objet trouvé`},recipient:{selectTypeFirst:`Sélectionnez d'abord un type de destinataire.`,loading:`Chargement…`,search:`Rechercher…`,empty:`Aucune correspondance`,select:`Sélectionner un destinataire`,selectUser:`Sélectionner un utilisateur`,selectTeam:`Sélectionner une équipe`,selectBusinessUnit:`Sélectionner une unité opérationnelle`,selectPosition:`Sélectionner un poste`,selectUnitAndSubordinates:`Sélectionner une unité opérationnelle`,selectField:`Sélectionner un champ utilisateur`,noUserFields:`Cet objet n'a aucun champ utilisateur`,fieldNotUserTyped:`{{name}} — pas un champ utilisateur`},filterCondition:{selectObjectFirst:`Sélectionnez d'abord un objet.`,noCriteria:`Aucun critère — cette règle ne partage rien`,criteriaRequired:`Ajoutez au moins une condition. Une règle sans critères partagerait tous les enregistrements ; elle ne peut donc pas être enregistrée.`,invalidJson:`JSON invalide — la règle ne correspondra à aucun enregistrement tant qu'elle n'est pas corrigée.`,jsonOnly:`Ce critère ne peut être modifié qu'en JSON`,editAsJson:`Modifier en JSON`,useVisualBuilder:`Utiliser le constructeur visuel`},object:{invalidJson:`JSON invalide`},location:{refusedFormat:`Non enregistré : saisissez une paire latitude, longitude (exemple : 30.2741, 120.1551).`,refusedRange:`Non enregistré : {{detail}}`,latitude:`latitude`,longitude:`longitude`,refusedResidueOne:`Non enregistré : {{name}} « {{text}} » n'est pas un nombre. Saisissez des décimales simples (exemple : 30.2741, 120.1551).`,refusedResidue:`Non enregistré : {{name}} « {{text}} » et {{otherName}} « {{otherText}} » ne sont pas des nombres. Saisissez des décimales simples (exemple : 30.2741, 120.1551).`},date:{impossibleDay:`La valeur enregistrée « {{value}} » n’est pas une date réelle. Choisissez une date pour la remplacer.`},dateTime:{impossibleDay:`La valeur enregistrée « {{value}} » n’est pas une date réelle. Choisissez une date et une heure pour la remplacer.`},number:{badInput:`Non enregistré : le texte de ce champ n'est pas un nombre. Saisissez une décimale simple (exemple : {{example}}).`},tags:{placeholder:`Saisissez puis appuyez sur Entrée pour ajouter…`},address:{street:`Adresse (rue)`,city:`Ville`,state:`État / Province`,postalCode:`Code postal`,country:`Pays`},textarea:{characterCount:`Nombre de caractères : {{count}} sur {{max}}`,charactersRemaining:`Caractères restants : {{count}}`},grid:{addLine:`Ajouter une ligne`,noItems:`Aucun élément`,noItemsAddHint:`Aucun élément pour l'instant — cliquez sur « {{label}} » pour commencer.`,optionalColumns:`Colonnes facultatives`,computed:`Calculé`,openRow:`Ouvrir la ligne`,duplicateRow:`Dupliquer la ligne`,removeRow:`Supprimer la ligne`}},table:{rowsPerPage:`Lignes par page`,showing:`Affichage de {{from}} à {{to}} sur {{total}}`,noRows:`Aucune ligne à afficher`,sortAsc:`Tri croissant`,sortDesc:`Tri décroissant`,filterColumn:`Filtrer {{column}}`,columns:`Colonnes`,exportCSV:`Exporter en CSV`,exportExcel:`Exporter en Excel`,selectRow:`Sélectionner la ligne`,selectAllRows:`Sélectionner toutes les lignes`,expandRow:`Développer la ligne`,collapseRow:`Réduire la ligne`,hideColumn:`Masquer la colonne`,freezeColumn:`Figer la colonne`,unfreezeColumn:`Libérer la colonne`,pageInfo:`Page {{current}} sur {{total}}`,totalRecords:`{{count}} au total`,noResults:`Aucun résultat`,noResultsHint:`Essayez d'ajuster vos filtres ou vos termes de recherche.`,cancelAll:`Tout annuler`,saveAll:`Tout enregistrer ({{count}})`,addRecord:`Ajouter un enregistrement`,open:`Ouvrir`,search:`Rechercher…`,modified:`{{count}} ligne(s) modifiée(s)`,saveFailed:`Échec de l’enregistrement`,selected:`{{count}} sélectionné(s)`,edit:`Modifier`,delete:`Supprimer`},grid:{bulkSelected:`{{count}} sélectionné(s)`,bulkSelectedAllMatches:`{{count}} sélectionné(s) (tous les résultats)`,bulkClear:`Effacer`,bulkAllOnPage:`Les {{count}} éléments de cette page sont sélectionnés.`,bulkSelectAllMatching:`Sélectionner les {{count}} correspondances`,bulkAllMatchingSelected:`Les {{count}} enregistrements correspondants sont tous sélectionnés.`,bulk:{confirmDefault:`Ceci s'appliquera à {{count}} enregistrement(s).`,overLimit:`La sélection ({{count}}) dépasse la limite de l'action ({{limit}}). Réduisez la sélection pour continuer.`,affectedRecords:`Enregistrements concernés ({{count}}) :`,skippedIneligible:`{{count}} des enregistrements sélectionnés ne sont pas éligibles à cette action et seront ignorés.`,rowFallback:`Ligne {{index}}`,andMore:`… et {{count}} de plus`,processed:`{{count}} / {{total}} traités`,processedFailed:` · {{count}} en échec`,undonePrefix:`Annulé — `,succeeded:`Réussis {{count}} / {{total}}`,resultFailed:` · Échecs {{count}}`,retry:`Réessayer`,downloadErrorCsv:`Télécharger le CSV d'erreurs`,cancel:`Annuler`,back:`Retour`,next:`Suivant`,run:`Exécuter`,running:`Exécution…`,undo:`Annuler`,undoing:`Annulation…`,done:`Terminé`,loading:`Chargement…`},actions:`Actions`,edit:`Modifier`,delete:`Supprimer`,export:`Exporter`,exportAs:`Exporter en {{format}}`,loading:`Chargement de la grille…`,errorLoading:`Erreur de chargement de la grille`,pullToRefresh:`Tirer pour actualiser`,refreshing:`Actualisation…`,openRecord:`Ouvrir l'enregistrement`,rowHeight:`Hauteur de ligne : {{mode}}`,openMenu:`Ouvrir le menu`,empty:`Vide`,yes:`Oui`,no:`Non`,systemFields:`Système`,grouping:{needsHeaderQuery:`Cette vue est groupée, mais sa source de données n'implémente pas queryGroupHeaders : les groupes ne peuvent donc pas être comptés. Supprimez le regroupement pour afficher les enregistrements.`,needsWholeRows:`Le regroupement a besoin de tous les enregistrements, mais cette grille n'en a reçu qu'une page : les groupes ne peuvent donc pas être comptés. Fournissez tous les enregistrements, ou laissez la grille les charger depuis une source de données qui implémente queryGroupHeaders.`},summary:{pattern:`{{label}} : {{value}}`,count:`Nombre`,countEmpty:`Vides`,countFilled:`Remplis`,countUnique:`Uniques`,percentEmpty:`Vides`,percentFilled:`Remplis`,sum:`Somme`,avg:`Moyenne`,min:`Min`,max:`Max`},toolbar:{densityMode:`Densité`,densityCompact:`Compact`,densityComfortable:`Normal`,densitySpacious:`Spacieux`,densityCycleHint:`{{label}} (cliquer pour changer)`,densityCycleShortHint:`Cliquer pour changer`},import:{downloadTemplate:`Télécharger le modèle`,downloadTemplateHint:`Obtenez un CSV avec les bonnes colonnes (les champs obligatoires sont marqués d'un *).`,templateFileName:`{{object}}-import-template`,autoMatched:`Associé automatiquement`,autoMatchedSummary:`{{count}} colonne(s) associée(s) automatiquement — vérifiez et ajustez ci-dessous.`,confidence:{high:`Confiance élevée`,medium:`Confiance moyenne`,low:`Confiance faible`},asyncQueued:`En file d'attente — préparation de l'import…`,asyncProcessing:`Import de {{processed}} lignes sur {{total}}… {{progress}} %`,asyncLargeHint:`Ce fichier est volumineux, il sera donc importé en arrière-plan.`,largeSampleNotice:`Aperçu des {{shown}} premières lignes sur {{total}}.`,cancelImport:`Annuler l'import`,importCancelled:`Import annulé`,resultsTruncated:`Affichage des {{count}} premiers résultats de lignes (sur {{total}}).`,createdCount:`{{count}} créé(s)`,updatedCount:`{{count}} mis à jour`,downloadFailed:`Télécharger les lignes en échec`,options:`Options d'import`,writeMode:`Lorsqu'une ligne correspond à un enregistrement existant`,writeModeOpt:{insert:`Toujours créer`,update:`Mettre à jour l'existant (ignorer sans correspondance)`,upsert:`Mettre à jour si correspondance, sinon créer`},matchFields:`Correspondance sur`,matchFieldsPlaceholder:`Choisir le ou les champs de correspondance…`,matchFieldsHint:`Les lignes sont rapprochées des enregistrements existants via ces champs.`,needMatchFields:`Sélectionnez au moins un champ de correspondance.`,matchOnlyField:`(correspondance seule)`,optCreateOptions:`Conserver les valeurs d'option inconnues`,optRunAutomations:`Exécuter les automatisations et déclencheurs`,optTreatHistorical:`Importer comme données historiques`,optTreatHistoricalHint:`(importer les enregistrements terminés tels quels — ignorer les contrôles de la machine à états et conserver leurs horodatages et auteurs d'origine au lieu d'horodater maintenant)`,optSkipBlankKey:`Ignorer les lignes dont la valeur de correspondance est vide`,optBackground:`Importer en arrière-plan`,optBackgroundHint:`(s'exécute comme une tâche annulable)`,validate:`Valider les données`,validating:`Validation…`,validateHint:`Vérifier chaque ligne auprès du serveur avant l'import.`,validatePassed:`Les {{ok}} lignes sont toutes valides.`,validateFailed:`{{ok}} valides, {{errors}} en erreur.`,errorRowPrefix:`Ligne {{row}} : `,referenceNotFound:`Aucun enregistrement correspondant à « {{value}} »`,referenceAmbiguous:`« {{value}} » correspond à plusieurs enregistrements — utilisez une valeur unique ou l'identifiant de l'enregistrement`,invalidBoolean:`« {{value}} » n'est pas une valeur vrai/faux valide`,invalidNumber:`« {{value}} » n'est pas un nombre valide`,invalidDate:`« {{value}} » n'est pas une date valide`,invalidOption:`« {{value}} » ne fait pas partie des options autorisées`,requiredValue:`Ce champ est obligatoire`,matchAmbiguous:`Correspond à plusieurs enregistrements existants — utilisez une valeur unique ou l'identifiant de l'enregistrement`,history:`Historique`,historyBack:`Retour à l'import`,historyDescription:`Imports récents pour cet objet.`,historyHint:`Tâches d'import en arrière-plan, les plus récentes d'abord.`,historyRefresh:`Actualiser`,historyLoading:`Chargement…`,historyEmpty:`Aucun import pour l'instant.`,historyUnsupported:`L'historique des imports n'est pas disponible pour cette source de données.`,historyColStatus:`Statut`,historyColRows:`Lignes`,historyColResult:`Résultat`,historyColTime:`Quand`,errorCount:`{{count}} erreurs`,undoImport:`Annuler l'import`,undoing:`Annulation…`,undoConfirm:`Annuler cet import ? Les enregistrements créés seront supprimés et les enregistrements mis à jour seront rétablis à leurs valeurs précédentes.`,reverted:`Annulé`,jobStatus:{pending:`En attente`,running:`En cours`,succeeded:`Réussi`,failed:`Échec`,cancelled:`Annulé`},legacyReferenceBlocked:`Import bloqué : {{fields}} sont des champs de relation qui nécessitent la route d'import côté serveur pour convertir les noms en identifiants d'enregistrement, et cette connexion ne la prend pas en charge. Les importer en texte brut corromprait les données. Mettez à jour le backend/client, ou retirez l'association de ces colonnes et importez-les séparément.`,missingRequiredHint:`Impossible de continuer — champs obligatoires non associés : {{fields}}. Ajoutez une colonne correspondante à votre fichier, ou revenez en arrière et téléversez-en un qui la contient.`,legacyFallbackNotice:`Importé via un mode de compatibilité : cette connexion ne prend pas en charge la route d'import côté serveur, les valeurs ont donc été enregistrées comme texte sans conversion de type côté serveur. Mettez à jour le backend/client pour un import complet (conversion de type et résolution des relations).`,title:`Importer {{object}}`,notAllowed:`Cet objet n'est pas ouvert à l'import.`,stepUpload:`Télécharger`,stepMapping:`Correspondance`,stepPreview:`Aperçu`,uploadDescription:`Téléchargez un fichier CSV ou Excel, ou collez depuis un tableur pour commencer.`,mappingDescription:`Faites correspondre les colonnes aux champs de l'objet.`,previewDescription:`Vérifiez les données avant d'importer.`,dragDrop:`Glissez-déposez un fichier CSV ou Excel ici, ou cliquez pour parcourir`,browseFiles:`Parcourir les fichiers`,parsing:`Analyse…`,pasteHint:`ou collez (Ctrl/⌘+V) des lignes copiées depuis Excel ou Google Sheets`,legacyXls:`Les anciens fichiers .xls ne sont pas pris en charge — veuillez les réenregistrer au format .xlsx.`,unsupportedFile:`Type de fichier non pris en charge. Utilisez CSV, TSV ou Excel (.xlsx).`,parseFailed:`Impossible de lire ce fichier. Veuillez vérifier le format et réessayer.`,fileNeedsHeader:`Le fichier doit avoir une ligne d'en-tête et au moins une ligne de données.`,mappingTemplate:`Modèle de correspondance :`,chooseTemplate:`Choisir un modèle…`,noSavedTemplates:`Aucun modèle enregistré`,noneOption:`— Aucun —`,saveCurrent:`Enregistrer le modèle actuel`,templateName:`Nom du modèle`,save:`Enregistrer`,deleteTemplate:`Supprimer le modèle`,savedMapping:`Correspondance enregistrée :`,chooseSavedMapping:`Choisir une correspondance enregistrée…`,manualMapping:`— Faire correspondre les colonnes manuellement —`,transform:`Transformation`,savedMappingHint:`La correspondance « {{name}} » applique le renommage + les transformations + la conversion de type côté serveur. La correspondance des colonnes est en lecture seule.`,savedMappingPreviewNote:`L'aperçu affiche vos colonnes source ; à l'import, la correspondance « {{name}} » applique le renommage, les transformations et la conversion de type côté serveur.`,csvColumn:`Colonne`,mapsTo:`Correspond à`,typeMismatch:`Ressemble à {{type}}`,type:{number:`Nombre`,boolean:`Booléen`,date:`Date`,datetime:`Date et heure`,text:`Texte`},status:`Statut`,skipColumn:`Ignorer la colonne`,skip:`— Ignorer —`,mapped:`Mappé`,skipped:`Ignoré`,rowsWithErrors:`{{count}} ligne(s) avec des erreurs`,rowsCorrected:`{{count}} ligne(s) corrigée(s)`,clickToFix:`— cliquez sur une cellule mise en surbrillance pour modifier en ligne.`,showingRows:`Affichage de {{shown}} sur {{total}} lignes`,importing:`Importation… {{progress}}%`,importComplete:`Importation terminée`,imported:`{{count}} importé(s)`,skippedCount:`{{count}} ignoré(s)`,moreErrors:`…et {{count}} erreur(s) de plus`,cancel:`Annuler`,back:`Retour`,next:`Suivant`,close:`Fermer`,importNRows:`Importer {{count}} lignes`,importingProgress:`Importation…`,requiredMark:`*`,required:`Obligatoire`,invalidType:`{{type}} invalide`}},calendar:{today:`Aujourd'hui`,month:`Mois`,week:`Semaine`,day:`Jour`,allDay:`Toute la journée`,newEvent:`Nouvel événement`,moreEvents:`+{{count}} de plus`,unscheduled:`Non planifié ({{count}})`,loading:`Chargement du calendrier…`,loadError:`Erreur : {{message}}`,configRequired:`Configuration du calendrier requise. Veuillez indiquer startDateField, la seule clé obligatoire du calendrier ; le titre de l'événement se résout sans titleField.`,configRequiredHint:`Elle appartient au bloc calendar de la vue. Une page d'interface n'a pas d'emplacement de calendrier propre : pointez son sourceView vers une vue qui en déclare un.`,eventDetails:`Détails de l'événement`,pullToRefresh:`Tirer pour actualiser`,refreshing:`Actualisation…`,onDate:`Le {{date}}`,eventTitle:`Titre`,eventTitlePlaceholder:`De quoi s'agit-il ?`,creating:`Création…`,titleRequired:`Le titre est obligatoire`,a11y:{region:`Calendrier`,grid:`Grille du calendrier`,goToToday:`Aller à aujourd'hui`,previousPeriod:`Période précédente`,nextPeriod:`Période suivante`,currentDate:`Date actuelle : {{date}}`,dayCell:`{{date}}, {{count}} événements`,dayCell_one:`{{date}}, {{count}} événement`,dayCell_other:`{{date}}, {{count}} événements`,resizeEventEnd:`Modifier la fin de l'événement`,resizeEventEndHint:`Faites glisser pour modifier la date de fin`,resizeStart:`Modifier le début`,resizeEnd:`Modifier la fin`}},list:{firstRunTitle:`Rien pour l'instant`,firstRunMessage:`Créez votre premier enregistrement pour commencer.`,noMatches:`Aucun enregistrement correspondant`,noMatchesMessage:`Aucun enregistrement ne correspond à vos filtres ou à votre recherche. Essayez de les ajuster ou de les effacer.`,loadErrorTitle:`Impossible de charger les enregistrements`,loadErrorMessage:`Une erreur s'est produite lors du chargement de ces données. Vérifiez votre connexion et réessayez.`,loadErrorForbiddenTitle:`Accès refusé`,loadErrorForbiddenMessage:`Vous n'avez pas la permission de consulter ces enregistrements. Contactez votre administrateur si vous pensez devoir y accéder.`,loadErrorUnauthorizedTitle:`Connexion requise`,loadErrorUnauthorizedMessage:`Votre session a expiré ou vous êtes déconnecté. Reconnectez-vous pour consulter ces enregistrements.`,loadErrorRejectedTitle:`La requête de cette vue a été rejetée`,loadErrorRejectedMessage:`Le serveur n’a pas pu traiter le filtre ou les options de requête de cette vue. Effacer les filtres suffit généralement ; si la vue est enregistrée ainsi, un administrateur doit la corriger.`,loadErrorApiDisabledTitle:`Cet objet n’est pas disponible via l’API`,loadErrorApiDisabledMessage:`Cette page ne peut pas charger ses enregistrements car l’objet n’est pas exposé via l’API. Il s’agit d’un paramètre de l’objet lui-même, pas d’une autorisation : un administrateur doit activer l’accès API pour que cette page fonctionne.`,retry:`Réessayer`,managedBy:{system:{title:`Rien pour l'instant`,message:`Les entrées apparaissent automatiquement lorsque leur action source s'exécute (par ex. Soumettre pour approbation, Partager, Inviter). Déclenchez l'une d'elles sur un enregistrement source pour créer une ligne.`},appendOnly:{title:`Aucun événement enregistré`,message:`Ceci est un journal d'audit immuable. Les lignes sont écrites par la plateforme lorsque des événements surviennent — vous pouvez exporter l'historique mais pas créer d'entrées ici.`},betterAuth:{title:`Aucun enregistrement d'identité`,message:`Ces enregistrements sont créés par le fournisseur d'authentification — via la connexion, le provisionnement et les flux de sécurité — et non ajoutés à la main ici.`},betterAuthUser:{title:`Aucun utilisateur pour l'instant`,message:`Les comptes utilisateur sont provisionnés par le fournisseur d'authentification et ne sont pas créés ici. Invitez vos collègues dans votre organisation : ils apparaissent automatiquement à leur première connexion (provisionnement SSO à la volée). Les utilisateurs finaux arrivent lorsqu'ils s'inscrivent via votre application.`},betterAuthTeam:{title:`Aucune équipe pour l'instant`,message:`Les équipes regroupent les membres au sein d'une organisation. Créez-en une avec « Créer une équipe », ou elles arrivent via les flux de provisionnement d'organisation et SSO de votre fournisseur d'authentification.`}},refresh:`Actualiser`,loading:`Chargement des enregistrements…`,recordCount:`{{count}} enregistrements`,recordCountOne:`{{count}} enregistrement`,addRecord:`Ajouter un enregistrement`,tabs:`Onglets`,allRecords:`Tous les enregistrements`,search:`Rechercher`,filter:`Filtrer`,filterRecords:`Filtrer les enregistrements`,sort:`Trier`,sortRecords:`Trier les enregistrements`,sortByIdSuffix:`(par ID)`,sortRelationalHint:`Les colonnes qui pointent vers un autre enregistrement ne sont pas listées : elles ne peuvent être triées que par l'ID stocké, et non par le nom affiché dans la cellule. Pour trier par ce nom, dénormalisez-le sur cet objet sous la forme d'un champ stocké, écrit à chaque modification de la source, puis triez sur ce champ. Pas un champ de formule : il est virtuel, aucune colonne n'est stockée pour lui et le serveur refuse de trier dessus.`,resetSortToDefault:`Réinitialiser au tri par défaut de la vue`,group:`Grouper`,groupBy:`Grouper par`,export:`Exporter`,exportAs:`Exporter en {{format}}`,color:`Couleur`,rowColor:`Couleur de ligne`,colorByField:`Colorer par champ`,clear:`Effacer`,none:`Aucun`,hideFields:`Masquer les champs`,noItems:`Aucun élément trouvé`,noItemsMessage:`Il n'y a aucun enregistrement à afficher. Essayez d'ajuster les filtres ou d'ajouter de nouvelles données.`,showAll:`Tout afficher`,pullToRefresh:`Tirer pour actualiser`,refreshing:`Actualisation…`,share:`Partager`,print:`Imprimer`,hideFieldsTitle:`Masquer les champs`,dataLimitReached:`Les {{limit}} premiers enregistrements sont affichés. Il peut y avoir plus de données disponibles.`,viewSettings:`Paramètres de vue`,viewSettingsHint:`Regroupement, couleur, densité et champs visibles. S’applique à tous les utilisateurs de cette vue.`,addGroup:`Ajouter un champ de groupe`,collapsedByDefault:`Réduit par défaut`,removeGroup:`Supprimer`,inlineEditShort:`Édition en ligne`,inlineEditLabel:`Modifier les enregistrements en ligne (cliquez sur une cellule pour modifier)`,recordEditingTitle:`Modification des enregistrements`},managedByBadge:{systemWritable:{short:`Schéma de la plateforme`,title:`Défini par la plateforme, modifiable par l'administrateur`,body:`Le schéma de cet objet est défini par la plateforme, mais ses lignes vous appartiennent : vous pouvez les créer et les modifier ici. Qui peut écrire est déterminé par l'administration déléguée et la sécurité au niveau des enregistrements, pas par ce badge.`},config:{short:`Config admin`,title:`Configuration administrateur`,body:`Ces lignes définissent le comportement de la plateforme à l'exécution. Créez-les ici ; les données d'exécution produites résident dans une table séparée.`},system:{short:`Géré par le système`,title:`Géré par la plateforme`,body:`Les lignes sont créées automatiquement lorsque des actions s'exécutent sur l'enregistrement source. La liste est une surface de supervision en lecture seule — les actions par ligne (Approuver, Rappeler, Renvoyer, …) se trouvent sur chaque ligne.`},appendOnly:{short:`Lecture seule · Journal d'audit`,title:`Historique en lecture seule`,body:`Journal d'audit immuable. Les lignes ne peuvent pas être créées, modifiées ni supprimées depuis l'interface : la plateforme les écrit lors des événements. Utilisez Exporter pour les télécharger à des fins de conformité.`},betterAuth:{short:`Identité`,title:`Géré par le fournisseur d'identité`,body:`Le schéma de cet objet appartient à {{provider}}. Les modifications directes contournent le hachage des mots de passe, la validation des sessions, les contrôles à deux facteurs et les hooks d'audit. Gérez ces enregistrements via les flux de connexion, d'invitation et de sécurité de votre fournisseur d'authentification.`}},kanban:{uncategorized:`Non catégorisé`,columns:`colonnes`,addCard:`Ajouter une carte`,addColumn:`Ajouter une colonne`,moveCard:`Déplacer la carte`,deleteCard:`Supprimer la carte`,deleteColumn:`Supprimer la colonne`,noCards:`Aucune carte`,cardTitlePlaceholder:`Saisir le titre de la carte…`,requiredFieldsTitle:`Compléter les champs obligatoires`,requiredFieldsDescription:`Ce déplacement rend les champs ci-dessous obligatoires. Remplissez-les pour continuer.`},timeline:{bucket:{overdue:`En retard`,today:`Aujourd'hui`,tomorrow:`Demain`,thisWeek:`Cette semaine`,nextWeek:`Semaine prochaine`,later:`Plus tard`,noDate:`Sans date`,unassigned:`Non attribué`},scale:{week:`Semaine {{n}}`,quarter:`T{{quarter}} {{year}}`},gantt:{rowLabel:`Éléments`,unusableRange:{malformedDate:`Plage de dates du gantt inutilisable — {{path}} vaut {{value}}, ce qui n'est pas une date valide. Toutes les dates du gantt doivent être analysables : startDate et endDate de chaque élément de ligne, ainsi que tout minDate / maxDate fixé sur le schéma.`,malformedRow:`Lignes du gantt inutilisables — {{path}} vaut {{value}}, ce qui n'est pas la forme d'une ligne. Un gantt lit items comme une liste de lignes, chaque ligne comme un objet avec un label et ses propres items, et les items de chaque ligne comme une liste de barres ; un null, un nombre, une chaîne ou un objet simple à l'un de ces emplacements ne peut pas être dessiné.`,inverted:`Plage de dates du gantt inutilisable — minDate {{minDate}} est postérieur à maxDate {{maxDate}}. Un minDate / maxDate fixé l'emporte sur la plage calculée à partir des lignes ; cet axe n'a donc aucune colonne et aucune barre ne peut y être placée. Intervertissez les deux valeurs.`}},unsupported:{objectBoundGantt:`Variante « gantt » non prise en charge — une timeline liée à un objet affiche les variantes de flux ({{variants}}). Gantt nécessite des lignes littérales, chacune avec ses propres items imbriqués ; l'axe gantt (scale) est donc sans effet ici.`},unconfigured:{noDateAxis:`Axe de dates requis pour la timeline — cette vue ne déclare aucun champ de date, et une timeline liée à un objet n'en invente pas. Déclarez l'un de : {{fields}}. Le premier est l'orthographe de la spec, les autres sont des alias hérités.`}},gantt:{viewMode:{day:`Jour`,week:`Semaine`,month:`Mois`,quarter:`Trimestre`,year:`Année`},row:{expand:`Développer`,collapse:`Réduire`,open:`Ouvrir les détails`},aria:{taskList:`Liste des tâches`,refreshing:`Actualisation…`},tooltip:{days:`j`},menu:{view:`Afficher les détails`,edit:`Modifier en ligne`,delete:`Supprimer`,addPredecessor:`Ajouter un prédécesseur…`,addSuccessor:`Ajouter un successeur…`,removeDependency:`Supprimer la dépendance`,noCandidates:`Aucune tâche disponible`,searchTasks:`Rechercher des tâches…`},delete:{title:`Supprimer cette tâche ?`,body:`« {{title}} » sera définitivement supprimée. Cette action est irréversible.`,cancel:`Annuler`,confirm:`Supprimer`,deleting:`Suppression…`},drawer:{fallbackTitle:`Détails de la tâche`},linkType:{fs:`Fin → Début`,ss:`Début → Début`,ff:`Fin → Fin`,sf:`Début → Fin`},linkEnd:{start:`Début`,end:`Fin`},link:{rejected:{self:`Une tâche ne peut pas dépendre d’elle-même.`,locked:`Cette ligne est verrouillée et ne peut pas recevoir de nouvelle dépendance.`,group:`Une ligne récapitulative ne peut pas recevoir de dépendance — reliez plutôt l’une de ses tâches.`,cycle:`Ce lien créerait une dépendance circulaire.`}},conflict:{title:`Conflit de planning`,body:`Ce déplacement entre en conflit avec les contraintes de dépendance. Replanifier automatiquement {{count}} tâche(s) concernée(s) ?`,confirm:`Replanifier automatiquement`,cancel:`Laisser tel quel`},autoScheduleDlg:{title:`Planification automatique`,body:`Décaler {{count}} tâche(s) plus tard pour respecter les liens de dépendance ?`,skipped:`{{count}} tâche(s) verrouillée(s) violent aussi les liens et ont été ignorées.`,confirm:`Appliquer`,cancel:`Annuler`,none:`Toutes les dépendances sont respectées — rien à replanifier.`},resource:{header:`Ressource`,peak:`Pic`,over:`surchargée`,empty:`Aucune tâche à affecter.`},quickFilter:{all:`Tous`,clear:`Effacer les filtres`,empty:`Aucune option`,resultSummary:`Affichage de {shown} / {total} tâches`},readOnly:`Lecture seule`,readOnlyHint:`L'édition est désactivée pour cette vue.`,lockedHint:`Aucune autorisation de modification`,writeFailed:`Échec de l'enregistrement — la modification a été annulée`,column:{taskName:`Nom de la tâche`,start:`Début`,end:`Fin`},toolbar:{thisWeek:`Cette semaine`,thisMonth:`Ce mois-ci`,viewMode:`Granularité de la chronologie`,enterFullscreen:`Passer en plein écran`,exitFullscreen:`Quitter le plein écran`,criticalPath:`Mettre en évidence le chemin critique`,autoSchedule:`Planifier automatiquement les dépendances`,exportPng:`Exporter en PNG`,exportPdf:`Exporter en PDF`,saveLayout:`Enregistrer la disposition`,refresh:`Actualiser`,undo:`Annuler`,redo:`Rétablir`,prevPeriod:`Période précédente`,nextPeriod:`Période suivante`,zoomIn:`Zoom avant`,zoomOut:`Zoom arrière`,jumpToToday:`Aller à aujourd'hui`,today:`Aujourd'hui`,showTaskList:`Afficher la liste des tâches`,hideTaskList:`Masquer la liste des tâches`}},view:{editViewConfig:`Modifier la configuration de la vue`,rename:`Renommer`,duplicateView:`Dupliquer la vue`,shareView:`Partager la vue`,setAsDefault:`Définir par défaut`,pinView:`Épingler la vue`,unpinView:`Désépingler la vue`,changeViewType:`Changer le type de vue`,deleteView:`Supprimer la vue`,addView:`Ajouter une vue`,unsavedChanges:`Modifications non enregistrées`,saveAsView:`Enregistrer comme vue`,moreViews:`{{count}} de plus`,activeFilters:`Filtres actifs`,activeSort:`Tri actif`,manageViews:`Gérer les vues`,manageAllViews:`Gérer toutes les vues…`,manageViewsDescription:`Réorganiser, renommer, épingler ou supprimer toutes les vues de cet objet.`,searchViews:`Rechercher des vues`,addNewView:`Ajouter une nouvelle vue`,done:`Terminé`,noViewsFound:`Aucune vue ne correspond à votre recherche.`,dragToReorder:`Glisser pour réorganiser`,defaultView:`Vue par défaut`,defaultBadge:`par défaut`,tabActionsFor:`Actions de vue pour {{name}}`,readonlyAriaLabel:`Vue en lecture seule`,readonlyTooltip:`Vue système — définie dans le code, en lecture seule.`,malformedFilter:`Le filtre de cette vue est incorrect, aucun enregistrement n’est donc affiché : la condition {{subject}} ne peut pas être appliquée.`},designer:{undo:`Annuler`,redo:`Rétablir`},detail:{editInlineHint:`Double-cliquez pour modifier`,systemActor:`Système`,unknownUser:`Inconnu`,created:`Créé`,updated:`Mis à jour`,back:`Retour`,edit:`Modifier`,editInline:`Modifier`,save:`Enregistrer`,saveChanges:`Enregistrer les modifications`,editFieldsInline:`Modifier les champs`,share:`Partager`,duplicate:`Dupliquer`,export:`Exporter`,viewHistory:`Voir l'historique`,delete:`Supprimer`,moreActions:`Plus d'actions`,addReaction:`Ajouter une réaction`,pageHeaderActions:`Actions de l'en-tête de page`,emojiPicker:`Sélecteur d'émojis`,reactionCount:`{{emoji}} {{count}} réactions`,reactionCountOne:`{{emoji}} {{count}} réaction`,recordDetail:`Détail de l'enregistrement`,recordDetailWithLabel:`Détail — {{label}}`,openAsFullPage:`Ouvrir en pleine page`,recordDetailOverlay:`Panneau de détail de l'enregistrement pour {{title}}.`,addToFavorites:`Ajouter aux favoris`,removeFromFavorites:`Retirer des favoris`,previousRecord:`Enregistrement précédent`,nextRecord:`Enregistrement suivant`,recordOf:`{{current}} sur {{total}}`,recordNotFound:`Enregistrement introuvable`,recordNotFoundDescription:`L'enregistrement que vous recherchez n'existe pas ou a peut-être été supprimé.`,goBack:`Retour`,details:`Détails`,related:`Associés`,relatedRecords:`{{count}} enregistrements`,relatedRecordOne:`{{count}} enregistrement`,noRelatedRecords:`Aucun enregistrement associé trouvé`,loading:`Chargement…`,copyToClipboard:`Copier dans le presse-papiers`,copied:`Copié !`,deleteConfirmation:`Êtes-vous sûr de vouloir supprimer cet enregistrement ?`,deleted:`Enregistrement supprimé`,editRecord:`Modifier l'enregistrement`,viewAll:`Tout afficher`,new:`Nouveau`,add:`Ajouter`,comments:`Commentaires`,searchComments:`Rechercher des commentaires…`,addCommentPlaceholder:`Ajouter un commentaire… (Ctrl+Entrée pour envoyer)`,noMatchingComments:`Aucun commentaire correspondant`,noCommentsYet:`Aucun commentaire pour le moment`,pinned:`Épinglé`,pin:`Épingler`,unpin:`Désépingler`,justNow:`à l'instant`,minutesAgo:`il y a {{count}} min`,hoursAgo:`il y a {{count}} h`,daysAgo:`il y a {{count}} j`,dropFilesToUpload:`Déposez les fichiers ici ou cliquez pour télécharger`,attachmentCount:`{{count}} pièce jointe`,attachmentCountPlural:`{{count}} pièces jointes`,removeAttachment:`Supprimer la pièce jointe`,attachments:`Pièces jointes`,uploadAttachment:`Téléverser`,loadingAttachments:`Chargement des pièces jointes…`,noAttachments:`Aucune pièce jointe pour le moment. Téléversez un fichier pour commencer.`,downloadAttachment:`Télécharger`,deleteAttachment:`Supprimer la pièce jointe`,attachmentDeleteDenied:`Seule la personne qui l'a téléversée ou une personne pouvant modifier cet enregistrement peut supprimer cette pièce jointe.`,attachmentParentAccessDenied:`Vous n'avez pas accès pour joindre des fichiers à cet enregistrement.`,attachmentDownloadDenied:`Vous n'avez pas accès pour télécharger cette pièce jointe.`,attachmentAuthRequired:`Veuillez vous connecter pour télécharger cette pièce jointe.`,attachmentPermissionDenied:`Vous n'avez pas la permission de faire cela.`,attachmentsAccessDenied:`Vous n'avez pas accès à ces pièces jointes.`,attachmentsLoadFailed:`Impossible de charger les pièces jointes de cet enregistrement.`,attachmentsApiUnavailable:`La liste des pièces jointes n'est pas disponible sur cet objet.`,retryLoadAttachments:`Réessayer`,discussion:`Discussion`,showDiscussion:`Afficher la discussion ({{count}})`,hideDiscussion:`Masquer la discussion`,bold:`Gras (Ctrl+B)`,italic:`Italique (Ctrl+I)`,listFormat:`Liste`,inlineCode:`Code en ligne`,mentionSomeone:`Mentionner quelqu'un`,preview:`Aperçu`,submitComment:`Envoyer (Ctrl+Entrée)`,sendComment:`Envoyer`,writeComment:`Écrire un commentaire…`,subscribedTooltip:`Abonné — cliquez pour vous désabonner`,unsubscribedTooltip:`S'abonner aux notifications`,noRecords:`Aucun enregistrement`,allActivity:`Toute l'activité`,commentsOnly:`Commentaires uniquement`,fieldChangesFilter:`Modifications de champs`,tasksOnly:`Tâches uniquement`,leaveCommentPlaceholder:`Laisser un commentaire… (Ctrl+Entrée pour envoyer)`,noActivity:`Aucune activité enregistrée`,activityAccessDenied:`Vous n'avez pas l'autorisation de consulter l'activité de cet enregistrement.`,commentsAccessDenied:`Vous n'avez pas l'autorisation de consulter les commentaires de cet enregistrement.`,allFilter:`Tout`,createsFilter:`Créations`,deletesFilter:`Suppressions`,statusChangesFilter:`Changements de statut`,activityEmptyValue:`(vide)`,activityFieldChanged:`{{field}} modifié de « {{old}} » à « {{new}} »`,activityCreated:`A créé cet enregistrement`,activityDeleted:`A supprimé cet enregistrement`,activityStatusChanged:`A changé le statut en « {{value}} »`,activityUpdated:`A mis à jour l'enregistrement`,loadMore:`Charger plus`,edited:`(modifié)`,via:`via {{source}}`,viewSource:`Voir la source`,replyCount:`{{count}} réponse`,replyCountPlural:`{{count}} réponses`,replyPlaceholder:`Répondre…`,filterActivity:`Filtrer l'activité`,openDiscussion:`Ouvrir le panneau de discussion`,closeDiscussion:`Fermer le panneau de discussion`,subscribeAriaLabel:`S'abonner aux notifications`,unsubscribeAriaLabel:`Se désabonner des notifications`,clearSearch:`Effacer la recherche`,saving:`Enregistrement…`,lockedByApproval:`Verrouillé pour approbation`,lockedTooltip:`Cet enregistrement a une demande d'approbation en attente ; la modification est verrouillée`,writeStrippedTitle:`Enregistré — mais certains champs n'ont pas été appliqués`,writeStrippedReadonly:`En lecture seule, donc non appliqué : {{fields}}`,writeStrippedByState:`Non modifiable dans l'état actuel de cet enregistrement, donc non appliqué : {{fields}}`,writeStrippedPrimaryKey:`L'identifiant de l'enregistrement ne peut pas être modifié lors d'un enregistrement, donc non appliqué : {{fields}}`,writeStrippedComputed:`Calculé par le serveur à partir d'une formule, donc la valeur envoyée n'a pas été appliquée : {{fields}}`,writeStrippedUnknownReason:`Non appliqué par le serveur : {{fields}}`,approvalPendingEditable:`En approbation · modifiable`,approvalPendingTooltip:`Cet enregistrement a une demande d'approbation en attente ; cette étape autorise encore la modification`,approvalProgress:`Approbations — {{got}} sur {{need}}`,approvalProgressGroups:`Validation — {{got}} sur {{need}} groupes`,approvalProgressLabel:`Progression de l'approbation`,approvalsPanelTitle:`Approbations`,cancelApproval:`Annuler l'approbation`,cancelApprovalInFlight:`Annulation…`,cancelApprovalTooltip:`Annuler la demande d'approbation en attente pour déverrouiller l'enregistrement`,cancelApprovalTooltipUnlocked:`Annuler la demande d'approbation en attente`,cancelApprovalFailed:`Échec de l'annulation de l'approbation`,cancelApprovalUnavailable:`L'annulation des approbations n'est pas prise en charge par cette source de données`,pathLabel:`Parcours de l'enregistrement`,pathStageCompleted:`{{stage}}, terminée`,pathStageCurrent:`{{stage}}, étape actuelle`,pathStageUpcoming:`{{stage}}, à venir`,pathStageLostCurrent:`{{stage}}, perdue, étape actuelle`,pathStageLostUpcoming:`{{stage}}, perdue, non atteinte`,pathStageWonUpcoming:`{{stage}}, étape objectif, non atteinte`,linkCopied:`Lien copié dans le presse-papiers`,commentFailed:`Votre commentaire n'a pas été publié. Rien n'a été enregistré — veuillez réessayer.`,reactionFailed:`Votre réaction n'a pas été enregistrée. Veuillez réessayer.`,linkCopyFailed:`Impossible de copier le lien`,cancel:`Annuler`,cancelEdit:`Abandonner les modifications`,sectionMoreDetails:`Plus de détails`,concurrentUpdateTitle:`Cet enregistrement a été modifié par quelqu'un d'autre`,concurrentUpdateDescription:`Un autre utilisateur a enregistré une version plus récente de {{field}} pendant votre modification. Choisissez comment résoudre le conflit.`,concurrentUpdateYourEdit:`Votre modification`,concurrentUpdateCurrentValue:`Valeur actuelle`,concurrentUpdateUpdatedBy:`Mis à jour par {{name}}`,concurrentUpdateUpdatedAt:`Mis à jour le {{when}}`,concurrentUpdateReload:`Charger la version actuelle`,concurrentUpdateOverwrite:`Écraser quand même`,concurrentUpdateCancel:`Annuler`,concurrentUpdateRecordLabel:`cet enregistrement`,openInNewTab:`Ouvrir dans un nouvel onglet`,activity:`Activité`,history:`Historique`,historyEmpty:`Aucun historique pour le moment`,editRow:`Modifier`,deleteRow:`Supprimer`,deleteRowConfirmation:`Supprimer cet enregistrement ?`,deleteRowTitle:`Supprimer l'enregistrement`,actions:`Actions`,previousPage:`Précédent`,nextPage:`Suivant`,pageOf:`Page {{current}} sur {{total}}`,sortBy:`Trier par`,filterPlaceholder:`Filtrer…`,highlightFields:`Champs clés`,highlightsLabel:`Champs clés de l'enregistrement`,createdBy:`Créé par`,updatedBy:`Mis à jour par`,showEmptyRelated:`+ {{count}} vides`,showEmptyRelated_one:`+ {{count}} vide`,showEmptyRelated_other:`+ {{count}} vides`,copyEmail:`Copier l'e-mail`,copyPhone:`Copier le téléphone`,copyRecordId:`Copier l'ID`,showEmptyFields:`Afficher {{count}} champs vides`,hideEmptyFields:`Masquer les champs vides`,noValue:`Aucune valeur`,unresolvedReference:`Référence non résolue : {{value}} n'a pas été résolue en utilisateur`,unresolvedLookupReference:`Référence non résolue : {{value}} n'a pas été résolue en enregistrement sur cet écran`,repeaterItemCount:`{{count}} éléments`,repeaterItemCount_one:`{{count}} élément`,repeaterItemCount_other:`{{count}} éléments`,fileCount:`{{count}} fichiers`,fileCount_one:`{{count}} fichier`,fileCount_other:`{{count}} fichiers`},chart:{loading:`Chargement du graphique…`,refreshing:`Actualisation…`,nullCategory:`(Non défini)`,scatterOneMeasure:`Un nuage de points trace une seule mesure. Ne conservez qu’une série :`,unconfigured:{noCategoryAxis:`Axe de catégories requis — un graphique lié à un objet n’en invente pas. Déclarez l’un des suivants :`}},dashboard:{empty:{title:`Pas encore de données`,message:`Ce widget s'est chargé correctement, mais la requête n'a encore renvoyé aucun enregistrement.`,sourceLabel:`Source de données :`},loading:`Chargement…`,refreshing:`Actualisation…`,refreshAll:`Tout actualiser`,refreshDashboard:`Actualiser le tableau de bord`,pickMeasures:`Choisissez des mesures (valeurs) pour ce widget de dataset.`,datasetUnsupported:`Cette source de données ne prend pas en charge les requêtes de dataset.`,widgetForbiddenTitle:`Accès refusé`,widgetForbiddenMessage:`Vous n’avez pas l’autorisation de voir les données de ce widget.`,details:`Détails`,exportCsv:`Exporter en CSV`,openInList:`Ouvrir dans la liste`,filters:{label:`Filtres du tableau de bord`,dateRange:`Plage de dates`,allTime:`Depuis toujours`,custom:`Personnalisé…`,all:`Tout`,reset:`Réinitialiser`,range:{today:`Aujourd'hui`,yesterday:`Hier`,this_week:`Cette semaine`,last_week:`La semaine dernière`,this_month:`Ce mois-ci`,last_month:`Le mois dernier`,this_quarter:`Ce trimestre`,last_quarter:`Le trimestre dernier`,this_year:`Cette année`,last_year:`L'année dernière`,last_7_days:`7 derniers jours`,last_30_days:`30 derniers jours`,last_90_days:`90 derniers jours`}},addWidget:`Ajouter un widget`,editLayout:`Modifier la mise en page`,saveLayout:`Enregistrer la mise en page`,resetLayout:`Réinitialiser la mise en page`,total:`Total`,noDataSourceFor:`Aucune source de données pour`,config:{breadcrumb:{dashboard:`Tableau de bord`,configuration:`Configuration`,widget:`Widget`,chart:`Graphique`,table:`Tableau`,pivotTable:`Tableau croisé`},section:{general:`Général`,layout:`Disposition`,data:`Données`,dataBinding:`Liaison de données`,appearance:`Apparence`},field:{title:`Titre`,description:`Description`,columns:`Colonnes`,gap:`Espacement`,rowHeight:`Hauteur de ligne (px)`,autoRefresh:`Actualisation automatique`,showDescription:`Afficher la description`,theme:`Thème`,widgetType:`Type de widget`,colorVariant:`Variante de couleur`,dataset:`Jeu de données`,dimensions:`Dimensions`,values:`Valeurs`,width:`Largeur (colonnes)`,height:`Hauteur (lignes)`},placeholder:{dashboardTitle:`Titre du tableau de bord`,dashboardDescription:`Résumé court affiché sous le titre`,widgetTitle:`Titre du widget`,widgetDescription:`Description du widget`,datasetName:`Nom du jeu de données`,selectDataset:`Sélectionner un jeu de données…`,searchDatasets:`Rechercher des jeux de données…`,addDimension:`Ajouter une dimension…`,addMeasure:`Ajouter une mesure…`,searchMembers:`Rechercher…`},empty:{datasets:`Aucun jeu de données trouvé.`,dimensions:`Aucune dimension sélectionnée.`,measures:`Aucune mesure sélectionnée.`,nothingToAdd:`Plus rien à ajouter.`},help:{dataset:`Le jeu de données de la couche sémantique auquel ce widget est lié (ADR-0021).`,dimensions:`Grouper/diviser les valeurs selon ces dimensions du jeu de données.`,dimensionsPivot:`Champs de groupement/division. La dernière dimension se déploie en colonnes.`,values:`Mesures du jeu de données à afficher (au moins une).`},action:{add:`Ajouter`,remove:`Supprimer {{name}}`},refresh:{off:`Désactivé`,every30s:`Toutes les 30 s`,every1m:`Toutes les minutes`,every5m:`Toutes les 5 min`,every15m:`Toutes les 15 min`,every30m:`Toutes les 30 min`,every1h:`Toutes les heures`},themeOption:{light:`Clair`,dark:`Sombre`,auto:`Automatique`},widgetType:{metric:`Indicateur`,bar:`Graphique à barres`,horizontalBar:`Barres horizontales`,line:`Graphique en courbes`,pie:`Graphique circulaire`,donut:`Graphique en anneau`,area:`Graphique en aires`,scatter:`Nuage de points`,funnel:`Entonnoir`,table:`Tableau`,pivot:`Tableau croisé`},color:{default:`Par défaut`,blue:`Bleu`,teal:`Sarcelle`,orange:`Orange`,purple:`Violet`,success:`Succès`,warning:`Avertissement`,danger:`Danger`}},trend:{vsLastQuarter:`vs. trimestre dernier`,vsLastMonth:`vs. mois dernier`,vsLastWeek:`vs. semaine dernière`,vsLastYear:`vs. année dernière`,vsYesterday:`vs. hier`,vsPreviousPeriod:`vs. période précédente`}},appDesigner:{createApp:`Créer une application`,editApp:`Modifier l'application`,basicInfo:`Informations de base`,objects:`Objets`,navigation:`Navigation`,branding:`Identité visuelle`,appName:`Nom de l'app`,appTitle:`Titre`,appDescription:`Description`,appIcon:`Icône`,template:`Modèle`,selectObjects:`Sélectionner des objets`,searchObjects:`Rechercher des objets…`,selectAll:`Tout sélectionner`,deselectAll:`Tout désélectionner`,navBuilder:`Constructeur de navigation`,addGroup:`Ajouter un groupe`,addUrl:`Ajouter une URL`,addSeparator:`Ajouter un séparateur`,logoUrl:`URL du logo`,primaryColor:`Couleur principale`,faviconUrl:`URL du favicon`,preview:`Aperçu`,complete:`Terminer`,snakeCaseHint:`Doit être en snake_case (ex. my_app)`,modeEdit:`Modifier`,modePreview:`Aperçu`,modeCode:`Code`,addWidget:`Ajouter un widget`,widgetProperties:`Propriétés du widget`,dataSource:`Source de données`,valueField:`Champ de valeur`,aggregate:`Agrégat`,colorVariant:`Variante de couleur`,addComponent:`Ajouter un composant`,componentProperties:`Propriétés du composant`,viewType:`Type de vue`,fields:`Champs`,toolbar:`Barre d'outils`,showSearch:`Afficher la recherche`,showFilters:`Afficher les filtres`,showSort:`Afficher le tri`,appearance:`Apparence`,rowHeight:`Hauteur de ligne`,livePreview:`Aperçu en direct`,stepBasicDesc:`Nom, titre et icône`,stepObjectsDesc:`Sélectionner les objets métier`,stepNavigationDesc:`Construire l'arbre de navigation`,stepBrandingDesc:`Logo, couleurs et favicon`,noObjectsFound:`Aucun objet trouvé.`,noNavItemsHint:`Pas encore d'éléments de navigation. Sélectionnez des objets à l'étape précédente ou ajoutez-en manuellement.`,separatorLabel:`— Séparateur —`,newGroup:`Nouveau groupe`,newLink:`Nouveau lien`,saveDraft:`Enregistrer le brouillon`,cancelConfirmTitle:`Abandonner les modifications ?`,cancelConfirmMessage:`Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir annuler ?`,confirmDiscard:`Abandonner`,keepEditing:`Continuer à éditer`,navNoItems:`Aucun élément de navigation. Cliquez sur les boutons ci-dessus pour ajouter des éléments.`,navNoPreviewItems:`Aucun élément`,navLivePreview:`Aperçu en direct`,navCollapseGroup:`Réduire le groupe`,navExpandGroup:`Développer le groupe`,navAddChild:`Ajouter un enfant`,navMoveUp:`Monter`,navMoveDown:`Descendre`,navRemove:`Supprimer`,navObjectPage:`Page d'objet`,navDashboard:`Tableau de bord`,navPage:`Page`,navReport:`Rapport`,navGroup:`Groupe`,navUrl:`URL`,navSeparator:`Séparateur`,navTypeObject:`Objet`,navTypeDashboard:`Tableau de bord`,navTypePage:`Page`,navTypeReport:`Rapport`,navTypeUrl:`URL`,navTypeGroup:`Groupe`,navTypeSeparator:`Séparateur`,navTypeAction:`Action`,navTypeComponent:`Composant`,navTypeDoc:`Document`,navEditIcon:`Modifier l'icône`,navToggleVisible:`Basculer la visibilité`,navHidden:`Masqué`,navExportSchema:`Exporter JSON`,navImportSchema:`Importer JSON`,navExportSuccess:`Schéma de navigation exporté`,navImportSuccess:`Schéma de navigation importé`,navImportError:`JSON de navigation invalide`,navIconPlaceholder:`Nom de l'icône (ex. Users)`,dashboardEditor:`Éditeur de tableau de bord`,noWidgets:`Aucun widget. Cliquez sur un bouton ci-dessus pour en ajouter un.`,widgetLayoutSize:`Taille de la disposition`,widgetWidth:`Largeur`,widgetHeight:`Hauteur`,dashboardPreview:`Aperçu du tableau de bord`,noWidgetsPreview:`Aucun widget à prévisualiser`,pageCanvasEditor:`Éditeur de canevas de page`,emptyPage:`Page vide. Cliquez sur un bouton ci-dessus pour ajouter un composant.`,pagePreview:`Aperçu de la page`,noComponentsPreview:`Aucun composant à prévisualiser`,modePage:`Page`,modeDashboard:`Tableau de bord`,undo:`Annuler`,redo:`Rétablir`,brandingEditor:`Éditeur d'identité`,brandingExport:`Exporter JSON`,brandingImport:`Importer JSON`,brandingPreview:`Aperçu`,brandingSampleButton:`Bouton exemple`,brandingSampleText:`Voici l'apparence de votre thème de marque.`,colorPalette:`Palette de couleurs`,fontFamily:`Famille de polices`,fontDefault:`Par défaut (système)`,modeLight:`Clair`,modeDark:`Sombre`,mobilePreview:`Aperçu mobile`,objectManager:{title:`Gestionnaire d'objets`,addObject:`Nouvel objet`,searchPlaceholder:`Rechercher des objets…`,noObjects:`Aucun objet trouvé.`,objectName:`Nom API`,objectLabel:`Étiquette`,pluralLabel:`Étiquette plurielle`,icon:`Icône`,selectIcon:`Sélectionner une icône…`,group:`Groupe`,noGroup:`Aucun groupe`,sortOrder:`Ordre de tri`,enabled:`Activé`,relationships:`Relations`,systemBadge:`Système`,fieldCount:`{{count}} champs`,ungrouped:`Sans groupe`,deleteConfirmTitle:`Supprimer l'objet ?`,deleteConfirmMessage:`Cela supprimera définitivement l'objet et tous ses champs. Cette action est irréversible.`},fieldDesigner:{title:`Concepteur de champs`,addField:`Nouveau champ`,searchPlaceholder:`Rechercher des champs…`,allTypes:`Tous les types`,noFields:`Aucun champ trouvé.`,fieldName:`Nom API`,fieldLabel:`Étiquette`,fieldType:`Type`,fieldGroup:`Groupe`,description:`Description`,required:`Obligatoire`,unique:`Unique`,readOnly:`Lecture seule`,hidden:`Masqué`,externalId:`ID externe`,trackHistory:`Suivre l'historique`,defaultValue:`Valeur par défaut`,placeholder:`Espace réservé`,referenceTo:`Référence à`,options:`Options`,addOption:`Ajouter une option`,validationRules:`Règles de validation`,addRule:`Ajouter une règle`,systemBadge:`Système`,ungrouped:`Général`,deleteConfirmTitle:`Supprimer le champ ?`,deleteConfirmMessage:`Le champ sera définitivement supprimé. Les données existantes dans ce champ seront perdues.`,basicSection:`Basique`,typeSpecificSection:`Paramètres de type`,advancedSection:`Avancé`,typeCategory:{text:`Texte`,number:`Nombre`,date:`Date et heure`,choice:`Choix`,relation:`Relation`,advanced:`Avancé`}}},console:{studio:{backToHome:`Retour à l'accueil`},saveAdvisoryTitle:`Enregistré — le contrôle de création a signalé {{count}} recommandation(s)`,publishAdvisoryTitle:`Publié — le contrôle de création a signalé {{count}} recommandation(s)`,importMappingsUnavailable:`Impossible de charger les mappages d’import enregistrés pour {{object}}`,importMappingsRefused:`Le serveur a refusé cette requête : cette liste est donc vide parce qu’elle n’a pas pu être lue, et non parce que rien n’est enregistré. Reconnectez-vous ou demandez un accès à un administrateur.`,importMappingsUnreadable:`Cette liste est vide parce qu’elle n’a pas pu être lue, et non parce que rien n’est enregistré. Réessayez, et signalez le problème s’il persiste.`,savedViewsUnavailable:`Impossible de charger les vues enregistrées pour {{object}}`,savedViewsRefused:`Le serveur a refusé cette requête : cette liste est donc vide parce qu’elle n’a pas pu être lue, et non parce que cet objet n’aurait aucune vue enregistrée. Reconnectez-vous ou demandez un accès à un administrateur.`,savedViewsUnreadable:`Cette liste est vide parce qu’elle n’a pas pu être lue, et non parce que cet objet n’aurait aucune vue enregistrée. Réessayez, et signalez le problème s’il persiste.`,settingsHub:{title:`Paramètres`,subtitle:`Configurez votre espace de travail, vos intégrations et vos indicateurs de fonctionnalité.`,loadError:`Échec du chargement des paramètres`,empty:`Aucun paramètre enregistré. Les plugins peuvent enregistrer des manifestes de paramètres via le SettingsService.`,settingsCount:`{{n}} paramètres`,beta:`Bêta`,categories:{Workspace:`Espace de travail`,Communication:`Communication`,Security:`Sécurité`,Infrastructure:`Infrastructure`,Beta:`Bêta`,Other:`Autre`}},objectData:{badge:`Données`,description:`Extrait de données défini par l'URL — non lié à une vue enregistrée.`,filteredBy:`Filtré par`,removeFilter:`Supprimer le filtre {{field}}`,saveAsView:`Enregistrer comme vue`,noAccessTitle:`Accès refusé`,noAccess:`Vous n'avez pas l'autorisation de consulter ces données.`},identityImport:{policyTitle:`Configuration de connexion pour les utilisateurs importés`,policy:{auto:`Automatique (recommandé)`,invite:`Envoyer des invitations`,temporary:`Mots de passe temporaires`,none:`Aucun mot de passe (identité seulement)`},policyHint:{auto:`Les utilisateurs joignables reçoivent une invitation (e-mail ou SMS) ; ceux que nous ne pouvons pas joindre reçoivent un mot de passe à usage unique, affiché UNE SEULE FOIS sur l'écran de résultat. Fonctionne avec ou sans service e-mail/SMS.`,invite:`Chaque utilisateur créé reçoit un e-mail de définition de mot de passe (ou un SMS d'invitation pour les lignes avec téléphone uniquement). Nécessite un service e-mail/SMS configuré — les lignes injoignables échouent.`,temporary:`Pour les déploiements sans e-mail/SMS : chaque utilisateur créé reçoit un mot de passe à usage unique, affiché UNE SEULE FOIS sur l'écran de résultat. La première connexion impose un changement.`,none:`Les utilisateurs se connectent d'abord avec un code OTP par téléphone, un lien magique ou un lien de réinitialisation, puis définissent leur propre mot de passe.`},passwordsNote:`Mots de passe temporaires — affichés une seule fois, jamais stockés. Enregistrez-les maintenant ; chaque utilisateur doit changer le sien à la première connexion.`,passwordsMore:`Autres entrées omises — utilisez le téléchargement.`,passwordsDownload:`Télécharger le CSV`},ai:{pendingDrafts:{count:`{{count}} modification(s) ne sont pas encore publiée(s) — les utilisateurs ne peuvent pas les voir.`,publish:`Publier`,published:`Toutes les modifications en attente sont actives.`,failed:`Échec de la publication.`,publishedWithFindings:`Publié, mais les contrôles d'exécution ont signalé des problèmes : {{detail}}`},usage:{title:`Utilisation de l'IA`,meterBuild:`Créer`,meterAsk:`Demander`,statusOk:`Il en reste beaucoup`,statusLow:`Bientôt épuisé`,statusFull:`Limite atteinte`,resetsDaily:`Réinitialisation ce soir`,resetsMonthly:`Réinitialisation au prochain cycle`,resetsWeeklyDays:`Réinitialisation dans {{count}} jours`,resetsWeeklyDays_one:`Réinitialisation dans {{count}} jour`,resetsWeeklyDays_other:`Réinitialisation dans {{count}} jours`,resetsWeeklyHours:`Réinitialisation dans {{count}} heures`,resetsWeeklyHours_one:`Réinitialisation dans {{count}} heure`,resetsWeeklyHours_other:`Réinitialisation dans {{count}} heures`,ctaUpgrade:`Passer à l'offre supérieure pour continuer`,ctaTopUp:`Ajouter des crédits pour continuer`,ariaLabel:`Utilisation de l'IA : {{status}}`,breakdownTitle:`Utilisé jusqu'à présent`},workspaceTitle:`Espace de travail IA`,workspaceSubtitle:`Posez des questions, inspectez et reprenez vos conversations`,openChats:`Ouvrir les discussions`,chats:`Discussions`,chatsDescription:`Parcourez et gérez les conversations avec l'IA.`,share:`Partager`,shareTitle:`Partager cette conversation`,shareDisabledTitle:`Commencez à discuter pour activer le partage`,buildDoctor:`Diagnostic de build`,buildDoctorTitle:`Diagnostic de build — qu'est-ce qui a réellement été appliqué ?`,buildDoctorDisabledTitle:`Envoyez d'abord un message`,buildDoctorDrawer:{description:`Ce que l'agent a annoncé face à ce qui est réellement en ligne. Diagnostic en lecture seule.`,reconciling:`Rapprochement…`,notAvailable:`Non disponible — la conversation est introuvable ou vous n'êtes pas autorisé.`,untitled:`(sans titre)`,summary:`{{turns}} tour(s) · {{messages}} msg · {{tokens}} jetons · {{seconds}} s LLM`,allLive:`Les {{count}} modification(s) tentée(s) sont en ligne — rien ne s'est perdu.`,discrepancies:`{{count}} écart(s) — ce que le chat a annoncé ne correspond pas à ce qui est en ligne.`,orphanedTitle:`Proposé mais jamais appliqué`,orphanedHint:`Une carte de confirmation proposée par l'agent qu'aucun tour ultérieur n'a appliquée — la modification s'est perdue silencieusement.`,missingTitle:`Annoncé mais absent`,missingHint:`Un résultat d'outil indiquait une application, mais l'artefact n'est pas en ligne dans sys_metadata.`,toolErrorsTitle:`Erreurs d'outils`,toolErrorsHint:`Appels d'outils ayant renvoyé une erreur pendant le build.`,verifyTitle:`Vérification du build (verify_build)`,yourApp:`Votre application :`,noIssues:`0 problème`,issueCount:`{{count}} problème(s)`,platformNoise:`{{count}} constat(s) sys_* de la plateforme masqué(s)`,pendingActions:`Actions en attente`,timeline:`Chronologie ({{count}})`},newChat:`Nouveau`,searchChats:`Rechercher des discussions…`,noChatsYet:`Aucune discussion pour l'instant`,noChatsDescription:`Démarrez une nouvelle conversation pour la voir ici.`,noMatchingChats:`Aucune discussion correspondante.`,newConversation:`Nouvelle conversation`,renameConversation:`Renommer la conversation`,deleteConversation:`Supprimer la conversation`,saveRename:`Enregistrer le nom`,cancelRename:`Annuler le changement de nom`,loadingHistory:`Chargement de l'historique de la conversation…`,conversationReady:`Conversation prête`,preparingConversation:`Préparation d'une nouvelle conversation`,offlineDemoMode:`Mode démo hors ligne — liste des agents indisponible`,sendFailedRateLimited:`Vous envoyez des messages trop rapidement. Votre message est conservé ci-dessous — patientez un instant puis réessayez.`,sendFailedGeneric:`Impossible d'envoyer votre message. Il est conservé ci-dessous — veuillez réessayer.`,askAgent:`Demander à {{agent}}…`,assistant:`Assistant`,liveCanvas:`Aperçu en direct — {{app}} (brouillon)`,liveCanvasUnlisted:`Application en direct — {{app}} (non répertoriée jusqu'à publication)`,loadingAgents:`Chargement des agents…`,askAnything:`Posez n'importe quelle question…`,emptyTitle:`Démarrer une conversation`,emptyDescription:`Posez n'importe quelle question — l'assistant a accès au contexte de votre application actuelle.`,switchAssistant:`Changer d'assistant`,chooseAgent:`Choisir un assistant…`,empty:{build:{title:`Créer avec l'IA`,description:`Décrivez une application en langage courant — je rédige les objets, les écrans et les données d'exemple, puis vous vérifiez et publiez.`},ask:{title:`Interroger vos données`,description:`Posez des questions sur vos enregistrements — comptages, listes et synthèses sur les données auxquelles vous avez accès.`},editApp:{title:`Modification de « {{app}} »`,titleGeneric:`Modifier cette application`,description:`Que souhaitez-vous changer ? Je modifie cette application sur place — ajouter un champ, un objet, une vue ou un tableau de bord, ou ajuster l'existant.`}},clearConversation:`Effacer`,sendHint:`pour envoyer`,agentActivity:`Activité de l'agent`,toolCompleted:`Terminé`,toolRunning:`En cours`,toolAwaitingApproval:`En attente d'approbation`,toolFailed:`Échec`,toolDetailsHidden:`Les entrées des outils et les résultats bruts sont masqués dans cette vue.`,copy:`Copier`,copied:`Copié`,regenerate:`Régénérer`,model:`Modèle`,submit:`Envoyer`,uploadFiles:`Téléverser des fichiers`,stopResponse:`Arrêter la réponse`,trace:`trace`,viewTrace:`Afficher la trace`,nextSteps:`Et ensuite`,publishDrafts:`Publier`,publishOk:`Publié — les objets sont maintenant actifs.`,seedWarn:`Publié, mais certaines données d'exemple n'ont pas pu être chargées.`,openBuiltApp:`Ouvrir l'application`,designBuiltApp:`Concevoir dans Studio`,previewDraft:`Aperçu`,previewApp:`Aperçu de l'application`,resizeSplit:`Redimensionner la discussion et l'aperçu`,hideChats:`Masquer les discussions`,showChats:`Afficher les discussions`,planTitle:`Plan proposé`,planQuestions:`Confirmer avant de créer`,planAssumptions:`Hypothèses`,planApproveHint:`Répondez pour approuver ou ajuster ce plan.`,planApprove:`Créer`,planAdjust:`Ajuster`,justNow:`à l'instant`,minutesAgo:`il y a {{count}} min`,hoursAgo:`il y a {{count}} h`,daysAgo:`il y a {{count}} j`,agentLabels:{ask:`Demander`,build:`Créer`,dataChat:`Assistant`,metadataAssistant:`Assistant de métadonnées`},suggestions:{dataChat:{userCount:`Combien d'utilisateurs y a-t-il dans le système ? Liste leurs adresses e-mail.`,recentRecords:`Liste les 5 enregistrements créés le plus récemment.`,recordCounts:`Compte les enregistrements pour chaque objet.`},metadataAssistant:{buildCrm:`Crée un CRM commercial — clients, contacts et affaires avec un champ étape, plus un tableau de bord qui totalise le montant par étape.`,buildApp:`Crée un suivi de projets — projets, tâches avec responsables et échéances, un tableau par statut et un calendrier des échéances.`,buildFlow:`Conçois un service d'assistance — tickets avec des champs priorité et statut, un tableau par statut et des liens vers les clients.`,buildInventory:`Crée une application de stock — produits, niveaux de stock, fournisseurs et une vue qui filtre les articles sous leur seuil de réapprovisionnement.`,buildRecruiting:`Crée un suivi de candidatures — candidats, postes ouverts, un champ étape d'entretien et un tableau par étape.`},generic:{help:`En quoi peux-tu m'aider ?`,availableObjects:`Liste les objets de données disponibles.`,recentActivity:`Résume mon activité récente.`},editApp:{addField:`Ajoute un champ à l'un des objets.`,addObject:`Ajoute un nouvel objet et relie-le à un objet existant.`,addDashboard:`Ajoute un tableau de bord pour les indicateurs clés.`,addSampleData:`Remplis les objets existants avec des données d'exemple réalistes pour que je puisse présenter l'application.`}},changesTitle:`Confirmer les modifications`,changesConfirmed:`Confirmé`,changesConfirm:`Confirmer`,changesConfirmHint:`Répondez pour confirmer ou ajuster cette modification.`,changesApplying:`Application…`,changesApplied:`Appliqué`,changesDrafted:`Enregistré comme brouillon`,changesFailed:`Non appliqué`,discussing:`Sujet : {{target}}`,changeVerb:{createObject:`Créer un objet`,addField:`Ajouter un champ`,modifyField:`Modifier un champ`,deleteField:`Supprimer un champ`,createMetadata:`Créer`,updateMetadata:`Modifier`,createSeed:`Générer des données d'exemple`,createPackage:`Créer un package d'application`},collapseToDock:`Réduire dans le panneau latéral`,switchApp:`Changer d'application`,switchAppLabel:`Conversations de création par application`,newApp:`Nouvelle application`,connectionWaiting:`En attente du serveur…`,connectionStalled:`Toujours en cours…`,connectionOffline:`Connexion perdue — reconnexion…`,designingPlan:`Conception de votre application…`,designingPlanHint:{data:`Cartographie des données que vous allez suivre…`,objects:`Définition des objets et de leurs champs…`,relations:`Connexion des enregistrements liés…`,lookups:`Configuration des relations et des champs de recherche…`,views:`Planification des écrans et des vues…`,forms:`Mise en page des formulaires et des listes…`,defaults:`Ajout de valeurs par défaut et de validations pertinentes…`,dashboard:`Esquisse d'un tableau de bord pour le suivi…`,review:`Vérification de la cohérence de la structure…`,finalize:`Assemblage du plan…`},planBuilding:`Création…`,planBuilt:`Créé`,planDeferred:`Pas encore créé`,planReady:`Le plan est prêt. Créez-le maintenant, ou dites-moi ce qu'il faut ajuster.`,published:`Publié`,publishFailed:`Échec de la publication`,unavailableTitle:`Assistant IA non disponible`,unavailableDescription:`Cette instance n'a pas d'assistant IA activé. Tout le reste fonctionne normalement.`,unavailableError:`Impossible de joindre le service IA. Il est peut-être temporairement hors ligne — réessayez, ou retournez à l'accueil.`,unavailableRetry:`Réessayer`,unavailableHome:`Retour à l'accueil`,dock:{title:`Assistant`,description:`Discussion avec l'assistant IA`,resize:`Redimensionner la discussion`,collapse:`Réduire la discussion`,maximize:`Ouvrir en pleine page`,open:`Ouvrir l'assistant`},group:{today:`Aujourd'hui`,yesterday:`Hier`,previous7Days:`7 jours précédents`,previous30Days:`30 jours précédents`,older:`Plus anciennes`}},title:`Console ObjectStack`,initializing:`Initialisation de l'application…`,loadingHint:`La configuration d'un nouvel environnement peut prendre quelques instants.`,breadcrumb:{dashboards:`Tableaux de bord`,pages:`Pages`,reports:`Rapports`,system:`Système`,marketplace:`Marketplace`,settings:`Paramètres`,apps:`Applications`,profile:`Profil`,approvals:`Approbations`,aiApprovals:`Approbations IA`,auditLog:`Journal d'audit`},settingsView:{backToHub:`Tous les paramètres`,back:`Retour`,noNamespace:`Aucun espace de noms sélectionné.`,loadError:`Échec du chargement des paramètres`,saved:`Paramètres enregistrés`,saveFailed:`Échec de l'enregistrement`,lockedByEnv:`Verrouillé par l'environnement : {{key}}`,lockedByEnvNoKey:`Verrouillé par l'environnement`,actionSucceeded:`Action réussie`,actionFailed:`Échec de l'action`,discard:`Abandonner`,saveChanges:`Enregistrer les modifications`,unsavedCount:`{{count}} modifications non enregistrées`,unsavedCount_one:`{{count}} modification non enregistrée`,unsavedCount_other:`{{count}} modifications non enregistrées`,cryptoRefusalTitle:`Ce déploiement ne peut pas chiffrer les secrets`,cryptoRefusalSubjectSuffix:`est déclaré chiffré, aucune écriture n'a donc eu lieu.`,cryptoRefusalNoSubject:`La valeur déclarée chiffrée a été refusée, aucune écriture n'a donc eu lieu.`,cryptoRefusalToast:`Impossible de chiffrer les secrets : {{subject}}`,cryptoRefusalToastNoSubject:`Impossible de chiffrer les secrets`},loadingSteps:{connecting:`Connexion à la source de données`,loadingConfig:`Chargement de la configuration`,preparingWorkspace:`Préparation de l'espace de travail`},error:{connectionFailed:`Impossible de se connecter au serveur`,serverUnreachable:`Le serveur {{url}} est inaccessible.`,checkServer:`Veuillez vérifier votre connexion réseau ou que le backend est en cours d’exécution.`,timeout:`Délai de connexion dépassé après 10 secondes.`},actions:{retry:`Réessayer`,retrying:`Nouvelle tentative…`},serverAction:{openingTitle:`Ouverture…`,openingBody:`Ouverture… cela peut prendre un moment.`,popupBlockedTitle:`Fenêtre contextuelle bloquée`,popupBlockedDescription:`Le navigateur a bloqué l'ouverture du nouvel onglet.`,popupBlockedAction:`Ouvrir dans un nouvel onglet`},shortcuts:{title:`Raccourcis clavier`,description:`Référence rapide de tous les raccourcis clavier disponibles.`,groups:{general:`Général`,navigation:`Navigation`,dataViews:`Vues de données`,aiChat:`Assistant IA`,preferences:`Préférences`},openCommandPalette:`Ouvrir la palette de commandes`,showShortcuts:`Afficher les raccourcis clavier`,closeDialog:`Fermer le dialogue / panneau`,toggleSidebar:`Basculer la barre latérale`,focusSearch:`Focus sur la recherche`,createRecord:`Créer un nouvel enregistrement`,refreshData:`Actualiser les données`,editRecord:`Modifier l'enregistrement sélectionné`,newChat:`Nouvelle discussion`,toggleChatsList:`Basculer la liste des discussions`,toggleDarkMode:`Basculer le mode sombre`},commandPalette:{title:`Palette de commandes`,placeholder:`Tapez une commande ou recherchez…`,noResults:`Aucun résultat trouvé.`,objects:`Objets`,dashboards:`Tableaux de bord`,pages:`Pages`,reports:`Rapports`,switchApp:`Changer d'application`,current:`Actuel`,preferences:`Préférences`,lightTheme:`Thème clair`,darkTheme:`Thème sombre`,systemTheme:`Thème système`,actions:`Actions`,openFullSearch:`Ouvrir la page de recherche complète`,createApp:`Créer une nouvelle application`,searching:`Recherche…`,records:`Enregistrements`,recentRecords:`Récemment consultés`},readRate:{ratioTitle:`Volume de lecture inhabituel dans cet environnement`,ratio:`{{ratio}} lignes sont lues pour chaque ligne écrite. La plateforme signale tout ce qui dépasse {{threshold}}. Rien n’est limité ni bloqué ; il s’agit d’un rapport permettant d’examiner le schéma de lecture.`,noWritesTitle:`Lectures sans aucune écriture dans cet environnement`,noWrites:`Des lignes sont lues alors qu’aucune n’est écrite, de sorte que le taux de lecture n’a aucune limite supérieure. C’est la mesure la plus grave. La plateforme signale tout ce qui dépasse {{threshold}}. Rien n’est limité ni bloqué ; il s’agit d’un rapport permettant d’examiner le schéma de lecture.`},storageUsage:{warningTitle:`Le stockage est presque plein`,warning:`{{used}} Mo sur {{limit}} Mo utilisés. Les envois et les importations sont suspendus dès que le stockage est plein.`,blockedTitle:`Stockage plein : les envois et les importations sont suspendus`,blocked:`{{used}} Mo sur {{limit}} Mo utilisés. Les données existantes ne sont pas modifiées, et la lecture, l'export et la modification d'enregistrements individuels fonctionnent toujours.`,upgrade:`Passer à l'offre supérieure pour continuer`},errors:{somethingWentWrong:`Quelque chose s'est mal passé`,unexpectedError:`Une erreur inattendue est survenue lors du rendu de cette vue.`,tryAgain:`Réessayer`,goHome:`Retour à l'accueil`,errorDetails:`Détails de l'erreur (développement uniquement)`},notFound:{title:`Page introuvable`,description:`L'URL que vous avez suivie ne correspond à aucune vue de cette application.`,back:`Retour`},theme:{toggle:`Changer de thème`,light:`Clair`,dark:`Sombre`,system:`Système`},objectView:{viewTypeTree:`Arborescence`,viewTypeTreeDesc:`Imbriquer les enregistrements auto-référencés en hiérarchie via un champ parent.`,parentField:`Champ parent`,parentFieldHelp:`Le champ pointant vers l'enregistrement parent (même objet) qui définit la hiérarchie. Seuls les champs auto-référencés conviennent.`,viewName:`Nom`,viewNameHelp:`Clé technique (snake_case). Remplie automatiquement à partir du titre — modifiable si vous le souhaitez.`,viewNameRequired:`Saisissez une clé (minuscules, chiffres, tiret bas). Non remplie automatiquement pour les titres non latins.`,viewNameInvalid:`Utilisez des minuscules, des chiffres et des tirets bas ; commencez par une lettre ou un tiret bas.`,systemViewReadonly:`Vue système définie dans le code — en lecture seule.`,cannotEditMetaView:`Cette vue est intégrée et définie dans le code — elle ne peut pas être modifiée.`,viewConfigPermissionDenied:`Les paramètres de vue s’appliquent à tous les utilisateurs de cette vue ; les modifier requiert donc l’autorisation « Gérer les métadonnées ». Demandez à un administrateur d’effectuer ce changement.`,cannotDeleteMetaView:`Cette vue est intégrée et définie dans le code — elle ne peut pas être supprimée.`,expandToPage:`Ouvrir en pleine page`,objectNotFound:`Objet introuvable`,objectNotFoundDescription:`L'objet « {{objectName}} » n'existe pas dans la configuration actuelle.`,objectNotFoundHint:`Vérifiez les paramètres de navigation de votre application ou sélectionnez un autre objet dans la barre latérale.`,filterOrNotSavable:`Ce filtre relie les conditions par OU, ce qu'une vue enregistrée ne peut pas encore stocker. Il s'applique toujours à cette liste — supprimez le groupement OU pour l'enregistrer dans la vue.`,filterNestedNotSavable:`Ce filtre utilise des groupes de conditions imbriqués, qu'une vue enregistrée ne peut pas stocker. Aplatissez-le en une seule liste de conditions pour l'enregistrer dans la vue.`,allRecords:`Tous les enregistrements`,new:`Nouveau`,configureView:`Configurer la vue`,toolbarEnabledCount:`{{count}} sur {{total}} activés`,searchFields:`Rechercher des champs…`,title:`Titre`,viewType:`Type de vue`,recordCount:`{{count}} enregistrements`,recordCountOne:`{{count}} enregistrement`,save:`Enregistrer`,discard:`Annuler`,createView:`Créer une vue`,newView:`Nouvelle vue`,groupByField:`Champ de regroupement`,startDateField:`Champ de date de début`,titleField:`Champ de titre`,latitudeField:`Champ de latitude`,longitudeField:`Champ de longitude`,imageField:`Champ d'image`,selectField:`Sélectionner un champ…`,endDateField:`Champ de date de fin`,import:`Importer`,importTitle:`Importer depuis CSV`,importedToast:`{{count}} ligne(s) importée(s).`,importedWithSkipped:`{{ok}} ligne(s) importée(s) ; {{skipped}} ignorée(s).`,createViewDesc:`Choisissez un type de vue et donnez-lui un nom. Tous les paramètres peuvent être modifiés ensuite.`,cancel:`Annuler`,create:`Créer`,delete:`Supprimer`,deleteViewTitle:`Supprimer la vue`,deleteViewConfirm:`Supprimer la vue "{{name}}" ? Ceci est irréversible.`,bulkDeleteConfirm:`Supprimer {{count}} enregistrements sélectionnés ? Ceci est irréversible.`,duplicateViewName:`Une vue avec ce nom existe déjà.`,viewTypeGrid:`Grille`,viewTypeGridDesc:`Tableau de type tableur d'enregistrements.`,viewTypeKanban:`Kanban`,viewTypeKanbanDesc:`Cartes regroupées en colonnes par un champ de sélection unique.`,viewTypeCalendar:`Calendrier`,viewTypeCalendarDesc:`Enregistrements placés par date dans un calendrier mensuel.`,viewTypeGallery:`Galerie`,viewTypeGalleryDesc:`Grandes cartes d'image depuis un champ de pièce jointe.`,viewTypeTimeline:`Chronologie`,viewTypeTimelineDesc:`Enregistrements le long d'un axe temporel horizontal.`,viewTypeGantt:`Gantt`,viewTypeGanttDesc:`Barres de projet avec début/fin et dépendances.`,viewTypeMap:`Carte`,viewTypeMapDesc:`Marqueurs géographiques depuis des champs latitude/longitude.`,viewTypeChart:`Graphique`,viewTypeChartDesc:`Graphiques à barres/lignes/secteurs agrégés.`,groupByFieldHelp:`Le tableau Kanban regroupe les enregistrements en colonnes selon les valeurs du champ.`,startDateFieldHelp:`Le calendrier place les enregistrements sur la cellule correspondant à cette date.`,ganttStartDateFieldHelp:`Le bord gauche de chaque barre Gantt utilise cette date.`,ganttEndDateFieldHelp:`Le bord droit de chaque barre Gantt utilise cette date.`,timelineDateFieldHelp:`Les enregistrements sont positionnés sur la chronologie selon cette date.`,latitudeFieldHelp:`Champ contenant la latitude (champs géo uniquement).`,longitudeFieldHelp:`Champ contenant la longitude (champs géo uniquement).`,imageFieldHelp:`La couverture de la galerie provient de ce champ image ou pièce jointe.`,selectOption:`Sélectionner…`,noEligibleFieldForType:`Aucun champ éligible de ce type. Ajoutez-en un à l'objet d'abord.`,viewTypeUnavailable:`Cet objet n'a pas de champ pouvant servir de "{{field}}".`,viewTypeUnavailableShort:`Non pris en charge par cet objet.`,chartType:`Type de graphique`,chartTypeHelp:`Détermine comment les données sont rendues.`,chartTypeBar:`Graphique à barres`,chartTypeLine:`Graphique en courbes`,chartTypePie:`Graphique circulaire`,chartTypeArea:`Graphique en aires`,chartTypeScatter:`Nuage de points`,xAxisField:`Champ axe X`,xAxisFieldHelp:`La dimension catégorielle ou temporelle.`,yAxisField:`Champ axe Y`,yAxisFieldHelp:`Le champ numérique à agréger.`,ufTabs:`Onglets`,ufAddField:`+ Ajouter un champ de filtre…`,ufShowAllRecords:`Afficher l'onglet "Tous les enregistrements"`},localeSwitcher:{label:`Langue`},search:`Rechercher…`,nav:{pinItem:`Épingler {{name}}`,unpinItem:`Désépingler {{name}}`,dragToReorder:`Glisser pour réorganiser`,favorites:`Favoris`,launcherLabel:`Lanceur d'applications`,menuLabel:`Navigation de l'application`,menuEmpty:`Cette application n'a aucune entrée de navigation que vous pouvez ouvrir.`}},auth:{setPassword:{title:`Définir un mot de passe de secours`,description:`Vous vous êtes connecté via l'authentification unique. Définissez un mot de passe local afin de pouvoir toujours vous connecter directement à cet environnement si le SSO devenait indisponible.`,email:`E-mail`,newPassword:`Nouveau mot de passe`,confirmPassword:`Confirmer le mot de passe`,submit:`Définir le mot de passe`,submitting:`Enregistrement…`,success:`Mot de passe local défini`,failed:`Impossible de définir le mot de passe`,passwordsMismatch:`Les mots de passe ne correspondent pas`,noSession:`Votre session a expiré.`,backToSignIn:`Se reconnecter`},login:{signingIn:`Connexion en cours…`,ssoHandoff:`Continuer vers {{target}}`,devAdminHint:{title:`Instance de développement`,body:`Connectez-vous avec l'administrateur de développement prédéfini :`,dismiss:`Ignorer`},title:`Connectez-vous à votre compte`,description:`Entrez votre e-mail et votre mot de passe pour continuer`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Mot de passe`,passwordPlaceholder:`Entrez votre mot de passe`,forgotPasswordText:`Mot de passe oublié ?`,submitButton:`Se connecter`,submittingButton:`Connexion en cours…`,noAccountText:`Vous n'avez pas de compte ?`,signUpText:`S'inscrire`,errors:{oauthCallbackFailed:`L'authentification unique n'a pas pu aboutir — le lien de connexion a expiré ou a déjà été utilisé. Veuillez réessayer.`,invalidCredentials:`E-mail ou mot de passe invalide. Veuillez réessayer.`,emailNotVerified:`Veuillez vérifier votre adresse e-mail avant de vous connecter.`},emailOrPhoneLabel:`E-mail ou numéro de téléphone`,emailOrPhonePlaceholder:`name@example.com ou +1 555 000 0000`,phoneLabel:`Numéro de téléphone`,phonePlaceholder:`+1 555 000 0000`,otpCodeLabel:`Code de vérification`,otpCodePlaceholder:`Code à 6 chiffres`,sendOtpButton:`Obtenir un code`,resendOtpCountdownText:`Renvoyer dans {seconds} s`,usePhoneOtpText:`Se connecter avec un code de vérification`,usePasswordSignInText:`Se connecter avec un mot de passe à la place`,socialButton:`Continuer avec {provider}`,orText:`ou continuer avec l'e-mail`},register:{title:`Créer un compte`,description:`Entrez vos informations pour commencer`,nameLabel:`Nom`,namePlaceholder:`Jean Dupont`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Mot de passe`,passwordPlaceholder:`Créer un mot de passe (min. 8 caractères)`,confirmPasswordLabel:`Confirmer le mot de passe`,confirmPasswordPlaceholder:`Confirmez votre mot de passe`,passwordMismatchError:`Les mots de passe ne correspondent pas`,passwordTooShortError:`Le mot de passe doit contenir au moins 8 caractères`,submitButton:`Créer un compte`,submittingButton:`Création du compte…`,hasAccountText:`Vous avez déjà un compte ?`,signInText:`Se connecter`,socialButton:`S'inscrire avec {provider}`,orText:`ou continuer avec l'e-mail`,errors:{userExists:`Un compte avec cet e-mail existe déjà. Essayez de vous connecter.`,selfRegistrationClosed:`L'inscription libre n'est pas ouverte dans cet environnement. Demandez une invitation à un administrateur.`,emailDomainNotAllowed:`Le domaine de cet e-mail n'est pas autorisé à s'inscrire ici. Utilisez l'e-mail de votre organisation ou demandez une invitation à un administrateur.`},verifyInbox:{title:`Vérifiez votre boîte de réception`,description:`Nous avons envoyé un lien de vérification à {{email}}. Cliquez sur le lien pour activer votre compte.`,resend:`Renvoyer l'e-mail de vérification`,resending:`Envoi…`,resent:`E-mail de vérification envoyé.`,backToSignIn:`Retour à la connexion`}},forgotPassword:{title:`Réinitialiser votre mot de passe`,description:`Entrez votre adresse e-mail et nous vous enverrons un lien pour réinitialiser votre mot de passe`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,submitButton:`Envoyer le lien de réinitialisation`,submittingButton:`Envoi en cours…`,successTitle:`Vérifiez vos e-mails`,successDescription:`Nous avons envoyé un lien de réinitialisation du mot de passe à {email}. Veuillez vérifier votre boîte de réception.`,backToSignInText:`Retour à la connexion`,rememberPasswordText:`Vous vous souvenez de votre mot de passe ?`,signInText:`Se connecter`,phoneLabel:`Numéro de téléphone`,phonePlaceholder:`+1 555 000 0000`,otpCodeLabel:`Code de vérification`,otpCodePlaceholder:`Code à 6 chiffres`,sendOtpButton:`Obtenir un code`,resendOtpCountdownText:`Renvoyer dans {seconds} s`,newPasswordLabel:`Nouveau mot de passe`,newPasswordPlaceholder:`Entrez un nouveau mot de passe`,resetButton:`Réinitialiser le mot de passe`,usePhoneResetText:`Réinitialiser par code SMS`,useEmailResetText:`Réinitialiser par e-mail à la place`,phoneSuccessTitle:`Mot de passe réinitialisé`,phoneSuccessDescription:`Votre mot de passe a été réinitialisé. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.`},resetPassword:{title:`Définir un nouveau mot de passe`,description:`Choisissez un mot de passe que vous n'avez pas utilisé auparavant.`,newPassword:`Nouveau mot de passe`,confirmPassword:`Confirmer le mot de passe`,submit:`Mettre à jour le mot de passe`,submitting:`Mise à jour…`,success:`Mot de passe mis à jour`,failed:`Échec de la réinitialisation`,invalidToken:`Ce lien de réinitialisation est invalide ou a expiré.`,missingToken:`Le lien de réinitialisation est manquant ou a expiré`,passwordsMismatch:`Les mots de passe ne correspondent pas`,requestNewLink:`Demander un nouveau lien`},verifyEmail:{title:`Vérifier l'adresse e-mail`,description:`Nous avons envoyé un lien de vérification à votre adresse e-mail. Cliquez sur le lien pour vérifier votre compte.`,sentTo:`Envoyé à :`,verifyingTitle:`Vérification…`,verifyingDescription:`Nous vérifions votre e-mail. Veuillez patienter.`,successTitle:`E-mail vérifié`,successDescription:`Votre e-mail a été vérifié. Vous pouvez maintenant vous connecter.`,errorTitle:`Échec de la vérification`,errorDescription:`La vérification a échoué. Veuillez demander un nouveau lien.`,missingToken:`Il manque un token dans le lien de vérification.`,emailMissing:`Adresse e-mail manquante`,resendButton:`Renvoyer l'e-mail de vérification`,resending:`Envoi…`,resent:`E-mail envoyé ! Vérifiez votre boîte de réception`,resentSuccess:`E-mail de vérification envoyé !`,resentDescription:`Veuillez vérifier votre boîte de réception et cliquer sur le lien de vérification.`,resendFailed:`Impossible de renvoyer l'e-mail de vérification`,signInLink:`Aller à la connexion`,backToSignIn:`Retour à la connexion`,backToLogin:`Retour à la connexion`,checkSpam:`E-mail non reçu ? Vérifiez votre dossier spam ou contactez le support.`,or:`Ou`,resendUnavailable:`L'envoi d'e-mails n'est peut-être pas configuré pour cet environnement. Contactez le support si le problème persiste.`},setup:{welcomeTitle:`Bienvenue sur ObjectStack`,description:`Créez le premier compte propriétaire pour terminer la configuration.`,yourName:`Votre nom`,orgName:`Nom de l'organisation`,orgNamePlaceholder:`Entreprise Exemple SA`,emailLabel:`E-mail`,emailPlaceholder:`nom@exemple.fr`,passwordLabel:`Mot de passe`,passwordHint:`Au moins 8 caractères`,submit:`Créer le compte propriétaire`,submitting:`Configuration…`,failed:`Échec de la configuration`},device:{title:`Autoriser un nouvel appareil`,subtitle:`Approuvez cet appareil pour vous connecter en tant que {{email}}.`,userCodeLabel:`Code de l'appareil`,requesterLabel:`Demande de connexion de`,approveWarning:`N'approuvez que si vous venez de lancer cette connexion vous-même. Une fois approuvée, ce runtime pourra accéder aux packages privés de votre organisation.`,loggedInAs:`Connecté en tant que {{email}}`,approve:`Approuver l'appareil`,approving:`Approbation…`,approvedTitle:`Appareil autorisé`,approvedDescription:`Vous pouvez revenir à l'appareil — il devrait se connecter sous peu.`,approveSuccess:`Appareil autorisé`,approveSuccessDescription:`Vous pouvez fermer cette fenêtre.`,approveFailed:`Échec de l'approbation`,deny:`Refuser la demande`,denying:`Refus…`,deniedTitle:`Accès refusé`,deniedDescription:`L'accès ne sera pas accordé à l'appareil.`,denyFailed:`Impossible de refuser la demande`,invalidTitle:`Lien d'appareil invalide`,invalidDescription:`Aucun code d'appareil n'a été fourni dans l'URL.`,loading:`Chargement…`,cancel:`Annuler`,disabledTitle:`Autorisation d'appareil non activée`,disabledDescription:`L'autorisation d'appareil n'est pas activée sur ce déploiement, cet appareil ne peut donc pas être approuvé ici.`},shell:{tenantHostHint:`Vous vous connectez à cet espace de travail`},layout:{headline:`Créez des applications métier puissantes, plus vite.`,subhead:`La plateforme universelle pour la gestion des données, les workflows et l'analytique en entreprise.`},remediation:{signOut:`Se déconnecter à la place`,password:{title:`Votre mot de passe a expiré`,fallbackMessage:`Veuillez définir un nouveau mot de passe pour continuer.`,current:`Mot de passe actuel`,next:`Nouveau mot de passe`,confirm:`Confirmer le nouveau mot de passe`,submit:`Changer le mot de passe et continuer`,submitting:`Mise à jour…`,mismatch:`Les nouveaux mots de passe ne correspondent pas.`,failed:`Impossible de changer le mot de passe.`},mfa:{title:`Configurer l'authentification à deux facteurs`,fallbackMessage:`Votre organisation exige une application d'authentification pour continuer.`,confirmPassword:`Confirmez votre mot de passe`,continue:`Continuer`,preparing:`Préparation…`,enrollFailed:`Impossible de démarrer l'enrôlement.`,scanTitle:`Scannez avec votre application d'authentification`,scanBody:`Scannez ce QR code avec Google Authenticator, 1Password, Authy, etc., puis saisissez le code à 6 chiffres.`,backupTitle:`Enregistrez vos codes de secours`,backupBody:`Conservez-les en lieu sûr — chacun peut être utilisé une fois si vous perdez votre appareil.`,codeLabel:`Code à 6 chiffres`,verify:`Vérifier et continuer`,verifying:`Vérification…`,invalidCode:`Code invalide. Veuillez réessayer.`}}},oauth:{consent:{title:`{{appName}} souhaite accéder à votre compte`,request:`{{appName}} demande une autorisation{{suffix}}.`,unknownApp:`une application`,willAllow:`Cette application pourra :`,scope:{openid:`Confirmer votre identité`,profile:`Lire votre profil de base (nom, photo)`,email:`Lire votre adresse e-mail`,offlineAccess:`Rester connecté (renouveler l'accès)`},deny:`Refuser`,authorize:`Autoriser`,submitting:`Autorisation…`,granted:`Accès accordé`,denied:`Accès refusé`,noRedirect:`Le serveur n'a renvoyé aucune URL de redirection.`,failed:`Échec du consentement`,footer:`Vous pouvez révoquer cet accès à tout moment dans les paramètres de votre compte.`}},profile:{title:`Profil`,subtitle:`Gérez les paramètres de votre compte`,saving:`Enregistrement…`,avatar:{upload:`Téléverser`,replace:`Remplacer`,remove:`Supprimer`},info:{title:`Informations personnelles`,description:`Mettez à jour votre nom et consultez les détails de votre compte`,saved:`Profil mis à jour avec succès.`,name:`Nom`,email:`E-mail`,emailImmutable:`L'adresse e-mail ne peut pas être modifiée.`,role:`Rôle`,save:`Enregistrer les modifications`},language:{title:`Langue`,description:`La langue utilisée pour les notifications et les messages qui vous sont envoyés. La langue de l'interface se choisit séparément, dans le menu du globe.`,label:`Langue préférée`,systemDefault:`Utiliser la valeur par défaut du déploiement`,save:`Enregistrer`,saved:`Préférence de langue mise à jour.`,readOnly:`La langue de votre compte est gérée par votre administrateur.`},password:{changeTitle:`Changer le mot de passe`,setTitle:`Définir un mot de passe local`,changeDescription:`Mettez à jour le mot de passe que vous utilisez pour vous connecter à cet environnement.`,setDescription:`Vous vous êtes connecté via l'authentification unique. Définissez un mot de passe local pour pouvoir également vous connecter avec votre e-mail et un mot de passe sur cet environnement.`,current:`Mot de passe actuel`,new:`Nouveau mot de passe`,password:`Mot de passe`,confirm:`Confirmer le mot de passe`,tooShort:`Le mot de passe doit contenir au moins 8 caractères`,mismatch:`Les mots de passe ne correspondent pas`,enterCurrent:`Saisissez votre mot de passe actuel`,changed:`Mot de passe modifié.`,localSet:`Mot de passe local défini. Vous pouvez désormais vous connecter avec votre e-mail et votre mot de passe sur cet environnement.`,changeAction:`Changer le mot de passe`,setAction:`Définir le mot de passe`}},errors:{networkError:`Erreur réseau. Veuillez vérifier votre connexion.`,serverError:`Erreur serveur. Veuillez réessayer plus tard.`,notFound:`Ressource introuvable.`,unauthorized:`Vous n'êtes pas autorisé à effectuer cette action.`,forbidden:`Accès refusé.`,timeout:`Délai d'attente dépassé. Veuillez réessayer.`,unknown:`Une erreur inattendue s'est produite.`},workspace:{label:`Espaces de travail`,default:`Mon espace de travail`,switch:`Changer d'espace de travail`,createTitle:`Créer un espace de travail`,createDescription:`Un espace de travail est un lieu partagé pour la collaboration de votre équipe.`,createButton:`Créer un espace de travail`,nameLabel:`Nom de l'espace de travail`,namePlaceholder:`p.ex., Acme Inc`,slugLabel:`Slug URL`,slugHint:`Utilisé dans les URL. Uniquement lettres minuscules, chiffres et tirets.`,invite:`Inviter un membre`,members:`Membres`,settings:`Paramètres de l'espace de travail`,multiOrgDisabled:`La création de nouvelles organisations est désactivée sur cette instance.`,createFailed:`Échec de la création de l'espace de travail`},help:{onThisPage:`Sur cette page`,keyboardShortcuts:`Raccourcis clavier`,appDocs:`Documentation de cette app`,allDocs:`Toute la documentation`,onlineDocs:`Documentation en ligne`},sidebar:{packageManagement:`Gestion des packages`,searchNavigation:`Rechercher dans la navigation…`,settings:`Paramètres`,helpTooltip:`Aide et documentation`,activityFeed:`Flux d'activité`,notifications:`Notifications`,approvals:`Approbations`,inbox:`Boîte de réception`,inboxAriaLabel:`Ouvrir la boîte de réception`,area:`Zone`,scope:`Périmètre`,recent:`Récent`,favorites:`Favoris`,starred:`Étoilés`,removeFromFavorites:`Retirer {{name}} des favoris`},topbar:{openAssistant:`Ouvrir l'assistant {{name}}`,offline:`Hors ligne`,usersOnline:`Utilisateurs actuellement en ligne`,switchView:`Changer de vue`,switchObject:`Changer d'objet`,connection:{connected:`Connecté`,connecting:`Connexion…`,reconnecting:`Reconnexion…`,disconnected:`Déconnecté`,error:`Erreur de connexion`},stage:{preview:`Aperçu`,beta:`Bêta`,tooltip:`Cette plateforme est en avant-première — les fonctionnalités peuvent changer.`},aiAssistant:`Assistant IA`,designInStudio:`Concevoir dans Studio`},home:{build:{title:`Créer une application`,subtitle:`Partir de zéro — concevez les objets, formulaires, automatisations et interfaces.`,noCapability:`La création d'applications n'est pas disponible dans cet espace de travail : elle requiert l'autorisation « Gérer les métadonnées », que votre compte ne possède pas.`},template:{title:`Partir d'un modèle`,subtitle:`Installez une application modèle depuis la place de marché et personnalisez-la.`,marketplaceDisabled:`Aucune place de marché d'applications n'est configurée pour ce runtime : il n'y a donc aucun modèle à installer ici.`},welcomeAdminDescription:`Décrivez votre activité en une phrase — l'IA génère les objets, les écrans, les API et les outils d'agent. Ou configurez tout vous-même depuis le menu de gauche.`,welcomeAdminDescriptionNoBuild:`Configurez votre première application depuis le menu Administration à gauche. Une fois les données en place, l'assistant IA pourra vous aider à les explorer.`,welcomeAdminDescriptionNoAi:`Configurez votre première application depuis le menu Administration à gauche.`,noAppsTitle:`Aucune application pour l'instant`,noAppsDescription:`Votre espace de travail est en cours de configuration — les applications partagées par votre administrateur apparaîtront ici.`,buildWithAI:`Créer avec l'IA`,askAI:`Demander à l'IA`,recoveryReminder:{message:`Définissez un mot de passe de secours afin de pouvoir vous connecter même si l'authentification unique est indisponible.`,cta:`Définir le mot de passe`,dismiss:`Ignorer`},pendingDrafts:{message:`Vous avez {{count}} modification(s) non publiée(s) — publiez-les pour les activer.`,cta:`Publier`,publishing:`Publication…`,published:`Publié ! Vos modifications sont actives.`,publishFailed:`Échec de la publication`,nothing:`Rien à publier.`,probeWarn:`Publié, mais la vérification a détecté des problèmes.`,seedWarn:`Publié, mais certaines données d'exemple n'ont pas pu être chargées.`,publishedVerified:`Publié et vérifié — {{count}} ligne(s) d'exemple active(s).`,capabilityWarn:`Contrôle de conception : {{count}} référence(s) de capacité ne mènent à rien.`},title:`Accueil`,nav:`Accueil`,allApps:`Toutes les applications`,yourApps:`Vos applications`,showMoreApps:`Plus`,showLess:`Afficher moins`,continueEmpty:`Les éléments que vous ouvrez apparaîtront ici.`,actionCenter:{title:`Nécessite votre attention`,empty:`Vous êtes à jour`},loading:`Chargement de l'espace de travail…`,welcome:`Bienvenue dans ObjectUI`,welcomeDescription:`Commencez par créer votre première application ou configurer les paramètres système.`,createFirstApp:`Créez votre première app`,systemSettings:`Paramètres système`,browseMarketplace:`Parcourir la marketplace d'apps`,quickActions:{title:`Actions rapides`,manageObjects:`Gérer les objets`,manageObjectsDesc:`Configurer les modèles de données`,systemSettings:`Paramètres système`,systemSettingsDesc:`Configurez votre espace de travail`},appCard:{noDescription:`Aucune description`,default:`Par défaut`},greetingMorning:`Bonjour`,greetingAfternoon:`Bon après-midi`,greetingEvening:`Bonsoir`,greetingNight:`Travail de nuit`,heroTagline:`Reprenez là où vous vous êtes arrêté ou découvrez quelque chose de nouveau.`,open:`Ouvrir`,recentApps:{title:`Récemment ouverts`,itemType:{object:`Objet`,dashboard:`Tableau de bord`,page:`Page`,report:`Rapport`,record:`Enregistrement`,metadata:`Métadonnées`}},starredApps:{title:`Étoilés`},gettingStarted:{title:`Personnaliser l'accueil`,description:`Marquez une application en favori pour l'épingler ici et y accéder en un clic. Tout ce que vous ouvrez apparaîtra automatiquement sous "Récemment ouverts".`,cta:`Parcourir toutes les applications`}},layout:{systemNav:{systemSettings:`Paramètres système`,applications:`Applications`,appMarketplace:`Place de marché d'applications`,objectManager:`Gestionnaire d'objets`,users:`Utilisateurs`,organizations:`Organisations`,roles:`Rôles`,configuration:`Configuration`,administration:`Administration`,datasources:`Sources de données`,documentation:`Documentation`},appSwitcher:{switchApplication:`Changer d'application`,appsAvailable:`{{count}} applications disponibles`,editNavigation:`Modifier la navigation`,home:`Accueil`,addApp:`Ajouter une application`,editApp:`Modifier l'application`,manageAllApps:`Gérer toutes les applications`,systemConsole:`Console système`,noAppsConfigured:`Aucune application configurée`},activityFeed:{title:`Activité récente`,filter:`Filtrer`,empty:`Aucune activité récente`,ariaLabel:`Fil d'activité`,typeCreate:`Créer`,typeUpdate:`Mettre à jour`,typeDelete:`Supprimer`,typeComment:`Commentaire`,typeSystem:`Système`,relativeJustNow:`à l'instant`,relativeSecondsAgo:`il y a {{count}}s`,relativeMinutesAgo:`il y a {{count}}m`,relativeHoursAgo:`il y a {{count}}h`,relativeDaysAgo:`il y a {{count}}j`,viewAll:`Voir toute l'activité`},metadata:{label:`Métadonnées`,toggleTitle:`Basculer l'inspecteur de métadonnées`,panelTitle:`Inspecteur de métadonnées`,jsonBadge:`JSON`,copyJson:`Copier JSON`}},search:{title:`Rechercher`,back:`Retour`,placeholder:`Rechercher des objets, tableaux de bord, pages, rapports…`,inputAriaLabel:`Rechercher des objets, tableaux de bord, pages, rapports`,resultsCount:`{{count}} résultat pour "{{query}}"`,resultsCountPlural:`{{count}} résultats pour "{{query}}"`,itemsAvailable:`{{count}} éléments disponibles`,itemsAvailableOne:`{{count}} élément disponible`,noResults:`Aucun résultat trouvé`,noResultsHint:`Essayez d'ajuster vos termes de recherche`,typeObjects:`Objets`,typeDashboards:`Tableaux de bord`,typePages:`Pages`,typeReports:`Rapports`,badgeObject:`Objet`,badgeDashboard:`Tableau de bord`,badgePage:`Page`,badgeReport:`Rapport`},empty:{objectNotFound:`Objet introuvable`,objectNotFoundDescription:`La définition de l'objet "{{name}}" est manquante. Vérifiez votre configuration ou revenez en arrière.`,interfacePageSourceMissing:`Cette page d'interface référence "{{name}}", qui n'est pas disponible.`,pageNotFound:`Page introuvable`,pageNotFoundDescription:`La page "{{name}}" est introuvable. Elle a peut-être été supprimée ou renommée.`,dashboardNotFound:`Tableau de bord introuvable`,dashboardNotFoundDescription:`Le tableau de bord "{{name}}" est introuvable. Il a peut-être été supprimé ou renommé.`,reportNotFound:`Rapport introuvable`,reportNotFoundDescription:`Le rapport "{{name}}" est introuvable. Il a peut-être été supprimé ou renommé.`,noAppsConfigured:`Aucune application configurée`,noAppsConfiguredDescription:`Aucune application n'est enregistrée. Créez votre première application ou visitez les paramètres système.`,appNotAvailable:`Application non disponible`,appNotAvailableDescription:`Cette application n'est pas disponible — réessayez dans un instant.`,appNotFound:`Impossible d'ouvrir cette application`,appNotFoundDescription:`Le serveur n'a pas renvoyé cette application pour votre compte.`,appUnreachable:`Impossible de joindre le serveur`,appUnreachableDescription:`Cette application n'a pas pu être vérifiée. Réessayez dans un instant.`,appAccessDenied:`Vous n'avez pas accès à cette application`,appAccessDeniedDescription:`Cette application existe, mais votre compte n'est pas autorisé à l'ouvrir. Demandez l'accès à un administrateur.`,appAccessDeniedHome:`Retour à l'accueil`,createFirstApp:`Créer la première application`,systemSettings:`Paramètres système`,back:`Retour`,recordNotFound:`Enregistrement introuvable`,recordNotFoundDescription:`L'enregistrement que vous recherchez n'existe pas ou a peut-être été supprimé.`},actionDialog:{title:`Paramètres d'action`,description:`Veuillez saisir les informations requises pour continuer.`,selectPlaceholder:`Sélectionner {{label}}`,requiredError:`{{label}} est obligatoire`,unresolvedParam:`Ce paramètre ne peut pas être affiché : le champ dont il dépend est absent des métadonnées de l’objet, le contrôle nécessaire ne peut donc pas être construit. Demandez à un administrateur de corriger la définition de l’action.`,carryOverHint:`Repris tel quel (lecture seule)`,cancel:`Annuler`,confirm:`Confirmer`,uploading:`Téléversement…`,lookupPlaceholder:`ID d'enregistrement pour {{label}}`,lookupHelpText:`Aucun objet de référence n'est configuré pour ce paramètre, le sélecteur d'enregistrement est donc indisponible. Saisissez un ID d'enregistrement ou demandez à un administrateur de corriger le paramètre d'action.`},actionConfirm:{title:`Confirmer l’action`,confirm:`Continuer`,cancel:`Annuler`},navigationSync:{addedPage:`Navigation mise à jour : page "{{name}}" ajoutée`,addedDashboard:`Navigation mise à jour : tableau de bord "{{name}}" ajouté`,removedPage:`Navigation mise à jour : page "{{name}}" supprimée`,removedDashboard:`Navigation mise à jour : tableau de bord "{{name}}" supprimé`,renamedPage:`Navigation mise à jour : page "{{oldName}}" renommée en "{{newName}}"`,renamedDashboard:`Navigation mise à jour : tableau de bord "{{oldName}}" renommé en "{{newName}}"`,undoLabel:`Annuler`,undone:`Modification de navigation annulée`,undoFailed:`Impossible d'annuler la modification de navigation`,updateFailed:`Impossible de mettre à jour la navigation`},objectActions:{resetPackageSetConfirm:`Ce jeu d'autorisations est fourni avec un package installé et ne peut pas être supprimé. La suppression le réinitialise à la version livrée et abandonne vos personnalisations dans cet environnement. Continuer ?`,resetPackageSetSuccess:`Jeu d'autorisations réinitialisé à la version livrée`,deleteSuccess:`{{label}} supprimé avec succès`,deleteFailed:`Impossible de supprimer {{label}}`,noRecordId:`Aucun ID d'enregistrement fourni`,deleteConfirm:`Supprimer cet enregistrement ?`,bulkDeleteSuccess:`{{count}} enregistrement(s) {{label}} supprimé(s)`,bulkDeletePartial:`{{succeeded}} supprimé(s), {{failed}} échoué(s)`},objectViewActions:{renameFailed:`Impossible de renommer la vue`,deleteFailed:`Impossible de supprimer la vue`},dashboardActions:{printDialogOpening:`Ouverture de la boîte de dialogue d'impression de votre navigateur (ce n'est pas un export PDF)`,exportFailed:`Échec de l'export : {{message}}`,forecastSoon:`La vue de prévision arrive bientôt`},user:{profile:`Profil`,settings:`Paramètres`,logout:`Se déconnecter`,preferences:`Préférences`,theme:`Thème`,language:`Langue`},report:{total:`Total`,rowTotal:`Total ligne`,columnTotal:`Total colonne`,grandTotal:`Total général`,totals:`Totaux`,rowsLabel:`Ligne`,columnsLabel:`Colonne`,allLabel:`(Tout)`,emptyLabel:`(Vide)`,loading:`Chargement…`,failedToLoad:`Échec du chargement de la matrice : {{message}}`,needsAcross:"Le rapport matriciel nécessite au moins un champ `groupingsAcross`.",aggregate:{count:`Compter`,countDistinct:`Compter distincts`,sum:`Somme`,avg:`Moyenne`,min:`Minimum`,max:`Maximum`,first:`Premier`},editor:{panelTitle:`Modifier le rapport`}},organizations:{create:`Créer un espace de travail`,mine:`Mes espaces de travail`,title:`Espaces de travail`,heading:`Vos espaces de travail`,subtitle:`Sélectionnez un espace de travail pour continuer ou créez-en un nouveau.`,searchPlaceholder:`Rechercher un espace de travail`,new:`Nouvel espace de travail`,current:`Espace de travail actuel`,manage:`Gérer`,emptyTitle:`Aucun espace de travail pour le moment`,emptyDescription:`Créez votre premier espace de travail pour commencer.`,noMatches:`Aucun espace de travail ne correspond à votre recherche.`},organization:{roles:{owner:`Propriétaire`,admin:`Administrateur`,delegatedAdmin:`Administrateur délégué`,member:`Membre`},errors:{notAllowedToInvite:`Vous n'êtes pas autorisé à inviter des utilisateurs dans cette organisation.`,notAllowedToInviteWithRole:`Vous n'êtes pas autorisé à inviter un utilisateur avec ce rôle.`,alreadyInvited:`Cet utilisateur a déjà été invité dans cette organisation.`,organizationExists:`Cette organisation existe déjà.`,slugTaken:`Ce slug est déjà utilisé.`,notAllowedToCreate:`Vous n'êtes pas autorisé à créer une nouvelle organisation.`,notTheRecipient:`Vous n'êtes pas le destinataire de cette invitation.`,invitationNotFound:`Cette invitation n'existe plus ou a expiré.`,unknown:`Une erreur est survenue. Veuillez réessayer.`},backToList:`Retour aux organisations`,notFound:`Organisation introuvable`,notFoundDescription:`Cette organisation n'existe pas ou vous n'y avez pas accès.`,tabs:{members:`Membres`,invitations:`Invitations`,settings:`Paramètres`},members:{title:`Membres`,inviteMember:`Inviter un membre`,inviteRestrictedNote:`Seuls les administrateurs de l'organisation peuvent inviter des membres.`,removeMember:`Retirer le membre`,removeConfirmTitle:`Retirer ce membre ?`,removeConfirmDescription:`{{name}} sera retiré de l'organisation et perdra immédiatement son accès.`,removeConfirmAction:`Retirer`,memberRemoved:`Membre retiré`,removeFailed:`Impossible de retirer le membre`,roleUpdated:`Rôle mis à jour`,roleUpdateFailed:`Impossible de mettre à jour le rôle`,memberActions:`Actions du membre`,loadFailed:`Échec du chargement des membres`},invitations:{title:`Invitations`,empty:`Aucune invitation.`,expiresAt:`Expire le`,linkCopied:`Lien d'invitation copié`,copyFailed:`Impossible de copier le lien`,canceled:`Invitation annulée`,cancelFailed:`Impossible d'annuler l'invitation`,cancelTitle:`Annuler l'invitation ?`,cancelDescription:`L'invitation de {{email}} sera révoquée.`,cancelAction:`Annuler l'invitation`,inviteTitle:`Inviter un membre`,inviteDescription:`La personne recevra une invitation à rejoindre cette organisation.`,emailLabel:`E-mail`,roleLabel:`Rôle`,placementLabel:`Affectation (facultatif)`,placementDescription:`Appliquée lorsque l'invitation est acceptée. Seuls les unités et les postes que vous pouvez déléguer sont listés.`,businessUnitLabel:`Unité opérationnelle`,businessUnitPlaceholder:`Aucune affectation`,positionsLabel:`Postes`,sendInvite:`Envoyer l'invitation`,sentTitle:`Invitation créée`,sentDescription:`Partagez le lien ci-dessous avec la personne invitée. Elle devra se connecter pour accepter.`,linkLabel:`Lien d'acceptation`,invitedAs:`{{email}} invité en tant que {{role}}`,copyLinkLabel:`Copier le lien d'invitation`,loadFailed:`Échec du chargement des invitations`,inviteFailed:`Échec de l'invitation du membre`,status:{all:`Toutes`,pending:`En attente`,accepted:`Acceptée`,rejected:`Refusée`,canceled:`Annulée`}},settings:{generalTitle:`Général`,generalDescription:`Mettez à jour les informations de votre organisation.`,readOnlyNote:`Seuls les propriétaires peuvent modifier les paramètres.`,nameLabel:`Nom de l'organisation`,slugLabel:`Slug`,logoLabel:`Logo`,logoUpload:`Téléverser`,logoReplace:`Remplacer`,logoClear:`Retirer`,logoUploaded:`Logo téléversé — enregistrez pour appliquer`,logoUploadFailed:`Impossible de téléverser le logo`,save:`Enregistrer les modifications`,saved:`Paramètres enregistrés`,saveFailed:`Impossible d'enregistrer les paramètres`,leaveTitle:`Quitter l'organisation`,leaveDescription:`Vous perdrez l'accès à cette organisation.`,leaveAction:`Quitter`,leaveConfirmTitle:`Quitter l'organisation ?`,leaveConfirmDescription:`Voulez-vous vraiment quitter {{name}} ? Vous perdrez immédiatement votre accès.`,leaveConfirmAction:`Quitter`,leftOrg:`Vous avez quitté l'organisation`,leaveFailed:`Impossible de quitter l'organisation`,dangerZone:`Zone de danger`,deleteTitle:`Supprimer l'organisation`,deleteDescription:`Supprimez définitivement cette organisation et toutes ses données.`,deleteAction:`Supprimer`,deleteConfirmTitle:`Supprimer l'organisation ?`,deleteConfirmDescription:`Cette action est irréversible. Toutes les données seront définitivement supprimées. Saisissez le slug de l'organisation pour confirmer.`,deleteConfirmSlugLabel:`Saisissez « {{slug}} » pour confirmer`,deleteConfirmAction:`Supprimer l'organisation`,deleted:`Organisation supprimée`,deleteFailed:`Impossible de supprimer l'organisation`},accept:{title:`Vous avez été invité`,description:`Vous avez été invité à rejoindre {{orgName}} en tant que {{role}}.`,errorTitle:`Invitation indisponible`,goToOrgs:`Aller aux organisations`,loading:`Chargement de l'invitation…`,organization:`Organisation`,role:`Rôle`,expiresAt:`Expire le`,accept:`Accepter l'invitation`,accepted:`Invitation acceptée`,acceptFailed:`Impossible d'accepter l'invitation`,decline:`Refuser`,declined:`Invitation refusée`,declineFailed:`Impossible de refuser l'invitation`},current:{label:`Organisation actuelle`},switcher:{label:`Changer d'organisation`,groupLabel:`Organisation de travail`,groupHint:`Les nouveaux enregistrements sont créés ici. Les vues affichent les données de toutes vos organisations.`,manageMembers:`Gérer les membres`}},notifications:{regionLabel:`Notifications`,groupCount:`{{count}} notifications`,groupUnread:`{{count}} non lues`,groupMarkRead:`Marquer comme lu`,groupMarkReadTitle:`Tout marquer comme lu pour ce type`,empty:`Aucune notification`,markAllRead:`Tout marquer comme lu`,viewAll:`Voir toutes les notifications`,approvalsPending:`{{count}} approbations en attente`,viewApprovals:`Voir les approbations`,noPendingApprovals:`Aucune approbation en attente`,openApprovalsInbox:`Ouvrir la boîte d'approbations`,badgeTotal:`{{total}} au total`,badgeNotifications:`{{unread}} notifications`,badgeApprovals:`{{approvals}} approbations en attente`,arrivalMany:`{{count}} nouveaux messages`,arrivalRepeats:`{{count}} nouveaux messages sur ce sujet`,arrivalOpen:`Afficher`,toastEnabled:`Alertes dans l'application`,desktopEnabled:`Notifications du bureau`,desktopBlocked:`Bloqué. Autorisez les notifications pour ce site dans les paramètres du navigateur.`,desktopUnsupported:`Ce navigateur ne prend pas en charge les notifications du bureau.`,emptyUnread:`Tout est lu`,filterUnread:`Non lus`,filterAll:`Tous`},publicForm:{submit:`Envoyer`,submitting:`Envoi…`,submitAnother:`Envoyer une autre réponse`,poweredBy:`Propulsé par ObjectStack`,secureNotice:`Vos informations sont transmises en toute sécurité et utilisées uniquement pour traiter votre demande.`,thankYouTitle:`Merci !`,thankYouMessage:`Votre soumission a été reçue avec succès.`,redirecting:`Redirection dans {{seconds}} seconde(s)…`,redirectPending:`Redirection…`,unavailableTitle:`Formulaire non disponible`,unavailableDescription:`Aucun formulaire public n'est disponible à cette URL. Assurez-vous que la vue sous-jacente a le partage anonyme activé.`,tryDemo:`Essayer la démo`,retry:`Réessayer`,loading:`Chargement du formulaire…`,requiredHint:`* Champ obligatoire`,requiredFields:`Champs obligatoires : {{fields}}`,consentLabelDefault:`J'accepte la politique de confidentialité et consens au traitement de mes données pour cette demande.`,consentLink:`Politique de confidentialité`,consentRequired:`Veuillez accepter la politique de confidentialité pour continuer.`,rateLimited:`Prenez un moment pour vérifier vos réponses avant d'envoyer.`,redirectBlocked:`Soumission acceptée, mais l'URL de redirection a été bloquée pour des raisons de sécurité.`},connectAgent:{disabled:{title:`MCP est désactivé sur ce déploiement`,body:`La surface MCP est désactivée (OS_MCP_SERVER_ENABLED=false). Demandez à votre opérateur de la réactiver.`},url:{title:`Endpoint MCP de cet environnement`,body:`Tout client IA compatible MCP se connecte avec cette URL. L’identité est en libre-service : le déploiement est son propre serveur d’autorisation OAuth 2.1 — vous vous connectez en votre nom, et chaque appel s’exécute sous vos permissions et la sécurité au niveau des lignes.`,downloadSkill:`Télécharger SKILL.md`,skillHint:`La skill d’agent portable : apprend à tout agent compatible à travailler avec cet environnement.`},claude:{body:`Paramètres → Connecteurs → Ajouter un connecteur personnalisé, collez cette URL puis connectez-vous dans le navigateur.`,reachability:`claude.ai (web) se connecte depuis les serveurs d’Anthropic — le déploiement doit être accessible en HTTPS public. Claude Desktop et les clients locaux atteignent aussi les déploiements intranet.`},claudeCode:{body:`Une seule commande — la connexion OAuth s’ouvre automatiquement à la première utilisation :`,plugin:`Ou installez le plugin officiel (ajoute la skill ObjectStack et la commande guidée /objectstack:connect) :`},cursor:{addButton:`Ajouter à Cursor`,body:`Utilisez le bouton en un clic, ou ajoutez ceci à .cursor/mcp.json :`},vscode:{body:`À ajouter dans .vscode/mcp.json (ou via la commande MCP: Add Server) :`},codex:{body:`À ajouter dans ~/.codex/config.toml. Si votre version de Codex ne gère pas le flux OAuth, utilisez un en-tête de clé API (voir ci-dessous) :`},apiKey:{title:`Clés API`,badge:`headless`,body:`Pour la CI, les scripts et les agents sans navigateur. La clé agit en votre nom — traitez-la comme un mot de passe. Elle n’est affichée qu’UNE fois.`,namePlaceholder:`Nom de la clé (ex. ci-agent)`,mint:`Créer la clé`,minting:`Création…`,showOnce:`Clé « {{name}} » créée — copiez-la maintenant, elle ne sera plus affichée :`,done:`Terminé — masquer`}},excelImport:{noImportableFields:`Cet objet n'a aucun champ importable.`,schemaReadFailed:`Impossible de lire le schéma de l'objet.`,imported:`{{count}} ligne(s) importée(s) dans {{object}}.`,importFrom:`Importer les lignes réelles depuis`,into:`vers`,opening:`Ouverture…`,importAction:`Importer`,dismiss:`Ignorer`},cloudOnboarding:{hintCreate:`Créez votre premier environnement — un espace de travail privé avec sa propre URL, sa base de données et son offre. C'est là que se fait la création.`,hintReady:`Votre environnement de production est prêt. Ouvrez-le pour créer et exécuter vos applications — tout se passe à l'intérieur.`,createEnvironment:`Créer votre environnement`,openProduction:`Ouvrir la production`,manageEnvironments:`Gérer les environnements`},cloudPlanStatus:{current:`Offre actuelle`},ai:{nlQuery:{placeholder:`Posez une question sur vos données…`,ask:`Demander`,results:`Résultats`,match:`Correspondance : {{percent}}`,simulatedSummary:`Résultats pour : {{query}}`,noResults:`Aucun enregistrement correspondant`,recentQueries:`Requêtes récentes`},formAssist:{title:`Suggestions de l’IA`,suggestionCount:`{{count}} suggestions`,suggestionCountOne:`{{count}} suggestion`,applyAll:`Tout appliquer`,confidence:`Confiance : {{percent}}`,appliedCount:`{{count}} suggestions appliquées`,appliedCountOne:`{{count}} suggestion appliquée`},recommendations:{title:`Recommandations`,generating:`Génération des recommandations…`,empty:`Aucune recommandation disponible`}},aiApprovals:{title:`Approbations IA`,description:`Actions proposées par un agent IA qui nécessitent une validation humaine avant exécution.`,tabPending:`En attente`,tabDecided:`Traitées`,tabAll:`Toutes`,statusPending:`En attente`,statusApproved:`Approuvée`,statusExecuted:`Exécutée`,statusFailed:`Échouée`,statusRejected:`Rejetée`,colTool:`Outil`,colAction:`Action`,colObject:`Objet`,colStatus:`Statut`,colProposed:`Proposée`,colDecision:`Décision`,emptyTitle:`Aucune action en attente`,emptyDescription:`Lorsque l'IA propose une action sensible, elle apparaît ici pour validation.`,view:`Voir`,approve:`Approuver`,reject:`Rejeter`,working:`En cours…`,approveAndExecute:`Approuver et exécuter`,outcomeApprove:`Approbation de {{id}}\xA0: {{message}}`,outcomeReject:`Rejet de {{id}}\xA0: {{message}}`,outcomeExecuteFailed:`L'action a échoué pendant son exécution`,drawerFallbackTitle:`Action en attente`,drawerSubtitle:`Outil {{tool}} sur {{object}}`,fieldProposedBy:`Proposée par`,fieldDecidedBy:`Décidée par`,fieldConversation:`Conversation`,fieldToolInput:`Entrée de l'outil`,fieldResult:`Résultat`,fieldError:`Erreur`,fieldRejectionReason:`Motif du rejet`,rejectTitle:`Rejeter cette action\xA0?`,rejectBody:`Le motif est renvoyé à l'IA pour qu'elle ajuste sa prochaine réponse.`,rejectPlaceholder:`Motif facultatif (par ex. «\xA0Identifiant d'enregistrement erroné — merci de confirmer d'abord avec l'utilisateur.\xA0»)`},aiModelStatus:{summary:`Créer / Demander utilise {{conversational}} ({{conversationalSource}}) ; structuré utilise {{structured}} ({{structuredSource}}).`,summaryRouting:`Politique de routage : offres gratuites → {{free}}, offres payantes → {{paid}}.`,modelUnknown:`inconnu`,sourceUnknown:`non communiqué par l'adaptateur`,rowConversational:`Modèle Build / Ask`,rowStructured:`Structuré (blueprint / seed)`,rowReasoning:`Effort de raisonnement`,readFailed:`Impossible de lire le modèle d'IA effectif. Cet environnement n'exécute peut-être pas de service d'IA, ou vous n'avez pas la permission ai:read.`,readFailedWithStatus:`Impossible de lire le modèle d'IA effectif (HTTP {{status}}). Cet environnement n'exécute peut-être pas de service d'IA, ou vous n'avez pas la permission ai:read.`,overridesInEffect:`Surcharges actives : `,noOverrides:`aucune — les valeurs par défaut du code déployé s'appliquent.`,adapter:`Adaptateur : `,sourceCodeDefault:`valeur par défaut du code (aucune surcharge env)`,sourceInherits:`identique à build/ask`,sourcePinned:`figé par {{source}}`},chatbot:{tool:{aggregate_data:`Agréger les données`,get_record:`Lire un enregistrement`,query_data:`Interroger les données`,query_records:`Interroger les enregistrements`,search_knowledge:`Rechercher dans la base de connaissances`,visualize_data:`Créer un graphique`,add_field:`Ajouter un champ`,apply_blueprint:`Construire l’application`,apply_edit:`Appliquer les modifications`,create_metadata:`Créer des métadonnées`,create_object:`Créer un objet`,create_package:`Créer un paquet`,create_seed:`Générer des données d’exemple`,delete_field:`Supprimer un champ`,describe_metadata:`Consulter les métadonnées`,describe_object:`Consulter la structure de l’objet`,get_active_package:`Lire le paquet actif`,get_authoring_rules:`Lire les règles d'écriture`,get_metadata_schema:`Lire le schéma des métadonnées`,get_package:`Lire le paquet`,list_metadata:`Lister les métadonnées`,list_objects:`Lister les objets`,list_packages:`Lister les paquets`,load_tools:`Charger les outils`,modify_field:`Modifier un champ`,open_record:`Ouvrir la fiche`,propose_blueprint:`Concevoir le plan de l’application`,set_active_package:`Changer le paquet actif`,suggest_builder:`Proposer une méthode de construction`,test_flow:`Tester le flux`,todo_write:`Noter les tâches`,toggle_flow:`Activer ou désactiver le flux`,update_metadata:`Mettre à jour les métadonnées`,validate_expression:`Valider l’expression`,verify_build:`Vérifier la construction`},toolState:{agentActivity:`Activité de l’agent`,pending:`En attente`,running:`En cours`,awaitingApproval:`En attente d’approbation`,responded:`Répondu`,completed:`Terminé`,error:`Erreur`,denied:`Refusé`,failed:`Échec`},plan:{countObjects:`{{count}} objets`,countObjects_one:`{{count}} objet`,countViews:`{{count}} vues`,countViews_one:`{{count}} vue`,countDashboards:`{{count}} tableaux de bord`,countDashboards_one:`{{count}} tableau de bord`,countSeedData:`données d’exemple`},build:{building:`Création de {{app}}…`,built:`Création de {{app}} terminée`,appFallback:`votre application`,addingSampleData:`ajout de données d’exemple`,group:{object:`Objets`,view:`Vues`,dashboard:`Tableaux de bord`,app:`Application`,seed:`Données d’exemple`},moreArtifacts:`+{{n}} autres`}},chatbotError:{title:`Échec de la réponse`,fallbackDetail:`Une erreur s'est produite. Veuillez réessayer.`,details:`Détails`,hide:`Masquer`,retry:`Réessayer`},chatbotQuota:{title:`Mise à niveau requise`,fallbackMessage:`Vous avez atteint votre quota d'IA.`,buyCredits:`Acheter un pack de crédits`,upgradePlan:`Changer d'offre`},environment:{addEnvironment:`Ajouter un environnement`,setUpProduction:`Configurer votre environnement de production`,addDevelopment:`Ajouter un environnement de développement`,entitlement:{productionLimitTitle:`Vous avez déjà votre environnement de production`,productionLimitBody:`Chaque organisation comprend exactement un environnement de production. Créez une organisation distincte pour en avoir un autre, ou contactez-nous au sujet d'une offre Enterprise.`,planLockedTitle:`Les environnements de développement sont une fonctionnalité payante`,planLockedBody:`Votre {{plan}} comprend un environnement de production. Passez à une offre supérieure pour ajouter des environnements de développement — développez en dev, puis publiez en production.`,limitTitle:`Limite d'environnements de développement atteinte`,limitBody:`La capacité évolue avec les sièges IA. Ajoutez un siège IA, ou archivez un environnement de développement inutilisé pour libérer une place.`,limitBodyWithCount:`Vous utilisez {{used}} environnements de développement sur {{limit}}. La capacité évolue avec les sièges IA — ajoutez un siège IA, ou archivez un environnement de développement inutilisé.`,freePlan:`offre gratuite`,namedPlan:`offre {{plan}}`,upgradeCta:`Changer d'offre`,contactSalesCta:`Contacter le service commercial`}},cloudConnection:{checking:`Vérification de la connexion…`,retry:`Réessayer`,errors:{expired:`La demande a expiré avant d'être approuvée. Recommencez.`,accessDenied:`La demande de connexion a été refusée. Recommencez.`,bindFailed:`Échec de la liaison.`,deviceCodeFailed:`Échec de la demande de code d'appareil.`},waiting:{popupOpened:`Approuvez la connexion dans la fenêtre qui vient de s'ouvrir — cette page se met à jour toute seule.`,polling:`En attente d'approbation dans la console cloud…`,openApproval:`Ouvrir la page d'approbation`,copy:`Copier`,copied:`Copié`,codePrefilled:`Le code est pré-rempli sur la page d'approbation.`,openItHere:`La fenêtre ne s'est pas affichée ? Ouvrez-la ici`,cancel:`Annuler`},bound:{title:`Connecté à ObjectStack Cloud`,runtime:`Runtime`,organization:`Organisation`,approvedBy:`Approuvé par`,runtimeId:`ID du runtime`,environment:`Environnement`,since:`Depuis`,privatePackages:`Les paquets privés de votre organisation apparaissent désormais dans la Marketplace sous « Votre organisation ».`,disconnect:`Déconnecter`},unbound:{title:`Non connecté`,body:`Connectez ce runtime à un plan de contrôle ObjectStack pour parcourir les paquets privés de votre organisation et les installer ici. L'approbation se fait en un seul clic dans votre compte cloud — aucun identifiant ni justificatif n'est saisi sur cette page.`,connect:`Connecter`}},marketplace:{suggestedBindings:{promptEveryone:`Cette application suggère d'accorder « {{set}} » à tous les utilisateurs connectés (position Everyone).`,promptGuest:`Cette application suggère d'accorder « {{set}} » aux visiteurs non authentifiés (position Guest).`,confirm:`Accorder`,confirming:`Attribution…`,dismiss:`Ignorer`,confirmedToast:`« {{set}} » est désormais accordé à {{anchor}}.`,dismissedToast:`Suggestion pour « {{set}} » ignorée.`},title:`Marketplace d'applications`,subtitle:`Parcourez les applications approuvées publiées dans le catalogue ObjectStack. Cliquez sur une application pour voir les détails et l'installer dans l'un de vos environnements.`,searchPlaceholder:`Rechercher des applications par nom ou ID d'application…`,searchAria:`Rechercher des applications du marketplace`,installed:`Installé`,installedCount:`Installées ({{count}})`,refresh:`Actualiser`,all:`Toutes`,noApprovedYet:`Aucune application approuvée pour le marketplace pour l'instant.`,noMatchFilters:`Aucune application ne correspond à vos filtres.`,noDescription:`Aucune description disponible.`,back:`Retour au marketplace`,installedTitle:`Applications installées`,installedSubtitle:`Paquets du marketplace actuellement installés dans le noyau de ce runtime.`,installedEmpty:`Aucune application du marketplace installée dans ce runtime pour l'instant.`,browseLink:`Parcourir le marketplace →`,installedAdditiveNote:`<strong>Remarque :</strong> L'API du noyau est uniquement additive — la désinstallation supprime le manifeste du disque pour que le paquet ne se charge pas au prochain démarrage, mais le noyau en cours d'exécution maintient l'application enregistrée jusqu'au redémarrage.`,installedAt:`Installé {{when}}`,installedBy:`par {{user}}`,installedPackageId:`Paquet`,cachedAs:`Mis en cache sous <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`Installé v{{version}}`,load:{failed:`Impossible de charger le marketplace`,failedHintConfigured:`Ce runtime accède à la place de marché via le plan de contrôle situé à {{url}}. Vérifiez qu'il est en ligne et joignable depuis ici.`,failedHintSameOrigin:`Ce runtime sert lui-même le catalogue de la place de marché. Vérifiez qu'il est en ligne.`,packageFailed:`Impossible de charger le paquet`,notFound:`Introuvable.`},disabled:{title:`La place de marché des applications est désactivée`,description:`Aucune place de marché n'est configurée pour ce runtime : il n'y a donc rien à parcourir ni à installer ici.`,hint:`C'est l'état attendu lorsque le runtime démarre avec <code>OS_CLOUD_URL=off</code> (ou <code>none</code>, <code>local</code>, <code>disabled</code>). Pour activer la place de marché, faites pointer <code>OS_CLOUD_URL</code> vers un plan de contrôle puis redémarrez le runtime.`},detail:{homepage:`Page d'accueil`,installedV:`Installé · v{{version}}`,about:`À propos`,noReadme:`Aucun readme disponible.`,versions:`Versions`,noApprovedVersions:`Aucune version approuvée.`,prerelease:`Prélancement`,moreOptions:`Plus d'options d'installation`,uninstallFromRuntime:`Désinstaller de ce runtime`,addSampleData:`Ajouter des données d'exemple`,reseedAgain:`Recharger les données d'exemple`,purgeSampleData:`Supprimer les données d'exemple`,purgeConfirm:`Supprimer tous les enregistrements d'exemple créés par ce paquet ? Les enregistrements ajoutés par l'utilisateur ne seront PAS touchés.`,purgeSuccess:`{{count}} enregistrement(s) d'exemple supprimé(s).`,purgeNoData:`Aucun enregistrement d'exemple à supprimer.`,reseedQueued:`Les données d'exemple seront rechargées au prochain accès à l'environnement.`,reseedLocalSuccess:`Données d'exemple rechargées : {{inserted}} ajoutés, {{updated}} mis à jour.`,reseedPartialErrors:`({{count}} enregistrement(s) n'ont pas pu être écrits)`,sampleDataKernelUnavailable:`Ce plan de contrôle n'a pas de noyau d'environnement : les données d'exemple ne peuvent donc être ni rechargées ni supprimées ici. Faites-le depuis le runtime propre à l'environnement.`,updateAvailable:`Mise à jour disponible`},action:{installed:`Installé`,install:`Installer`,reinstall:`Réinstaller`,working:`Traitement…`,installToCloud:`Installer dans le cloud…`,installing:`Installation…`,uninstall:`Désinstaller`,uninstalling:`Désinstallation…`,details:`Détails`,close:`Fermer`,dismiss:`Fermer`,openOnCloud:`Ouvrir dans le cloud`,backHome:`Retour à l'accueil`,updateTo:`Mettre à jour`},install:{dialogTitle:`Installer {{name}}`,dialogDescCurrent:`Installer dans cet environnement ({{host}}).`,dialogDescPicker:`Choisissez un environnement où installer cette application. Vous devez être connecté à ObjectStack Cloud.`,environment:`Environnement`,environmentPlaceholder:`Sélectionner un environnement`,includeSampleData:`Inclure des données d'exemple`,noEnvs:`Aucun environnement trouvé dans votre organisation active.`,noPermission:`Vous n'avez pas la permission d'installer des applications dans un environnement. Seuls les propriétaires et administrateurs de l'organisation peuvent installer.`,signInFirst:`Vous devez d'abord vous connecter à ObjectStack Cloud.`,success:`Installé avec succès. Ouvrez l'environnement pour voir la nouvelle application.`,localSuccess:`v{{version}} installé dans ce runtime. "{{name}}" devrait maintenant apparaître dans le sélecteur d'applications.`,localManifestConflict:`{{message}}
2
- Remarque : Une application locale possède déjà ce manifest_id. Supprimez-la d'abord de objectstack.config.ts.`,localUnauthorized:`Connectez-vous d'abord à ce runtime.`,localMarketplaceUnavailable:`Ce runtime n'a pas de OS_CLOUD_URL configuré.`,updateTo:`Mettre à jour → v{{version}}`,installedVersion:`Installé v{{version}}`},org:{heading:`Votre organisation`,install:`Installer`,installed:`{{name}} installé`,installedBadge:`Installé`,installing:`Installation…`},disclosure:{containsCode:`Ce paquet contient du code`,reviewed:`Examiné et approuvé`,unreviewed:`Pas encore examiné`,signed:`Signé`,grantsIntro:`Ce paquet demande :`,notEnforced:`Cette liste est enregistrée à l'installation et reconfirmée si une version ultérieure en demande davantage, mais l'exécution ne restreint pas encore le paquet à cette liste.`,services:`Services de la plateforme`,hooks:`Hooks de cycle de vie`,network:`Accès réseau`,fs:`Accès au système de fichiers`,noPermissions:`Ne demande aucune autorisation particulière.`,acknowledge:`Je comprends que ce paquet exécute du code et obtient les autorisations ci-dessus.`,runtime:{node:`Dans le processus · confiance totale`,sandbox:`Bac à sable`,worker:`Hors processus`}},uninstall:{confirm:`Désinstaller {{manifestId}} v{{version}} de ce runtime ?
3
-
4
- Le manifeste en cache sera supprimé.`,successInList:`{{manifestId}} supprimé. Redémarrez le runtime pour le décharger complètement.`,successInDetail:`Manifeste en cache pour {{manifestId}} supprimé.`},accessDenied:{title:`Marketplace réservé aux administrateurs`,description:`Vous n'avez pas la permission d'installer des applications dans cet environnement.`},category:{crm:`CRM`,erp:`ERP`,hr:`RH`,finance:`Finance`,project:`Gestion de projet`,collaboration:`Collaboration`,analytics:`Analytique`,integration:`Intégration`,automation:`Automatisation`,ai:`IA`,security:`Sécurité`,"developer-tools":`Outils développeur`,"ui-theme":`Thème UI`,storage:`Stockage`,other:`Autre`},relativeTime:{today:`aujourd'hui`,daysAgo:`il y a {{count}}j`,monthsAgo:`il y a {{count}} mois`,yearsAgo:`il y a {{count}} ans`}},approvalsInbox:{recordUnresolvable:`Cet enregistrement ne peut pas être ouvert`,loadMore:`Charger plus`,loadingMore:`Chargement…`,loadedOf:`{{loaded}} sur {{total}} chargées`,actEscalate:`SLA escaladé`,systemSlaActor:`Système (SLA)`,reassignBtn:`Réattribuer`,reassignTitle:`Confier cette approbation à quelqu'un d'autre ?`,reassignBody:`Votre place d'approbateur passe à la personne choisie — elle est notifiée et peut agir immédiatement.`,reassignTo:`Nouvel approbateur`,reassignToPlaceholder:`Choisissez un utilisateur ou saisissez un e-mail / role:<nom>`,reassignSuccess:`Confiée à {{to}}`,requestInfoBtn:`Demander des infos`,requestInfoTitle:`Demander plus d'informations au demandeur ?`,requestInfoBody:`La demande reste en attente ; le demandeur est notifié et peut répondre dans le fil.`,requestInfoPlaceholder:`Que faut-il au demandeur ?`,requestInfoSent:`Renvoyée au demandeur pour complément`,remindBtn:`Relancer`,remindSuccess:`Relance envoyée à {{count}} approbateur(s)`,remindThrottled:`Une relance a déjà été envoyée récemment — réessayez plus tard.`,replyPlaceholder:`Répondre sur cette demande…`,slaRemaining:`SLA : {{dur}} restants`,slaOverdue:`SLA dépassé de {{dur}}`,actReassign:`Réattribuée`,reassignFromTo:`de {{from}} à {{to}}`,actRemind:`Relance`,actRequestInfo:`Infos demandées`,actComment:`Commentaire`,stepProgress:`Étapes d'approbation`,prevRequest:`Précédente`,nextRequest:`Suivante`,positionOf:`Demande {{index}} sur {{total}}`,progressApprovals:`Approbations — {{got}} sur {{need}}`,progressGroups:`Avancement des visas — {{got}} sur {{need}} groupes`,progressEligible:`{{count}} approbateur(s) éligible(s)`,progressBar:`Avancement de la décision`,declaredActions:`Actions`,attachmentChip:`Pièce jointe`,attachmentOpenFailed:`Impossible d'ouvrir la pièce jointe — veuillez réessayer`,approveOneTitle:`Approuver « {{title}} » ?`,approveOneBody:`Cette action approuve la demande en votre nom. Pour ajouter un commentaire ou une pièce jointe, ouvrez la demande.`,flowOrigin:`Initiée par un flux`,sortBy:`Trier`,sortRecent:`Plus récentes d’abord`,sortOldest:`Plus anciennes d’abord`,sortAmount:`Montant (décroissant)`,quickPhrase1:`Approuvée — conforme aux exigences.`,quickPhrase2:`Approuvée sous conditions — surveillez l'exécution.`,quickPhrase3:`Veuillez compléter le dossier et soumettre à nouveau.`,title:`Centre d'approbations`,subtitle:`Consultez et traitez les demandes d'approbation.`,refresh:`Actualiser`,tabMyPending:`En attente de moi`,tabSubmitted:`Soumises par moi`,tabAll:`Toutes`,searchPlaceholder:`Rechercher un enregistrement, un processus, un demandeur…`,clearSearch:`Effacer la recherche`,statusFilter:`Statut`,allStatuses:`Tous les statuts`,processFilter:`Processus`,allProcesses:`Tous les processus`,objectFilter:`Objet`,allObjects:`Tous les objets`,filterCount:`{{shown}} sur {{total}}`,selected:`sélectionnées`,actionableCount:`({{count}} actionnables)`,selectAll:`Tout sélectionner`,selectRow:`Sélectionner la demande`,colRequest:`Demande`,colRecord:`Enregistrement`,colRequester:`Demandeur`,colStatus:`Statut`,colWaiting:`Soumise`,colActions:`Actions`,statusPending:`En attente`,statusApproved:`Approuvée`,statusRejected:`Rejetée`,statusRecalled:`Retirée`,statusReturned:`Renvoyé pour révision`,sendBackBtn:`Renvoyer`,sendBackTitle:`Renvoyer cette demande pour révision ?`,sendBackBody:`Ce tour se termine et l'enregistrement est déverrouillé pour que le demandeur corrige les données. À la nouvelle soumission, un nouveau tour d'approbation s'ouvre pour tous les approbateurs.`,sendBackPlaceholder:`Que faut-il corriger avant approbation ?`,sendBackSuccess:`Renvoyé pour révision — le demandeur peut maintenant modifier et soumettre à nouveau`,sendBackAutoRejected:`Limite de révisions atteinte — la demande a été rejetée automatiquement`,actRevise:`Renvoyé pour révision`,actResubmit:`Soumis à nouveau`,roundChip:`Tour {{n}}`,returnedHint:`Un approbateur vous a renvoyé cette demande. L'enregistrement est déverrouillé — corrigez les données puis soumettez à nouveau pour démarrer un nouveau tour d'approbation.`,resubmitBtn:`Soumettre à nouveau`,resubmitting:`Nouvelle soumission…`,resubmitSuccess:`Soumis à nouveau — un nouveau tour d'approbation est ouvert`,resubmitPlaceholder:`Qu'avez-vous modifié ?`,editRecordBtn:`Modifier l'enregistrement`,abandonTitle:`Abandonner cette révision ?`,abandonBody:`La demande est retirée au lieu d'être soumise à nouveau. L'approbation s'arrête ici.`,emptyTitle:`Aucune demande`,emptyPending:`Tout est à jour — rien n'attend votre approbation.`,emptyOther:`Rien ici pour l'instant.`,emptyViewAll:`Voir toutes les demandes`,noMatches:`Aucun résultat avec les filtres actuels.`,keyboardHint:`Clavier : j/k déplacer · Entrée ouvrir · x sélectionner · a approuver · r rejeter`,drawerTitle:`Demande d'approbation`,submittedAgo:`Soumise {{when}}`,completedAt:`Terminée {{when}}`,waitingOn:`En attente de`,approverNameSeparator:`, `,approverUnstaffed:`{{seat}} (poste actuellement vacant)`,history:`Activité`,noActions:`Aucune action pour le moment.`,actSubmit:`Soumise`,actApprove:`Approuvée`,actReject:`Rejetée`,actRecall:`Retirée`,overrideActionLabel:`{{action}} (dérogation)`,overrideNotice:`Vous n'occupez aucun poste d'approbateur à cette étape. En continuant, votre dérogation d'administrateur sera utilisée : l'étape est finalisée immédiatement et tout approbateur n'ayant pas encore statué est contourné. La décision est enregistrée comme une dérogation d'administrateur.`,overrideNoticeWho:`Vous n'occupez aucun poste d'approbateur à cette étape. En continuant, votre dérogation d'administrateur sera utilisée : l'étape est finalisée immédiatement et les approbateurs n'ayant pas encore statué sont contournés — {{who}}. La décision est enregistrée comme une dérogation d'administrateur.`,viaOverrideChip:`Dérogation administrateur`,viaOverrideHint:`L'auteur n'occupait aucun poste d'approbateur à cette étape — admis par la voie de dérogation administrateur.`,rawData:`Données brutes (JSON)`,copy:`Copier`,copied:`Copié`,copyFailed:`Échec de la copie`,overrideActor:`Agir sous une autre identité (admin)`,actor:`Acteur`,auto:`Auto`,overrideHint:`p. ex. role:sales_manager. Laissez vide pour l'identité détectée automatiquement.`,comment:`Commentaire (facultatif)`,approve:`Approuver`,approving:`Approbation…`,reject:`Rejeter`,rejecting:`Rejet…`,recall:`Retirer`,recalling:`Retrait…`,cancel:`Annuler`,clear:`Effacer`,approveN:`Approuver {{count}}`,rejectN:`Rejeter {{count}}`,bulkApproveTitle:`Approuver {{count}} demandes ?`,bulkApproveBody:`Chaque demande est approuvée avec votre identité et son flux continue sur la branche d'approbation.`,bulkRejectTitle:`Rejeter {{count}} demandes ?`,bulkRejectBody:`Les demandes sélectionnées seront rejetées et leurs demandeurs notifiés.`,bulkApproved:`{{count}} demandes approuvées`,bulkRejected:`{{count}} demandes rejetées`,bulkPartial:`{{ok}} réussies, {{fail}} échouées : {{which}}`,rejectOneTitle:`Rejeter « {{title}} » ?`,rejectOneBody:`La demande sera rejetée et le demandeur notifié.`,rejectTitle:`Rejeter cette demande ?`,rejectBody:`La demande sera marquée comme rejetée et le demandeur notifié.`,recallTitle:`Retirer cette demande ?`,recallBody:`Après le retrait, les approbateurs ne pourront plus agir et l'enregistrement sera déverrouillé.`,inlineApproved:`« {{title}} » approuvée`,inlineRejected:`« {{title}} » rejetée`,approvedFinal:`Approuvée`,approvedWaiting:`Approuvée — en attente des autres approbateurs`,rejectedToast:`Rejetée`,recalledToast:`Demande retirée`,whyDisabled:`Seuls les approbateurs désignés peuvent agir. En attente de : {{who}}.`,whyDisabledSubmitter:`Vous avez soumis cette demande, vous pouvez donc la retirer — mais seuls les approbateurs désignés peuvent l'approuver ou la rejeter.`,noActor:`Impossible de déterminer l'identité`,actionFailed:`Échec de l'action`,loadFailed:`Impossible de charger la demande`,recallUnavailable:`Le retrait n'est pas disponible sur ce déploiement.`,requestGone:`Cette demande n'existe plus. Actualisez la liste.`,notAllowed:`Vous n'êtes pas autorisé à effectuer cette action.`,alreadyDecided:`Cette demande a déjà été traitée. Actualisez la liste.`,justNow:`à l'instant`,minutesAgo:`il y a {{count}} min`,hoursAgo:`il y a {{count}} h`,daysAgo:`il y a {{count}} jours`},preview:{empty:{loadFailedTitle:`Échec du chargement de l'aperçu du brouillon`,loadFailedDescription:`Impossible de lire la surcouche de brouillon. Réessayez ou vérifiez votre connexion.`,notReadyTitle:`« {{app}} » n'est pas encore dans le brouillon`,notReadyDescription:`La génération est peut-être en cours, ou elle a échoué avant la préparation de cette application. Consultez la conversation pour connaître l'état — ce volet s'actualise à l'arrivée des brouillons.`,nothingTitle:`Rien à prévisualiser pour l'instant`,retry:`Réessayer`},draftBar:{messageClean:`Aperçu du brouillon — aucune modification non publiée ; tout ce qui figure ici est déjà en ligne.`,sampleDataTitle:`Les données d'exemple apparaissent après publication`,sampleDataBody:`Vous prévisualisez la structure de votre application. Publiez-la pour charger des enregistrements d'exemple et la mettre en ligne.`,publishCta:`Publier pour voir en ligne`,message:`Aperçu du brouillon — vous voyez des modifications non publiées. Rien n'est en ligne avant publication.`,publish:`Publier`,publishing:`Publication…`,exit:`Quitter l'aperçu`,changes:`Modifications`},changes:{title:`Modifications en attente`,description:`Ce que la publication changera. Les nouveaux éléments sont ajoutés ; les mises à jour remplacent la version en ligne.`,loading:`Chargement des modifications en attente…`,loadFailed:`Impossible de charger les modifications en attente :`,empty:`Rien en attente — tous les brouillons ont été publiés.`,kindNew:`Nouveau`,kindUpdate:`Mise à jour`,detailLoading:`Chargement des détails…`,detailLoadFailed:`Impossible de charger les détails de la modification :`,detailNone:`Aucune différence détectée — le brouillon correspond à la version publiée.`,detailChangedKeys:`Également modifié :`,confirmNote:`La publication libère atomiquement les {{count}} brouillons en attente de ce paquet.`,publishConfirm:`Tout publier`,securityBlockTitle:`La publication sera refusée — {{count}} élément(s) nécessitent d’abord une décision`,securityBlockWhere:`Corrigez-le sur l’objet dans Paramètres → Partage d’enregistrements, puis publiez à nouveau.`},unpublishedBar:{message:`Application non publiée — entièrement fonctionnelle, mais visible seulement par les créateurs. Publiez-la pour la rendre visible à vos utilisateurs.`,publish:`Publier`,publishing:`Publication…`,published:`Publié ! L'application est maintenant visible par vos utilisateurs.`,publishFailed:`Échec de la publication`},history:{button:`Historique`,title:`Historique des générations`,description:`Toutes les modifications de cette application, les plus récentes d'abord. Annulez n'importe quelle étape — aucune confirmation de publication n'est nécessaire.`,loadFailed:`Impossible de charger l'historique :`,loadFailedUnavailable:`Magasin de commits temporairement injoignable — cette lecture n'a pas eu lieu, aucun historique n'est donc affiché. Réessayez dans un instant.`,loading:`Chargement de l'historique…`,empty:`Aucun historique pour cette application.`,revertLabel:`Modification annulée`,applyLabel:`Modification de génération`,revert:`annulation`,items:`Éléments : {{count}}`,revertAction:`Annuler`,reverted:`Annulé — la modification a été retirée.`,revertFailed:`Échec de l'annulation`,revertUnavailable:`Magasin de commits temporairement injoignable — l'annulation n'a peut-être pas été appliquée. Rouvrez cet historique pour le vérifier avant de réessayer.`}},filterBuilder:{where:`Où`,and:`ET`,or:`OU`,clearAll:`Tout effacer`,selectField:`Sélectionner un champ`,operator:`Opérateur`,selectValue:`Sélectionner une valeur`,value:`Valeur`,addFilter:`Ajouter un filtre`,removeCondition:`Supprimer la condition`,trueLabel:`Vrai`,falseLabel:`Faux`,noResults:`Aucun résultat`,searchField:`Rechercher {{label}}…`,enterId:`Saisir l'ID {{label}}`,addValue:`Saisir une valeur, puis Entrée`,removeValue:`Supprimer {{value}}`,rangeStart:`De`,rangeEnd:`À`,operators:{equals:`Égal à`,not_equals:`Différent de`,contains:`Contient`,icontains:`Contient (ignorer la casse)`,not_contains:`Ne contient pas`,is_empty:`Est vide`,is_not_empty:`N'est pas vide`,greater_than:`Supérieur à`,less_than:`Inférieur à`,greater_than_or_equal:`Supérieur ou égal`,less_than_or_equal:`Inférieur ou égal`,before:`Avant`,after:`Après`,between:`Entre`,in:`Dans`,not_in:`Pas dans`,starts_with:`Commence par`,ends_with:`Se termine par`,is_null:`Est null`,is_not_null:`N'est pas null`,exists:`Est défini`,notExists:`N'est pas défini`}},sortBuilder:{sortBy:`Trier par`,thenBy:`Puis par`,selectField:`Sélectionner un champ`,ascending:`A → Z`,descending:`Z → A`,addSort:`Ajouter un tri`,removeSort:`Supprimer le tri`},collaboration:{commentCount:`{{count}} commentaires`,commentCountOne:`{{count}} commentaire`,resolvedSuffix:` · Résolu`,sortComments:`Trier les commentaires`,sortOldest:`Plus anciens`,sortNewest:`Plus récents`,resolve:`Résoudre`,reopen:`Rouvrir`,justNow:`à l'instant`,minutesAgo:`il y a {{count}} min`,hoursAgo:`il y a {{count}} h`,daysAgo:`il y a {{count}} j`,edited:`(modifié)`,reactionCount:`{{count}} réactions`,reactionCountOne:`{{count}} réaction`,addThumbsUp:`Ajouter un pouce levé`,reply:`Répondre`,reactThumbsUp:`Réagir avec un pouce levé`,reactHeart:`Réagir avec un cœur`,cancelReply:`Annuler la réponse`,replyingTo:`Réponse à {{name}}…`,replyingToComment:`Réponse au commentaire…`,commentPlaceholder:`Ajouter un commentaire… (utilisez @ pour mentionner)`,send:`Envoyer`,presentUserCount:`{{count}} utilisateurs présents`,presentUserCountOne:`{{count}} utilisateur présent`,moreUserCount:`{{count}} autres utilisateurs`,moreUserCountOne:`{{count}} autre utilisateur`,userStatusTitle:`{{name}} ({{status}})`,statusActive:`actif`,statusIdle:`inactif`,statusAway:`absent`},wizard:{missingRequired:`Veuillez renseigner les champs obligatoires : {{fields}}`,back:`Retour`,submitting:`Envoi…`,stepFallback:`Étape {{n}}`,progressLabel:`Progression`,emptyStep:`Aucun champ configuré pour cette étape`},flowRunner:{title:`Saisie`,submitting:`Envoi…`,saveAndContinue:`Enregistrer et continuer`,nextStep:`Enregistré — étape suivante`,completed:`Flux « {{flow}} » terminé`},appManagement:{title:`Applications`,subtitle:`Gérer toutes les applications configurées`,newApp:`Nouvelle application`,searchLabel:`Rechercher des applications`,searchPlaceholder:`Rechercher des applications…`,selectedCount:`{{n}} sélectionnées`,bulkEnable:`Activer`,bulkDisable:`Désactiver`,selectAll:`Tout sélectionner ({{n}})`,empty:`Aucune application trouvée.`,defaultBadge:`Par défaut`,active:`Active`,inactive:`Inactive`,selectApp:`Sélectionner {{name}}`,openApp:`Ouvrir l'application`,openAppNamed:`Ouvrir {{name}}`,editApp:`Modifier l'application`,editAppNamed:`Modifier {{name}}`,editWithAi:`Modifier avec l'IA`,editWithAiNamed:`Modifier {{name}} avec l'IA`,enableApp:`Activer l'application`,disableApp:`Désactiver l'application`,enableAppNamed:`Activer {{name}}`,disableAppNamed:`Désactiver {{name}}`,setDefault:`Définir par défaut`,setDefaultNamed:`Définir {{name}} par défaut`,deleteApp:`Supprimer l'application`,deleteAppNamed:`Supprimer {{name}}`,confirmDelete:`Cliquez à nouveau pour confirmer la suppression`,confirmDeleteNamed:`Confirmer la suppression de {{name}}`,toast:{noClient:`Impossible de joindre le service de métadonnées`,unknownError:`erreur inconnue`,appEnabled:`{{name}} activée`,appDisabled:`{{name}} désactivée`,toggleFailed:`Échec du changement d'état de l'application : {{reason}}`,setDefaultDone:`{{name}} définie par défaut`,setDefaultFailed:`Échec de la définition de l'application par défaut : {{reason}}`,appDeleted:`{{name}} supprimée`,deleteFailed:`Échec de la suppression de l'application : {{reason}}`,bulkEnabled:`{{n}} applications activées`,bulkDisabled:`{{n}} applications désactivées`,bulkFailed:`Échec pour {{n}} : {{details}}`,bulkFailureEntry:`{{name}} ({{reason}})`,bulkFailureJoiner:` ; `,bulkOperationFailed:`Échec de l'opération groupée : {{reason}}`}},packagedAutomation:{title:`Automatisation des packages`,subtitle:`Flux et actions fournis par les packages installés. Désactivez-en un pour ce déploiement, ou clonez un flux sous un nouveau nom pour le personnaliser. La modification se fait dans Studio.`,refresh:`Actualiser`,flowsHeading:`Flux des packages`,actionsHeading:`Actions des packages`,colFlow:`Flux`,colActivation:`Activation`,colActions:`Actions`,toggleLabel:`Activation de {{label}}`,on:`Activé`,off:`Désactivé`,clone:`Cloner`,cloneTitle:`Cloner le flux du package`,cloneBody:`La copie reprend toute la définition et exige un nouveau nom machine et un nouveau libellé. Modifiez la copie dans Studio.`,cloneName:`Nouveau nom machine`,cloneLabel:`Nouveau libellé`,cancel:`Annuler`,cloneConfirm:`Créer le clone`,cloneCreated:`Flux « {{name}} » créé.`,emptyTitle:`Aucun flux de package`,emptyBody:`Aucun package installé ne fournit de flux d'automatisation sur ce déploiement. Les flux que vous créez vous-même se trouvent dans Studio.`,loadFailed:`Impossible de charger l'automatisation des packages.`,toggleFailedHttp:`Impossible de modifier l'activation (HTTP {{status}}).`,toggleFailed:`Impossible de modifier l'activation.`,cloneFailedHttp:`Impossible de cloner ce flux (HTTP {{status}}).`,cloneFailed:`Impossible de cloner ce flux.`,actionsSubtitle:`Actions fournies par les packages installés. Désactivez-en une pour ce déploiement et elle cesse de s'exécuter partout où elle est proposée. Vous pouvez toujours créer votre propre action à côté, dans Studio.`,colAction:`Action`,colObject:`Objet`,actionToggleLabel:`Activation de {{label}} sur {{object}}`,actionsEmptyTitle:`Aucune action de package`,actionsEmptyBody:`Aucun package installé ne déclare d'action sur ce déploiement. Les actions que vous créez vous-même se trouvent dans Studio.`,actionsLoadFailed:`Impossible de charger les actions des packages.`},element:{number:{noObject:`Aucun objet indiqué : définissez object ou dataSource.object.`}}};export{t};