@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,19 +1,19 @@
1
1
  {
2
2
  "confirm": "Confirm",
3
3
  "debug": {
4
- "arguments": "Arguments",
4
+ "arguments": "Call Arguments",
5
5
  "function_call": "Function Call",
6
- "off": "Turn off debug",
7
- "on": "View plugin invocation information",
8
- "payload": "plugin payload",
6
+ "off": "Turn Off Debug",
7
+ "on": "View Plugin Call Info",
8
+ "payload": "Plugin Payload",
9
9
  "pluginState": "Plugin State",
10
10
  "response": "Response",
11
11
  "title": "Plugin Details",
12
- "tool_call": "tool call request"
12
+ "tool_call": "Tool Call Request"
13
13
  },
14
14
  "detailModal": {
15
15
  "customPlugin": {
16
- "description": "Please visit the edit page to view details",
16
+ "description": "Please go to the edit page to view details",
17
17
  "editBtn": "Edit Now",
18
18
  "title": "This is a Custom Plugin"
19
19
  },
@@ -33,16 +33,16 @@
33
33
  "title": "Plugin Details"
34
34
  },
35
35
  "dev": {
36
- "confirmDeleteDevPlugin": "Are you sure you want to delete this local plugin? Once deleted, it cannot be recovered.",
36
+ "confirmDeleteDevPlugin": "This local plugin will be deleted and cannot be recovered. Do you want to delete this plugin?",
37
37
  "customParams": {
38
38
  "useProxy": {
39
- "label": "Install via proxy (if encountering cross-origin access errors, try enabling this option and reinstalling)"
39
+ "label": "Install via Proxy (If you encounter cross-origin access errors, try enabling this option and reinstalling)"
40
40
  }
41
41
  },
42
42
  "deleteSuccess": "Plugin deleted successfully",
43
43
  "manifest": {
44
44
  "identifier": {
45
- "desc": "The unique identifier of the plugin",
45
+ "desc": "Unique identifier of the plugin",
46
46
  "label": "Identifier"
47
47
  },
48
48
  "mode": {
@@ -51,7 +51,7 @@
51
51
  "url": "Online Link"
52
52
  },
53
53
  "name": {
54
- "desc": "The title of the plugin",
54
+ "desc": "Plugin title",
55
55
  "label": "Title",
56
56
  "placeholder": "Search Engine"
57
57
  }
@@ -61,50 +61,50 @@
61
61
  "title": "Advanced Settings"
62
62
  },
63
63
  "args": {
64
- "desc": "A list of parameters to be passed to the execution command, typically the MCP server name or the path to the startup script.",
65
- "label": "Command Parameters",
66
- "placeholder": "For example: mcp-hello-world",
67
- "required": "Please enter the startup parameters"
64
+ "desc": "List of parameters passed to the execution command, usually the MCP server name or startup script path",
65
+ "label": "Command Arguments",
66
+ "placeholder": "e.g., mcp-hello-world",
67
+ "required": "Please enter startup parameters"
68
68
  },
69
69
  "auth": {
70
70
  "bear": "API Key",
71
71
  "desc": "Select the authentication method for the MCP server",
72
72
  "label": "Authentication Type",
73
73
  "none": "No Authentication Required",
74
- "placeholder": "Please select an authentication type",
74
+ "placeholder": "Please select authentication type",
75
75
  "token": {
76
76
  "desc": "Enter your API Key or Bearer Token",
77
77
  "label": "API Key",
78
78
  "placeholder": "sk-xxxxx",
79
- "required": "Please enter the authentication token"
79
+ "required": "Please enter authentication token"
80
80
  }
81
81
  },
82
82
  "avatar": {
83
83
  "label": "Plugin Icon"
84
84
  },
85
85
  "command": {
86
- "desc": "The executable file or script used to start the MCP STDIO Server",
86
+ "desc": "Executable file or script used to start the MCP STDIO Server",
87
87
  "label": "Command",
88
- "placeholder": "For example: npx / uv / docker, etc.",
89
- "required": "Please enter the startup command"
88
+ "placeholder": "e.g., npx / uv / docker etc.",
89
+ "required": "Please enter startup command"
90
90
  },
91
91
  "desc": {
92
92
  "desc": "Add a description for the plugin",
93
93
  "label": "Plugin Description",
94
- "placeholder": "Provide usage instructions and context for this plugin"
94
+ "placeholder": "Supplement usage instructions and scenarios for this plugin"
95
95
  },
96
96
  "endpoint": {
97
97
  "desc": "Enter the address of your MCP Streamable HTTP Server",
98
98
  "label": "MCP Endpoint URL"
99
99
  },
100
100
  "env": {
101
- "add": "Add a new line",
102
- "desc": "Enter the environment variables required for your MCP Server",
101
+ "add": "Add a Row",
102
+ "desc": "Enter environment variables required by your MCP Server",
103
103
  "duplicateKeyError": "Field keys must be unique",
104
- "formValidationFailed": "Form validation failed, please check the parameter format",
104
+ "formValidationFailed": "Form validation failed, please check parameter format",
105
105
  "keyRequired": "Field key cannot be empty",
106
106
  "label": "MCP Server Environment Variables",
107
- "stringifyError": "Unable to serialize parameters, please check the parameter format"
107
+ "stringifyError": "Unable to serialize parameters, please check parameter format"
108
108
  },
109
109
  "headers": {
110
110
  "add": "Add a Row",
@@ -112,230 +112,290 @@
112
112
  "label": "HTTP Headers"
113
113
  },
114
114
  "identifier": {
115
- "desc": "Specify a name for your MCP plugin, using English characters",
116
- "invalid": "Only English letters, numbers, - and _ are allowed",
115
+ "desc": "Specify a name for your MCP plugin, must use English characters",
116
+ "invalid": "Identifier can only contain letters, numbers, hyphens, and underscores",
117
117
  "label": "MCP Plugin Name",
118
118
  "placeholder": "e.g., my-mcp-plugin",
119
- "required": "Please enter the MCP service identifier"
119
+ "required": "Please enter MCP service identifier"
120
120
  },
121
- "previewManifest": "Preview Plugin Description File",
121
+ "previewManifest": "Preview Plugin Manifest",
122
122
  "quickImport": "Quick Import JSON Configuration",
123
123
  "quickImportError": {
124
- "empty": "Input cannot be empty",
124
+ "empty": "Input content cannot be empty",
125
125
  "invalidJson": "Invalid JSON format",
126
126
  "invalidStructure": "Invalid JSON structure"
127
127
  },
128
- "stdioNotSupported": "The current environment does not support stdio type MCP plugins",
128
+ "stdioNotSupported": "Current environment does not support stdio type MCP plugins",
129
129
  "testConnection": "Test Connection",
130
- "testConnectionTip": "The MCP plugin can only be used normally after a successful connection test",
130
+ "testConnectionTip": "MCP plugin can only be used normally after successful connection test",
131
131
  "type": {
132
- "desc": "Select the communication method for the MCP plugin; the web version only supports Streamable HTTP",
133
- "httpFeature1": "Compatible with both web and desktop versions",
134
- "httpFeature2": "Connect to a remote MCP server without additional installation or configuration",
135
- "httpShortDesc": "A streaming HTTP-based communication protocol",
132
+ "desc": "Select MCP plugin communication method, web version only supports Streamable HTTP",
133
+ "httpFeature1": "Compatible with web and desktop versions",
134
+ "httpFeature2": "Connect to remote MCP server without extra installation or configuration",
135
+ "httpShortDesc": "Streamable HTTP based communication protocol",
136
136
  "label": "MCP Plugin Type",
137
137
  "stdioFeature1": "Lower communication latency, suitable for local execution",
138
- "stdioFeature2": "Requires local installation and running of the MCP server",
139
- "stdioNotAvailable": "STDIO mode is only available in the desktop version",
140
- "stdioShortDesc": "A communication protocol based on standard input and output",
138
+ "stdioFeature2": "Requires local installation and running of MCP server",
139
+ "stdioNotAvailable": "STDIO mode is only available in desktop version",
140
+ "stdioShortDesc": "Communication protocol based on standard input/output",
141
141
  "title": "MCP Plugin Type"
142
142
  },
143
143
  "url": {
144
- "desc": "Enter your MCP Server Streamable HTTP address, SSE mode is not supported.",
144
+ "desc": "Enter your MCP Server Streamable HTTP address, SSE mode not supported",
145
145
  "invalid": "Please enter a valid URL",
146
- "label": "HTTP Endpoint URL",
147
- "required": "Please enter the MCP service URL"
146
+ "label": "Streamable HTTP Endpoint URL",
147
+ "required": "Please enter MCP service URL"
148
148
  }
149
149
  },
150
150
  "meta": {
151
151
  "author": {
152
- "desc": "The author of the plugin",
152
+ "desc": "Author of the plugin",
153
153
  "label": "Author"
154
154
  },
155
155
  "avatar": {
156
- "desc": "The icon of the plugin, can be an Emoji or a URL",
156
+ "desc": "Plugin icon, can use Emoji or URL",
157
157
  "label": "Icon"
158
158
  },
159
159
  "description": {
160
- "desc": "The description of the plugin",
160
+ "desc": "Plugin description",
161
161
  "label": "Description",
162
- "placeholder": "Get information from search engines"
162
+ "placeholder": "Search search engines for information"
163
163
  },
164
164
  "formFieldRequired": "This field is required",
165
165
  "homepage": {
166
- "desc": "The homepage of the plugin",
166
+ "desc": "Plugin homepage",
167
167
  "label": "Homepage"
168
168
  },
169
169
  "identifier": {
170
- "desc": "The unique identifier of the plugin, only supports alphanumeric characters, hyphen -, and underscore _",
171
- "errorDuplicate": "The identifier is already used by another plugin, please modify the identifier",
170
+ "desc": "Unique identifier of the plugin, automatically recognized from manifest",
171
+ "errorDuplicate": "Identifier duplicates an existing plugin, please modify the identifier",
172
172
  "label": "Identifier",
173
- "pattenErrorMessage": "Only alphanumeric characters, hyphen -, and underscore _ are allowed"
173
+ "pattenErrorMessage": "Only English letters, numbers, - and _ are allowed"
174
174
  },
175
175
  "lobe": "{{appName}} Plugin",
176
176
  "manifest": {
177
- "desc": "{{appName}} will install the plugin through this link.",
178
- "label": "Plugin Description (Manifest) URL",
177
+ "desc": "{{appName}} will install the plugin via this link",
178
+ "label": "Plugin Manifest URL",
179
179
  "preview": "Preview Manifest",
180
180
  "refresh": "Refresh"
181
181
  },
182
182
  "openai": "OpenAI Plugin",
183
183
  "title": {
184
- "desc": "The title of the plugin",
184
+ "desc": "Plugin title",
185
185
  "label": "Title",
186
186
  "placeholder": "Search Engine"
187
187
  }
188
188
  },
189
- "metaConfig": "Plugin metadata configuration",
190
- "modalDesc": "After adding a custom plugin, it can be used for plugin development verification or directly in the session. Please refer to the <1>development documentation↗</> for plugin development.",
189
+ "metaConfig": "Plugin Meta Information Configuration",
190
+ "modalDesc": "After adding a custom plugin, it can be used for plugin development verification or directly in conversations. For plugin development, please refer to the <1>Development Documentation↗</>.",
191
191
  "openai": {
192
- "importUrl": "Import from URL link",
192
+ "importUrl": "Import from URL",
193
193
  "schema": "Schema"
194
194
  },
195
195
  "preview": {
196
196
  "api": {
197
197
  "noParams": "This tool has no parameters",
198
- "noResults": "No APIs found matching the search criteria",
198
+ "noResults": "No APIs matching the search criteria found",
199
199
  "params": "Parameters:",
200
200
  "searchPlaceholder": "Search tools..."
201
201
  },
202
- "card": "Preview of plugin display",
203
- "desc": "Preview of plugin description",
202
+ "card": "Preview Plugin Display",
203
+ "desc": "Preview Plugin Description",
204
204
  "empty": {
205
- "desc": "Once configured, you will be able to preview the capabilities supported by the plugin here",
206
- "title": "Start Previewing After Configuring the Plugin"
205
+ "desc": "After configuration, you can preview the supported tool capabilities here",
206
+ "title": "Start Preview After Configuring Plugin"
207
207
  },
208
208
  "title": "Plugin Name Preview"
209
209
  },
210
210
  "save": "Install Plugin",
211
211
  "saveSuccess": "Plugin settings saved successfully",
212
212
  "tabs": {
213
- "manifest": "Function Description Manifest (Manifest)",
214
- "meta": "Plugin Metadata"
213
+ "manifest": "Feature Manifest",
214
+ "meta": "Plugin Meta Information"
215
215
  },
216
216
  "title": {
217
217
  "create": "Add Custom Plugin",
218
218
  "edit": "Edit Custom Plugin"
219
219
  },
220
220
  "type": {
221
- "lobe": "LobeChat Plugin",
221
+ "lobe": "{{appName}} Plugin",
222
222
  "openai": "OpenAI Plugin"
223
223
  },
224
224
  "update": "Update",
225
225
  "updateSuccess": "Plugin settings updated successfully"
226
226
  },
227
227
  "error": {
228
- "fetchError": "Failed to fetch the manifest link. Please ensure the link is valid and allows cross-origin access.",
228
+ "fetchError": "Failed to request the manifest link, please ensure the link is valid and allows cross-origin access",
229
229
  "installError": "Plugin {{name}} installation failed",
230
- "manifestInvalid": "The manifest does not conform to the specification. Validation result: \n\n {{error}}",
230
+ "manifestInvalid": "Manifest does not comply with specifications, validation result: \n\n {{error}}",
231
231
  "noManifest": "Manifest file does not exist",
232
- "openAPIInvalid": "OpenAPI parsing failed. Error: \n\n {{error}}",
233
- "reinstallError": "Failed to refresh plugin {{name}}",
234
- "testConnectionFailed": "Failed to retrieve Manifest: {{error}}",
235
- "urlError": "The link did not return content in JSON format. Please ensure it is a valid link."
232
+ "openAPIInvalid": "OpenAPI parsing failed, error: \n\n {{error}}",
233
+ "reinstallError": "Plugin {{name}} refresh failed",
234
+ "testConnectionFailed": "Failed to get Manifest: {{error}}",
235
+ "urlError": "The link did not return JSON content, please ensure it is a valid link"
236
236
  },
237
237
  "inspector": {
238
- "args": "View parameter list",
239
- "pluginRender": "View plugin interface"
238
+ "args": "View Argument List",
239
+ "pluginRender": "View Plugin Interface"
240
240
  },
241
241
  "list": {
242
242
  "item": {
243
243
  "deprecated.title": "Deleted",
244
244
  "local.config": "Configuration",
245
- "local.title": "Local"
245
+ "local.title": "Custom"
246
246
  }
247
247
  },
248
248
  "loading": {
249
249
  "content": "Calling plugin...",
250
- "plugin": "Plugin is running..."
250
+ "plugin": "Plugin running..."
251
251
  },
252
252
  "localSystem": {
253
253
  "apiName": {
254
254
  "listLocalFiles": "View File List",
255
- "moveLocalFiles": "Move File",
255
+ "moveLocalFiles": "Move Files",
256
256
  "readLocalFile": "Read File Content",
257
257
  "renameLocalFile": "Rename",
258
258
  "searchLocalFiles": "Search Files",
259
- "writeLocalFile": "Write to File"
259
+ "writeLocalFile": "Write File"
260
260
  },
261
261
  "title": "Local Files"
262
262
  },
263
263
  "mcpInstall": {
264
264
  "CHECKING_INSTALLATION": "Checking installation environment...",
265
265
  "COMPLETED": "Installation completed",
266
- "CONFIGURATION_REQUIRED": "Please complete the necessary configuration before continuing the installation",
266
+ "CONFIGURATION_REQUIRED": "Please complete the relevant configuration before continuing installation",
267
267
  "ERROR": "Installation error",
268
268
  "FETCHING_MANIFEST": "Fetching plugin manifest...",
269
269
  "GETTING_SERVER_MANIFEST": "Initializing MCP server...",
270
270
  "INSTALLING_PLUGIN": "Installing plugin...",
271
- "configurationDescription": "This MCP plugin requires configuration parameters to function properly. Please fill in the necessary configuration information.",
272
- "configurationRequired": "Configure plugin parameters",
273
- "continueInstall": "Continue installation",
274
- "dependenciesDescription": "This plugin requires the following system dependencies to work properly. Please install the missing dependencies as instructed, then click recheck to continue the installation.",
271
+ "configurationDescription": "This MCP plugin requires configuration parameters to function properly, please fill in the necessary information",
272
+ "configurationRequired": "Configure Plugin Parameters",
273
+ "continueInstall": "Continue Installation",
274
+ "dependenciesDescription": "This plugin requires the following system dependencies to work properly. Please install the missing dependencies as instructed, then click recheck to continue installation.",
275
275
  "dependenciesRequired": "Please install the plugin's system dependencies",
276
276
  "dependencyStatus": {
277
277
  "installed": "Installed",
278
- "notInstalled": "Not installed",
279
- "requiredVersion": "Required version: {{version}}"
278
+ "notInstalled": "Not Installed",
279
+ "requiredVersion": "Required Version: {{version}}"
280
280
  },
281
281
  "errorDetails": {
282
282
  "args": "Arguments",
283
283
  "command": "Command",
284
- "connectionParams": "Connection parameters",
285
- "env": "Environment variables",
286
- "errorOutput": "Error log",
287
- "exitCode": "Exit code",
288
- "hideDetails": "Hide details",
289
- "originalError": "Original error",
290
- "showDetails": "Show details"
284
+ "connectionParams": "Connection Parameters",
285
+ "env": "Environment Variables",
286
+ "errorOutput": "Error Log",
287
+ "exitCode": "Exit Code",
288
+ "hideDetails": "Hide Details",
289
+ "originalError": "Original Error",
290
+ "showDetails": "Show Details"
291
291
  },
292
292
  "errorTypes": {
293
- "AUTHORIZATION_ERROR": "Authorization Verification Error",
294
- "CONNECTION_FAILED": "Connection failed",
295
- "INITIALIZATION_TIMEOUT": "Initialization timeout",
296
- "PROCESS_SPAWN_ERROR": "Process spawn error",
297
- "UNKNOWN_ERROR": "Unknown error",
298
- "VALIDATION_ERROR": "Parameter validation failed"
299
- },
300
- "installError": "MCP plugin installation failed. Reason: {{detail}}",
293
+ "AUTHORIZATION_ERROR": "Authorization Error",
294
+ "CONNECTION_FAILED": "Connection Failed",
295
+ "INITIALIZATION_TIMEOUT": "Initialization Timeout",
296
+ "PROCESS_SPAWN_ERROR": "Process Spawn Failed",
297
+ "UNKNOWN_ERROR": "Unknown Error",
298
+ "VALIDATION_ERROR": "Parameter Validation Failed"
299
+ },
300
+ "installError": "MCP plugin installation failed, reason: {{detail}}",
301
301
  "installMethods": {
302
- "manual": "Manual installation:",
303
- "recommended": "Recommended installation method:"
302
+ "manual": "Manual Installation:",
303
+ "recommended": "Recommended Installation Method:"
304
304
  },
305
305
  "recheckDependencies": "Recheck",
306
- "skipDependencies": "Skip check"
306
+ "skipDependencies": "Skip Check"
307
307
  },
308
308
  "pluginList": "Plugin List",
309
+ "protocolInstall": {
310
+ "actions": {
311
+ "install": "Install",
312
+ "installAnyway": "Install Anyway",
313
+ "installed": "Installed"
314
+ },
315
+ "config": {
316
+ "args": "Arguments",
317
+ "command": "Command",
318
+ "env": "Environment Variables",
319
+ "headers": "Request Headers",
320
+ "title": "Configuration Information",
321
+ "type": {
322
+ "http": "Type: HTTP",
323
+ "label": "Type",
324
+ "stdio": "Type: Stdio"
325
+ },
326
+ "url": "Service Address"
327
+ },
328
+ "custom": {
329
+ "badge": "Custom Plugin",
330
+ "security": {
331
+ "description": "This plugin is not officially verified, installation may pose security risks! Please ensure you trust the plugin source.",
332
+ "title": "⚠️ Security Risk Warning"
333
+ },
334
+ "title": "Install Custom Plugin"
335
+ },
336
+ "marketplace": {
337
+ "title": "Install Third-Party Plugin",
338
+ "trustedBy": "Provided by {{name}}",
339
+ "unverified": {
340
+ "title": "Unverified Third-Party Plugin",
341
+ "warning": "This plugin comes from an unverified third-party marketplace. Please confirm you trust the source before installation."
342
+ },
343
+ "verified": "Verified"
344
+ },
345
+ "messages": {
346
+ "connectionTestFailed": "Connection test failed",
347
+ "installError": "Plugin installation failed, please try again",
348
+ "installSuccess": "Plugin {{name}} installed successfully!",
349
+ "manifestError": "Failed to get plugin details, please check network connection and try again",
350
+ "manifestNotFound": "Failed to retrieve plugin manifest"
351
+ },
352
+ "meta": {
353
+ "author": "Author",
354
+ "homepage": "Homepage",
355
+ "identifier": "Identifier",
356
+ "source": "Source",
357
+ "version": "Version"
358
+ },
359
+ "official": {
360
+ "badge": "LobeHub Official Plugin",
361
+ "description": "This plugin is developed and maintained by LobeHub official team, has undergone strict security review, safe to use.",
362
+ "loadingMessage": "Fetching plugin details...",
363
+ "loadingTitle": "Loading",
364
+ "title": "Install Official Plugin"
365
+ },
366
+ "title": "Install MCP Plugin",
367
+ "warning": "⚠️ Please confirm you trust the source of this plugin. Malicious plugins may harm your system security."
368
+ },
309
369
  "search": {
310
370
  "apiName": {
311
- "crawlMultiPages": "Read multiple pages content",
371
+ "crawlMultiPages": "Read Multiple Pages Content",
312
372
  "crawlSinglePage": "Read Page Content",
313
- "search": "Search Page"
373
+ "search": "Search Pages"
314
374
  },
315
375
  "config": {
316
376
  "addKey": "Add Key",
317
377
  "close": "Delete",
318
- "confirm": "Configuration completed, please retry"
378
+ "confirm": "Configuration Completed and Retry"
319
379
  },
320
380
  "crawPages": {
321
- "crawling": "Identifying links",
381
+ "crawling": "Link Recognition in Progress",
322
382
  "detail": {
323
383
  "preview": "Preview",
324
- "raw": "Raw text",
325
- "tooLong": "The text content is too long; only the first {{characters}} characters of the conversation context will be retained, and the excess will not be included in the conversation context."
384
+ "raw": "Raw Text",
385
+ "tooLong": "Text content is too long, only the first {{characters}} characters are kept in the conversation context, the rest are excluded"
326
386
  },
327
387
  "meta": {
328
388
  "crawler": "Crawling Mode",
329
- "words": "Character count"
389
+ "words": "Character Count"
330
390
  }
331
391
  },
332
392
  "searchxng": {
333
393
  "baseURL": "Please enter",
334
- "description": "Enter the URL for SearchXNG to start online searching",
394
+ "description": "Enter the URL of SearchXNG to start online search",
335
395
  "keyPlaceholder": "Please enter key",
336
396
  "title": "Configure SearchXNG Search Engine",
337
- "unconfiguredDesc": "Please contact the administrator to complete the SearchXNG search engine configuration to start online searching",
338
- "unconfiguredTitle": "SearchXNG search engine not configured yet"
397
+ "unconfiguredDesc": "Please contact administrator to complete SearchXNG search engine configuration to start online search",
398
+ "unconfiguredTitle": "SearchXNG Search Engine Not Configured"
339
399
  },
340
400
  "title": "Online Search"
341
401
  },
@@ -351,18 +411,18 @@
351
411
  "title": "Plugin Configuration"
352
412
  },
353
413
  "connection": {
354
- "args": "Startup arguments",
355
- "command": "Startup command",
414
+ "args": "Startup Arguments",
415
+ "command": "Startup Command",
356
416
  "title": "Connection Information",
357
- "type": "Connection type",
358
- "url": "Service address"
417
+ "type": "Connection Type",
418
+ "url": "Service Address"
359
419
  },
360
420
  "edit": "Edit",
361
- "envConfigDescription": "These configurations will be passed as environment variables to the process when the MCP server starts",
362
- "httpTypeNotice": "No environment variables need to be configured for HTTP type MCP plugins",
421
+ "envConfigDescription": "These configurations will be passed as environment variables to the MCP server process at startup",
422
+ "httpTypeNotice": "HTTP type MCP plugins currently have no environment variables to configure",
363
423
  "indexUrl": {
364
424
  "title": "Marketplace Index",
365
- "tooltip": "Editing is not supported at the moment"
425
+ "tooltip": "Online editing is not supported yet, please set via environment variables during deployment"
366
426
  },
367
427
  "messages": {
368
428
  "connectionUpdateFailed": "Failed to update connection information",
@@ -370,34 +430,34 @@
370
430
  "envUpdateFailed": "Failed to save environment variables",
371
431
  "envUpdateSuccess": "Environment variables saved successfully"
372
432
  },
373
- "modalDesc": "After configuring the address of the plugin marketplace, you can use a custom plugin marketplace",
433
+ "modalDesc": "After configuring the plugin marketplace address, you can use a custom plugin marketplace",
374
434
  "rules": {
375
435
  "argsRequired": "Please enter startup arguments",
376
- "commandRequired": "Please enter the startup command",
377
- "urlRequired": "Please enter the service address"
436
+ "commandRequired": "Please enter startup command",
437
+ "urlRequired": "Please enter service address"
378
438
  },
379
- "saveSettings": "Save settings",
439
+ "saveSettings": "Save Settings",
380
440
  "title": "Configure Plugin Marketplace"
381
441
  },
382
- "showInPortal": "Please check the details in the Portal view",
442
+ "showInPortal": "Please view details in the workspace",
383
443
  "store": {
384
444
  "actions": {
385
- "cancel": "Cancel installation",
386
- "confirmUninstall": "The plugin is about to be uninstalled. After uninstalling, the plugin configuration will be cleared. Please confirm your operation.",
445
+ "cancel": "Cancel Installation",
446
+ "confirmUninstall": "This plugin will be uninstalled and its configuration cleared. Please confirm your action.",
387
447
  "detail": "Details",
388
448
  "install": "Install",
389
449
  "manifest": "Edit Installation File",
390
450
  "settings": "Settings",
391
451
  "uninstall": "Uninstall"
392
452
  },
393
- "communityPlugin": "Third-party",
394
- "customPlugin": "Custom Plugin",
395
- "empty": "No installed plugins yet",
453
+ "communityPlugin": "Third-Party Community",
454
+ "customPlugin": "Custom",
455
+ "empty": "No installed plugins",
396
456
  "emptySelectHint": "Select a plugin to preview detailed information",
397
457
  "installAllPlugins": "Install All",
398
- "networkError": "Failed to fetch plugin store. Please check your network connection and try again",
399
- "placeholder": "Search for plugin name, description, or keyword...",
400
- "releasedAt": "Released at {{createdAt}}",
458
+ "networkError": "Failed to fetch plugin store, please check network connection and try again",
459
+ "placeholder": "Search plugin name, description or keywords...",
460
+ "releasedAt": "Released on {{createdAt}}",
401
461
  "tabs": {
402
462
  "installed": "Installed",
403
463
  "mcp": "MCP Plugins",
@@ -405,6 +465,6 @@
405
465
  },
406
466
  "title": "Plugin Store"
407
467
  },
408
- "unknownError": "Unknown error",
409
- "unknownPlugin": "Unknown plugin"
468
+ "unknownError": "Unknown Error",
469
+ "unknownPlugin": "Unknown Plugin"
410
470
  }