@lobehub/chat 1.109.1 → 1.110.1

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 (57) hide show
  1. package/.cursor/rules/i18n.mdc +1 -2
  2. package/CHANGELOG.md +50 -0
  3. package/README.md +1 -1
  4. package/README.zh-CN.md +1 -1
  5. package/apps/desktop/electron-builder.js +22 -0
  6. package/apps/desktop/src/main/controllers/McpInstallCtr.ts +153 -0
  7. package/apps/desktop/src/main/controllers/index.ts +19 -0
  8. package/apps/desktop/src/main/core/App.ts +46 -0
  9. package/apps/desktop/src/main/core/infrastructure/IoCContainer.ts +4 -0
  10. package/apps/desktop/src/main/core/infrastructure/ProtocolManager.ts +256 -0
  11. package/apps/desktop/src/main/types/protocol.ts +60 -0
  12. package/apps/desktop/src/main/utils/__tests__/protocol.test.ts +203 -0
  13. package/apps/desktop/src/main/utils/protocol.ts +210 -0
  14. package/changelog/v1.json +18 -0
  15. package/locales/ar/plugin.json +196 -136
  16. package/locales/bg-BG/plugin.json +204 -144
  17. package/locales/de-DE/plugin.json +176 -116
  18. package/locales/en-US/plugin.json +192 -132
  19. package/locales/es-ES/plugin.json +203 -143
  20. package/locales/fa-IR/plugin.json +155 -95
  21. package/locales/fr-FR/plugin.json +161 -101
  22. package/locales/it-IT/plugin.json +193 -133
  23. package/locales/ja-JP/plugin.json +195 -135
  24. package/locales/ko-KR/plugin.json +163 -103
  25. package/locales/nl-NL/plugin.json +211 -151
  26. package/locales/pl-PL/plugin.json +171 -111
  27. package/locales/pt-BR/plugin.json +180 -120
  28. package/locales/ru-RU/plugin.json +191 -131
  29. package/locales/tr-TR/plugin.json +187 -127
  30. package/locales/vi-VN/plugin.json +152 -92
  31. package/locales/zh-CN/plugin.json +60 -0
  32. package/locales/zh-TW/plugin.json +157 -97
  33. package/package.json +2 -1
  34. package/packages/electron-client-ipc/src/events/index.ts +5 -2
  35. package/packages/electron-client-ipc/src/events/protocol.ts +29 -0
  36. package/packages/electron-client-ipc/src/types/index.ts +1 -0
  37. package/packages/electron-client-ipc/src/types/mcpInstall.ts +19 -0
  38. package/packages/types/src/plugins/mcp.ts +38 -1
  39. package/packages/types/src/plugins/protocol.ts +166 -0
  40. package/src/app/[variants]/(main)/chat/_layout/Desktop/index.tsx +4 -1
  41. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/ActionButton/index.tsx +1 -2
  42. package/src/components/KeyValueEditor/index.tsx +4 -2
  43. package/src/features/ChatItem/index.tsx +25 -2
  44. package/src/features/MCP/MCPInstallProgress/index.tsx +1 -1
  45. package/src/features/PluginDevModal/MCPManifestForm/index.tsx +30 -36
  46. package/src/features/PluginStore/McpList/List/Item.tsx +1 -1
  47. package/src/features/ProtocolUrlHandler/InstallPlugin/ConfigDisplay.tsx +211 -0
  48. package/src/features/ProtocolUrlHandler/InstallPlugin/CustomPluginInstallModal.tsx +228 -0
  49. package/src/features/ProtocolUrlHandler/InstallPlugin/OfficialPluginInstallModal/Detail.tsx +44 -0
  50. package/src/features/ProtocolUrlHandler/InstallPlugin/OfficialPluginInstallModal/index.tsx +105 -0
  51. package/src/features/ProtocolUrlHandler/InstallPlugin/index.tsx +55 -0
  52. package/src/features/ProtocolUrlHandler/InstallPlugin/types.ts +45 -0
  53. package/src/features/ProtocolUrlHandler/index.tsx +30 -0
  54. package/src/locales/default/plugin.ts +60 -0
  55. package/src/store/tool/slices/mcpStore/action.ts +127 -1
  56. package/src/store/tool/slices/mcpStore/initialState.ts +8 -13
  57. package/src/store/tool/slices/mcpStore/selectors.ts +13 -0
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "confirm": "Confirmer",
3
3
  "debug": {
4
- "arguments": "Arguments de l'appel",
4
+ "arguments": "Arguments d'appel",
5
5
  "function_call": "Appel de fonction",
6
- "off": "Désactivé",
7
- "on": "Activer le débogage",
8
- "payload": "charge du plugin",
6
+ "off": "Désactiver le débogage",
7
+ "on": "Voir les informations d'appel du plugin",
8
+ "payload": "Charge utile du plugin",
9
9
  "pluginState": "État du plugin",
10
- "response": "Réponse",
10
+ "response": "Résultat retourné",
11
11
  "title": "Détails du plugin",
12
- "tool_call": "demande d'appel d'outil"
12
+ "tool_call": "Requête d'appel d'outil"
13
13
  },
14
14
  "detailModal": {
15
15
  "customPlugin": {
@@ -18,7 +18,7 @@
18
18
  "title": "Ceci est un plugin personnalisé"
19
19
  },
20
20
  "emptyState": {
21
- "description": "Veuillez installer ce plugin pour voir ses fonctionnalités et options de configuration",
21
+ "description": "Veuillez d'abord installer ce plugin pour voir ses capacités et options de configuration",
22
22
  "title": "Voir les détails du plugin après installation"
23
23
  },
24
24
  "info": {
@@ -33,13 +33,13 @@
33
33
  "title": "Détails du plugin"
34
34
  },
35
35
  "dev": {
36
- "confirmDeleteDevPlugin": "Êtes-vous sûr de vouloir supprimer ce plugin local ? Cette action est irréversible.",
36
+ "confirmDeleteDevPlugin": "Vous êtes sur le point de supprimer ce plugin local. Cette action est irréversible. Voulez-vous vraiment supprimer ce plugin ?",
37
37
  "customParams": {
38
38
  "useProxy": {
39
- "label": "Installer via proxy (if encountering cross-origin access errors, try enabling this option and reinstalling)"
39
+ "label": "Installer via proxy (en cas d'erreur d'accès cross-origin, essayez d'activer cette option puis réinstallez)"
40
40
  }
41
41
  },
42
- "deleteSuccess": "Suppression du plugin réussie",
42
+ "deleteSuccess": "Plugin supprimé avec succès",
43
43
  "manifest": {
44
44
  "identifier": {
45
45
  "desc": "Identifiant unique du plugin",
@@ -61,19 +61,19 @@
61
61
  "title": "Paramètres avancés"
62
62
  },
63
63
  "args": {
64
- "desc": "Liste des paramètres à passer à la commande d'exécution, généralement ici le nom du serveur MCP ou le chemin du script de démarrage",
65
- "label": "Paramètres de commande",
66
- "placeholder": "Par exemple : --port 8080 --debug",
67
- "required": "Veuillez entrer les paramètres de démarrage"
64
+ "desc": "Liste des arguments passés à la commande d'exécution, généralement le nom du serveur MCP ou le chemin du script de démarrage",
65
+ "label": "Arguments de commande",
66
+ "placeholder": "Par exemple : mcp-hello-world",
67
+ "required": "Veuillez saisir les arguments de démarrage"
68
68
  },
69
69
  "auth": {
70
70
  "bear": "Clé API",
71
71
  "desc": "Choisissez le mode d'authentification du serveur MCP",
72
72
  "label": "Type d'authentification",
73
73
  "none": "Aucune authentification requise",
74
- "placeholder": "Veuillez sélectionner un type d'authentification",
74
+ "placeholder": "Veuillez choisir un type d'authentification",
75
75
  "token": {
76
- "desc": "Entrez votre clé API ou jeton Bearer",
76
+ "desc": "Saisissez votre clé API ou jeton Bearer",
77
77
  "label": "Clé API",
78
78
  "placeholder": "sk-xxxxx",
79
79
  "required": "Veuillez saisir le jeton d'authentification"
@@ -83,68 +83,68 @@
83
83
  "label": "Icône du plugin"
84
84
  },
85
85
  "command": {
86
- "desc": "Fichier exécutable ou script utilisé pour démarrer le plugin MCP STDIO",
86
+ "desc": "Fichier exécutable ou script pour démarrer le serveur MCP STDIO",
87
87
  "label": "Commande",
88
- "placeholder": "Par exemple : python main.py ou /path/to/executable",
89
- "required": "Veuillez entrer la commande de démarrage"
88
+ "placeholder": "Par exemple : npx / uv / docker etc.",
89
+ "required": "Veuillez saisir la commande de démarrage"
90
90
  },
91
91
  "desc": {
92
- "desc": "Description du plugin",
92
+ "desc": "Ajoutez une description du plugin",
93
93
  "label": "Description du plugin",
94
- "placeholder": "Ajoutez des informations sur l'utilisation et le contexte de ce plugin"
94
+ "placeholder": "Complétez les instructions d'utilisation et les scénarios"
95
95
  },
96
96
  "endpoint": {
97
- "desc": "Entrez l'adresse de votre serveur HTTP Streamable MCP",
98
- "label": "URL de l'endpoint MCP"
97
+ "desc": "Saisissez l'adresse de votre serveur MCP Streamable HTTP",
98
+ "label": "URL du point de terminaison MCP"
99
99
  },
100
100
  "env": {
101
101
  "add": "Ajouter une ligne",
102
- "desc": "Entrez les variables d'environnement nécessaires pour votre serveur MCP",
102
+ "desc": "Saisissez les variables d'environnement nécessaires pour le serveur MCP",
103
103
  "duplicateKeyError": "La clé du champ doit être unique",
104
104
  "formValidationFailed": "Échec de la validation du formulaire, veuillez vérifier le format des paramètres",
105
105
  "keyRequired": "La clé du champ ne peut pas être vide",
106
106
  "label": "Variables d'environnement du serveur MCP",
107
- "stringifyError": "Impossible de sérialiser les paramètres, veuillez vérifier le format des paramètres"
107
+ "stringifyError": "Impossible de sérialiser les paramètres, veuillez vérifier le format"
108
108
  },
109
109
  "headers": {
110
110
  "add": "Ajouter une ligne",
111
- "desc": "Entrez les en-têtes de la requête",
111
+ "desc": "Saisissez les en-têtes de requête",
112
112
  "label": "En-têtes HTTP"
113
113
  },
114
114
  "identifier": {
115
- "desc": "Donnez un nom à votre plugin MCP, en utilisant des caractères anglais",
116
- "invalid": "Vous ne pouvez entrer que des caractères anglais, des chiffres, - et _",
115
+ "desc": "Attribuez un nom à votre plugin MCP, en utilisant des caractères anglais",
116
+ "invalid": "L'identifiant ne peut contenir que des lettres, chiffres, tirets et underscores",
117
117
  "label": "Nom du plugin MCP",
118
118
  "placeholder": "Par exemple : my-mcp-plugin",
119
- "required": "Veuillez entrer l'identifiant du service MCP"
119
+ "required": "Veuillez saisir l'identifiant du service MCP"
120
120
  },
121
121
  "previewManifest": "Aperçu du fichier de description du plugin",
122
122
  "quickImport": "Importation rapide de la configuration JSON",
123
123
  "quickImportError": {
124
- "empty": "Le contenu ne peut pas être vide",
124
+ "empty": "Le contenu saisi ne peut pas être vide",
125
125
  "invalidJson": "Format JSON invalide",
126
126
  "invalidStructure": "Structure JSON invalide"
127
127
  },
128
- "stdioNotSupported": "L'environnement actuel ne prend pas en charge les plugins MCP de type stdio",
128
+ "stdioNotSupported": "L'environnement actuel ne supporte pas les plugins MCP de type stdio",
129
129
  "testConnection": "Tester la connexion",
130
130
  "testConnectionTip": "Le plugin MCP ne peut être utilisé normalement qu'après un test de connexion réussi",
131
131
  "type": {
132
- "desc": "Choisissez le mode de communication du plugin MCP, la version web ne prend en charge que le HTTP Streamable",
133
- "httpFeature1": "Compatible avec la version web et de bureau",
134
- "httpFeature2": "Connexion à un serveur MCP distant, sans installation ni configuration supplémentaires",
135
- "httpShortDesc": "Protocole de communication basé sur HTTP en continu",
132
+ "desc": "Choisissez le mode de communication du plugin MCP, la version web ne supporte que Streamable HTTP",
133
+ "httpFeature1": "Compatible avec la version web et desktop",
134
+ "httpFeature2": "Connexion au serveur MCP distant, sans installation ni configuration supplémentaires",
135
+ "httpShortDesc": "Protocole de communication basé sur HTTP en streaming",
136
136
  "label": "Type de plugin MCP",
137
- "stdioFeature1": "Latence de communication réduite, adapté à l'exécution locale",
138
- "stdioFeature2": "Nécessite l'installation et l'exécution d'un serveur MCP local",
139
- "stdioNotAvailable": "Le mode STDIO n'est disponible que dans la version de bureau",
137
+ "stdioFeature1": "Latence de communication plus faible, adapté à l'exécution locale",
138
+ "stdioFeature2": "Nécessite l'installation locale du serveur MCP",
139
+ "stdioNotAvailable": "Le mode STDIO est disponible uniquement sur la version desktop",
140
140
  "stdioShortDesc": "Protocole de communication basé sur l'entrée/sortie standard",
141
141
  "title": "Type de plugin MCP"
142
142
  },
143
143
  "url": {
144
- "desc": "Entrez l'adresse HTTP Streamable de votre serveur MCP, le mode SSE n'est pas pris en charge",
145
- "invalid": "Veuillez entrer une URL valide",
146
- "label": "URL de l'endpoint HTTP",
147
- "required": "Veuillez entrer l'URL du service MCP"
144
+ "desc": "Saisissez l'adresse Streamable HTTP de votre serveur MCP, le mode SSE n'est pas supporté",
145
+ "invalid": "Veuillez saisir une URL valide",
146
+ "label": "URL du point de terminaison Streamable HTTP",
147
+ "required": "Veuillez saisir l'URL du service MCP"
148
148
  }
149
149
  },
150
150
  "meta": {
@@ -153,29 +153,29 @@
153
153
  "label": "Auteur"
154
154
  },
155
155
  "avatar": {
156
- "desc": "Icône du plugin, peut être un Emoji ou une URL",
156
+ "desc": "Icône du plugin, peut être un emoji ou une URL",
157
157
  "label": "Icône"
158
158
  },
159
159
  "description": {
160
160
  "desc": "Description du plugin",
161
161
  "label": "Description",
162
- "placeholder": "Rechercher un moteur de recherche pour obtenir des informations"
162
+ "placeholder": "Recherchez des informations via un moteur de recherche"
163
163
  },
164
- "formFieldRequired": "Ce champ est requis",
164
+ "formFieldRequired": "Ce champ est obligatoire",
165
165
  "homepage": {
166
166
  "desc": "Page d'accueil du plugin",
167
167
  "label": "Page d'accueil"
168
168
  },
169
169
  "identifier": {
170
- "desc": "Identifiant unique du plugin, sera automatiquement reconnu à partir du manifest",
171
- "errorDuplicate": "L'identifiant du plugin existe déjà, veuillez le modifier",
170
+ "desc": "Identifiant unique du plugin, détecté automatiquement depuis le manifest",
171
+ "errorDuplicate": "L'identifiant est en conflit avec un plugin existant, veuillez le modifier",
172
172
  "label": "Identifiant",
173
- "pattenErrorMessage": "Seuls les caractères alphanumériques, - et _ sont autorisés"
173
+ "pattenErrorMessage": "Seuls les caractères anglais, chiffres, - et _ sont autorisés"
174
174
  },
175
175
  "lobe": "Plugin {{appName}}",
176
176
  "manifest": {
177
- "desc": "{{appName}} sera installé via ce lien pour ajouter le plugin.",
178
- "label": "URL du fichier de description du plugin (Manifest)",
177
+ "desc": "{{appName}} installera le plugin via ce lien",
178
+ "label": "URL du fichier de description (Manifest)",
179
179
  "preview": "Aperçu du Manifest",
180
180
  "refresh": "Actualiser"
181
181
  },
@@ -187,30 +187,30 @@
187
187
  }
188
188
  },
189
189
  "metaConfig": "Configuration des métadonnées du plugin",
190
- "modalDesc": "Une fois le plugin personnalisé ajouté, il peut être utilisé pour valider le développement du plugin ou directement dans la session. Veuillez consulter le <1>guide de développement↗</> pour le développement de plugins.",
190
+ "modalDesc": "Après avoir ajouté un plugin personnalisé, il peut être utilisé pour le développement et la validation, ou directement dans les conversations. Pour le développement, veuillez consulter la <1>documentation ↗</1>.",
191
191
  "openai": {
192
- "importUrl": "Importer depuis l'URL",
192
+ "importUrl": "Importer depuis une URL",
193
193
  "schema": "Schéma"
194
194
  },
195
195
  "preview": {
196
196
  "api": {
197
197
  "noParams": "Cet outil n'a pas de paramètres",
198
- "noResults": "Aucune API correspondant aux critères de recherche trouvée",
198
+ "noResults": "Aucune API correspondant aux critères de recherche",
199
199
  "params": "Paramètres :",
200
200
  "searchPlaceholder": "Rechercher un outil..."
201
201
  },
202
- "card": "Aperçu de l'interface du plugin",
203
- "desc": "Aperçu de la description du plugin",
202
+ "card": "Aperçu de l'affichage du plugin",
203
+ "desc": "Description de l'aperçu du plugin",
204
204
  "empty": {
205
- "desc": "Une fois la configuration terminée, vous pourrez prévisualiser les capacités des outils pris en charge par le plugin ici",
206
- "title": "Commencez la prévisualisation après avoir configuré le plugin"
205
+ "desc": "Après configuration, vous pourrez prévisualiser ici les capacités des outils supportés par le plugin",
206
+ "title": "Commencez la prévisualisation après configuration"
207
207
  },
208
208
  "title": "Aperçu du nom du plugin"
209
209
  },
210
210
  "save": "Installer le plugin",
211
211
  "saveSuccess": "Paramètres du plugin enregistrés avec succès",
212
212
  "tabs": {
213
- "manifest": "Manifeste des fonctionnalités",
213
+ "manifest": "Liste des fonctionnalités (Manifest)",
214
214
  "meta": "Métadonnées du plugin"
215
215
  },
216
216
  "title": {
@@ -218,21 +218,21 @@
218
218
  "edit": "Modifier un plugin personnalisé"
219
219
  },
220
220
  "type": {
221
- "lobe": "Plugin LobeChat",
221
+ "lobe": "Plugin {{appName}}",
222
222
  "openai": "Plugin OpenAI"
223
223
  },
224
224
  "update": "Mettre à jour",
225
225
  "updateSuccess": "Paramètres du plugin mis à jour avec succès"
226
226
  },
227
227
  "error": {
228
- "fetchError": "Échec de la requête vers ce lien de manifest. Veuillez vous assurer que le lien est valide et autorise les requêtes cross-origin.",
228
+ "fetchError": "Échec de la requête vers le lien manifest, veuillez vérifier la validité du lien et s'assurer qu'il autorise l'accès cross-origin",
229
229
  "installError": "Échec de l'installation du plugin {{name}}",
230
- "manifestInvalid": "Le manifest ne respecte pas les normes. Résultat de la validation : \n\n {{error}}",
231
- "noManifest": "Aucun fichier de description trouvé",
232
- "openAPIInvalid": "Échec d'analyse de l'OpenAPI, erreur : \n\n {{error}}",
230
+ "manifestInvalid": "Le manifest ne respecte pas les normes, résultat de la validation : \n\n {{error}}",
231
+ "noManifest": "Fichier de description introuvable",
232
+ "openAPIInvalid": "Échec de l'analyse OpenAPI, erreur : \n\n {{error}}",
233
233
  "reinstallError": "Échec de la mise à jour du plugin {{name}}",
234
- "testConnectionFailed": "Échec de l'obtention du Manifest : {{error}}",
235
- "urlError": "Ce lien ne renvoie pas de contenu au format JSON. Veuillez vous assurer qu'il s'agit d'un lien valide."
234
+ "testConnectionFailed": "Échec de récupération du Manifest : {{error}}",
235
+ "urlError": "Le lien ne retourne pas un contenu au format JSON, veuillez vérifier qu'il s'agit d'un lien valide"
236
236
  },
237
237
  "inspector": {
238
238
  "args": "Voir la liste des paramètres",
@@ -240,38 +240,38 @@
240
240
  },
241
241
  "list": {
242
242
  "item": {
243
- "deprecated.title": "Obsolète",
243
+ "deprecated.title": "Supprimé",
244
244
  "local.config": "Configuration",
245
245
  "local.title": "Personnalisé"
246
246
  }
247
247
  },
248
248
  "loading": {
249
249
  "content": "Appel du plugin en cours...",
250
- "plugin": "Exécution du plugin en cours..."
250
+ "plugin": "Plugin en cours d'exécution..."
251
251
  },
252
252
  "localSystem": {
253
253
  "apiName": {
254
- "listLocalFiles": "Afficher la liste des fichiers",
254
+ "listLocalFiles": "Voir la liste des fichiers",
255
255
  "moveLocalFiles": "Déplacer les fichiers",
256
256
  "readLocalFile": "Lire le contenu du fichier",
257
257
  "renameLocalFile": "Renommer",
258
258
  "searchLocalFiles": "Rechercher des fichiers",
259
- "writeLocalFile": "Écrire dans le fichier"
259
+ "writeLocalFile": "Écrire dans un fichier"
260
260
  },
261
261
  "title": "Fichiers locaux"
262
262
  },
263
263
  "mcpInstall": {
264
264
  "CHECKING_INSTALLATION": "Vérification de l'environnement d'installation...",
265
265
  "COMPLETED": "Installation terminée",
266
- "CONFIGURATION_REQUIRED": "Veuillez compléter la configuration requise avant de continuer l'installation",
266
+ "CONFIGURATION_REQUIRED": "Veuillez compléter la configuration avant de continuer l'installation",
267
267
  "ERROR": "Erreur d'installation",
268
- "FETCHING_MANIFEST": "Récupération du fichier manifeste du plugin...",
268
+ "FETCHING_MANIFEST": "Récupération du fichier de description du plugin...",
269
269
  "GETTING_SERVER_MANIFEST": "Initialisation du serveur MCP...",
270
270
  "INSTALLING_PLUGIN": "Installation du plugin en cours...",
271
- "configurationDescription": "Ce plugin MCP nécessite des paramètres de configuration pour fonctionner correctement, veuillez remplir les informations nécessaires.",
271
+ "configurationDescription": "Ce plugin MCP nécessite des paramètres de configuration pour fonctionner correctement, veuillez remplir les informations nécessaires",
272
272
  "configurationRequired": "Configurer les paramètres du plugin",
273
273
  "continueInstall": "Continuer l'installation",
274
- "dependenciesDescription": "Ce plugin nécessite l'installation des dépendances système suivantes pour fonctionner correctement. Veuillez installer les dépendances manquantes selon les instructions, puis cliquez sur 'Re-vérifier' pour continuer l'installation.",
274
+ "dependenciesDescription": "Ce plugin nécessite l'installation des dépendances système suivantes pour fonctionner correctement. Veuillez installer les dépendances manquantes selon les instructions, puis cliquez sur vérifier à nouveau pour continuer l'installation.",
275
275
  "dependenciesRequired": "Veuillez installer les dépendances système du plugin",
276
276
  "dependencyStatus": {
277
277
  "installed": "Installé",
@@ -279,7 +279,7 @@
279
279
  "requiredVersion": "Version requise : {{version}}"
280
280
  },
281
281
  "errorDetails": {
282
- "args": "Arguments",
282
+ "args": "Paramètres",
283
283
  "command": "Commande",
284
284
  "connectionParams": "Paramètres de connexion",
285
285
  "env": "Variables d'environnement",
@@ -302,44 +302,104 @@
302
302
  "manual": "Installation manuelle :",
303
303
  "recommended": "Méthode d'installation recommandée :"
304
304
  },
305
- "recheckDependencies": "Re-vérifier",
305
+ "recheckDependencies": "Vérifier à nouveau",
306
306
  "skipDependencies": "Ignorer la vérification"
307
307
  },
308
308
  "pluginList": "Liste des plugins",
309
+ "protocolInstall": {
310
+ "actions": {
311
+ "install": "Installer",
312
+ "installAnyway": "Installer quand même",
313
+ "installed": "Installé"
314
+ },
315
+ "config": {
316
+ "args": "Paramètres",
317
+ "command": "Commande",
318
+ "env": "Variables d'environnement",
319
+ "headers": "En-têtes de requête",
320
+ "title": "Informations de configuration",
321
+ "type": {
322
+ "http": "Type : HTTP",
323
+ "label": "Type",
324
+ "stdio": "Type : Stdio"
325
+ },
326
+ "url": "Adresse du service"
327
+ },
328
+ "custom": {
329
+ "badge": "Plugin personnalisé",
330
+ "security": {
331
+ "description": "Ce plugin n'a pas été vérifié officiellement, son installation peut présenter des risques de sécurité ! Veuillez vous assurer de faire confiance à la source du plugin.",
332
+ "title": "⚠️ Avertissement de risque de sécurité"
333
+ },
334
+ "title": "Installer un plugin personnalisé"
335
+ },
336
+ "marketplace": {
337
+ "title": "Installer un plugin tiers",
338
+ "trustedBy": "Fournit par {{name}}",
339
+ "unverified": {
340
+ "title": "Plugin tiers non vérifié",
341
+ "warning": "Ce plugin provient d'un marché tiers non vérifié, veuillez confirmer que vous faites confiance à cette source avant l'installation."
342
+ },
343
+ "verified": "Vérifié"
344
+ },
345
+ "messages": {
346
+ "connectionTestFailed": "Échec du test de connexion",
347
+ "installError": "Échec de l'installation du plugin, veuillez réessayer",
348
+ "installSuccess": "Plugin {{name}} installé avec succès !",
349
+ "manifestError": "Échec de récupération des détails du plugin, veuillez vérifier la connexion réseau et réessayer",
350
+ "manifestNotFound": "Fichier de description du plugin introuvable"
351
+ },
352
+ "meta": {
353
+ "author": "Auteur",
354
+ "homepage": "Page d'accueil",
355
+ "identifier": "Identifiant",
356
+ "source": "Source",
357
+ "version": "Version"
358
+ },
359
+ "official": {
360
+ "badge": "Plugin officiel LobeHub",
361
+ "description": "Ce plugin est développé et maintenu officiellement par LobeHub, soumis à un audit de sécurité rigoureux, vous pouvez l'utiliser en toute confiance.",
362
+ "loadingMessage": "Récupération des détails du plugin en cours...",
363
+ "loadingTitle": "Chargement",
364
+ "title": "Installer un plugin officiel"
365
+ },
366
+ "title": "Installer un plugin MCP",
367
+ "warning": "⚠️ Veuillez confirmer que vous faites confiance à la source de ce plugin, un plugin malveillant pourrait compromettre la sécurité de votre système."
368
+ },
309
369
  "search": {
310
370
  "apiName": {
311
371
  "crawlMultiPages": "Lire le contenu de plusieurs pages",
312
372
  "crawlSinglePage": "Lire le contenu de la page",
313
- "search": "Rechercher la page"
373
+ "search": "Rechercher sur la page"
314
374
  },
315
375
  "config": {
316
376
  "addKey": "Ajouter une clé",
317
377
  "close": "Supprimer",
318
- "confirm": "Configuration terminée, veuillez réessayer"
378
+ "confirm": "Configuration terminée et réessayer"
319
379
  },
320
380
  "crawPages": {
321
381
  "crawling": "Identification des liens en cours",
322
382
  "detail": {
323
383
  "preview": "Aperçu",
324
384
  "raw": "Texte brut",
325
- "tooLong": "Le contenu du texte est trop long, le contexte de la conversation ne conserve que les {{characters}} premiers caractères, la partie excédentaire n'est pas prise en compte dans le contexte de la conversation"
385
+ "tooLong": "Le contenu du texte est trop long, le contexte de la conversation ne conserve que les {{characters}} premiers caractères, le reste n'est pas pris en compte."
326
386
  },
327
387
  "meta": {
328
- "crawler": "Mode de collecte",
388
+ "crawler": "Mode de capture",
329
389
  "words": "Nombre de caractères"
330
390
  }
331
391
  },
332
392
  "searchxng": {
333
- "baseURL": "Veuillez entrer",
334
- "description": "Veuillez entrer l'URL de SearchXNG pour commencer la recherche en ligne",
335
- "keyPlaceholder": "Veuillez entrer la clé",
393
+ "baseURL": "Veuillez saisir",
394
+ "description": "Veuillez saisir l'URL de SearchXNG pour commencer la recherche en ligne",
395
+ "keyPlaceholder": "Veuillez saisir la clé",
336
396
  "title": "Configurer le moteur de recherche SearchXNG",
337
- "unconfiguredDesc": "Veuillez contacter l'administrateur pour compléter la configuration du moteur de recherche SearchXNG afin de commencer la recherche en ligne",
338
- "unconfiguredTitle": "Moteur de recherche SearchXNG non configuré"
397
+ "unconfiguredDesc": "Veuillez contacter l'administrateur pour configurer SearchXNG afin de commencer la recherche en ligne",
398
+ "unconfiguredTitle": "SearchXNG non configuré"
339
399
  },
340
400
  "title": "Recherche en ligne"
341
401
  },
342
- "setting": "Paramètres des plugins",
402
+ "setting": "Paramètres du plugin",
343
403
  "settings": {
344
404
  "capabilities": {
345
405
  "prompts": "Invites",
@@ -359,51 +419,51 @@
359
419
  },
360
420
  "edit": "Modifier",
361
421
  "envConfigDescription": "Ces configurations seront transmises en tant que variables d'environnement au processus lors du démarrage du serveur MCP",
362
- "httpTypeNotice": "Les plugins MCP de type HTTP n'ont actuellement pas de variables d'environnement à configurer",
422
+ "httpTypeNotice": "Les plugins MCP de type HTTP n'ont pas de variables d'environnement à configurer pour le moment",
363
423
  "indexUrl": {
364
424
  "title": "Index du marché",
365
- "tooltip": "L'édition en ligne n'est pas encore prise en charge. Veuillez configurer via les variables d'environnement lors du déploiement."
425
+ "tooltip": "L'édition en ligne n'est pas encore supportée, veuillez configurer via les variables d'environnement lors du déploiement"
366
426
  },
367
427
  "messages": {
368
428
  "connectionUpdateFailed": "Échec de la mise à jour des informations de connexion",
369
- "connectionUpdateSuccess": "Mise à jour des informations de connexion réussie",
429
+ "connectionUpdateSuccess": "Informations de connexion mises à jour avec succès",
370
430
  "envUpdateFailed": "Échec de l'enregistrement des variables d'environnement",
371
- "envUpdateSuccess": "Enregistrement des variables d'environnement réussi"
431
+ "envUpdateSuccess": "Variables d'environnement enregistrées avec succès"
372
432
  },
373
- "modalDesc": "Une fois l'adresse du marché des plugins configurée, vous pourrez utiliser un marché de plugins personnalisé.",
433
+ "modalDesc": "Après avoir configuré l'adresse du marché des plugins, vous pouvez utiliser un marché de plugins personnalisé",
374
434
  "rules": {
375
- "argsRequired": "Veuillez saisir les paramètres de démarrage",
435
+ "argsRequired": "Veuillez saisir les arguments de démarrage",
376
436
  "commandRequired": "Veuillez saisir la commande de démarrage",
377
437
  "urlRequired": "Veuillez saisir l'adresse du service"
378
438
  },
379
439
  "saveSettings": "Enregistrer les paramètres",
380
- "title": "Paramètres du marché des plugins"
440
+ "title": "Configurer le marché des plugins"
381
441
  },
382
442
  "showInPortal": "Veuillez consulter les détails dans l'espace de travail",
383
443
  "store": {
384
444
  "actions": {
385
445
  "cancel": "Annuler l'installation",
386
- "confirmUninstall": "Vous êtes sur le point de désinstaller ce plugin. Une fois désinstallé, sa configuration sera effacée. Veuillez confirmer votre action.",
446
+ "confirmUninstall": "Vous êtes sur le point de désinstaller ce plugin, cela supprimera également sa configuration. Veuillez confirmer votre action.",
387
447
  "detail": "Détails",
388
448
  "install": "Installer",
389
449
  "manifest": "Modifier le fichier d'installation",
390
450
  "settings": "Paramètres",
391
451
  "uninstall": "Désinstaller"
392
452
  },
393
- "communityPlugin": "Plugin communautaire",
394
- "customPlugin": "Plugin personnalisé",
395
- "empty": "Aucun plugin installé pour le moment",
453
+ "communityPlugin": "Communauté tierce",
454
+ "customPlugin": "Personnalisé",
455
+ "empty": "Aucun plugin installé",
396
456
  "emptySelectHint": "Sélectionnez un plugin pour prévisualiser les détails",
397
- "installAllPlugins": "Installer tous les plugins",
398
- "networkError": "Échec de la récupération de la boutique de plugins. Veuillez vérifier votre connexion réseau et réessayer.",
399
- "placeholder": "Rechercher le nom ou les mots-clés de l'extension...",
457
+ "installAllPlugins": "Installer tout",
458
+ "networkError": "Échec de récupération du magasin de plugins, veuillez vérifier la connexion réseau et réessayer",
459
+ "placeholder": "Rechercher par nom, description ou mot-clé...",
400
460
  "releasedAt": "Publié le {{createdAt}}",
401
461
  "tabs": {
402
- "installed": "Installés",
462
+ "installed": "Installé",
403
463
  "mcp": "Plugin MCP",
404
464
  "old": "Plugin LobeChat"
405
465
  },
406
- "title": "Boutique de plugins"
466
+ "title": "Magasin de plugins"
407
467
  },
408
468
  "unknownError": "Erreur inconnue",
409
469
  "unknownPlugin": "Plugin inconnu"