mojulo 0.0.0 → 0.1.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 (121) hide show
  1. package/README.md +53 -4
  2. package/lib/audit-logger-new.js +11 -0
  3. package/lib/auth/gate.js +25 -0
  4. package/lib/auth/service.js +17 -0
  5. package/lib/auth/session.js +63 -0
  6. package/lib/builder/chat-processor.js +607 -0
  7. package/lib/builder/composer-bridge.js +82 -0
  8. package/lib/builder/evaluator.js +159 -0
  9. package/lib/builder/executor.js +252 -0
  10. package/lib/builder/index.js +48 -0
  11. package/lib/builder/session.js +248 -0
  12. package/lib/builder/system-prompt.js +422 -0
  13. package/lib/builder/tone-presets.js +75 -0
  14. package/lib/builder/tool-executors.js +1418 -0
  15. package/lib/builder/tools.js +338 -0
  16. package/lib/builder/validators.js +239 -0
  17. package/lib/composer/composer.js +225 -0
  18. package/lib/composer/index.js +40 -0
  19. package/lib/composer/protocols/00_base.txt +19 -0
  20. package/lib/composer/protocols/01_knowledge.txt +9 -0
  21. package/lib/composer/protocols/02_form-gathering.txt +32 -0
  22. package/lib/composer/protocols/03_appointments.txt +16 -0
  23. package/lib/composer/protocols/04_triage.txt +15 -0
  24. package/lib/composer/protocols/05_optical-read.txt +22 -0
  25. package/lib/composer/response-builder.js +98 -0
  26. package/lib/config-builder.js +650 -0
  27. package/lib/db/ids.js +10 -0
  28. package/lib/db/index.js +179 -0
  29. package/lib/db/repositories/apiKeys.js +72 -0
  30. package/lib/db/repositories/auditLogs.js +12 -0
  31. package/lib/db/repositories/botSpaces.js +12 -0
  32. package/lib/db/repositories/builderSessions.js +312 -0
  33. package/lib/db/repositories/deploymentEvents.js +12 -0
  34. package/lib/db/repositories/deployments.js +385 -0
  35. package/lib/db/repositories/documents.js +68 -0
  36. package/lib/db/repositories/mcpJobs.js +84 -0
  37. package/lib/deployers/bot-fleet.js +110 -0
  38. package/lib/deployers/bot-proxy.js +72 -0
  39. package/lib/deployers/build.js +89 -0
  40. package/lib/deployers/cloud-deploy.js +310 -0
  41. package/lib/deployers/docker.js +439 -0
  42. package/lib/deployers/fly.js +432 -0
  43. package/lib/deployers/index.js +38 -0
  44. package/lib/deployment-auth.js +36 -0
  45. package/lib/document-parser.js +171 -0
  46. package/lib/embedder/chunker.js +93 -0
  47. package/lib/embedder/local.js +101 -0
  48. package/lib/embedder/preview-rag.js +93 -0
  49. package/lib/envelope-schema.js +54 -0
  50. package/lib/fleet/scoped-sql.js +342 -0
  51. package/lib/form-schema-config/base.js +135 -0
  52. package/lib/form-schema-config/index.js +286 -0
  53. package/lib/form-schema-config/locales/af-ZA.js +153 -0
  54. package/lib/form-schema-config/locales/ar-AE.js +142 -0
  55. package/lib/form-schema-config/locales/ar-SA.js +164 -0
  56. package/lib/form-schema-config/locales/de-DE.js +152 -0
  57. package/lib/form-schema-config/locales/en-AU.js +161 -0
  58. package/lib/form-schema-config/locales/en-CA.js +115 -0
  59. package/lib/form-schema-config/locales/en-GB.js +132 -0
  60. package/lib/form-schema-config/locales/en-IN.js +219 -0
  61. package/lib/form-schema-config/locales/en-MY.js +171 -0
  62. package/lib/form-schema-config/locales/en-NG.js +198 -0
  63. package/lib/form-schema-config/locales/en-PH.js +186 -0
  64. package/lib/form-schema-config/locales/en-SG.js +153 -0
  65. package/lib/form-schema-config/locales/en-US.js +138 -0
  66. package/lib/form-schema-config/locales/es-ES.js +171 -0
  67. package/lib/form-schema-config/locales/es-MX.js +193 -0
  68. package/lib/form-schema-config/locales/fr-CA.js +138 -0
  69. package/lib/form-schema-config/locales/fr-FR.js +155 -0
  70. package/lib/form-schema-config/locales/hi-IN.js +219 -0
  71. package/lib/form-schema-config/locales/it-IT.js +157 -0
  72. package/lib/form-schema-config/locales/ja-JP.js +169 -0
  73. package/lib/form-schema-config/locales/ko-KR.js +140 -0
  74. package/lib/form-schema-config/locales/nl-NL.js +149 -0
  75. package/lib/form-schema-config/locales/pt-BR.js +168 -0
  76. package/lib/form-schema-config/locales/zh-CN.js +172 -0
  77. package/lib/form-schema-config/locales/zh-HK.js +142 -0
  78. package/lib/form-structure-schema.js +191 -0
  79. package/lib/llm-providers.js +828 -0
  80. package/lib/markdown.js +197 -0
  81. package/lib/mcp/catalysts/appointment-to-calendar.md +84 -0
  82. package/lib/mcp/catalysts/conversations-to-channel-digest.md +104 -0
  83. package/lib/mcp/catalysts/document-extract-to-store.md +92 -0
  84. package/lib/mcp/catalysts/knowledge-gap-miner.md +96 -0
  85. package/lib/mcp/catalysts/loader.js +144 -0
  86. package/lib/mcp/catalysts/qualify-lead-to-crm.md +83 -0
  87. package/lib/mcp/catalysts/scan-conversations-for-signal.md +92 -0
  88. package/lib/mcp/catalysts/submission-to-ticket.md +83 -0
  89. package/lib/mcp/catalysts/submissions-to-warehouse.md +103 -0
  90. package/lib/mcp/catalysts/weekly-submissions-digest.md +82 -0
  91. package/lib/mcp/jobs.js +64 -0
  92. package/lib/mcp/server.js +184 -0
  93. package/lib/mcp/session-binding.js +130 -0
  94. package/lib/mcp/tools/build.js +123 -0
  95. package/lib/mcp/tools/catalysts.js +477 -0
  96. package/lib/mcp/tools/context.js +325 -0
  97. package/lib/mcp/tools/fleet.js +391 -0
  98. package/lib/mcp/tools/jobs-tools.js +240 -0
  99. package/lib/mcp/tools/operate.js +314 -0
  100. package/lib/preview/build-preview-config.js +136 -0
  101. package/lib/rate-limiter.js +11 -0
  102. package/lib/resolve-api-key.js +142 -0
  103. package/lib/storage/index.js +40 -0
  104. package/messages/de.json +2136 -0
  105. package/messages/en.json +2136 -0
  106. package/messages/es.json +2136 -0
  107. package/messages/fr.json +2136 -0
  108. package/messages/it.json +2136 -0
  109. package/messages/ja.json +2136 -0
  110. package/messages/ko.json +2136 -0
  111. package/messages/nl.json +2136 -0
  112. package/messages/pl.json +2136 -0
  113. package/messages/pt.json +2136 -0
  114. package/messages/ru.json +2136 -0
  115. package/messages/uk.json +2136 -0
  116. package/messages/zh.json +2136 -0
  117. package/package.json +61 -5
  118. package/scripts/mcp-config.mjs +162 -0
  119. package/scripts/mcp-stdio-loader.mjs +42 -0
  120. package/scripts/mcp-stdio.mjs +108 -0
  121. package/scripts/mojulo-paths.mjs +48 -0
@@ -0,0 +1,2136 @@
1
+ {
2
+ "common": {
3
+ "loading": "Chargement…",
4
+ "save": "Enregistrer",
5
+ "saving": "Enregistrement…",
6
+ "cancel": "Annuler",
7
+ "delete": "Supprimer",
8
+ "edit": "Modifier",
9
+ "close": "Fermer",
10
+ "search": "Rechercher",
11
+ "back": "Retour",
12
+ "next": "Suivant",
13
+ "submit": "Envoyer",
14
+ "create": "Créer",
15
+ "copy": "Copier",
16
+ "copied": "Copié !",
17
+ "view": "Voir",
18
+ "hide": "Masquer",
19
+ "yes": "Oui",
20
+ "no": "Non",
21
+ "confirm": "Confirmer",
22
+ "done": "Terminé",
23
+ "updating": "Mise à jour…",
24
+ "moveTo": "Déplacer vers :",
25
+ "unknown": "Inconnu",
26
+ "error": "Erreur",
27
+ "remove": "Retirer",
28
+ "selectAnOption": "Sélectionne une option",
29
+ "addItemLabel": "Ajouter {itemLabel}",
30
+ "itemNumber": "{itemLabel} n°{number}"
31
+ },
32
+ "auth": {
33
+ "signIn": "Se connecter",
34
+ "signOut": "Se déconnecter",
35
+ "signingIn": "Connexion…",
36
+ "email": "E-mail",
37
+ "password": "Mot de passe",
38
+ "signInToContinue": "Connecte-toi pour continuer",
39
+ "invalidCredentials": "E-mail ou mot de passe invalide",
40
+ "needAccess": "Besoin d'un accès ? Contacte l'administrateur de ton organisation.",
41
+ "controlPanel": "Mojulo Control Panel",
42
+ "setupComplete": "Compte administrateur créé. Connecte-toi.",
43
+ "emailPlaceholder": "toi@entreprise.com",
44
+ "passwordPlaceholder": "Ton mot de passe"
45
+ },
46
+ "dashboard": {
47
+ "title": "Tableau de bord",
48
+ "loading": "Chargement du tableau de bord…",
49
+ "loadingChatbots": "Chargement des chatbots…",
50
+ "loadingHistory": "Chargement de l'historique…",
51
+ "createNewBot": "Créer un nouveau bot",
52
+ "noBots": "Aucun bot pour l'instant",
53
+ "selectBotOrSpace": "Sélectionne un bot ou un Bot Space pour voir les détails",
54
+ "createBot": "Créer un bot",
55
+ "workspace": "Espace de {name}",
56
+ "unassignedWorkspace": "Espace non assigné",
57
+ "searchChatbots": "Rechercher des chatbots",
58
+ "noChatbotsFound": "Aucun chatbot trouvé",
59
+ "privateNotShared": "Privé (non partagé)",
60
+ "inSpace": "dans {spaceName}",
61
+ "chooseBotType": "Choisis un type de bot pour commencer :",
62
+ "addNewBot": "Ajouter un nouveau bot",
63
+ "addNewPrivateBot": "Ajouter un nouveau bot privé",
64
+ "expandBotSpaces": "Développer les Bot Spaces",
65
+ "allSpaces": "Tous les espaces",
66
+ "adminSummary": {
67
+ "title": "Vue d'ensemble",
68
+ "totalBots": "Total des bots",
69
+ "running": "En cours",
70
+ "stopped": "Arrêtés",
71
+ "failed": "Échoués",
72
+ "recentDeployments": "Déploiements récents",
73
+ "activeBots": "Bots actifs (24 h)",
74
+ "noRecentActivity": "Aucune activité récente",
75
+ "conversations": "conversations",
76
+ "totalActive": "{bots} bots avec {conversations} conversations ces dernières 24 heures",
77
+ "private": "Privé",
78
+ "unknown": "Inconnu",
79
+ "justNow": "à l'instant",
80
+ "minutesAgo": "il y a {count} min",
81
+ "hoursAgo": "il y a {count} h",
82
+ "yesterday": "hier",
83
+ "daysAgo": "il y a {count} j"
84
+ },
85
+ "private": "Privé",
86
+ "showBotList": "Afficher la liste des bots",
87
+ "deleteConfirm": "Veux-tu vraiment supprimer « {name} » ? Cela détruira le déploiement et est irréversible.",
88
+ "deleteError": "Échec de la suppression du déploiement : {error}",
89
+ "actionError": "Échec de l'action {action} sur le déploiement : {error}",
90
+ "assignError": "Échec de l'assignation au bot space : {error}",
91
+ "sections": {
92
+ "control": "Contrôle",
93
+ "data": "Données",
94
+ "resources": "Ressources"
95
+ },
96
+ "launcher": {
97
+ "modularChat": {
98
+ "title": "Bot modulaire (Chat)",
99
+ "badge": "Nouveau",
100
+ "description": "Construire avec un assistant IA"
101
+ },
102
+ "modularWizard": {
103
+ "title": "Bot modulaire (Assistant)",
104
+ "description": "Configuration étape par étape"
105
+ }
106
+ },
107
+ "redeploy": {
108
+ "confirm": "Redéployer « {name} » avec la configuration actuelle ? Le bot sera redémarré sans modifications.",
109
+ "initiating": "Lancement du redéploiement…",
110
+ "sending": "Envoi de la requête de déploiement…",
111
+ "deploying": "Déploiement…",
112
+ "redeploying": "Redéploiement…",
113
+ "failed": "Échec du redéploiement"
114
+ },
115
+ "myBots": "Mes bots",
116
+ "subtitle": "Chaque bot est une configuration enregistrée. Construis-le quand tu veux pour obtenir un ZIP exécutable.",
117
+ "noKeyBanner": {
118
+ "text": "Ajoute une clé de fournisseur LLM pour débloquer le constructeur de chat et l'assistant par formulaire.",
119
+ "cta": "Ouvrir les paramètres →"
120
+ },
121
+ "documentLibrary": "Bibliothèque de documents →",
122
+ "newBotChat": "Nouveau bot (chat)",
123
+ "newBotWizard": "Nouveau bot (assistant)",
124
+ "loadingShort": "Chargement…",
125
+ "noBotsHint": "Aucun bot pour l'instant. Lance-en un depuis le constructeur de chat ou l'assistant.",
126
+ "searchBots": "Rechercher des bots…",
127
+ "noBotsMatch": "Aucun bot ne correspond à « {query} ».",
128
+ "emptyDetailHint": "Sélectionne un bot pour voir ses actions de cycle de vie.",
129
+ "buildFailedAlert": "Échec de la construction : {error}",
130
+ "statuses": {
131
+ "building": "Construction en cours",
132
+ "buildFailed": "Échec de la construction",
133
+ "needsRebuild": "Reconstruction nécessaire",
134
+ "running": "En cours",
135
+ "runningStale": "En cours · obsolète",
136
+ "ready": "Prêt",
137
+ "draft": "Brouillon"
138
+ },
139
+ "builds": {
140
+ "building": "Construction…",
141
+ "retry": "Réessayer la construction",
142
+ "rebuild": "Reconstruire",
143
+ "build": "Construire"
144
+ },
145
+ "connect": {
146
+ "title": "Connecter un bot en cours d'exécution",
147
+ "description": "Colle l'URL où tu exécutes <code>{name}</code>. Le control plane le sondera avec la clé API intégrée à la ligne.",
148
+ "botUrlLabel": "URL du bot",
149
+ "probeFailedFallback": "Échec de la sonde ({status})",
150
+ "disconnect": "Déconnecter",
151
+ "testing": "Test en cours…",
152
+ "testAndSave": "Tester et enregistrer"
153
+ },
154
+ "documents": {
155
+ "title": "Bibliothèque de documents",
156
+ "breadcrumbHere": "Bibliothèque de documents",
157
+ "subtitle": "Tous les documents que tu as téléchargés, et les bots qui référencent chacun d'eux. Les documents survivent aux bots — supprimer un bot ne supprime pas ses documents.",
158
+ "loadFailed": "Échec du chargement de la bibliothèque : {error}",
159
+ "loading": "Chargement…",
160
+ "searchPlaceholder": "Rechercher par nom de fichier…",
161
+ "filters": {
162
+ "all": "Tous",
163
+ "unattached": "Non rattachés",
164
+ "parseFailed": "Échec d'analyse"
165
+ },
166
+ "selectAll": "Tout sélectionner",
167
+ "deselectAll": "Tout désélectionner",
168
+ "selectionStatus": "{selected} sur {total} sélectionnés",
169
+ "deleting": "Suppression…",
170
+ "deleteSelected": "Supprimer la sélection",
171
+ "deleteCount": "Supprimer {count}",
172
+ "deleteSingleConfirm": "Supprimer « {name} » ? Le fichier sera retiré du disque.",
173
+ "deleteMultiConfirm": "Supprimer {count} documents non rattachés ? Ils seront retirés du disque.",
174
+ "deleteFailed": "Échec de la suppression de {failed} sur {total} : {details}",
175
+ "noDocs": "Aucun document téléchargé pour l'instant. Téléchargez-en un depuis l'assistant ou le constructeur de chat lors de la configuration d'un bot.",
176
+ "noMatch": "Aucun document ne correspond à ce filtre.",
177
+ "table": {
178
+ "document": "Document",
179
+ "size": "Taille",
180
+ "uploaded": "Téléchargé",
181
+ "parsed": "Analysé",
182
+ "usedBy": "Utilisé par"
183
+ },
184
+ "parseFailedLabel": "échec",
185
+ "parseFailedTooltip": "Aucun texte extrait — RAG n'utilisera pas ce document",
186
+ "unattachedLabel": "Non rattaché"
187
+ },
188
+ "detail": {
189
+ "backToList": "Retour à la liste",
190
+ "runningAt": "en cours à",
191
+ "staleNotice": "Configuration modifiée depuis la dernière construction — reconstruis pour obtenir le dernier ZIP.",
192
+ "wizard": "Assistant",
193
+ "chat": "Chat",
194
+ "connect": "Connecter",
195
+ "reconnect": "Reconnecter",
196
+ "conversations": "Conversations",
197
+ "downloadZip": "Télécharger le ZIP",
198
+ "downloadWithDocs": "Télécharger avec les documents",
199
+ "deployToCloud": "Déployer dans le cloud",
200
+ "live": "En direct ↗",
201
+ "hideEmbed": "Masquer l'intégration",
202
+ "embedScript": "Script d'intégration",
203
+ "deleteBot": "Supprimer le bot",
204
+ "deleteConfirm": "Supprimer ce bot et son artefact ?"
205
+ }
206
+ },
207
+ "bots": {
208
+ "types": {
209
+ "chat": "Chat",
210
+ "knowledge": "Connaissance",
211
+ "form": "Formulaire",
212
+ "triage": "Triage",
213
+ "appointment": "Rendez-vous",
214
+ "bot": "Bot"
215
+ },
216
+ "descriptions": {
217
+ "chat": "Assistant de chat propulsé par l'IA",
218
+ "form": "Collecte de données structurées",
219
+ "triage": "Orienter les utilisateurs au bon endroit",
220
+ "appointment": "Planifier réunions et réservations"
221
+ },
222
+ "status": {
223
+ "deployed": "déployé",
224
+ "deploying": "déploiement",
225
+ "failed": "échec"
226
+ }
227
+ },
228
+ "actions": {
229
+ "modify": "Modifier",
230
+ "clone": "Cloner",
231
+ "reassign": "Réassigner",
232
+ "goToLiveBot": "Accéder au bot en direct",
233
+ "modifyTitle": "Modifier le déploiement — conserve la même URL et le même nom",
234
+ "cloneTitle": "Cloner ce déploiement avec un nouveau nom",
235
+ "reassignTitle": "Réassigner à un autre bot space",
236
+ "deleteTitle": "Supprimer le déploiement",
237
+ "editInChat": "Chat",
238
+ "editInChatTitle": "Modifier via l'assistant de chat",
239
+ "pause": "Mettre en pause",
240
+ "start": "Démarrer",
241
+ "pauseBot": "Mettre le bot en pause",
242
+ "startBot": "Démarrer le bot",
243
+ "redeploy": "Redéployer",
244
+ "redeployBot": "Redéployer le bot",
245
+ "live": "En direct",
246
+ "embed": "Intégrer",
247
+ "copied": "Copié",
248
+ "replicas": "Réplicas",
249
+ "scaleReplicas": "Mettre à l'échelle les réplicas",
250
+ "replicasDescription": "Ajuste le nombre de réplicas du bot. Plus de réplicas permettent de gérer plus d'utilisateurs simultanés. Les sessions persistantes garantissent que les utilisateurs restent connectés au même réplica.",
251
+ "replicaCount": "Nombre de réplicas",
252
+ "replicasRange": "Min : 1, Max : 10",
253
+ "currentReplicas": "Réplicas actuels (disponibles/souhaités)",
254
+ "scale": "Mettre à l'échelle",
255
+ "scaling": "Mise à l'échelle…",
256
+ "cancel": "Annuler"
257
+ },
258
+ "nav": {
259
+ "dashboard": "Tableau de bord",
260
+ "analytics": "Analytique",
261
+ "conversations": "Conversations",
262
+ "submissions": "Soumissions",
263
+ "liveLogs": "Journaux en direct"
264
+ },
265
+ "wizard": {
266
+ "loading": "Chargement de l'assistant…",
267
+ "loadingDeployment": "Chargement de la configuration de déploiement…",
268
+ "previewAfterDeployment": "Aperçu disponible après le déploiement",
269
+ "clickToBegin": "Clique sur un bouton de déploiement pour commencer",
270
+ "clickToUpdate": "Clique sur un bouton de déploiement pour mettre à jour",
271
+ "steps": {
272
+ "identity": "Identité",
273
+ "knowledge": "Base de connaissances",
274
+ "deployment": "Déploiement",
275
+ "resources": "Ressources",
276
+ "infoGathering": "Collecte d'informations",
277
+ "triage": "Triage",
278
+ "appointments": "Rendez-vous",
279
+ "botSetup": "Configuration du bot",
280
+ "capabilities": "Capacités",
281
+ "formCollection": "Collecte de formulaire",
282
+ "routing": "Routage",
283
+ "opticalRead": "Lecture optique",
284
+ "deploy": "Construire"
285
+ },
286
+ "titles": {
287
+ "newBot": "Nouveau bot",
288
+ "editBot": "Modifier le bot",
289
+ "cloneBot": "Cloner le bot",
290
+ "newConversationalBot": "Nouveau bot conversationnel",
291
+ "editConversationalBot": "Modifier le bot conversationnel",
292
+ "cloneConversationalBot": "Cloner le bot conversationnel",
293
+ "newTriageBot": "Nouveau bot de triage",
294
+ "editTriageBot": "Modifier le bot de triage",
295
+ "cloneTriageBot": "Cloner le bot de triage",
296
+ "newAppointmentsBot": "Nouveau bot de rendez-vous",
297
+ "editAppointmentsBot": "Modifier le bot de rendez-vous",
298
+ "cloneAppointmentsBot": "Cloner le bot de rendez-vous",
299
+ "configureYourBot": "Configure ton bot",
300
+ "selectBotCapabilities": "Sélectionne les capacités du bot",
301
+ "defineBotIdentity": "Définis l'identité du bot",
302
+ "uploadKnowledgeBase": "Téléverse la base de connaissances",
303
+ "configureFormCollection": "Configure la collecte de formulaire",
304
+ "configureAppointments": "Configure les rendez-vous",
305
+ "configureTriageRouting": "Configure le routage de triage",
306
+ "configureOpticalRead": "Configure la lecture optique",
307
+ "deployYourBot": "Construire et télécharger"
308
+ },
309
+ "badges": {
310
+ "modifying": "Modification",
311
+ "clone": "Cloner",
312
+ "new": "Nouveau",
313
+ "conversational": "Conversationnel",
314
+ "triage": "Triage",
315
+ "appointments": "Rendez-vous",
316
+ "form": "Formulaire",
317
+ "modular": "Modulaire",
318
+ "knowledge": "Connaissance",
319
+ "forms": "Formulaires",
320
+ "routing": "Routage",
321
+ "opticalRead": "Lecture optique"
322
+ },
323
+ "theatre": {
324
+ "modelConfiguration": "Configuration du modèle",
325
+ "botPreview": "Aperçu du bot",
326
+ "knowledgeBase": "Base de connaissances",
327
+ "deployment": "Déploiement",
328
+ "preview": "Aperçu",
329
+ "infoGathering": "Collecte d'informations",
330
+ "triageDestinations": "Destinations de triage",
331
+ "appointmentTypes": "Types de rendez-vous",
332
+ "calendarProviders": "Fournisseurs de calendrier",
333
+ "protocolPreview": "Aperçu du protocole",
334
+ "formPreview": "Aperçu du formulaire",
335
+ "appointmentPreview": "Aperçu des rendez-vous",
336
+ "triagePreview": "Aperçu du triage",
337
+ "opticalReadPreview": "Aperçu de la lecture optique"
338
+ },
339
+ "protocols": {
340
+ "selectCapabilities": "Sélectionne les capacités du bot",
341
+ "selectCapabilitiesDescription": "Active les protocoles dont ton bot a besoin. Combine plusieurs capacités.",
342
+ "knowledgeBase": "Base de connaissances",
343
+ "knowledgeBaseDescription": "Répondre aux questions à partir des documents téléversés et du RAG (Retrieval-Augmented Generation)",
344
+ "formCollection": "Collecte de formulaire",
345
+ "formCollectionDescription": "Formulaires conversationnels pour collecter des informations sans que l'IA ne voie les données utilisateur",
346
+ "appointmentBooking": "Prise de rendez-vous",
347
+ "appointmentBookingDescription": "Orienter les utilisateurs vers des fournisseurs de calendrier comme Calendly ou Google Calendar",
348
+ "triageRouting": "Routage de triage",
349
+ "triageRoutingDescription": "Orienter les utilisateurs vers des bots spécialisés ou un support humain selon leurs besoins",
350
+ "opticalRead": "Lecture optique",
351
+ "opticalReadDescription": "Extraire des données structurées d'une image téléversée à l'aide d'un LLM doté de vision",
352
+ "opticalReadProviderGate": "La lecture optique nécessite un fournisseur doté de vision. Anthropic et OpenAI sont pris en charge.",
353
+ "modelGate": "Ce modèle ne prend en charge que le protocole de connaissances. Passe à llama3.3 (Ollama) ou à un fournisseur cloud pour activer les flux multi-étapes.",
354
+ "exampleFaq": "Chatbots FAQ",
355
+ "exampleDocumentation": "Assistants de documentation",
356
+ "exampleProductSupport": "Support produit",
357
+ "exampleLeadCapture": "Capture de prospects",
358
+ "exampleOnboarding": "Intégration utilisateur",
359
+ "exampleSurvey": "Collecte de sondages",
360
+ "exampleConsultation": "Prise de consultation",
361
+ "exampleScheduling": "Planification de services",
362
+ "exampleMeeting": "Organisation de réunions",
363
+ "exampleMultiBot": "Routage multi-bots",
364
+ "exampleDelegation": "Délégation intelligente",
365
+ "exampleCustomerRouting": "Routage client",
366
+ "selectAtLeastOne": "Sélectionne au moins une capacité",
367
+ "capabilitiesSelected": "{count} {count, plural, one {capability} other {capabilities}} sélectionnée(s)",
368
+ "yourCombination": "Ta combinaison :",
369
+ "combinationFullService": "Bot tout-en-un : répondre aux questions, collecter les infos utilisateur et prendre des rendez-vous.",
370
+ "combinationQaData": "Q&R + collecte de données : répondre aux questions depuis ta base de connaissances tout en collectant des infos utilisateur.",
371
+ "combinationQaBooking": "Q&R + réservation : répondre aux questions et aider les utilisateurs à prendre rendez-vous.",
372
+ "combinationIntakeBooking": "Accueil + réservation : collecter les infos utilisateur et planifier des rendez-vous.",
373
+ "preview": {
374
+ "selectProtocolPrompt": "Sélectionne les capacités à gauche pour voir ce que ton bot peut faire",
375
+ "selectedCapabilities": "Capacités sélectionnées",
376
+ "combinedPossibilities": "Possibilités combinées",
377
+ "exampleUseCases": "Exemples de cas d'usage",
378
+ "showExamples": "Voir des exemples",
379
+ "contexts": {
380
+ "contextGeneric": "Générique",
381
+ "contextMedical": "Médical",
382
+ "contextLegal": "Juridique",
383
+ "contextRetail": "Commerce de détail",
384
+ "contextRealEstate": "Immobilier",
385
+ "contextEducation": "Éducation",
386
+ "contextHospitality": "Hôtellerie",
387
+ "contextFinance": "Finance",
388
+ "medical": {
389
+ "medicalKnowledge": "Base de connaissances médicales",
390
+ "medicalKnowledgeDesc": "Répondre aux questions des patients sur les symptômes, médicaments, procédures et assurances",
391
+ "symptomChecker": "Vérificateur de symptômes",
392
+ "drugInfo": "Informations sur les médicaments",
393
+ "treatmentFAQ": "FAQ sur les traitements",
394
+ "insuranceCoverage": "Couverture d'assurance",
395
+ "prepInstructions": "Préparation aux procédures",
396
+ "medicalForms": "Accueil patient",
397
+ "medicalFormsDesc": "Collecter l'historique médical, l'assurance et le consentement via des formulaires conversationnels",
398
+ "patientIntake": "Accueil patient",
399
+ "medicalHistory": "Historique médical",
400
+ "consentForms": "Formulaires de consentement",
401
+ "insuranceVerification": "Vérification d'assurance",
402
+ "symptomQuestionnaire": "Questionnaire de symptômes",
403
+ "medicalAppointments": "Planification de rendez-vous",
404
+ "medicalAppointmentsDesc": "Prendre rendez-vous chez le médecin, pour des examens et des suivis avec intégration calendrier",
405
+ "doctorBooking": "Réservation médecin",
406
+ "labScheduling": "Planification de laboratoire",
407
+ "followUpReminders": "Rappels de suivi",
408
+ "specialistReferral": "Orientation vers un spécialiste",
409
+ "telehealth": "Séances de télémédecine",
410
+ "medicalTriage": "Triage clinique",
411
+ "medicalTriageDesc": "Évaluer l'urgence et orienter les patients vers le niveau de soins approprié",
412
+ "urgencyAssessment": "Évaluation d'urgence",
413
+ "departmentRouting": "Routage par service",
414
+ "nurseEscalation": "Escalade vers infirmière",
415
+ "emergencyDetection": "Détection d'urgence",
416
+ "specialistMatch": "Correspondance avec un spécialiste",
417
+ "medicalKnowledgeForm": "Accueil patient intelligent",
418
+ "medicalKnowledgeFormDesc": "Informer les patients tout en collectant les informations d'accueil",
419
+ "smartIntake": "Accueil intelligent",
420
+ "guidedSymptoms": "Collecte guidée des symptômes",
421
+ "educatedConsent": "Consentement éclairé",
422
+ "preVisitPrep": "Préparation pré-consultation",
423
+ "medicalKnowledgeAppt": "Réservation éclairée",
424
+ "medicalKnowledgeApptDesc": "Expliquer les services et aider les patients à prendre le bon rendez-vous",
425
+ "informedBooking": "Réservation éclairée",
426
+ "prepThenSchedule": "Préparer puis planifier",
427
+ "serviceExplainer": "Présentation des services",
428
+ "waitTimeInfo": "Infos sur le temps d'attente",
429
+ "medicalTriple": "Parcours patient",
430
+ "medicalTripleDesc": "Flux d'accueil complet : informer, collecter les infos et planifier en une seule conversation",
431
+ "fullPatientJourney": "Parcours patient complet",
432
+ "newPatientOnboarding": "Intégration nouveau patient",
433
+ "referralWorkflow": "Flux d'orientation",
434
+ "medicalAll": "Réception virtuelle",
435
+ "medicalAllDesc": "Réceptionniste numérique complète : triage, accueil, information et planification",
436
+ "virtualFrontDesk": "Réception virtuelle",
437
+ "completePatientPortal": "Assistant portail patient",
438
+ "urgentCareBot": "Bot de soins urgents"
439
+ },
440
+ "legal": {
441
+ "legalKnowledge": "Informations juridiques",
442
+ "legalKnowledgeDesc": "Répondre aux questions sur les domaines de pratique, les procédures et les structures d'honoraires",
443
+ "legalFAQ": "FAQ juridique",
444
+ "caseTypesInfo": "Infos sur les types d'affaires",
445
+ "feeStructure": "Structure d'honoraires",
446
+ "processExplainer": "Présentation des procédures",
447
+ "jurisdictionInfo": "Infos sur la juridiction",
448
+ "legalForms": "Accueil client",
449
+ "legalFormsDesc": "Collecter les détails d'affaire, les documents et les informations de vérification des conflits",
450
+ "clientIntake": "Accueil client",
451
+ "caseDetails": "Détails de l'affaire",
452
+ "documentCollection": "Collecte de documents",
453
+ "conflictCheck": "Vérification des conflits",
454
+ "retainerInfo": "Informations sur les honoraires",
455
+ "legalAppointments": "Prise de consultation",
456
+ "legalAppointmentsDesc": "Planifier consultations, dépositions et réunions",
457
+ "consultationBooking": "Prise de consultation",
458
+ "depositionSchedule": "Planification de déposition",
459
+ "courtDateReminders": "Rappels d'audience",
460
+ "meetingCoordination": "Coordination des réunions",
461
+ "legalTriage": "Routage des affaires",
462
+ "legalTriageDesc": "Orienter les demandes vers l'avocat ou le domaine de pratique approprié",
463
+ "caseTypeRouting": "Routage par type d'affaire",
464
+ "urgencyAssessment": "Évaluation d'urgence",
465
+ "attorneyMatch": "Correspondance avec un avocat",
466
+ "departmentRouting": "Routage par service",
467
+ "legalKnowledgeForm": "Évaluation guidée d'affaire",
468
+ "legalKnowledgeFormDesc": "Expliquer les options juridiques tout en collectant les informations sur l'affaire",
469
+ "guidedIntake": "Accueil guidé",
470
+ "informedConsent": "Consentement éclairé",
471
+ "caseEvaluation": "Évaluation d'affaire",
472
+ "legalAll": "Parajuriste virtuel",
473
+ "legalAllDesc": "Services clients complets : accueil, évaluation d'affaire, routage et planification",
474
+ "virtualParalegal": "Parajuriste virtuel",
475
+ "clientPortal": "Portail client",
476
+ "caseManagement": "Gestion d'affaires"
477
+ },
478
+ "retail": {
479
+ "retailKnowledge": "Assistant produit",
480
+ "retailKnowledgeDesc": "Répondre aux questions sur les produits, la disponibilité, les politiques et les tailles",
481
+ "productInfo": "Informations produit",
482
+ "stockAvailability": "Disponibilité en stock",
483
+ "returnPolicy": "Politique de retour",
484
+ "shippingFAQ": "FAQ sur la livraison",
485
+ "sizeGuide": "Guide des tailles",
486
+ "retailForms": "Service client",
487
+ "retailFormsDesc": "Gérer les recherches de commandes, les retours et les enregistrements de garantie",
488
+ "orderLookup": "Recherche de commande",
489
+ "returnRequest": "Demande de retour",
490
+ "warrantyRegistration": "Enregistrement de garantie",
491
+ "feedbackSurvey": "Sondage de satisfaction",
492
+ "wishlist": "Collecte de liste de souhaits",
493
+ "retailAppointments": "Réservation de service",
494
+ "retailAppointmentsDesc": "Planifier shopping personnel, retraits et services en magasin",
495
+ "personalShopping": "Shopping personnel",
496
+ "storePickup": "Retrait en magasin",
497
+ "serviceBooking": "Réservation de service",
498
+ "consultations": "Conseils en style",
499
+ "fittingRoom": "Réservation de cabine d'essayage",
500
+ "retailTriage": "Routage client",
501
+ "retailTriageDesc": "Orienter les clients vers le bon service ou faire remonter les problèmes",
502
+ "departmentRouting": "Routage par service",
503
+ "issueEscalation": "Escalade de problèmes",
504
+ "vipCustomers": "Clients VIP",
505
+ "languageRouting": "Routage par langue",
506
+ "retailAll": "Concierge virtuel",
507
+ "retailAllDesc": "Assistant shopping complet : aide produit, réservation de service et support",
508
+ "virtualConcierge": "Concierge virtuel",
509
+ "omniChannelSupport": "Support omnicanal",
510
+ "personalShopperBot": "Bot acheteur personnel"
511
+ },
512
+ "realestate": {
513
+ "realestateKnowledge": "Informations sur les biens",
514
+ "realestateKnowledgeDesc": "Répondre aux questions sur les annonces, les quartiers et le processus d'achat",
515
+ "listingInfo": "Informations sur l'annonce",
516
+ "neighborhoodGuide": "Guide du quartier",
517
+ "mortgageFAQ": "FAQ sur les prêts immobiliers",
518
+ "buyingProcess": "Processus d'achat",
519
+ "marketTrends": "Tendances du marché",
520
+ "realestateForms": "Qualification de prospect",
521
+ "realestateFormsDesc": "Qualifier les acheteurs/vendeurs et capturer les préférences immobilières",
522
+ "buyerQualification": "Qualification d'acheteur",
523
+ "sellerIntake": "Accueil vendeur",
524
+ "propertyPreferences": "Préférences immobilières",
525
+ "preApprovalInfo": "Infos sur la pré-approbation",
526
+ "contactCapture": "Capture de contact",
527
+ "realestateAppointments": "Planification de visites",
528
+ "realestateAppointmentsDesc": "Planifier visites de biens, journées portes ouvertes et rendez-vous avec un agent",
529
+ "showingSchedule": "Planification de visite",
530
+ "openHouseRSVP": "RSVP portes ouvertes",
531
+ "agentMeeting": "Rendez-vous avec un agent",
532
+ "virtualTour": "Visite virtuelle",
533
+ "inspectionBooking": "Réservation d'inspection",
534
+ "realestateTriage": "Correspondance avec un agent",
535
+ "realestateTriageDesc": "Associer les prospects au bon agent selon leurs besoins et leur localisation",
536
+ "buyerVsSeller": "Acheteur vs vendeur",
537
+ "locationRouting": "Routage par localisation",
538
+ "agentMatch": "Correspondance avec un agent",
539
+ "propertyTypeSpecialist": "Spécialiste immobilier",
540
+ "realestateAll": "Agent virtuel",
541
+ "realestateAllDesc": "Assistant immobilier complet : annonces, qualification et planification",
542
+ "virtualAgent": "Agent virtuel",
543
+ "leadQualification": "Qualification de prospect",
544
+ "propertyMatchmaker": "Marieur immobilier"
545
+ },
546
+ "education": {
547
+ "educationKnowledge": "Infos sur les cours et programmes",
548
+ "educationKnowledgeDesc": "Répondre aux questions sur les cours, les admissions, l'aide financière et la vie de campus",
549
+ "courseCatalog": "Catalogue de cours",
550
+ "admissionsFAQ": "FAQ sur les admissions",
551
+ "financialAid": "Infos sur l'aide financière",
552
+ "campusInfo": "Informations sur le campus",
553
+ "programRequirements": "Conditions d'admission",
554
+ "educationForms": "Candidatures étudiantes",
555
+ "educationFormsDesc": "Collecter les informations d'inscription, d'enregistrement et de candidature",
556
+ "applicationForm": "Formulaire de candidature",
557
+ "enrollmentInfo": "Infos sur l'inscription",
558
+ "transcriptRequest": "Demande de relevé de notes",
559
+ "financialAidApp": "Demande d'aide financière",
560
+ "courseRegistration": "Inscription aux cours",
561
+ "educationAppointments": "Planification académique",
562
+ "educationAppointmentsDesc": "Planifier rendez-vous avec un conseiller, visites de campus et séances de tutorat",
563
+ "advisorMeeting": "Rendez-vous avec un conseiller",
564
+ "campusTour": "Visite de campus",
565
+ "admissionsInterview": "Entretien d'admission",
566
+ "tutoringSessions": "Séances de tutorat",
567
+ "officeHours": "Heures de bureau",
568
+ "educationTriage": "Routage étudiant",
569
+ "educationTriageDesc": "Orienter les demandes vers le bon service ou la bonne équipe de soutien",
570
+ "departmentRouting": "Routage par service",
571
+ "studentVsProspect": "Étudiant vs candidat",
572
+ "academicVsAdmin": "Académique vs administratif",
573
+ "urgencyLevel": "Niveau d'urgence",
574
+ "educationAll": "Conseiller virtuel",
575
+ "educationAllDesc": "Services étudiants complets : informations, candidatures et planification",
576
+ "virtualAdvisor": "Conseiller virtuel",
577
+ "admissionsBot": "Bot d'admissions",
578
+ "studentServicesHub": "Hub des services étudiants"
579
+ },
580
+ "hospitality": {
581
+ "hospitalityKnowledge": "Informations clients",
582
+ "hospitalityKnowledgeDesc": "Répondre aux questions sur les équipements, la restauration, les activités et les attractions locales",
583
+ "amenitiesInfo": "Infos sur les équipements",
584
+ "localAttractions": "Attractions locales",
585
+ "diningOptions": "Options de restauration",
586
+ "policyFAQ": "FAQ sur les politiques",
587
+ "eventInfo": "Informations sur l'événement",
588
+ "hospitalityForms": "Préférences clients",
589
+ "hospitalityFormsDesc": "Capturer les préférences de chambre, les besoins alimentaires et les détails d'occasion spéciale avant l'arrivée",
590
+ "roomPreferences": "Préférences de chambre",
591
+ "dietaryRestrictions": "Restrictions alimentaires",
592
+ "pillowMenu": "Menu d'oreillers et literie",
593
+ "arrivalDetails": "Détails d'arrivée",
594
+ "specialOccasions": "Occasions spéciales",
595
+ "hospitalityAppointments": "Réservation",
596
+ "hospitalityAppointmentsDesc": "Réserver restauration, spa, activités et service en chambre",
597
+ "reservationBooking": "Prise de réservation",
598
+ "spaAppointment": "Rendez-vous spa",
599
+ "diningReservation": "Réservation au restaurant",
600
+ "roomService": "Service en chambre",
601
+ "activityBooking": "Réservation d'activité",
602
+ "hospitalityTriage": "Routage clients",
603
+ "hospitalityTriageDesc": "Orienter les demandes vers le bon service ou faire remonter les problèmes urgents",
604
+ "guestVsProspect": "Client vs prospect",
605
+ "urgentRequests": "Demandes urgentes",
606
+ "departmentRouting": "Routage par service",
607
+ "vipHandling": "Traitement VIP",
608
+ "hospitalityAll": "Concierge virtuel",
609
+ "hospitalityAllDesc": "Services clients complets : informations, réservations et support",
610
+ "virtualConcierge": "Concierge virtuel",
611
+ "guestServicesBot": "Bot des services clients",
612
+ "preArrivalConcierge": "Concierge pré-arrivée"
613
+ },
614
+ "finance": {
615
+ "financeKnowledge": "Produits financiers",
616
+ "financeKnowledgeDesc": "Répondre aux questions sur les comptes, les prêts, les taux et les exigences KYC",
617
+ "productInfo": "Informations produit",
618
+ "ratesFAQ": "FAQ sur les taux et frais",
619
+ "eligibilityGuide": "Guide d'éligibilité",
620
+ "kycRequirements": "Exigences KYC",
621
+ "complianceInfo": "Infos sur la conformité",
622
+ "financeForms": "KYC et intégration",
623
+ "financeFormsDesc": "Collecter les documents d'identité, vérifier les clients et compléter l'intégration réglementaire",
624
+ "kycCollection": "Collecte KYC",
625
+ "identityVerification": "Vérification d'identité",
626
+ "amlScreening": "Filtrage AML",
627
+ "accountOpening": "Ouverture de compte",
628
+ "riskProfiling": "Profilage de risque",
629
+ "financeAppointments": "Planification de conseiller",
630
+ "financeAppointmentsDesc": "Planifier des rendez-vous avec conseillers, agents de prêt et spécialistes",
631
+ "advisorMeeting": "Rendez-vous avec un conseiller",
632
+ "loanConsultation": "Consultation de prêt",
633
+ "accountReview": "Revue de compte",
634
+ "planningSession": "Séance de planification",
635
+ "branchVisit": "Visite en agence",
636
+ "financeTriage": "Routage de service",
637
+ "financeTriageDesc": "Orienter vers le bon spécialiste produit ou faire remonter les cas complexes",
638
+ "productRouting": "Routage par produit",
639
+ "complianceEscalation": "Escalade conformité",
640
+ "advisorMatch": "Correspondance avec un conseiller",
641
+ "fraudEscalation": "Escalade fraude",
642
+ "financeAll": "Intégration numérique",
643
+ "financeAllDesc": "Intégration numérique complète : vérification KYC, correspondance produit et planification de conseiller",
644
+ "digitalOnboarding": "Intégration numérique",
645
+ "kycBot": "Bot KYC",
646
+ "wealthAdvisorAssistant": "Assistant conseiller en patrimoine"
647
+ }
648
+ },
649
+ "knowledge": {
650
+ "title": "Base de connaissances",
651
+ "description": "Répondre aux questions à partir de tes documents téléversés avec une récupération propulsée par RAG",
652
+ "example1": "Chatbot FAQ produit",
653
+ "example2": "Assistant de documentation",
654
+ "example3": "Portail de connaissances internes"
655
+ },
656
+ "formGathering": {
657
+ "title": "Collecte de formulaire",
658
+ "description": "Collecter progressivement les informations utilisateur via une conversation naturelle",
659
+ "example1": "Formulaires de capture de prospects",
660
+ "example2": "Intégration client",
661
+ "example3": "Collecte de sondages et retours"
662
+ },
663
+ "appointments": {
664
+ "title": "Prise de rendez-vous",
665
+ "description": "Permettre aux utilisateurs de prendre rendez-vous via des intégrations calendrier",
666
+ "example1": "Réservation de consultation commerciale",
667
+ "example2": "Planification de rendez-vous de service",
668
+ "example3": "Demandes de démo et de réunion"
669
+ },
670
+ "triage": {
671
+ "title": "Routage de triage",
672
+ "description": "Orienter les utilisateurs vers des bots spécialisés ou un support humain selon leurs besoins",
673
+ "example1": "Routage par service",
674
+ "example2": "Escalade vers des agents humains",
675
+ "example3": "Orchestration multi-bots"
676
+ },
677
+ "singles": {
678
+ "singleKnowledge": "Assistant de connaissances",
679
+ "singleKnowledgeDesc": "Répondre aux questions à partir de tes documents téléversés avec une récupération intelligente propulsée par RAG",
680
+ "scenarioFAQ": "Chatbot FAQ",
681
+ "scenarioProductInfo": "Informations produit",
682
+ "scenarioDocumentation": "Portail de documentation",
683
+ "scenarioInternalKB": "Base de connaissances interne",
684
+ "scenarioPolicyLookup": "Recherche de politique",
685
+ "singleFormGathering": "Collecteur de données",
686
+ "singleFormGatheringDesc": "Collecter progressivement des informations structurées via une conversation naturelle",
687
+ "scenarioLeadCapture": "Capture de prospects",
688
+ "scenarioSurvey": "Collecte de sondages",
689
+ "scenarioContactForm": "Formulaires de contact",
690
+ "scenarioFeedback": "Collecte de retours",
691
+ "scenarioRegistration": "Inscription à un événement",
692
+ "singleAppointments": "Assistant de réservation",
693
+ "singleAppointmentsDesc": "Aider les utilisateurs à planifier des réunions via des intégrations calendrier comme Calendly ou Cal.com",
694
+ "scenarioBookMeeting": "Réservation de réunion",
695
+ "scenarioScheduleDemo": "Planification de démo",
696
+ "scenarioConsultation": "Prise de consultation",
697
+ "scenarioServiceAppt": "Rendez-vous de service",
698
+ "scenarioOfficeHours": "Heures de bureau",
699
+ "singleTriage": "Routeur intelligent",
700
+ "singleTriageDesc": "Orienter les utilisateurs vers la bonne destination selon l'intention, l'urgence ou le sujet",
701
+ "scenarioRouteToAgent": "Routage vers un agent",
702
+ "scenarioDepartmentRouting": "Routage par service",
703
+ "scenarioEscalation": "Gestion d'escalade",
704
+ "scenarioLanguageRouting": "Routage basé sur la langue",
705
+ "scenarioVIPRouting": "Routage prioritaire/VIP",
706
+ "singleOpticalRead": "Extracteur visuel",
707
+ "singleOpticalReadDesc": "Extraire des champs structurés d'une image téléversée — le modèle lit, l'utilisateur révise et soumet",
708
+ "scenarioIdScan": "Numérisation de pièce d'identité",
709
+ "scenarioInsuranceCard": "Capture de carte d'assurance",
710
+ "scenarioReceiptExtract": "Extraction de reçu",
711
+ "scenarioBusinessCard": "Lecteur de carte de visite",
712
+ "scenarioPrescriptionLabel": "Étiquette d'ordonnance"
713
+ },
714
+ "synergies": {
715
+ "synergyKnowledgeForm": "Capture de prospects éclairée",
716
+ "synergyKnowledgeFormDesc": "Répondre aux questions produit pour bâtir la confiance, puis capturer les prospects intéressés avec des formulaires contextuels",
717
+ "scenarioQualifyThenCapture": "Qualifier puis capturer",
718
+ "scenarioAnswerThenCollect": "Répondre puis collecter",
719
+ "scenarioContextualForms": "Formulaires contextuels",
720
+ "scenarioEducateThenConvert": "Informer puis convertir",
721
+ "scenarioSupportToLead": "Support → prospect",
722
+ "synergyKnowledgeAppointments": "Réservation consultative",
723
+ "synergyKnowledgeAppointmentsDesc": "Informer les utilisateurs sur les services/produits, puis les laisser réserver quand ils sont prêts",
724
+ "scenarioInformThenBook": "Informer puis réserver",
725
+ "scenarioSmartScheduling": "Planification intelligente",
726
+ "scenarioPreQualifyBooking": "Pré-qualifier les réservations",
727
+ "scenarioServiceExplainer": "Présentation des services → réserver",
728
+ "scenarioPricingToDemo": "FAQ tarification → démo",
729
+ "synergyKnowledgeTriage": "Escalade intelligente",
730
+ "synergyKnowledgeTriageDesc": "Réponses en libre-service pour les questions courantes, transfert fluide pour les problèmes complexes",
731
+ "scenarioAnswerOrEscalate": "Répondre ou faire remonter",
732
+ "scenarioSmartRouting": "Routage intelligent",
733
+ "scenarioTieredSupport": "Support à plusieurs niveaux",
734
+ "scenarioDeflectOrRoute": "Dévier ou router",
735
+ "scenarioL1Automation": "Automatisation N1",
736
+ "synergyKnowledgeOpticalRead": "Numériser et expliquer",
737
+ "synergyKnowledgeOpticalReadDesc": "Extraire des données d'une image téléversée, puis répondre aux questions de suivi ancrées dans ta base de connaissances",
738
+ "scenarioScanThenAsk": "Numériser puis demander",
739
+ "scenarioDocumentExplainer": "Présentation de document",
740
+ "scenarioCardToPolicy": "Carte → recherche de politique",
741
+ "scenarioPrescriptionExplainer": "Présentation d'ordonnance",
742
+ "scenarioReceiptToReturns": "Reçu → FAQ retours",
743
+ "synergyFormAppointments": "Accueil vers réservation",
744
+ "synergyFormAppointmentsDesc": "Collecter les informations qualifiantes, puis proposer des créneaux de rendez-vous personnalisés",
745
+ "scenarioIntakeSchedule": "Accueillir puis planifier",
746
+ "scenarioBookAndCapture": "Réserver et capturer",
747
+ "scenarioQualifyBook": "Qualifier puis réserver",
748
+ "scenarioPreVisitForm": "Formulaire pré-visite → réserver",
749
+ "scenarioNeedsAssessment": "Évaluation des besoins → planifier",
750
+ "synergyFormTriage": "Routage intelligent de prospects",
751
+ "synergyFormTriageDesc": "Rassembler les détails utilisateur, puis orienter vers le bon membre d'équipe ou service",
752
+ "scenarioCollectThenRoute": "Collecter puis router",
753
+ "scenarioFormBasedRouting": "Routage basé sur formulaire",
754
+ "scenarioLeadDistribution": "Distribution de prospects",
755
+ "scenarioSkillBasedRouting": "Routage par compétence",
756
+ "scenarioTerritoryAssignment": "Attribution par territoire",
757
+ "synergyAppointmentsTriage": "Réservation de spécialiste",
758
+ "synergyAppointmentsTriageDesc": "Identifier le bon spécialiste pour les besoins de l'utilisateur, puis réserver directement",
759
+ "scenarioRouteToCalendar": "Router vers le calendrier",
760
+ "scenarioSpecialistBooking": "Réservation de spécialiste",
761
+ "scenarioSmartDelegation": "Délégation intelligente",
762
+ "scenarioExpertMatch": "Correspondance d'expert",
763
+ "scenarioAvailabilityRouting": "Routage basé sur la disponibilité",
764
+ "synergyTriple1": "Tunnel de vente complet",
765
+ "synergyTriple1Desc": "Parcours de vente complet : informer les prospects, capturer les leads et réserver des démos qualifiées",
766
+ "scenarioFullSalesFlow": "Flux de vente complet",
767
+ "scenarioCompleteOnboarding": "Intégration complète",
768
+ "scenarioNurtureToClose": "Nurturing jusqu'à la conclusion",
769
+ "scenarioInboundSales": "Automatisation des ventes entrantes",
770
+ "synergyTriple2": "Centre de support",
771
+ "synergyTriple2Desc": "Base de connaissances en libre-service, création de tickets et escalade intelligente vers les agents",
772
+ "scenarioSupportEscalation": "Escalade de support",
773
+ "scenarioIntelligentTicketing": "Ticketing intelligent",
774
+ "scenarioHelpDeskAuto": "Automatisation du helpdesk",
775
+ "scenarioIssueCapture": "Capture de problème → router",
776
+ "synergyTriple3": "Flux de consultation",
777
+ "synergyTriple3Desc": "Répondre aux questions, associer au bon expert et permettre la réservation directe sur le calendrier",
778
+ "scenarioMultiSpecialistBooking": "Réservation multi-spécialistes",
779
+ "scenarioSmartConsultation": "Consultation intelligente",
780
+ "scenarioAdvisoryFlow": "Flux de conseil",
781
+ "scenarioExpertConnect": "Connexion à un expert",
782
+ "synergyTriple4": "Accueil complet",
783
+ "synergyTriple4Desc": "Formulaires d'accueil structurés, routage intelligent vers les équipes et planification automatisée",
784
+ "scenarioIntakeRouteBook": "Accueil → router → réserver",
785
+ "scenarioCompleteLeadFlow": "Flux complet de prospect",
786
+ "scenarioPatientIntake": "Flux d'accueil patient",
787
+ "scenarioClientOnboarding": "Intégration client",
788
+ "synergyAll": "Assistant d'entreprise",
789
+ "synergyAllDesc": "Concierge complet : répondre aux questions, collecter des données, router intelligemment et prendre des rendez-vous",
790
+ "scenarioEnterpriseBot": "Assistant d'entreprise",
791
+ "scenarioFullServiceAssistant": "Bot tout-en-un",
792
+ "scenarioDigitalConcierge": "Concierge numérique",
793
+ "scenarioVirtualReceptionist": "Réceptionniste virtuel",
794
+ "scenarioUnifiedSupport": "Centre de support unifié"
795
+ }
796
+ }
797
+ },
798
+ "modular": {
799
+ "addCalendarProvider": "Ajouter un fournisseur de calendrier",
800
+ "addUrlDestination": "Ajouter une destination URL",
801
+ "redirectToBot": "Rediriger vers le bot",
802
+ "addRoutingDestination": "Ajouter une destination de routage",
803
+ "selectedBot": "Bot sélectionné",
804
+ "displayName": "Nom affiché",
805
+ "displayNamePlaceholder": "ex. : Support commercial, Aide technique",
806
+ "description": "Description",
807
+ "descriptionPlaceholder": "Décris quand les utilisateurs doivent être routés ici…",
808
+ "url": "URL",
809
+ "urlPlaceholder": "https://example.com/support",
810
+ "paradigm": "Paradigme",
811
+ "protocols": "Protocoles",
812
+ "set": "Défini",
813
+ "notGenerated": "Non généré",
814
+ "calendars": "Calendriers",
815
+ "configured": "{count} configurés",
816
+ "triageRoutes": "Routes de triage",
817
+ "opticalReadFields": "Champs de lecture optique",
818
+ "required": "Obligatoire",
819
+ "displayNameRequired": "Le nom affiché est obligatoire",
820
+ "descriptionRequired": "La description est obligatoire",
821
+ "urlRequired": "L'URL est obligatoire",
822
+ "urlInvalid": "Saisis une URL valide",
823
+ "addOpticalReadField": "Ajouter un champ d'extraction",
824
+ "editOpticalReadField": "Modifier le champ d'extraction",
825
+ "updateOpticalReadField": "Mettre à jour le champ d'extraction"
826
+ },
827
+ "tabs": {
828
+ "desktop": "Bureau",
829
+ "documents": "Documents",
830
+ "fieldsDisplay": "Affichage des champs",
831
+ "flow": "Flux",
832
+ "jsonView": "Vue JSON",
833
+ "fields": "Champs",
834
+ "preview": "Aperçu"
835
+ },
836
+ "identity": {
837
+ "chatDisplayName": "Nom affiché dans la fenêtre de chat",
838
+ "chatDisplayNameHelper": "Nom affiché dans l'en-tête de l'interface de chat",
839
+ "personaObjective": "Persona et objectif",
840
+ "personaObjectivePlaceholder": "Décris le but, la personnalité et les instructions personnalisées de ton bot",
841
+ "personaObjectiveHelper": "Définis le comportement de ton bot, ce avec quoi il doit aider et toute consigne spécifique.",
842
+ "welcomeMessage": "Message de bienvenue",
843
+ "welcomeMessagePlaceholder": "Bonjour ! Comment puis-je t'aider aujourd'hui ?",
844
+ "welcomeMessageHelper": "Le premier message que les utilisateurs voient au début d'une conversation.",
845
+ "suggestedPrompts": "Suggestions de prompts (facultatif)",
846
+ "suggestedPromptsHelper": "Fournis des prompts de démarrage rapide pour aider les utilisateurs à entamer la conversation",
847
+ "inputPlaceholder": "Placeholder de saisie",
848
+ "inputPlaceholderHelper": "Texte de placeholder dans le champ de saisie de message",
849
+ "inputPlaceholderDefault": "Tape ton message…",
850
+ "promptPlaceholder": "Avec quoi peux-tu m'aider ?",
851
+ "chatDisplayNamePlaceholder": "Bot",
852
+ "promptItemLabel": "Prompt"
853
+ },
854
+ "resources": {
855
+ "botName": "Définir un nom unique de bot",
856
+ "botNameHelper": "Sera utilisé comme identifiant unique de ressource. 50 caractères max.",
857
+ "botNamePlaceholder": "Mon super bot",
858
+ "aboutBotNames": "À propos des noms de bot",
859
+ "botNameInfo": "Les noms de ressources sont recherchables sur le tableau de bord. Utilise des descriptions parlantes ou mets en place ton propre système.",
860
+ "botNameWarning": "Le nom ne peut pas être modifié après le déploiement.",
861
+ "provider": "Fournisseur",
862
+ "selectProvider": "Sélectionne un fournisseur",
863
+ "model": "Modèle",
864
+ "selectModel": "Sélectionne un modèle",
865
+ "apiKey": "Clé API",
866
+ "apiKeyEnter": "Saisis ta clé API",
867
+ "apiKeySelectProviderFirst": "Sélectionne d'abord un fournisseur",
868
+ "apiKeySavedPlaceholder": "•••••••• (clé enregistrée utilisée)",
869
+ "apiKeyExistingPlaceholder": "•••••••• (clé existante en mémoire — laisse vide pour la conserver)",
870
+ "apiKeyUsingSaved": "Clé API enregistrée utilisée :",
871
+ "apiKeyExistingConfigured": "Clé API existante configurée — sera réutilisée sauf si tu en saisis une nouvelle",
872
+ "apiKeyIsSet": "Clé API définie",
873
+ "apiKeyClear": "Effacer",
874
+ "apiKeyAbout": "À propos des clés API",
875
+ "apiKeyTooltip": "Ta clé API est chiffrée et stockée en sécurité. Elle sert à alimenter les réponses de ton chatbot. Tu peux gérer tes clés API enregistrées dans les paramètres.",
876
+ "apiKeyEncryptedHelper": "Ta clé API est chiffrée et stockée en sécurité",
877
+ "apiKeyLoadingSaved": "Chargement des clés enregistrées…",
878
+ "apiKeyOrUseSaved": "Ou utilise une clé API enregistrée :",
879
+ "awsCredentialsUsing": "Identifiants AWS enregistrés utilisés :",
880
+ "awsCredentialsExisting": "Identifiants AWS existants configurés — seront réutilisés sauf si tu en saisis de nouveaux ci-dessous",
881
+ "awsUseIamRole": "Utiliser un rôle IAM (recommandé pour EKS/EC2)",
882
+ "awsUseIamRoleHelper": "Utilise le rôle IAM de l'instance/du pod plutôt que des identifiants explicites",
883
+ "awsAccessKeyId": "AWS Access Key ID",
884
+ "awsAccessKeyIdPlaceholder": "AKIAIOSFODNN7EXAMPLE",
885
+ "awsSecretAccessKey": "AWS Secret Access Key",
886
+ "awsSecretAccessKeyPlaceholder": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
887
+ "bedrockRegion": "Région Bedrock",
888
+ "bedrockRegionOption": "{name} ({geoPrefix} multi-régions)",
889
+ "bedrockCrossRegion": "L'inférence multi-régions achemine les requêtes vers les capacités disponibles dans la région {regionName}",
890
+ "regionUS": "US",
891
+ "regionEU": "EU",
892
+ "regionAPAC": "APAC",
893
+ "awsUsingIamRoleStatus": "Rôle IAM utilisé",
894
+ "awsCredentialsConfigured": "Identifiants AWS configurés",
895
+ "awsLoadingCredentials": "Chargement des identifiants enregistrés…",
896
+ "awsOrUseSaved": "Ou utilise des identifiants AWS enregistrés :",
897
+ "ollamaNoCredsNeeded": "Ollama fonctionne avec ton propre endpoint — aucune clé API nécessaire.",
898
+ "ollamaHost": "URL de l'hôte Ollama",
899
+ "ollamaHostHelper": "L'endpoint que ton bot va contacter. Laisse vide pour utiliser http://localhost:11434 par défaut. Si ton bot tourne dans Docker et qu'Ollama tourne sur l'hôte, utilise http://host.docker.internal:11434 (Mac/Windows) ou l'IP LAN de ton hôte (Linux). Les déploiements cloud nécessitent un endpoint Ollama accessible publiquement. Nécessite Ollama ≥ 0.5.0 pour garantir la validité de l'enveloppe — les daemons plus anciens fonctionnent mais retombent sur un parsing JSON best-effort.",
900
+ "ollamaHostSavedPlaceholder": "Utilisation de l'hôte enregistré — efface pour saisir une nouvelle URL",
901
+ "ollamaHostUsingSaved": "Hôte Ollama enregistré utilisé :",
902
+ "ollamaHostOrUseSaved": "Ou utilise un hôte Ollama enregistré :"
903
+ },
904
+ "knowledge": {
905
+ "loadingDocuments": "Chargement des documents…",
906
+ "noDocumentsInSpace": "Aucun document dans ce bot space pour l'instant.",
907
+ "selectFromBotSpace": "Sélectionner depuis les fichiers du Bot Space",
908
+ "selected": "Sélectionné",
909
+ "select": "Sélectionner",
910
+ "skipRag": "Ignorer le RAG",
911
+ "skipRagHelper": "Le prompt d'objectif sera la seule source de connaissances"
912
+ },
913
+ "infoGathering": {
914
+ "formRegion": "Région du formulaire",
915
+ "formRegionHelper": "Définit les modèles de validation, les formats de champs et les libellés pour la région ciblée",
916
+ "describeInfo": "Décris les informations que tu veux collecter",
917
+ "describeInfoPlaceholder": "Je veux collecter le nom de l'utilisateur, son e-mail et le nom de son entreprise…",
918
+ "describeInfoHelperEdit": "Ajoute une description et régénère, ou modifie directement le JSON dans l'onglet Vue JSON",
919
+ "describeInfoHelper": "Décris les champs du formulaire en texte simple",
920
+ "aiFormGeneration": "Génération de formulaire propulsée par IA",
921
+ "regenerateDescription": "Régénérer la structure du formulaire à partir de ta nouvelle description",
922
+ "generateDescription": "Générer un formulaire structuré à partir de ta description",
923
+ "errorNoDescription": "Décris les informations que tu veux collecter",
924
+ "errorNoApiKey": "Clé API manquante. Reviens à l'étape 1 et saisis ta clé API.",
925
+ "formSubmissionOptions": "Options de soumission du formulaire",
926
+ "sendToControlPlane": "Envoyer au control plane",
927
+ "sendToControlPlaneHelper": "Stocker les soumissions de formulaires complétées dans ton tableau de bord pour consultation et export",
928
+ "webhookUrl": "URL de webhook externe (facultatif)",
929
+ "webhookUrlPlaceholder": "https://your-webhook-url.com/endpoint",
930
+ "webhookUrlHelper": "Envoyer également les données du formulaire à un webhook externe (ex. : Zapier, Make, point de terminaison personnalisé)",
931
+ "afterSubmitMessage": "Message de chat après soumission",
932
+ "afterSubmitPlaceholder": "Merci ! Commençons…",
933
+ "afterSubmitHelper": "Message affiché aux utilisateurs après soumission du formulaire",
934
+ "termsAndConditions": "Conditions générales",
935
+ "termsPlaceholder": "Saisis ici le texte de tes conditions générales. Prend en charge le formatage markdown…",
936
+ "termsHelper": "Si renseigné, une case à cocher obligatoire apparaîtra comme dernier champ du formulaire. Laisse vide pour ignorer.",
937
+ "termsInfo": "Les utilisateurs peuvent cliquer sur le lien « Conditions générales » pour afficher le texte complet dans une pop-up avant d'accepter.",
938
+ "jsonViewTip": "Astuce : passe à l'onglet « Vue JSON » à droite pour modifier la structure générée du formulaire."
939
+ },
940
+ "triage": {
941
+ "addRoute": "Ajouter une route de chatbot",
942
+ "deleteRoute": "Supprimer la route",
943
+ "deleteDestination": "Supprimer la destination",
944
+ "selectedBotUrl": "URL du bot sélectionné",
945
+ "editBotDestination": "Modifier la destination du bot",
946
+ "editUrlDestination": "Modifier la destination URL",
947
+ "selectBot": "Sélectionner un bot",
948
+ "loadingBots": "Chargement des bots…",
949
+ "noBotsAvailable": "Aucun bot disponible. Crée d'abord un bot.",
950
+ "descriptionHelper": "Utilisé pour la correspondance RAG afin de déterminer quand router les utilisateurs ici",
951
+ "updateDestination": "Mettre à jour la destination"
952
+ },
953
+ "opticalRead": {
954
+ "addField": "Ajouter un champ d'extraction",
955
+ "deleteField": "Supprimer le champ",
956
+ "label": "Libellé",
957
+ "labelPlaceholder": "Date de naissance",
958
+ "labelRequired": "Le libellé est obligatoire",
959
+ "idName": "Nom d'ID",
960
+ "idNamePlaceholder": "dob",
961
+ "idNameHelper": "clé en snake_case utilisée dans extractedFields",
962
+ "idNameRequired": "Le nom d'ID est obligatoire",
963
+ "idNameInvalid": "Utilise uniquement des lettres minuscules, des chiffres et des soulignés",
964
+ "idNameDuplicate": "Le nom d'ID doit être unique",
965
+ "hint": "Indice",
966
+ "hintPlaceholder": "JJ/MM/AAAA, recto du permis",
967
+ "hintHelper": "Facultatif : oriente l'emplacement ou le format. L'indice est la primitive de réglage centrale.",
968
+ "noFieldsYet": "Ajoute au moins un champ d'extraction pour activer la lecture optique.",
969
+ "providerNotSupported": "La lecture optique nécessite un fournisseur doté de vision. Anthropic et OpenAI sont pris en charge.",
970
+ "intro": "Nomme les emplacements à extraire. Le modèle les résout selon sa propre connaissance visuelle — l'indice facultatif oriente l'emplacement ou le format.",
971
+ "showUploadOnStart": "Afficher le bouton de téléversement comme prompt de démarrage",
972
+ "showUploadOnStartHelper": "Affiche une carte de téléversement à côté des suggestions du premier message du bot. Saute la phase conversationnelle d'introduction — l'utilisateur peut téléverser immédiatement.",
973
+ "afterSubmitMessage": "Message de chat après soumission (facultatif)",
974
+ "afterSubmitMessagePlaceholder": "Merci ! Nous avons bien reçu tes informations.",
975
+ "afterSubmitMessageHelper": "Réponse du bot affichée dans le chat après que l'utilisateur a soumis les champs extraits. Laisse vide pour ignorer."
976
+ },
977
+ "appointments": {
978
+ "addAppointment": "Ajouter un type de rendez-vous",
979
+ "deleteAppointment": "Supprimer le rendez-vous",
980
+ "editCalendarProvider": "Modifier le fournisseur de calendrier",
981
+ "updateCalendarProvider": "Mettre à jour le fournisseur de calendrier",
982
+ "calendarId": "ID du calendrier",
983
+ "calendarIdPlaceholder": "ex. : dr-smith-general",
984
+ "calendarIdHelper": "Identifiant unique retourné comme calendarId dans la réponse",
985
+ "calendarIdRequired": "L'ID du calendrier est obligatoire",
986
+ "calendarIdExists": "Cet ID de calendrier existe déjà",
987
+ "providerName": "Nom du fournisseur",
988
+ "providerNameRequired": "Le nom du fournisseur est obligatoire",
989
+ "providerNameHelper": "Service de fournisseur de calendrier",
990
+ "popupUrl": "URL de pop-up",
991
+ "popupUrlPlaceholder": "https://calendly.com/dr-smith",
992
+ "popupUrlHelper": "URL ouverte quand l'utilisateur clique sur le bouton calendrier",
993
+ "popupUrlRequired": "L'URL de pop-up est obligatoire",
994
+ "popupUrlInvalid": "Saisis une URL valide",
995
+ "descriptionPlaceholder": "Décris quand les utilisateurs doivent réserver avec ce fournisseur de calendrier…",
996
+ "descriptionRequired": "La description est obligatoire",
997
+ "descriptionHelper": "Utilisé pour la correspondance RAG afin de déterminer quel calendrier afficher"
998
+ },
999
+ "deployment": {
1000
+ "inProgress": "Déploiement en cours…",
1001
+ "testDeployment": "Déploiement de test",
1002
+ "currentDeployment": "Déploiement actuel",
1003
+ "testBotLive": "Ton bot de test est en ligne à cette URL :",
1004
+ "botLive": "Ton bot est en ligne à cette URL :",
1005
+ "testSuccess": "Déploiement de test réussi !",
1006
+ "testSuccessMessage": "Ton bot de test est en ligne et fonctionne. Tu peux le tester dans le panneau d'aperçu à droite.",
1007
+ "productionSuccess": "Déploiement en production réussi !",
1008
+ "productionSuccessMessage": "Ton bot est maintenant en ligne et prêt pour la production.",
1009
+ "deployToProduction": "Déployer en production",
1010
+ "viewDeployments": "Voir les bots",
1011
+ "previewChanges": "Prévisualiser les changements (test)",
1012
+ "deployToTest": "Déployer en test",
1013
+ "updateProduction": "Mettre à jour le bot de production",
1014
+ "editMode": "Mode édition",
1015
+ "editModeMessage": "Le déploiement mettra à jour le bot existant avec tes modifications. L'URL du bot restera la même.",
1016
+ "configSummary": "Résumé de la configuration",
1017
+ "botName": "Nom du bot :",
1018
+ "provider": "Fournisseur :",
1019
+ "model": "Modèle :",
1020
+ "documents": "Documents :",
1021
+ "formCollection": "Collecte de formulaire :",
1022
+ "uploaded": "téléversé",
1023
+ "enabled": "Activé",
1024
+ "embeddings": "Embeddings",
1025
+ "embeddingsChunks": "{count} morceaux",
1026
+ "editConfiguration": "Modifier la configuration",
1027
+ "aboutDeployments": "À propos des déploiements",
1028
+ "testDeploymentInfo": "Déploiement de test : crée une URL persistante pour les tests.",
1029
+ "productionDeploymentInfo": "Déploiement de production : crée ton bot en direct qui sera accessible publiquement.",
1030
+ "deploymentRegion": "Région de déploiement",
1031
+ "useOrgDefault": "Utiliser la valeur par défaut de l'organisation ({region})",
1032
+ "regionHelp": "Sélectionne la région AWS où ton bot sera déployé. Cela affecte la latence et la résidence des données.",
1033
+ "none": "Aucun",
1034
+ "saving": "Enregistrement…",
1035
+ "saveChanges": "Enregistrer les modifications",
1036
+ "saveConfiguration": "Enregistrer la configuration",
1037
+ "saveFailed": "Échec de l'enregistrement",
1038
+ "saveErrorFallback": "Échec de l'enregistrement de la configuration",
1039
+ "buildFailed": "Échec de la construction",
1040
+ "buildErrorFallback": "Échec de la construction de l'artefact",
1041
+ "building": "Construction…",
1042
+ "buildArtifact": "Construire l'artefact",
1043
+ "configurationSaved": "Configuration enregistrée",
1044
+ "configurationSavedDesc": "Enregistré sous <mono>{name}</mono>. Construis le ZIP exécutable quand tu es prêt.",
1045
+ "artifactReadyCached": "Artefact prêt (en cache)",
1046
+ "artifactBuilt": "Artefact construit",
1047
+ "artifactReadyDesc": "Ton artefact de bot <mono>{name}</mono> est prêt au téléchargement.",
1048
+ "downloadArtifact": "Télécharger l'artefact",
1049
+ "downloadArtifactWithDocs": "Télécharger avec les documents",
1050
+ "previewHelp": "Essaye ton bot en direct dans le panneau de droite. Quand les réponses te conviennent, enregistre puis télécharge la configuration. Construis l'artefact exécutable quand tu es prêt."
1051
+ },
1052
+ "previews": {
1053
+ "identity": {
1054
+ "fallbackBotName": "Bot",
1055
+ "fallbackPlaceholder": "Tape ton message…",
1056
+ "fallbackFirstMessage": "Bonjour ! Comment puis-je t'aider aujourd'hui ?",
1057
+ "minimize": "Réduire",
1058
+ "minimizeChat": "Réduire le chat",
1059
+ "botMessage": "Message du bot",
1060
+ "suggestedPrompts": "Suggestions de prompts",
1061
+ "chatMessage": "Message de chat",
1062
+ "typeYourMessageAria": "Tape ton message",
1063
+ "sendMessage": "Envoyer le message"
1064
+ },
1065
+ "appointments": {
1066
+ "fallbackBotName": "Bot de rendez-vous",
1067
+ "noProviders": "Aucun fournisseur de calendrier configuré pour l'instant",
1068
+ "noProvidersHint": "Clique sur « Ajouter un fournisseur de calendrier » pour commencer",
1069
+ "userQuery": "Requête utilisateur",
1070
+ "calendarIconAlt": "Icône calendrier"
1071
+ },
1072
+ "triage": {
1073
+ "fallbackBotName": "Bot de triage",
1074
+ "noRoutes": "Aucune destination de routage configurée pour l'instant",
1075
+ "noRoutesHint": "Clique sur « Ajouter une destination de routage » pour commencer",
1076
+ "user": "Utilisateur",
1077
+ "evaluatesAndRoutes": "Évalue et route"
1078
+ },
1079
+ "opticalRead": {
1080
+ "noFields": "Aucun champ d'extraction configuré pour l'instant",
1081
+ "noFieldsHint": "Clique sur « Ajouter un champ d'extraction » pour commencer",
1082
+ "clientPreviewLabel": "Ce que verront les utilisateurs",
1083
+ "editButton": "Modifier",
1084
+ "sendButton": "Envoyer",
1085
+ "previewNote": "Les saisies sont désactivées jusqu'à l'extraction. Les utilisateurs touchent Modifier pour corriger, Envoyer pour soumettre."
1086
+ },
1087
+ "knowledge": {
1088
+ "unlinkTitle": "Délier de ce bot (le fichier reste dans le bot space)",
1089
+ "deleteTitle": "Supprimer le document définitivement",
1090
+ "deleteConfirm": "Veux-tu vraiment supprimer « {name} » ? Cela supprimera définitivement le fichier et est irréversible.",
1091
+ "deleteError": "Échec de la suppression du fichier",
1092
+ "uploadedDocuments": "Documents téléversés",
1093
+ "noUploadedDocs": "Aucun document téléversé",
1094
+ "uploadDocsLeft": "Téléverse des documents à gauche",
1095
+ "linkedFromBotSpace": "Lié depuis le Bot Space",
1096
+ "noLinkedDocs": "Aucun document lié",
1097
+ "selectSharedFilesHint": "Sélectionne des fichiers partagés depuis le bot space",
1098
+ "linkedTooltip": "Les documents téléversés font partie de ce bot space par défaut",
1099
+ "linkedFooter": "Les documents liés restent dans le bot space quand ils sont déliés de ce bot.",
1100
+ "ragInfo": "Ces documents seront traités et utilisés pour fournir du contexte aux réponses de ton bot via RAG (Retrieval-Augmented Generation).",
1101
+ "fileCount": "{count} {count, plural, one {file} other {files}}",
1102
+ "untitled": "Sans titre",
1103
+ "unknown": "Inconnu",
1104
+ "fileFallback": "FICHIER",
1105
+ "embedding": {
1106
+ "title": "Embeddings vectoriels",
1107
+ "ready": "Prêt",
1108
+ "notGenerated": "Non généré",
1109
+ "chunks": "Morceaux",
1110
+ "model": "Modèle",
1111
+ "sourceDocuments": "Documents sources",
1112
+ "generated": "Généré",
1113
+ "embeddedFiles": "Fichiers intégrés",
1114
+ "technicalDetails": "Détails techniques",
1115
+ "noEmbeddingsYet": "Aucun embedding pour l'instant",
1116
+ "uploadFirst": "Téléverse d'abord des documents dans l'onglet Documents.",
1117
+ "clickToGenerate": "Clique ci-dessous pour découper et intégrer tes documents localement.",
1118
+ "generating": "Génération…",
1119
+ "embeddingDocs": "Intégration des documents…",
1120
+ "regenerate": "Régénérer les embeddings",
1121
+ "generate": "Générer les embeddings vectoriels",
1122
+ "errorNoDocuments": "Téléverse d'abord au moins un document",
1123
+ "errorGenerationFailed": "Échec de la génération des embeddings",
1124
+ "doneStatus": "Terminé ! {count} morceaux intégrés avec {model}.",
1125
+ "regenWarning": "Si tu modifies l'ensemble des documents, régénère pour garder l'artefact à jour.",
1126
+ "vectorModeInfo": "En mode vectoriel, le bot intègre les requêtes en cours d'exécution via le modèle ONNX multilingual-e5-small fourni et exécute la similarité cosinus localement. Aucune dépendance à la factory à l'exécution."
1127
+ }
1128
+ },
1129
+ "form": {
1130
+ "validate": "Valider",
1131
+ "validateInput": "Valider la saisie",
1132
+ "selectOption": "Sélectionne une option…",
1133
+ "noStructure": "Aucune structure de formulaire générée",
1134
+ "noStructureHint": "Génère un formulaire pour voir l'aperçu",
1135
+ "editJsonTitle": "Modifier la structure du formulaire (JSON)",
1136
+ "openLargerView": "Ouvrir en plus grand",
1137
+ "expand": "Agrandir",
1138
+ "generatedJsonLabel": "Structure de formulaire générée (JSON)",
1139
+ "validJson": "JSON valide",
1140
+ "invalidJson": "JSON invalide",
1141
+ "jsonParseError": "Erreur d'analyse JSON :",
1142
+ "editJsonHelper": "Modifie ce JSON pour personnaliser la structure du formulaire. Les changements seront reflétés dans l'onglet Affichage des champs.",
1143
+ "branches": "Branches",
1144
+ "requiredBadge": "Obligatoire",
1145
+ "piiBadge": "PII"
1146
+ },
1147
+ "bot": {
1148
+ "missingConfig": "Ajoute un fournisseur, un modèle et une clé API à l'étape 1 pour démarrer l'aperçu du bot.",
1149
+ "livePreview": "Aperçu en direct",
1150
+ "resetPreview": "Réinitialiser l'aperçu",
1151
+ "iframeTitle": "Aperçu du bot",
1152
+ "skippedInPreview": "(ignoré dans l'aperçu)",
1153
+ "webhookSideEffect": "Le webhook ferait un POST vers {url}",
1154
+ "webhookNoUrl": "(aucune URL)",
1155
+ "submitFormSideEffect": "Le formulaire serait soumis au control plane",
1156
+ "genericSideEffect": "Effet de bord ignoré dans l'aperçu"
1157
+ }
1158
+ },
1159
+ "botSummary": {
1160
+ "title": "Résumé du bot",
1161
+ "whyFillThis": "Pourquoi remplir ceci ?",
1162
+ "tooltipLine1": "Le résumé du bot aide les autres bots de ton réseau à comprendre ce que fait ce bot et les connaissances qu'il détient.",
1163
+ "tooltipLine2": "Cela permet un routage plus intelligent, le triage et l'orchestration multi-bots.",
1164
+ "description": "Décris le rôle de ce bot dans ton réseau.",
1165
+ "notSystemPrompt": "Pas un prompt système",
1166
+ "placeholder": "Décris ce que fait ce bot et les connaissances qu'il détient. Ex. : « Gère les demandes de facturation avec accès aux docs de tarification et aux FAQ. »",
1167
+ "characters": "caractères",
1168
+ "optionalBadge": "Facultatif — déploie pour enregistrer et utiliser ce résumé dans ton réseau."
1169
+ }
1170
+ },
1171
+ "settings": {
1172
+ "title": "Paramètres",
1173
+ "subtitle": "Gère les paramètres et préférences de ton compte",
1174
+ "tabs": {
1175
+ "apiKeys": "Clés API",
1176
+ "account": "Compte",
1177
+ "servicePlan": "Forfait de service",
1178
+ "languages": "Langues",
1179
+ "botSpaces": "Bot Spaces",
1180
+ "builderConfig": "Config du constructeur",
1181
+ "region": "Région",
1182
+ "auditLogs": "Journaux d'audit",
1183
+ "admin": "Admin"
1184
+ },
1185
+ "languages": {
1186
+ "title": "Préférences linguistiques",
1187
+ "description": "Choisis ta langue préférée pour l'interface",
1188
+ "preferredLanguage": "Langue préférée",
1189
+ "languageHelper": "Ce paramètre s'appliquera à toutes tes sessions",
1190
+ "saveLanguage": "Enregistrer la langue",
1191
+ "saveSuccess": "Préférence linguistique enregistrée",
1192
+ "saveError": "Échec de l'enregistrement de la préférence linguistique",
1193
+ "aboutTitle": "À propos des paramètres linguistiques",
1194
+ "aboutItem1": "Ta préférence linguistique est stockée dans ton compte",
1195
+ "aboutItem2": "Les modifications prendront effet après enregistrement",
1196
+ "aboutItem3": "Certains contenus peuvent ne pas encore être traduits",
1197
+ "locales": {
1198
+ "en": "Anglais (English)",
1199
+ "es": "Espagnol (Español)",
1200
+ "fr": "Français (Français)",
1201
+ "de": "Allemand (Deutsch)",
1202
+ "pt": "Portugais (Português)",
1203
+ "ja": "Japonais (日本語)",
1204
+ "zh": "Chinois (中文)",
1205
+ "ko": "Coréen (한국어)",
1206
+ "uk": "Ukrainien (Українська)",
1207
+ "ar": "Arabe (العربية)",
1208
+ "nl": "Néerlandais (Nederlands)",
1209
+ "sw": "Swahili (Kiswahili)"
1210
+ }
1211
+ },
1212
+ "region": {
1213
+ "title": "Région de déploiement",
1214
+ "description": "Configure la région AWS par défaut pour les déploiements de bots",
1215
+ "currentRegion": "Région par défaut actuelle",
1216
+ "selectRegion": "Sélectionne une région par défaut",
1217
+ "regionHelp": "Les nouveaux déploiements utiliseront cette région par défaut. Les utilisateurs peuvent surcharger ce paramètre par déploiement.",
1218
+ "saveSuccess": "Région par défaut mise à jour",
1219
+ "unsavedChanges": "Tu as des modifications non enregistrées",
1220
+ "infoTitle": "À propos des paramètres de région",
1221
+ "infoDescription": "La région de déploiement détermine où s'exécute l'infrastructure de ton bot. Choisir une région plus proche de tes utilisateurs peut améliorer les temps de réponse. Les déploiements individuels peuvent surcharger ce paramètre par défaut."
1222
+ },
1223
+ "account": {
1224
+ "title": "Informations du compte",
1225
+ "emailAddress": "Adresse e-mail",
1226
+ "userId": "ID utilisateur",
1227
+ "logout": "Se déconnecter",
1228
+ "loggingOut": "Déconnexion…",
1229
+ "logoutConfirm": "Veux-tu vraiment te déconnecter ?",
1230
+ "logoutNote": "Tu seras déconnecté de ton compte",
1231
+ "dangerZone": "Zone dangereuse",
1232
+ "deleteAccount": "Supprimer le compte",
1233
+ "deleteAdminWarning": "Supprime définitivement ton compte et toutes les données associées, y compris les bots, les bot spaces et les comptes contributeurs uniquement affiliés à ton organisation. Cette action est irréversible.",
1234
+ "deleteUserWarning": "Supprime définitivement ton compte et toutes tes données personnelles, y compris les bots, documents et clés API. Tes adhésions aux bot spaces seront supprimées. Cette action est irréversible."
1235
+ },
1236
+ "servicePlan": {
1237
+ "title": "Forfait de service",
1238
+ "description": "Visualise ton forfait actuel, ton utilisation et les fonctionnalités disponibles",
1239
+ "currentPlan": "Ton forfait d'abonnement actuel",
1240
+ "usage": "Utilisation actuelle",
1241
+ "deployedBots": "Bots déployés",
1242
+ "botSpaces": "Bot Spaces",
1243
+ "users": "Utilisateurs",
1244
+ "includedFeatures": "Fonctionnalités incluses",
1245
+ "allPlans": "Forfaits disponibles",
1246
+ "current": "Actuel",
1247
+ "bots": "bots",
1248
+ "spaces": "espaces",
1249
+ "usersLabel": "utilisateurs",
1250
+ "organization": "Organisation",
1251
+ "needMore": "Besoin de plus ?",
1252
+ "contactUs": "Contacte-nous pour discuter d'une mise à niveau de ton forfait ou de solutions d'entreprise personnalisées."
1253
+ },
1254
+ "apiKeys": {
1255
+ "title": "Clés API",
1256
+ "description": "Enregistre les clés API de tes fournisseurs LLM pour les réutiliser facilement entre tes déploiements",
1257
+ "addKey": "+ Ajouter une clé API",
1258
+ "addNewKey": "Ajouter une nouvelle clé API",
1259
+ "name": "Nom",
1260
+ "namePlaceholder": "ex. : Ma clé OpenAI",
1261
+ "provider": "Fournisseur",
1262
+ "apiKey": "Clé API",
1263
+ "apiKeyPlaceholder": "Saisis ta clé API",
1264
+ "saving": "Enregistrement…",
1265
+ "saveKey": "Enregistrer la clé API",
1266
+ "loading": "Chargement des clés API…",
1267
+ "noKeys": "Aucune clé API enregistrée pour l'instant",
1268
+ "noKeysHint": "Ajoute ta première clé API pour commencer",
1269
+ "added": "Ajoutée le {date}",
1270
+ "deleteConfirm": "Veux-tu vraiment supprimer cette clé API ?",
1271
+ "saveSuccess": "Clé API enregistrée",
1272
+ "deleteSuccess": "Clé API supprimée",
1273
+ "loadError": "Échec du chargement des clés API",
1274
+ "saveError": "Échec de l'enregistrement de la clé API",
1275
+ "deleteError": "Échec de la suppression de la clé API",
1276
+ "nameAndKeyRequired": "Le nom et la clé API sont obligatoires",
1277
+ "awsRegion": "Région AWS",
1278
+ "authentication": "Authentification",
1279
+ "useIamRole": "Utiliser un rôle IAM",
1280
+ "useIamRoleHint": "Utilise le rôle IAM attaché au pod Kubernetes (recommandé pour la production)",
1281
+ "useExplicitCredentials": "Utiliser des identifiants explicites",
1282
+ "useExplicitCredentialsHint": "Fournis directement la clé d'accès et la clé secrète AWS",
1283
+ "awsAccessKeyId": "AWS Access Key ID",
1284
+ "awsSecretAccessKey": "AWS Secret Access Key",
1285
+ "defaultBotConfig": {
1286
+ "title": "Configuration de bot par défaut",
1287
+ "description": "Sélectionne une clé API et un modèle à utiliser par défaut lors de la création de nouveaux bots avec le constructeur.",
1288
+ "selectKey": "Clé API par défaut",
1289
+ "selectModel": "Modèle par défaut",
1290
+ "noDefault": "Aucune valeur par défaut (sélection automatique)",
1291
+ "selectModelPlaceholder": "Sélectionne un modèle",
1292
+ "selectKeyFirst": "Sélectionne une clé API pour voir les modèles disponibles",
1293
+ "currentSelection": "Valeur par défaut actuelle",
1294
+ "noModel": "Aucun modèle sélectionné",
1295
+ "save": "Enregistrer la valeur par défaut"
1296
+ }
1297
+ },
1298
+ "botSpaces": {
1299
+ "title": "Bot Spaces",
1300
+ "description": "Organise les chatbots en espaces et contrôle l'accès des contributeurs",
1301
+ "createSpace": "+ Créer un Bot Space",
1302
+ "createNewSpace": "Créer un nouveau Bot Space",
1303
+ "name": "Nom",
1304
+ "namePlaceholder": "ex. : support-client",
1305
+ "nameHint": "Seuls les lettres, chiffres, soulignés et tirets sont autorisés",
1306
+ "descriptionLabel": "Description",
1307
+ "descriptionPlaceholder": "Description facultative pour ce bot space",
1308
+ "creating": "Création…",
1309
+ "create": "Créer un Bot Space",
1310
+ "loading": "Chargement des bot spaces…",
1311
+ "noSpaces": "Aucun bot space créé pour l'instant",
1312
+ "noSpacesHint": "Crée ton premier bot space pour organiser tes chatbots",
1313
+ "botCount": "{count} bots",
1314
+ "created": "Créé le {date}",
1315
+ "invite": "Inviter",
1316
+ "manage": "Gérer",
1317
+ "deleteConfirm": "Veux-tu vraiment supprimer ce bot space ? Tous les bots à l'intérieur seront définitivement supprimés.",
1318
+ "createSuccess": "Bot space créé",
1319
+ "deleteSuccess": "Bot space supprimé",
1320
+ "loadError": "Échec du chargement des bot spaces",
1321
+ "createError": "Échec de la création du bot space",
1322
+ "deleteError": "Échec de la suppression du bot space",
1323
+ "nameRequired": "Le nom est obligatoire",
1324
+ "nameInvalid": "Le nom ne peut contenir que des lettres, chiffres, soulignés et tirets",
1325
+ "aboutTitle": "À propos des Bot Spaces",
1326
+ "aboutItem1": "Les bot spaces permettent de regrouper les chatbots liés",
1327
+ "aboutItem2": "Donne aux contributeurs un accès en lecture ou écriture à des espaces spécifiques",
1328
+ "aboutItem3": "Les administrateurs ont un accès complet à tous les bot spaces de l'organisation",
1329
+ "invitationSent": "Invitation envoyée"
1330
+ },
1331
+ "auditLogs": {
1332
+ "title": "Journaux d'audit",
1333
+ "description": "Visualise toutes les actions effectuées dans ton organisation",
1334
+ "exportCsv": "Exporter en CSV",
1335
+ "exportJson": "Exporter en JSON",
1336
+ "loadError": "Échec du chargement des journaux d'audit",
1337
+ "externalIntegration": "Intégration externe",
1338
+ "webhookDescription": "Envoyer les journaux d'audit à un SIEM externe ou à un service de journalisation via webhook.",
1339
+ "webhookUrl": "URL du webhook",
1340
+ "webhookUrlPlaceholder": "https://your-siem.example.com/webhook",
1341
+ "enableWebhook": "Activer le webhook",
1342
+ "hmacEnabled": "Signature HMAC activée",
1343
+ "webhookSecretWarning": "Secret du webhook (à copier maintenant — il ne sera plus affiché)",
1344
+ "saveSettings": "Enregistrer les paramètres",
1345
+ "testWebhook": "Tester le webhook",
1346
+ "regenerateSecret": "Régénérer le secret",
1347
+ "regenerateConfirm": "Régénérer le secret du webhook ? Tu devras mettre à jour ton point de terminaison de réception.",
1348
+ "webhookSaved": "Paramètres du webhook enregistrés",
1349
+ "secretRegenerated": "Nouveau secret généré",
1350
+ "testSuccess": "Webhook de test envoyé",
1351
+ "saveError": "Échec de l'enregistrement des paramètres du webhook",
1352
+ "testError": "Échec du test du webhook",
1353
+ "regenerateError": "Échec de la régénération du secret",
1354
+ "payloadFormat": "Format de la charge utile du webhook",
1355
+ "payloadDescription": "Chaque événement d'audit est envoyé en requête POST avec les en-têtes :",
1356
+ "headerEvent": "X-Audit-Event: event_type",
1357
+ "headerTimestamp": "X-Audit-Timestamp: horodatage ISO",
1358
+ "headerSignature": "X-Audit-Signature: sha256=hmac (si secret configuré)"
1359
+ },
1360
+ "admin": {
1361
+ "title": "Tableau de bord admin",
1362
+ "description": "Gère les utilisateurs et visualise les informations système",
1363
+ "allUsers": "Tous les utilisateurs",
1364
+ "loadingUsers": "Chargement des utilisateurs…",
1365
+ "noUsers": "Aucun utilisateur trouvé",
1366
+ "loadError": "Échec du chargement des utilisateurs",
1367
+ "tableHeaders": {
1368
+ "name": "Nom",
1369
+ "email": "E-mail",
1370
+ "organization": "Organisation",
1371
+ "role": "Rôle",
1372
+ "created": "Créé"
1373
+ },
1374
+ "you": "Toi",
1375
+ "stats": {
1376
+ "totalUsers": "Total des utilisateurs",
1377
+ "admins": "Administrateurs",
1378
+ "contributors": "Contributeurs"
1379
+ }
1380
+ },
1381
+ "builderConfig": {
1382
+ "title": "Configuration du constructeur",
1383
+ "description": "Configure quel modèle d'IA alimente le constructeur de bot et définis les valeurs par défaut pour la création de bots",
1384
+ "builderTitle": "Pilote du modèle du constructeur",
1385
+ "builderDescription": "Sélectionne quel modèle d'IA alimente l'interface du constructeur de bot. Ce modèle gère les conversations et l'exécution des outils.",
1386
+ "defaultBotTitle": "Modèle par défaut pour la création de bots",
1387
+ "defaultBotDescription": "Pré-sélectionne ces paramètres lors de la création de nouveaux bots via le constructeur. Les utilisateurs peuvent les surcharger lors du déploiement.",
1388
+ "provider": "Fournisseur",
1389
+ "apiKey": "Clé API",
1390
+ "model": "Modèle",
1391
+ "selectProvider": "Sélectionne un fournisseur…",
1392
+ "selectKey": "Sélectionne une clé API…",
1393
+ "selectModel": "Sélectionne un modèle…",
1394
+ "noKeysForProvider": "Aucune clé API enregistrée pour ce fournisseur. Ajoutes-en une dans l'onglet Clés API.",
1395
+ "useSameAsBuilder": "Utiliser les mêmes paramètres que le constructeur",
1396
+ "saveConfig": "Enregistrer la configuration",
1397
+ "saveSuccess": "Configuration du constructeur enregistrée",
1398
+ "saveError": "Échec de l'enregistrement de la configuration du constructeur",
1399
+ "aboutTitle": "À propos de la configuration du constructeur",
1400
+ "aboutItem1": "Le modèle du constructeur gère l'interface conversationnelle de création de bot",
1401
+ "aboutItem2": "Les paramètres de bot par défaut sont pré-sélectionnés lors du déploiement via le constructeur",
1402
+ "aboutItem3": "Le tool-use est pris en charge par Claude, GPT, Gemini, et plus encore",
1403
+ "displaySettings": {
1404
+ "title": "Paramètres d'affichage",
1405
+ "description": "Configure l'apparence de l'assistant Modulo dans l'interface",
1406
+ "disableAnimation": "Désactiver l'animation de l'assistant",
1407
+ "disableAnimationHint": "Affiche Modulo comme une icône statique plutôt qu'un assistant animé"
1408
+ }
1409
+ },
1410
+ "mojulo": {
1411
+ "title": "Paramètres",
1412
+ "subtitle": "Configure les clés API qui alimentent tes bots et les identifiants cloud utilisés pour les déployer.",
1413
+ "noKeyGate": "Les constructeurs ont besoin d'une clé de fournisseur LLM pour fonctionner. Ajoutes-en une dans l'onglet Clés LLM et reviens.",
1414
+ "tabs": {
1415
+ "llm": "Clés LLM",
1416
+ "provider": "Clés de fournisseur",
1417
+ "language": "Paramètre de langue"
1418
+ },
1419
+ "form": {
1420
+ "addKey": "Ajouter une clé",
1421
+ "name": "Nom affiché",
1422
+ "provider": "Fournisseur",
1423
+ "apiKey": "Clé API",
1424
+ "ollamaHost": "URL de l'hôte",
1425
+ "makeDefault": "Définir comme clé par défaut",
1426
+ "ollamaNoDefault": "Ollama ne peut pas être la valeur par défaut — le constructeur de chat a besoin d'un fournisseur cloud.",
1427
+ "saving": "Enregistrement…",
1428
+ "save": "Enregistrer la clé",
1429
+ "saveError": "Échec de l'enregistrement"
1430
+ },
1431
+ "list": {
1432
+ "title": "Clés stockées",
1433
+ "loading": "Chargement…",
1434
+ "empty": "Aucune clé pour l'instant.",
1435
+ "defaultBadge": "par défaut",
1436
+ "makeDefault": "Définir par défaut",
1437
+ "delete": "Supprimer"
1438
+ },
1439
+ "llm": {
1440
+ "title": "Clés LLM",
1441
+ "description": "Alimente le constructeur de bot et est intégrée à chaque bot que tu compiles.",
1442
+ "defaultName": "Par défaut",
1443
+ "placeholder": "sk-…",
1444
+ "bedrockPlaceholder": "{\"region\":\"us-east-1\",\"accessKeyId\":\"…\",\"secretAccessKey\":\"…\"}",
1445
+ "ollamaPlaceholder": "http://localhost:11434",
1446
+ "providers": {
1447
+ "anthropic": "Anthropic",
1448
+ "openai": "OpenAI",
1449
+ "bedrock": "AWS Bedrock (colle les identifiants JSON)",
1450
+ "ollama": "Ollama (local — colle l'URL de l'hôte)"
1451
+ }
1452
+ },
1453
+ "provider": {
1454
+ "title": "Clés de fournisseur",
1455
+ "description": "Identifiants d'hébergement cloud. Utilisés lorsque tu déploies un bot vers un fournisseur cloud depuis le control plane.",
1456
+ "defaultName": "Fly.io",
1457
+ "placeholder": "fo1_…",
1458
+ "providers": {
1459
+ "fly": "Fly.io"
1460
+ }
1461
+ },
1462
+ "language": {
1463
+ "title": "Paramètre de langue",
1464
+ "description": "Choisis la langue utilisée dans l'interface du control plane.",
1465
+ "label": "Langue de l'interface"
1466
+ }
1467
+ }
1468
+ },
1469
+ "deployments": {
1470
+ "title": "Déploiements",
1471
+ "loading": "Chargement des déploiements…",
1472
+ "empty": "Aucun déploiement dans ce bot space",
1473
+ "columns": {
1474
+ "botName": "Nom du bot",
1475
+ "status": "Statut",
1476
+ "deployed": "Déployé",
1477
+ "by": "Par"
1478
+ },
1479
+ "history": {
1480
+ "title": "Historique des déploiements",
1481
+ "noHistory": "Aucun historique de déploiement pour l'instant",
1482
+ "historyWillAppear": "L'historique apparaîtra après le prochain déploiement",
1483
+ "event": "Événement",
1484
+ "status": "Statut",
1485
+ "date": "Date",
1486
+ "by": "Par",
1487
+ "config": "Config"
1488
+ },
1489
+ "embed": {
1490
+ "title": "Script d'intégration",
1491
+ "description": "Copie ce script pour intégrer le chatbot sur ton site :"
1492
+ },
1493
+ "confirmDelete": "Veux-tu vraiment supprimer « {name} » ? Cela détruira le déploiement et est irréversible."
1494
+ },
1495
+ "cloudDeploy": {
1496
+ "title": "Déployer dans le cloud",
1497
+ "backToDashboard": "← Retour au tableau de bord",
1498
+ "loading": "Chargement…",
1499
+ "botLabel": "Bot :",
1500
+ "protocolsLabel": "protocoles : {protocols}",
1501
+ "statusPills": {
1502
+ "pending": "En attente",
1503
+ "deploying": "Déploiement",
1504
+ "running": "En cours",
1505
+ "paused": "En pause",
1506
+ "failed": "Échec",
1507
+ "destroyed": "Détruit"
1508
+ },
1509
+ "artifact": {
1510
+ "title": "Dernier artefact",
1511
+ "status": "Statut",
1512
+ "configHash": "Empreinte de config",
1513
+ "lastBuiltHash": "Empreinte de la dernière construction",
1514
+ "artifactPath": "Chemin de l'artefact",
1515
+ "notBuiltYet": "— (pas encore construit)",
1516
+ "staleWarning": "Configuration modifiée depuis la dernière construction. Le déploiement cloud reconstruira automatiquement, ou tu peux reconstruire maintenant.",
1517
+ "missingWarning": "Aucun artefact pour l'instant. Le déploiement cloud le construira automatiquement, ou tu peux le construire maintenant pour un aperçu.",
1518
+ "buildZip": "Construire le ZIP",
1519
+ "rebuildZip": "Reconstruire le ZIP",
1520
+ "downloadZip": "Télécharger le .zip"
1521
+ },
1522
+ "provider": {
1523
+ "title": "Fournisseur",
1524
+ "fly": {
1525
+ "name": "Fly.io",
1526
+ "description": "Machine mono-région + volume persistant"
1527
+ }
1528
+ },
1529
+ "fly": {
1530
+ "title": "Options Fly.io",
1531
+ "region": "Région",
1532
+ "regionHint": "Code de région Fly à 3 lettres (iad, sjc, lhr, nrt, etc.)",
1533
+ "volumeSize": "Taille du volume (Go)",
1534
+ "volumeHint": "Stockage persistant pour SQLite (1 Go suffit pour la plupart des bots)",
1535
+ "cpuCount": "Nombre de CPU",
1536
+ "cpuHint": "CPU partagés",
1537
+ "memory": "Mémoire (Mo)",
1538
+ "memoryHint": "1024 Mo recommandés",
1539
+ "tokenNote": "Utilise ton <mono>FLY_API_TOKEN</mono> de l'environnement du control plane. Ton compte, ta facture.",
1540
+ "deploy": "Déployer",
1541
+ "redeploy": "Redéployer",
1542
+ "deploying": "Déploiement…"
1543
+ },
1544
+ "status": {
1545
+ "title": "Statut",
1546
+ "provider": "Fournisseur",
1547
+ "appName": "Nom de l'app",
1548
+ "url": "URL",
1549
+ "region": "Région",
1550
+ "lastDeployed": "Dernier déploiement",
1551
+ "errorPrefix": "erreur : {error}",
1552
+ "destroy": "Détruire"
1553
+ },
1554
+ "errors": {
1555
+ "deployFailed": "Échec du déploiement ({status})",
1556
+ "destroyFailed": "Échec de la destruction ({status})",
1557
+ "buildFailed": "Échec de la construction ({status})"
1558
+ },
1559
+ "confirmDestroy": "Détruire l'app cloud, la machine et le volume ? Les données de conversation sur le volume seront définitivement supprimées."
1560
+ },
1561
+ "analytics": {
1562
+ "title": "Analytique",
1563
+ "loading": "Chargement de l'analytique…",
1564
+ "loadingConversations": "Chargement de l'analytique des conversations…",
1565
+ "analyzingQuestions": "Analyse des questions utilisateur…",
1566
+ "failedToLoad": "Échec du chargement du déploiement",
1567
+ "failedToLoadAnalytics": "Échec du chargement des données d'analytique",
1568
+ "chatbotMetrics": "Indicateurs du chatbot",
1569
+ "conversationAnalytics": "Analytique des conversations",
1570
+ "topQuestions": "Principales questions et sujets utilisateurs",
1571
+ "metrics": {
1572
+ "age": "Âge",
1573
+ "uptime": "Disponibilité",
1574
+ "documents": "Documents",
1575
+ "lastUpdated": "Dernière mise à jour",
1576
+ "totalConversations": "Total des conversations",
1577
+ "totalMessages": "Total des messages",
1578
+ "formStarts": "Formulaires commencés",
1579
+ "formCompletes": "Formulaires complétés",
1580
+ "completionRate": "{rate} % de taux de complétion",
1581
+ "avgMessagesPerConv": "Messages moy./conv."
1582
+ },
1583
+ "badges": {
1584
+ "formCollection": "Collecte de formulaire",
1585
+ "live": "En direct"
1586
+ },
1587
+ "searchTerms": {
1588
+ "longPhrases": "Longues phrases",
1589
+ "phrases": "Phrases",
1590
+ "words": "Mots",
1591
+ "analyzed": "{count} messages utilisateurs analysés",
1592
+ "noData": "Aucune donnée de conversation disponible pour l'instant",
1593
+ "noDataHint": "Les données apparaîtront ici après que les utilisateurs auront interagi avec ton chatbot"
1594
+ },
1595
+ "uptime": {
1596
+ "inProgress": "En cours…",
1597
+ "failed": "Échec",
1598
+ "notAvailable": "N/D"
1599
+ }
1600
+ },
1601
+ "conversations": {
1602
+ "title": "Conversations",
1603
+ "totalConversations": "{count} conversations au total",
1604
+ "total": "{count} au total",
1605
+ "dashboardLink": "← Tableau de bord",
1606
+ "backToDashboard": "← Retour au tableau de bord",
1607
+ "tabs": {
1608
+ "conversations": "Conversations",
1609
+ "storage": "Stockage"
1610
+ },
1611
+ "unreachable": {
1612
+ "title": "Bot inaccessible",
1613
+ "message": "Le control plane n'a pas pu joindre ce bot. Il est peut-être arrêté, ou l'URL ou la clé API a peut-être changé. Reconnecte-toi depuis le tableau de bord pour voir les conversations.",
1614
+ "reconnect": "Reconnecter"
1615
+ },
1616
+ "search": {
1617
+ "dataSource": "Source de données",
1618
+ "conversationId": "ID de conversation",
1619
+ "partialId": "ID partiel…",
1620
+ "partialIdShort": "id partiel",
1621
+ "from": "Du",
1622
+ "to": "Au",
1623
+ "search": "Rechercher",
1624
+ "searching": "Recherche…",
1625
+ "last24h": "Dernières 24 h",
1626
+ "last7days": "7 derniers jours",
1627
+ "clear": "Effacer",
1628
+ "resultsFound": "{count} résultat trouvé",
1629
+ "resultsFoundPlural": "{count} résultats trouvés",
1630
+ "result": "{count} résultat",
1631
+ "results": "{count} résultats",
1632
+ "noMatch": "Aucune conversation ne correspond à ta recherche",
1633
+ "noMatchShort": "Aucune conversation ne correspond.",
1634
+ "searchToFind": "Recherche pour trouver des conversations",
1635
+ "searchByIdOrDate": "Recherche par ID ou plage de dates pour trouver des conversations.",
1636
+ "useIdOrDate": "Utilise un ID de conversation, une plage de dates, ou les deux"
1637
+ },
1638
+ "timeAgo": {
1639
+ "days": "il y a {count} j",
1640
+ "hours": "il y a {count} h",
1641
+ "minutes": "il y a {count} min"
1642
+ },
1643
+ "detail": {
1644
+ "started": "Commencé :",
1645
+ "startedAt": "Commencé le {timestamp}",
1646
+ "turns": "{count} tours",
1647
+ "last": "Dernier :",
1648
+ "lastAt": "Dernier le {timestamp}",
1649
+ "turn": "Tour {number}",
1650
+ "user": "Utilisateur",
1651
+ "assistant": "Assistant",
1652
+ "ragContext": "Contexte RAG",
1653
+ "ragContextShort": "Contexte RAG",
1654
+ "verifyChain": "Vérifier la chaîne",
1655
+ "showMetadata": "Afficher les sources et métadonnées",
1656
+ "showMetadataShort": "Afficher les métadonnées",
1657
+ "selectConversation": "Sélectionne une conversation pour voir les messages",
1658
+ "selectConversationShort": "Sélectionne une conversation pour voir ses tours.",
1659
+ "loadingMessages": "Chargement des messages…",
1660
+ "loading": "Chargement…"
1661
+ },
1662
+ "storage": {
1663
+ "loading": "Chargement des infos de stockage…",
1664
+ "loadingShort": "Chargement…",
1665
+ "volumeCapacity": "Capacité du volume",
1666
+ "volumeCapacityShort": "Capacité du volume",
1667
+ "used": "{used} utilisés sur {total}",
1668
+ "usedOfTotal": "{used} sur {total}",
1669
+ "available": "{amount} disponibles",
1670
+ "statsConversations": "Conversations",
1671
+ "statsTurns": "Total des tours",
1672
+ "statsTurnsShort": "Tours",
1673
+ "statsDbSize": "Taille de la base",
1674
+ "statsDbSizeShort": "Taille BD",
1675
+ "autoExtendPolicy": "Politique d'auto-extension",
1676
+ "autoExtendDescription": "Le volume s'étend automatiquement à {threshold} % de capacité, ajoutant {increment} Go par expansion, jusqu'à un maximum de {limit} Go.",
1677
+ "exportTitle": "Exporter les conversations",
1678
+ "exportTitleShort": "Exporter",
1679
+ "exportDescription": "Télécharger toutes les conversations en fichier JSON.",
1680
+ "exportDescriptionShort": "Télécharger toutes les conversations de ce bot au format JSON.",
1681
+ "exportButton": "Exporter toutes les conversations (JSON)",
1682
+ "exportButtonShort": "Exporter en JSON",
1683
+ "exporting": "Export en cours…",
1684
+ "refresh": "Actualiser les infos de stockage",
1685
+ "retry": "Réessayer"
1686
+ },
1687
+ "loadMore": "Charger plus",
1688
+ "loadingMore": "Chargement…",
1689
+ "errors": {
1690
+ "fetchConversations": "Échec de la récupération des conversations",
1691
+ "fetchDetails": "Échec de la récupération des détails de conversation",
1692
+ "fetchStorage": "Échec de la récupération des infos de stockage",
1693
+ "exportFailed": "Échec de l'export des conversations",
1694
+ "close": "Fermer"
1695
+ }
1696
+ },
1697
+ "submissions": {
1698
+ "title": "Soumissions de formulaires",
1699
+ "description": "Visualise les soumissions de formulaires collectées depuis {botName}",
1700
+ "total": "({count} au total)",
1701
+ "dashboardLink": "← Tableau de bord",
1702
+ "backToDashboard": "← Retour au tableau de bord",
1703
+ "unreachable": {
1704
+ "title": "Bot inaccessible",
1705
+ "message": "Le control plane n'a pas pu joindre ce bot. Il est peut-être arrêté, ou l'URL ou la clé API a peut-être changé. Reconnecte-toi depuis le tableau de bord pour voir les soumissions.",
1706
+ "reconnect": "Reconnecter"
1707
+ },
1708
+ "search": {
1709
+ "last24h": "Dernières 24 h",
1710
+ "last7days": "7 derniers jours",
1711
+ "last30days": "30 derniers jours",
1712
+ "from": "Du",
1713
+ "to": "Au",
1714
+ "search": "Rechercher",
1715
+ "searching": "Recherche…",
1716
+ "export": "Exporter en CSV"
1717
+ },
1718
+ "list": {
1719
+ "title": "Soumissions",
1720
+ "shown": "({count} affichées)",
1721
+ "loading": "Chargement…",
1722
+ "noSubmissions": "Aucune soumission trouvée pour cette période.",
1723
+ "searchToView": "Recherche pour voir les soumissions.",
1724
+ "fields": "{count} champs"
1725
+ },
1726
+ "detail": {
1727
+ "title": "Détails de la soumission",
1728
+ "conversationId": "ID de conversation :",
1729
+ "submitted": "Soumis :",
1730
+ "formData": "Données du formulaire",
1731
+ "field": "Champ",
1732
+ "value": "Valeur",
1733
+ "metadata": "Métadonnées",
1734
+ "selectSubmission": "Sélectionne une soumission pour voir les détails"
1735
+ }
1736
+ },
1737
+ "logs": {
1738
+ "title": "Journaux en direct",
1739
+ "refresh": "Actualiser les journaux",
1740
+ "refreshing": "Actualisation…",
1741
+ "loading": "Chargement des journaux…",
1742
+ "search": {
1743
+ "label": "Rechercher dans les journaux",
1744
+ "placeholder": "Rechercher messages, niveaux, instances…"
1745
+ },
1746
+ "lineCount": {
1747
+ "label": "Lignes à afficher",
1748
+ "lines": "{count} lignes"
1749
+ },
1750
+ "autoRefresh": {
1751
+ "label": "Auto-actualisation",
1752
+ "every10s": "Actualiser toutes les 10 secondes"
1753
+ },
1754
+ "noLogs": "Aucun journal disponible",
1755
+ "noMatch": "Aucun journal ne correspond à ta recherche",
1756
+ "showing": "Affichage de {filtered} sur {total} entrées de journal",
1757
+ "filteredBy": "(filtré par « {query} »)"
1758
+ },
1759
+ "accessLevels": {
1760
+ "owner": "propriétaire",
1761
+ "admin": "admin",
1762
+ "write": "écriture",
1763
+ "read": "lecture"
1764
+ },
1765
+ "errors": {
1766
+ "generic": "Une erreur est survenue. Réessaye.",
1767
+ "failedToFetch": "Échec de la récupération des données",
1768
+ "failedToLoad": "Échec du chargement",
1769
+ "failedToSave": "Échec de l'enregistrement",
1770
+ "failedToDelete": "Échec de la suppression du déploiement",
1771
+ "failedToAssign": "Échec de l'assignation au bot space",
1772
+ "notFound": "Introuvable",
1773
+ "error": "Erreur"
1774
+ },
1775
+ "deleteAccount": {
1776
+ "title": "Supprimer le compte",
1777
+ "loadingInfo": "Chargement des informations du compte…",
1778
+ "permanentWarning": "Cette action est permanente et irréversible.",
1779
+ "willBeDeleted": "Les éléments suivants seront définitivement supprimés :",
1780
+ "deployments": "Déploiements (bots)",
1781
+ "documents": "Documents",
1782
+ "apiKeys": "Clés API",
1783
+ "botSpaces": "Bot Spaces",
1784
+ "contributorsToDelete": "Comptes contributeurs à supprimer",
1785
+ "contributorsNote": "Ces contributeurs sont uniquement membres des bot spaces de ton organisation.",
1786
+ "organization": "Organisation",
1787
+ "adminDeleteNote": "En tant qu'admin, supprimer ton compte supprimera également toutes les données de l'organisation et les comptes contributeurs uniquement affiliés à ton organisation.",
1788
+ "userDeleteNote": "Tes adhésions aux bot spaces seront supprimées, mais les bot spaces et les autres utilisateurs ne seront pas affectés.",
1789
+ "continue": "Continuer",
1790
+ "confirmPrompt": "Pour confirmer la suppression, saisis ton adresse e-mail :",
1791
+ "confirmEmail": "Confirme ton e-mail",
1792
+ "emailPlaceholder": "Saisis ton e-mail pour confirmer",
1793
+ "deleting": "Suppression…",
1794
+ "deleteMyAccount": "Supprimer mon compte",
1795
+ "errors": {
1796
+ "loadFailed": "Échec du chargement des informations du compte",
1797
+ "loadError": "Erreur lors du chargement des informations du compte",
1798
+ "emailMismatch": "Saisis ton adresse e-mail exactement pour confirmer",
1799
+ "deleteFailed": "Échec de la suppression du compte",
1800
+ "deleteError": "Erreur lors de la suppression du compte"
1801
+ }
1802
+ },
1803
+ "botSpaceInvite": {
1804
+ "title": "Inviter dans {spaceName}",
1805
+ "description": "Envoie une invitation à collaborer sur ce bot space. La personne recevra un e-mail avec un lien pour rejoindre.",
1806
+ "emailLabel": "Adresse e-mail",
1807
+ "emailPlaceholder": "collegue@entreprise.com",
1808
+ "accessLabel": "Niveau d'accès",
1809
+ "accessRead": "Lecture — peut voir les bots de cet espace",
1810
+ "accessWrite": "Écriture — peut créer et modifier des bots",
1811
+ "accessAdmin": "Admin — accès complet, y compris l'invitation d'autres personnes",
1812
+ "accessNote": "Les utilisateurs invités rejoindront en tant que contributeurs à ton organisation.",
1813
+ "sending": "Envoi…",
1814
+ "sendInvitation": "Envoyer l'invitation",
1815
+ "errors": {
1816
+ "sendFailed": "Échec de l'envoi de l'invitation"
1817
+ }
1818
+ },
1819
+ "auditLogTable": {
1820
+ "loading": "Chargement des journaux d'audit…",
1821
+ "noLogs": "Aucun journal d'audit trouvé",
1822
+ "noLogsHint": "Les journaux apparaîtront ici à mesure que des actions seront effectuées",
1823
+ "headers": {
1824
+ "time": "Heure",
1825
+ "event": "Événement",
1826
+ "actor": "Acteur",
1827
+ "resource": "Ressource",
1828
+ "outcome": "Résultat"
1829
+ },
1830
+ "events": {
1831
+ "authLoginSuccess": "Connexion",
1832
+ "authLoginFailure": "Échec de connexion",
1833
+ "authLogout": "Déconnexion",
1834
+ "authSignup": "Inscription",
1835
+ "deploymentCreate": "Déploiement créé",
1836
+ "deploymentRedeploy": "Redéployé",
1837
+ "deploymentDelete": "Déploiement supprimé",
1838
+ "botSpaceCreate": "Espace créé",
1839
+ "botSpaceDelete": "Espace supprimé",
1840
+ "botSpaceMemberAdd": "Membre ajouté",
1841
+ "botSpaceMemberRemove": "Membre retiré",
1842
+ "documentUpload": "Doc téléversé",
1843
+ "documentDelete": "Doc supprimé",
1844
+ "apiKeyCreate": "Clé API créée",
1845
+ "apiKeyDelete": "Clé API supprimée",
1846
+ "userInvite": "Utilisateur invité",
1847
+ "userInviteAccept": "Invitation acceptée",
1848
+ "auditWebhookUpdate": "Webhook mis à jour",
1849
+ "auditLogsExport": "Journaux exportés"
1850
+ },
1851
+ "outcomes": {
1852
+ "success": "succès",
1853
+ "failure": "échec",
1854
+ "denied": "refusé"
1855
+ },
1856
+ "details": {
1857
+ "timestamp": "Horodatage complet",
1858
+ "requestId": "ID de requête",
1859
+ "ipAddress": "Adresse IP",
1860
+ "userAgent": "User Agent",
1861
+ "resource": "Ressource",
1862
+ "metadata": "Métadonnées"
1863
+ },
1864
+ "showing": "Affichage de {shown} sur {total} journaux",
1865
+ "loadMore": "Charger plus"
1866
+ },
1867
+ "auditLogFilters": {
1868
+ "eventTypes": {
1869
+ "allEvents": "Tous les événements",
1870
+ "authentication": "Authentification",
1871
+ "deployments": "Déploiements",
1872
+ "botSpaces": "Bot Spaces",
1873
+ "documents": "Documents",
1874
+ "apiKeys": "Clés API",
1875
+ "usersInvites": "Utilisateurs et invitations",
1876
+ "conversations": "Conversations",
1877
+ "settings": "Paramètres",
1878
+ "auditSystem": "Système d'audit"
1879
+ },
1880
+ "outcomes": {
1881
+ "all": "Tous",
1882
+ "success": "Succès",
1883
+ "failure": "Échec",
1884
+ "denied": "Refusé"
1885
+ },
1886
+ "dateRange": "Plage de dates",
1887
+ "from": "Du",
1888
+ "to": "Au",
1889
+ "clear": "Effacer"
1890
+ },
1891
+ "data": {
1892
+ "title": "Données de la flotte",
1893
+ "subtitle": "Parcours et agrège l'activité des conversations sur chaque bot connecté. Le contenu des conversations reste sur le bot — seuls les décomptes sont fusionnés en mémoire.",
1894
+ "loading": "Chargement…",
1895
+ "tabs": {
1896
+ "explorer": "Explorateur",
1897
+ "sql": "SQL",
1898
+ "analytics": "Analytique"
1899
+ },
1900
+ "explorer": {
1901
+ "filters": {
1902
+ "startDate": "Commencé après",
1903
+ "endDate": "Commencé avant",
1904
+ "conversationId": "L'ID de conversation contient"
1905
+ },
1906
+ "pagination": {
1907
+ "showing": "Affichage de {start} – {end} sur {total}",
1908
+ "previous": "Précédent",
1909
+ "next": "Suivant",
1910
+ "truncatedNotice": "Jeu de résultats limité aux 500 premières conversations sur l'ensemble de la flotte. Réduis ta plage de dates pour les résultats plus anciens."
1911
+ },
1912
+ "noConversations": "Aucune conversation ne correspond à ton filtre.",
1913
+ "search": "Rechercher",
1914
+ "searching": "Recherche…",
1915
+ "clear": "Effacer",
1916
+ "hint": "Saisis un fragment d'ID de conversation ou une plage de dates pour lancer une recherche sur chaque bot connecté."
1917
+ },
1918
+ "sql": {
1919
+ "placeholder": "SELECT bot_name, conversations_7d FROM bot_health ORDER BY conversations_7d DESC",
1920
+ "runQuery": "Exécuter la requête",
1921
+ "running": "Exécution…",
1922
+ "exportCsv": "Exporter en CSV",
1923
+ "exportJson": "Exporter en JSON",
1924
+ "keyboardHint": "Appuie sur Cmd/Ctrl + Entrée pour exécuter",
1925
+ "rowCount": "{count} lignes",
1926
+ "truncated": "(tronqué à 10 000)",
1927
+ "noResults": "Aucune ligne",
1928
+ "help": "Requêtes de démarrage",
1929
+ "starterQueries": {
1930
+ "title": "Requêtes de démarrage",
1931
+ "hint": "Chaque requête lit dans les tables de rollup en mémoire assemblées à la demande depuis les endpoints d'analytique de chaque bot. Clique pour charger.",
1932
+ "dailyStats": "Statistiques quotidiennes de conversation pour la flotte",
1933
+ "botHealth": "Santé du bot (7 derniers jours)",
1934
+ "protocolDistribution": "Distribution d'utilisation des protocoles",
1935
+ "mostActiveBots": "Bots les plus actifs cette semaine",
1936
+ "staleBots": "Bots non vus depuis 24 h",
1937
+ "dailyByBot": "Activité quotidienne jointe aux noms des bots"
1938
+ }
1939
+ },
1940
+ "schema": {
1941
+ "availableTables": "Référence du schéma",
1942
+ "clickToShow": "(clique pour afficher)",
1943
+ "clickToHide": "(clique pour masquer)",
1944
+ "note": "Note :",
1945
+ "scopeNote": "Ces tables sont construites en mémoire à chaque requête — une ligne par bot pour les tables de rollup, alimentées en appelant les endpoints d'analytique de chaque bot connecté. Le contenu brut des tours n'est pas exposé ; pour cela, utilise l'onglet Explorateur pour ouvrir une conversation."
1946
+ },
1947
+ "analytics": {
1948
+ "dateRange": {
1949
+ "last7days": "7 derniers jours",
1950
+ "last14days": "14 derniers jours",
1951
+ "last30days": "30 derniers jours",
1952
+ "last90days": "90 derniers jours"
1953
+ },
1954
+ "summary": {
1955
+ "totalConversations": "Conversations",
1956
+ "totalTurns": "Tours",
1957
+ "avgTurnsPerConversation": "Tours moyens/conv",
1958
+ "activeBots": "Bots joignables"
1959
+ },
1960
+ "charts": {
1961
+ "dailyConversations": "Volume quotidien de tours",
1962
+ "topBotsByActivity": "Principaux bots par volume de tours",
1963
+ "activityHeatmap": "Carte de chaleur d'activité (7 derniers jours)"
1964
+ },
1965
+ "noData": "Aucune activité sur cette période.",
1966
+ "noActivityData": "Aucune activité sur les 7 derniers jours.",
1967
+ "convs": "convs",
1968
+ "days": {
1969
+ "sun": "Dim",
1970
+ "mon": "Lun",
1971
+ "tue": "Mar",
1972
+ "wed": "Mer",
1973
+ "thu": "Jeu",
1974
+ "fri": "Ven",
1975
+ "sat": "Sam"
1976
+ },
1977
+ "loading": "Chargement des rollups de la flotte…"
1978
+ },
1979
+ "table": {
1980
+ "headers": {
1981
+ "bot": "Bot",
1982
+ "started": "Commencé",
1983
+ "duration": "Durée",
1984
+ "turns": "Tours",
1985
+ "conversationId": "ID de conversation"
1986
+ }
1987
+ },
1988
+ "navLabel": "Données",
1989
+ "fleet": {
1990
+ "unreachableBanner": "{unreachable} bots sur {total} injoignables — les résultats peuvent être partiels."
1991
+ }
1992
+ },
1993
+ "documentUploader": {
1994
+ "title": "Téléverser des documents",
1995
+ "description": "Téléverse les documents que ton chatbot utilisera pour le RAG (Retrieval-Augmented Generation)",
1996
+ "uploading": "Téléversement…",
1997
+ "chooseFiles": "Choisir des fichiers",
1998
+ "dropFilesHere": "Dépose les fichiers ici",
1999
+ "dragAndDropHint": "ou glisse-dépose les fichiers ici",
2000
+ "fileTypes": "PDF, TXT, MD, DOC, DOCX",
2001
+ "uploadedDocuments": "Documents téléversés ({count})",
2002
+ "noDocumentsYet": "Aucun document téléversé pour l'instant",
2003
+ "noDocumentsHint": "Clique sur « Choisir des fichiers » pour commencer",
2004
+ "skippedFiles": "Certains fichiers ont été ignorés. Seuls les fichiers PDF, TXT, MD, DOC, DOCX sont pris en charge.",
2005
+ "deleteConfirm": "Veux-tu vraiment supprimer ce fichier ?",
2006
+ "uploadFailed": "Échec du téléversement",
2007
+ "uploadFailedFallback": "Échec du téléversement des fichiers",
2008
+ "deleteFailed": "Échec de la suppression",
2009
+ "deleteFailedFallback": "Échec de la suppression du fichier"
2010
+ },
2011
+ "chatBuilder": {
2012
+ "title": "Constructeur de bot IA",
2013
+ "subtitle": "Décris le bot que tu veux construire et je le créerai pour toi",
2014
+ "loading": "Chargement du constructeur IA…",
2015
+ "newChat": "Nouveau chat",
2016
+ "recentChats": "Chats récents",
2017
+ "noPreviousChats": "Aucun chat précédent",
2018
+ "botPreview": "Aperçu du bot",
2019
+ "viewDeployedBot": "Voir le bot déployé",
2020
+ "selectWorkspace": "Sélectionne un espace de travail",
2021
+ "selectWorkspacePrompt": "Sélectionne un espace de travail pour commencer à construire",
2022
+ "noWorkspaces": "Aucun espace de travail disponible",
2023
+ "createWorkspaceFirst": "Crée-en un d'abord",
2024
+ "backToDashboard": "Retour au tableau de bord",
2025
+ "welcome": {
2026
+ "title": "Construis un bot avec l'IA",
2027
+ "description": "Décris le bot que tu veux créer, téléverse des documents pertinents, et je t'aiderai à le configurer et le déployer. Aucun code requis.",
2028
+ "quickPrompts": {
2029
+ "customerSupport": {
2030
+ "title": "Bot de support client",
2031
+ "description": "Répondre aux questions sur les produits",
2032
+ "prompt": "J'ai besoin d'un bot de support client qui peut répondre aux questions sur notre produit"
2033
+ },
2034
+ "leadCapture": {
2035
+ "title": "Bot de capture de prospects",
2036
+ "description": "Collecter les informations des visiteurs",
2037
+ "prompt": "Crée un bot de capture de prospects qui collecte le nom, l'e-mail et les infos de l'entreprise"
2038
+ },
2039
+ "faqAssistant": {
2040
+ "title": "Assistant FAQ",
2041
+ "description": "Répondre aux questions fréquentes",
2042
+ "prompt": "Aide-moi à construire un bot FAQ à partir de notre documentation"
2043
+ },
2044
+ "onboarding": {
2045
+ "title": "Bot d'intégration",
2046
+ "description": "Guider les nouveaux utilisateurs",
2047
+ "prompt": "Je veux créer un bot qui aide à intégrer les nouveaux clients"
2048
+ }
2049
+ }
2050
+ },
2051
+ "input": {
2052
+ "placeholder": "Décris le bot que tu veux construire…",
2053
+ "defaultPlaceholder": "Tape un message…",
2054
+ "dropFilesHere": "Dépose les fichiers ici…",
2055
+ "dropToAttach": "Dépose les fichiers pour les attacher à ton message",
2056
+ "hint": "Appuie sur Entrée pour envoyer, Maj+Entrée pour une nouvelle ligne. Glisse des fichiers ou clique sur le trombone pour attacher.",
2057
+ "hintShort": "Appuie sur Entrée pour envoyer, Maj+Entrée pour une nouvelle ligne",
2058
+ "hintWithAttach": "Glisse-dépose des fichiers ou clique sur attacher. Appuie sur Entrée pour envoyer.",
2059
+ "attachFiles": "Attacher des fichiers",
2060
+ "attachDocuments": "Attacher des documents"
2061
+ },
2062
+ "tools": {
2063
+ "toolsExecuted": "{count} outil exécuté",
2064
+ "toolsExecutedPlural": "{count} outils exécutés",
2065
+ "uploadDocument": "Téléverser un document",
2066
+ "generateForm": "Générer un formulaire",
2067
+ "deployBot": "Déployer le bot",
2068
+ "listDeployments": "Lister les déploiements",
2069
+ "checkDeploymentStatus": "Vérifier le statut du déploiement",
2070
+ "destroyDeployment": "Détruire le déploiement",
2071
+ "getAnalytics": "Obtenir l'analytique",
2072
+ "getFormSubmissions": "Obtenir les soumissions de formulaires",
2073
+ "listWorkspaces": "Lister les espaces de travail",
2074
+ "listDocuments": "Lister les documents",
2075
+ "listApiKeys": "Lister les clés API"
2076
+ },
2077
+ "documentPicker": {
2078
+ "title": "Sélectionner des documents",
2079
+ "noDocuments": "Aucun document dans cet espace de travail",
2080
+ "uploadFirst": "Téléverse d'abord des documents pour les utiliser dans ton bot",
2081
+ "selected": "{count} document sélectionné",
2082
+ "selectedPlural": "{count} documents sélectionnés",
2083
+ "useSelected": "Utiliser la sélection"
2084
+ },
2085
+ "errors": {
2086
+ "failedToSend": "Échec de l'envoi du message",
2087
+ "failedToLoadSession": "Échec du chargement de la session",
2088
+ "failedToLoadDocuments": "Échec du chargement des documents"
2089
+ },
2090
+ "invertedPanel": {
2091
+ "createABot": "Créer un bot",
2092
+ "editBot": "Modifier {name}",
2093
+ "fallbackBotName": "Bot",
2094
+ "private": "Privé",
2095
+ "createTitle": "Quel type de bot puis-je t'aider à construire ?",
2096
+ "createDescription": "Tu peux aussi attacher des documents pour lui donner des connaissances. Téléverse un fichier, ou demande de se référer aux documents du bot space.",
2097
+ "buildWithWizard": "Construire avec l'assistant (configuration étape par étape)",
2098
+ "editTitle": "Modifier {name}",
2099
+ "editFallbackName": "ton bot",
2100
+ "editDescription": "Dis-moi ce que tu veux changer. Je chargerai ta configuration actuelle et t'aiderai à la mettre à jour.",
2101
+ "editExamples": "Exemples : « Changer le message d'accueil », « Ajouter un nouveau champ de formulaire », « Mettre à jour le nom du bot »",
2102
+ "errorPrefix": "Erreur :",
2103
+ "inputPlaceholder": "Décris ce que ton bot devrait faire…",
2104
+ "adjustMessage": "J'aimerais ajuster la configuration"
2105
+ },
2106
+ "status": {
2107
+ "ready": "Prêt",
2108
+ "processing": "Traitement",
2109
+ "awaitingConfirmation": "En attente de confirmation",
2110
+ "deploying": "Déploiement",
2111
+ "deployed": "Déployé",
2112
+ "editing": "Édition"
2113
+ },
2114
+ "success": {
2115
+ "botBuilt": "Bot construit !",
2116
+ "botSaved": "Bot enregistré",
2117
+ "botBuiltMessage": "Ton bot <strong>{name}</strong> est construit et prêt au téléchargement.",
2118
+ "botSavedMessage": "Ton bot <strong>{name}</strong> est enregistré. Construis-le depuis ton Bot Space quand tu es prêt.",
2119
+ "liveUrl": "URL en direct",
2120
+ "embedCode": "Code d'intégration",
2121
+ "downloadArtifact": "Télécharger l'artefact",
2122
+ "downloadWithDocs": "Télécharger avec les documents",
2123
+ "openBot": "Ouvrir le bot",
2124
+ "viewInBotSpace": "Voir dans le Bot Space"
2125
+ }
2126
+ },
2127
+ "login": {
2128
+ "subtitle": "Connecte-toi pour continuer",
2129
+ "username": "Nom d'utilisateur",
2130
+ "password": "Mot de passe",
2131
+ "signIn": "Se connecter",
2132
+ "signingIn": "Connexion…",
2133
+ "signOut": "Se déconnecter",
2134
+ "invalid": "Nom d'utilisateur ou mot de passe invalide"
2135
+ }
2136
+ }