@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,48 +1,48 @@
1
1
  {
2
2
  "confirm": "Confirmar",
3
3
  "debug": {
4
- "arguments": "Argumentos de llamada",
4
+ "arguments": "Parámetros de llamada",
5
5
  "function_call": "Llamada a función",
6
- "off": "Desactivado",
7
- "on": "Ver información de llamada de complemento",
8
- "payload": "carga del complemento",
6
+ "off": "Desactivar depuración",
7
+ "on": "Ver información de llamadas al plugin",
8
+ "payload": "Carga útil del plugin",
9
9
  "pluginState": "Estado del plugin",
10
- "response": "Respuesta",
11
- "title": "Detalles del complemento",
12
- "tool_call": "solicitud de llamada de herramienta"
10
+ "response": "Resultado devuelto",
11
+ "title": "Detalles del plugin",
12
+ "tool_call": "Solicitud de llamada a herramienta"
13
13
  },
14
14
  "detailModal": {
15
15
  "customPlugin": {
16
16
  "description": "Por favor, visite la página de edición para ver los detalles",
17
17
  "editBtn": "Editar ahora",
18
- "title": "Este es un complemento personalizado"
18
+ "title": "Este es un plugin personalizado"
19
19
  },
20
20
  "emptyState": {
21
- "description": "Por favor, instale este complemento para ver sus capacidades y opciones de configuración",
22
- "title": "Ver detalles del complemento después de la instalación"
21
+ "description": "Por favor, instale este plugin primero para ver sus capacidades y opciones de configuración",
22
+ "title": "Ver detalles del plugin tras la instalación"
23
23
  },
24
24
  "info": {
25
25
  "description": "Descripción de la API",
26
26
  "name": "Nombre de la API"
27
27
  },
28
28
  "tabs": {
29
- "info": "Capacidad del complemento",
29
+ "info": "Capacidades del plugin",
30
30
  "manifest": "Archivo de instalación",
31
- "settings": "Ajustes"
31
+ "settings": "Configuración"
32
32
  },
33
- "title": "Detalles del complemento"
33
+ "title": "Detalles del plugin"
34
34
  },
35
35
  "dev": {
36
- "confirmDeleteDevPlugin": "Está a punto de eliminar este complemento local. Una vez eliminado, no se podrá recuperar. ¿Desea eliminar este complemento?",
36
+ "confirmDeleteDevPlugin": "Está a punto de eliminar este plugin local. Una vez eliminado, no podrá recuperarse. ¿Desea eliminar este plugin?",
37
37
  "customParams": {
38
38
  "useProxy": {
39
- "label": "Instalar a través de proxy (si encuentra errores de acceso entre dominios, intente habilitar esta opción y reinstalar)"
39
+ "label": "Instalar a través de proxy (si encuentra errores de acceso cruzado, intente activar esta opción y reinstalar)"
40
40
  }
41
41
  },
42
- "deleteSuccess": "Complemento eliminado",
42
+ "deleteSuccess": "Plugin eliminado con éxito",
43
43
  "manifest": {
44
44
  "identifier": {
45
- "desc": "Identificador único del complemento",
45
+ "desc": "Identificador único del plugin",
46
46
  "label": "Identificador"
47
47
  },
48
48
  "mode": {
@@ -51,9 +51,9 @@
51
51
  "url": "Enlace en línea"
52
52
  },
53
53
  "name": {
54
- "desc": "Título del complemento",
54
+ "desc": "Título del plugin",
55
55
  "label": "Título",
56
- "placeholder": "Buscar motor de búsqueda"
56
+ "placeholder": "Motor de búsqueda"
57
57
  }
58
58
  },
59
59
  "mcp": {
@@ -61,10 +61,10 @@
61
61
  "title": "Configuración avanzada"
62
62
  },
63
63
  "args": {
64
- "desc": "Lista de parámetros que se pasan al comando de ejecución, generalmente aquí se ingresa el nombre del servidor MCP o la ruta del script de inicio",
64
+ "desc": "Lista de parámetros para el comando de ejecución, generalmente aquí se ingresa el nombre del servidor MCP o la ruta del script de inicio",
65
65
  "label": "Parámetros del comando",
66
- "placeholder": "Por ejemplo: --port 8080 --debug",
67
- "required": "Por favor, introduce los parámetros de inicio"
66
+ "placeholder": "Por ejemplo: mcp-hello-world",
67
+ "required": "Por favor, ingrese los parámetros de inicio"
68
68
  },
69
69
  "auth": {
70
70
  "bear": "Clave API",
@@ -73,121 +73,121 @@
73
73
  "none": "Sin autenticación",
74
74
  "placeholder": "Por favor, seleccione el tipo de autenticación",
75
75
  "token": {
76
- "desc": "Ingrese su Clave API o Token Bearer",
76
+ "desc": "Ingrese su clave API o token Bearer",
77
77
  "label": "Clave API",
78
78
  "placeholder": "sk-xxxxx",
79
79
  "required": "Por favor, ingrese el token de autenticación"
80
80
  }
81
81
  },
82
82
  "avatar": {
83
- "label": "Icono del complemento"
83
+ "label": "Icono del plugin"
84
84
  },
85
85
  "command": {
86
- "desc": "Archivo ejecutable o script para iniciar el complemento MCP STDIO",
86
+ "desc": "Archivo ejecutable o script para iniciar el servidor MCP STDIO",
87
87
  "label": "Comando",
88
- "placeholder": "Por ejemplo: python main.py o /ruta/al/ejecutable",
89
- "required": "Por favor, introduce el comando de inicio"
88
+ "placeholder": "Por ejemplo: npx / uv / docker, etc.",
89
+ "required": "Por favor, ingrese el comando de inicio"
90
90
  },
91
91
  "desc": {
92
- "desc": "Descripción del complemento",
93
- "label": "Descripción del complemento",
94
- "placeholder": "Proporcione información sobre el uso y los escenarios de este complemento"
92
+ "desc": "Agregue una descripción del plugin",
93
+ "label": "Descripción del plugin",
94
+ "placeholder": "Agregue información sobre el uso y escenarios del plugin"
95
95
  },
96
96
  "endpoint": {
97
- "desc": "Ingresa la dirección de tu servidor HTTP Streamable MCP",
98
- "label": "URL del Endpoint MCP"
97
+ "desc": "Ingrese la dirección de su servidor MCP Streamable HTTP",
98
+ "label": "URL del endpoint MCP"
99
99
  },
100
100
  "env": {
101
101
  "add": "Agregar una línea",
102
- "desc": "Ingresa las variables de entorno necesarias para tu servidor MCP",
102
+ "desc": "Ingrese las variables de entorno necesarias para su servidor MCP",
103
103
  "duplicateKeyError": "La clave del campo debe ser única",
104
- "formValidationFailed": "La validación del formulario falló, por favor verifica el formato de los parámetros",
104
+ "formValidationFailed": "La validación del formulario falló, por favor revise el formato de los parámetros",
105
105
  "keyRequired": "La clave del campo no puede estar vacía",
106
106
  "label": "Variables de entorno del servidor MCP",
107
- "stringifyError": "No se puede serializar el parámetro, por favor verifica el formato de los parámetros"
107
+ "stringifyError": "No se pueden serializar los parámetros, por favor revise el formato"
108
108
  },
109
109
  "headers": {
110
- "add": "Agregar una fila",
110
+ "add": "Agregar una línea",
111
111
  "desc": "Ingrese los encabezados de la solicitud",
112
112
  "label": "Encabezados HTTP"
113
113
  },
114
114
  "identifier": {
115
- "desc": "Especifica un nombre para tu complemento MCP, debe usar caracteres en inglés",
116
- "invalid": "Solo se pueden ingresar caracteres en inglés, números, y los símbolos - y _",
117
- "label": "Nombre del complemento MCP",
115
+ "desc": "Asigne un nombre a su plugin MCP, debe usar caracteres en inglés",
116
+ "invalid": "El identificador solo puede contener letras, números, guiones y guiones bajos",
117
+ "label": "Nombre del plugin MCP",
118
118
  "placeholder": "Por ejemplo: my-mcp-plugin",
119
- "required": "Por favor, introduce el identificador del servicio MCP"
119
+ "required": "Por favor, ingrese el identificador del servicio MCP"
120
120
  },
121
- "previewManifest": "Previsualizar el archivo de descripción del complemento",
122
- "quickImport": "Importar configuración JSON rápidamente",
121
+ "previewManifest": "Vista previa del archivo de descripción del plugin",
122
+ "quickImport": "Importación rápida de configuración JSON",
123
123
  "quickImportError": {
124
- "empty": "El contenido de entrada no puede estar vacío",
125
- "invalidJson": "Formato JSON no válido",
126
- "invalidStructure": "Estructura JSON no válida"
124
+ "empty": "El contenido no puede estar vacío",
125
+ "invalidJson": "Formato JSON inválido",
126
+ "invalidStructure": "Estructura JSON inválida"
127
127
  },
128
- "stdioNotSupported": "El entorno actual no admite el plugin MCP de tipo stdio",
128
+ "stdioNotSupported": "El entorno actual no soporta plugins MCP tipo stdio",
129
129
  "testConnection": "Probar conexión",
130
- "testConnectionTip": "El complemento MCP solo se puede utilizar correctamente después de que la prueba de conexión sea exitosa",
130
+ "testConnectionTip": "El plugin MCP solo puede usarse normalmente después de una prueba de conexión exitosa",
131
131
  "type": {
132
- "desc": "Selecciona el método de comunicación del complemento MCP, la versión web solo admite HTTP Streamable",
133
- "httpFeature1": "Compatible con la versión web y de escritorio",
134
- "httpFeature2": "Conéctese al servidor MCP remoto sin necesidad de instalación adicional",
135
- "httpShortDesc": "Protocolo de comunicación basado en HTTP por streaming",
136
- "label": "Tipo de complemento MCP",
132
+ "desc": "Seleccione el modo de comunicación del plugin MCP, la versión web solo soporta Streamable HTTP",
133
+ "httpFeature1": "Compatible con versión web y de escritorio",
134
+ "httpFeature2": "Conexión a servidor MCP remoto, sin necesidad de instalación adicional",
135
+ "httpShortDesc": "Protocolo de comunicación basado en HTTP en streaming",
136
+ "label": "Tipo de plugin MCP",
137
137
  "stdioFeature1": "Menor latencia de comunicación, adecuado para ejecución local",
138
- "stdioFeature2": "Se requiere instalar y ejecutar el servidor MCP localmente",
138
+ "stdioFeature2": "Requiere instalación local del servidor MCP",
139
139
  "stdioNotAvailable": "El modo STDIO solo está disponible en la versión de escritorio",
140
140
  "stdioShortDesc": "Protocolo de comunicación basado en entrada y salida estándar",
141
- "title": "Tipo de complemento MCP"
141
+ "title": "Tipo de plugin MCP"
142
142
  },
143
143
  "url": {
144
- "desc": "Introduce la dirección HTTP transmitible de tu servidor MCP, no se admite el modo SSE",
145
- "invalid": "Por favor, introduce una URL válida",
146
- "label": "URL del Endpoint HTTP",
147
- "required": "Por favor, introduce la URL del servicio MCP"
144
+ "desc": "Ingrese la dirección Streamable HTTP de su servidor MCP, no soporta modo SSE",
145
+ "invalid": "Por favor, ingrese una URL válida",
146
+ "label": "URL del endpoint Streamable HTTP",
147
+ "required": "Por favor, ingrese la URL del servicio MCP"
148
148
  }
149
149
  },
150
150
  "meta": {
151
151
  "author": {
152
- "desc": "Autor del complemento",
152
+ "desc": "Autor del plugin",
153
153
  "label": "Autor"
154
154
  },
155
155
  "avatar": {
156
- "desc": "Icono del complemento, se puede usar Emoji o URL",
156
+ "desc": "Icono del plugin, puede usar Emoji o URL",
157
157
  "label": "Icono"
158
158
  },
159
159
  "description": {
160
- "desc": "Descripción del complemento",
160
+ "desc": "Descripción del plugin",
161
161
  "label": "Descripción",
162
- "placeholder": "Obtener información de búsqueda en el motor de búsqueda"
162
+ "placeholder": "Consulta motores de búsqueda para obtener información"
163
163
  },
164
164
  "formFieldRequired": "Este campo es obligatorio",
165
165
  "homepage": {
166
- "desc": "Página de inicio del complemento",
167
- "label": "Página de inicio"
166
+ "desc": "Página principal del plugin",
167
+ "label": "Página principal"
168
168
  },
169
169
  "identifier": {
170
- "desc": "Identificador único del complemento, se reconocerá automáticamente desde el manifiesto",
171
- "errorDuplicate": "El identificador del complemento ya existe, modifique el identificador",
170
+ "desc": "Identificador único del plugin, se detectará automáticamente desde el manifest",
171
+ "errorDuplicate": "El identificador ya existe en otro plugin, por favor modifíquelo",
172
172
  "label": "Identificador",
173
- "pattenErrorMessage": "Solo se pueden ingresar caracteres alfanuméricos, - y _"
173
+ "pattenErrorMessage": "Solo se permiten caracteres en inglés, números, - y _"
174
174
  },
175
- "lobe": "Complemento de {{appName}}",
175
+ "lobe": "Plugin {{appName}}",
176
176
  "manifest": {
177
- "desc": "{{appName}} se instalará el complemento a través de este enlace.",
178
- "label": "URL del archivo de descripción del complemento (Manifest)",
177
+ "desc": "{{appName}} instalará el plugin a través de este enlace",
178
+ "label": "Archivo de descripción del plugin (Manifest) URL",
179
179
  "preview": "Vista previa del Manifest",
180
180
  "refresh": "Actualizar"
181
181
  },
182
- "openai": "Complemento de OpenAI",
182
+ "openai": "Plugin OpenAI",
183
183
  "title": {
184
- "desc": "Título del complemento",
184
+ "desc": "Título del plugin",
185
185
  "label": "Título",
186
- "placeholder": "Buscar motor de búsqueda"
186
+ "placeholder": "Motor de búsqueda"
187
187
  }
188
188
  },
189
- "metaConfig": "Configuración de metadatos del complemento",
190
- "modalDesc": "Después de agregar un complemento personalizado, se puede utilizar para validar el desarrollo del complemento o se puede usar directamente en la conversación. Consulte el <1>documento de desarrollo↗</> para el desarrollo del complemento.",
189
+ "metaConfig": "Configuración de metainformación del plugin",
190
+ "modalDesc": "Después de agregar un plugin personalizado, puede usarse para desarrollo y verificación, o directamente en conversaciones. Para desarrollo de plugins, consulte la <1>documentación de desarrollo↗</1>",
191
191
  "openai": {
192
192
  "importUrl": "Importar desde enlace URL",
193
193
  "schema": "Esquema"
@@ -195,44 +195,44 @@
195
195
  "preview": {
196
196
  "api": {
197
197
  "noParams": "Esta herramienta no tiene parámetros",
198
- "noResults": "No se encontraron API que cumplan con los criterios de búsqueda",
198
+ "noResults": "No se encontraron APIs que coincidan con los criterios de búsqueda",
199
199
  "params": "Parámetros:",
200
200
  "searchPlaceholder": "Buscar herramienta..."
201
201
  },
202
- "card": "Vista previa del efecto del complemento",
203
- "desc": "Vista previa de la descripción del complemento",
202
+ "card": "Vista previa del efecto del plugin",
203
+ "desc": "Descripción previa del plugin",
204
204
  "empty": {
205
- "desc": "Una vez completada la configuración, podrá previsualizar las capacidades de las herramientas soportadas por el plugin aquí",
206
- "title": "Comience a previsualizar después de configurar el plugin"
205
+ "desc": "Después de completar la configuración, podrá previsualizar las capacidades de las herramientas soportadas aquí",
206
+ "title": "Comience la vista previa tras configurar el plugin"
207
207
  },
208
- "title": "Vista previa del nombre del complemento"
208
+ "title": "Vista previa del nombre del plugin"
209
209
  },
210
- "save": "Instalar complemento",
211
- "saveSuccess": "Configuración del complemento guardada con éxito",
210
+ "save": "Instalar plugin",
211
+ "saveSuccess": "Configuración del plugin guardada con éxito",
212
212
  "tabs": {
213
213
  "manifest": "Lista de descripción de funciones (Manifest)",
214
- "meta": "Metadatos del complemento"
214
+ "meta": "Metainformación del plugin"
215
215
  },
216
216
  "title": {
217
- "create": "Agregar complemento personalizado",
218
- "edit": "Editar complemento personalizado"
217
+ "create": "Agregar plugin personalizado",
218
+ "edit": "Editar plugin personalizado"
219
219
  },
220
220
  "type": {
221
- "lobe": "Complemento LobeChat",
222
- "openai": "Complemento OpenAI"
221
+ "lobe": "Plugin {{appName}}",
222
+ "openai": "Plugin OpenAI"
223
223
  },
224
224
  "update": "Actualizar",
225
- "updateSuccess": "Configuración del complemento actualizada con éxito"
225
+ "updateSuccess": "Configuración del plugin actualizada con éxito"
226
226
  },
227
227
  "error": {
228
- "fetchError": "Error al recuperar el enlace del manifiesto. Asegúrese de que el enlace sea válido y permita el acceso entre dominios.",
229
- "installError": "Error al instalar el complemento {{name}}.",
230
- "manifestInvalid": "El manifiesto no cumple con las normas. Resultado de la validación: \n\n {{error}}",
231
- "noManifest": "No se encontró el archivo de descripción",
232
- "openAPIInvalid": "Error al analizar OpenAPI. Error: \n\n {{error}}",
233
- "reinstallError": "Error al volver a instalar el complemento {{name}}.",
228
+ "fetchError": "Error al solicitar el enlace manifest, por favor asegúrese de que el enlace es válido y permite acceso cruzado",
229
+ "installError": "Error al instalar el plugin {{name}}",
230
+ "manifestInvalid": "El manifest no cumple con las especificaciones, resultado de la validación: \n\n {{error}}",
231
+ "noManifest": "Archivo de descripción no encontrado",
232
+ "openAPIInvalid": "Error al analizar OpenAPI, error: \n\n {{error}}",
233
+ "reinstallError": "Error al actualizar el plugin {{name}}",
234
234
  "testConnectionFailed": "Error al obtener el Manifest: {{error}}",
235
- "urlError": "El enlace no devuelve contenido en formato JSON. Asegúrese de que sea un enlace válido."
235
+ "urlError": "El enlace no devolvió contenido en formato JSON, por favor asegúrese de que es un enlace válido"
236
236
  },
237
237
  "inspector": {
238
238
  "args": "Ver lista de parámetros",
@@ -240,14 +240,14 @@
240
240
  },
241
241
  "list": {
242
242
  "item": {
243
- "deprecated.title": "Obsoleto",
243
+ "deprecated.title": "Eliminado",
244
244
  "local.config": "Configuración",
245
245
  "local.title": "Personalizado"
246
246
  }
247
247
  },
248
248
  "loading": {
249
- "content": "Cargando complemento...",
250
- "plugin": "Ejecutando complemento..."
249
+ "content": "Llamando al plugin...",
250
+ "plugin": "Plugin en ejecución..."
251
251
  },
252
252
  "localSystem": {
253
253
  "apiName": {
@@ -256,23 +256,23 @@
256
256
  "readLocalFile": "Leer contenido del archivo",
257
257
  "renameLocalFile": "Renombrar",
258
258
  "searchLocalFiles": "Buscar archivos",
259
- "writeLocalFile": "Escribir en archivo"
259
+ "writeLocalFile": "Escribir archivo"
260
260
  },
261
261
  "title": "Archivos locales"
262
262
  },
263
263
  "mcpInstall": {
264
- "CHECKING_INSTALLATION": "Comprobando el entorno de instalación...",
264
+ "CHECKING_INSTALLATION": "Verificando entorno de instalación...",
265
265
  "COMPLETED": "Instalación completada",
266
- "CONFIGURATION_REQUIRED": "Por favor, complete la configuración necesaria antes de continuar con la instalación",
266
+ "CONFIGURATION_REQUIRED": "Por favor complete la configuración requerida para continuar la instalación",
267
267
  "ERROR": "Error de instalación",
268
- "FETCHING_MANIFEST": "Obteniendo el archivo de descripción del plugin...",
269
- "GETTING_SERVER_MANIFEST": "Inicializando el servidor MCP...",
270
- "INSTALLING_PLUGIN": "Instalando el plugin...",
268
+ "FETCHING_MANIFEST": "Obteniendo archivo de descripción del plugin...",
269
+ "GETTING_SERVER_MANIFEST": "Inicializando servidor MCP...",
270
+ "INSTALLING_PLUGIN": "Instalando plugin...",
271
271
  "configurationDescription": "Este plugin MCP requiere parámetros de configuración para funcionar correctamente, por favor complete la información necesaria",
272
272
  "configurationRequired": "Configurar parámetros del plugin",
273
273
  "continueInstall": "Continuar instalación",
274
- "dependenciesDescription": "Este plugin requiere la instalación de las siguientes dependencias del sistema para funcionar correctamente. Por favor, instale las dependencias faltantes según las indicaciones y luego haga clic en 'Revisar de nuevo' para continuar la instalación.",
275
- "dependenciesRequired": "Por favor, instale las dependencias del sistema para el plugin",
274
+ "dependenciesDescription": "Este plugin requiere instalar las siguientes dependencias del sistema para funcionar correctamente, por favor instale las dependencias faltantes según las indicaciones y luego haga clic en reintentar para continuar la instalación.",
275
+ "dependenciesRequired": "Por favor instale las dependencias del sistema para el plugin",
276
276
  "dependencyStatus": {
277
277
  "installed": "Instalado",
278
278
  "notInstalled": "No instalado",
@@ -293,36 +293,96 @@
293
293
  "AUTHORIZATION_ERROR": "Error de autorización",
294
294
  "CONNECTION_FAILED": "Conexión fallida",
295
295
  "INITIALIZATION_TIMEOUT": "Tiempo de inicialización agotado",
296
- "PROCESS_SPAWN_ERROR": "Error al iniciar el proceso",
296
+ "PROCESS_SPAWN_ERROR": "Error al iniciar proceso",
297
297
  "UNKNOWN_ERROR": "Error desconocido",
298
298
  "VALIDATION_ERROR": "Error de validación de parámetros"
299
299
  },
300
- "installError": "La instalación del plugin MCP falló, motivo: {{detail}}",
300
+ "installError": "Error al instalar plugin MCP, motivo: {{detail}}",
301
301
  "installMethods": {
302
302
  "manual": "Instalación manual:",
303
303
  "recommended": "Método de instalación recomendado:"
304
304
  },
305
- "recheckDependencies": "Revisar de nuevo",
305
+ "recheckDependencies": "Revisar dependencias nuevamente",
306
306
  "skipDependencies": "Omitir revisión"
307
307
  },
308
- "pluginList": "Lista de complementos",
308
+ "pluginList": "Lista de plugins",
309
+ "protocolInstall": {
310
+ "actions": {
311
+ "install": "Instalar",
312
+ "installAnyway": "Instalar de todos modos",
313
+ "installed": "Instalado"
314
+ },
315
+ "config": {
316
+ "args": "Parámetros",
317
+ "command": "Comando",
318
+ "env": "Variables de entorno",
319
+ "headers": "Encabezados",
320
+ "title": "Información de configuración",
321
+ "type": {
322
+ "http": "Tipo: HTTP",
323
+ "label": "Tipo",
324
+ "stdio": "Tipo: Stdio"
325
+ },
326
+ "url": "Dirección del servicio"
327
+ },
328
+ "custom": {
329
+ "badge": "Plugin personalizado",
330
+ "security": {
331
+ "description": "Este plugin no ha sido verificado oficialmente, la instalación puede implicar riesgos de seguridad. Por favor asegúrese de confiar en la fuente del plugin.",
332
+ "title": "⚠️ Advertencia de riesgo de seguridad"
333
+ },
334
+ "title": "Instalar plugin personalizado"
335
+ },
336
+ "marketplace": {
337
+ "title": "Instalar plugins de terceros",
338
+ "trustedBy": "Proporcionado por {{name}}",
339
+ "unverified": {
340
+ "title": "Plugin de terceros no verificado",
341
+ "warning": "Este plugin proviene de un mercado de terceros no verificado, por favor confirme que confía en esta fuente antes de instalar."
342
+ },
343
+ "verified": "Verificado"
344
+ },
345
+ "messages": {
346
+ "connectionTestFailed": "Prueba de conexión fallida",
347
+ "installError": "Error al instalar plugin, por favor intente de nuevo",
348
+ "installSuccess": "Plugin {{name}} instalado con éxito!",
349
+ "manifestError": "Error al obtener detalles del plugin, por favor revise la conexión de red e intente de nuevo",
350
+ "manifestNotFound": "No se pudo obtener el archivo de descripción del plugin"
351
+ },
352
+ "meta": {
353
+ "author": "Autor",
354
+ "homepage": "Página principal",
355
+ "identifier": "Identificador",
356
+ "source": "Fuente",
357
+ "version": "Versión"
358
+ },
359
+ "official": {
360
+ "badge": "Plugin oficial de LobeHub",
361
+ "description": "Este plugin es desarrollado y mantenido oficialmente por LobeHub, ha pasado rigurosas auditorías de seguridad y puede usarse con confianza.",
362
+ "loadingMessage": "Obteniendo detalles del plugin...",
363
+ "loadingTitle": "Cargando",
364
+ "title": "Instalar plugin oficial"
365
+ },
366
+ "title": "Instalar plugin MCP",
367
+ "warning": "⚠️ Por favor confirme que confía en la fuente de este plugin, plugins maliciosos pueden comprometer la seguridad de su sistema."
368
+ },
309
369
  "search": {
310
370
  "apiName": {
311
- "crawlMultiPages": "Leer el contenido de múltiples páginas",
312
- "crawlSinglePage": "Leer contenido de la página",
371
+ "crawlMultiPages": "Leer contenido de múltiples páginas",
372
+ "crawlSinglePage": "Leer contenido de página",
313
373
  "search": "Buscar página"
314
374
  },
315
375
  "config": {
316
376
  "addKey": "Agregar clave",
317
377
  "close": "Eliminar",
318
- "confirm": "Configuración completada, intente de nuevo"
378
+ "confirm": "Configuración completada y reintentar"
319
379
  },
320
380
  "crawPages": {
321
- "crawling": "Reconocimiento de enlaces",
381
+ "crawling": "Reconociendo enlaces",
322
382
  "detail": {
323
383
  "preview": "Vista previa",
324
384
  "raw": "Texto original",
325
- "tooLong": "El contenido del texto es demasiado largo, el contexto de la conversación solo retiene los primeros {{characters}} caracteres, el resto no se incluye en el contexto de la conversación"
385
+ "tooLong": "El contenido del texto es demasiado largo, solo se conservarán los primeros {{characters}} caracteres en el contexto de la conversación, el resto no se incluirá."
326
386
  },
327
387
  "meta": {
328
388
  "crawler": "Modo de rastreo",
@@ -330,16 +390,16 @@
330
390
  }
331
391
  },
332
392
  "searchxng": {
333
- "baseURL": "Introduzca",
334
- "description": "Introduzca la URL de SearchXNG para comenzar la búsqueda en línea",
335
- "keyPlaceholder": "Introduzca la clave",
336
- "title": "Configurar el motor de búsqueda SearchXNG",
337
- "unconfiguredDesc": "Por favor, contacte al administrador para completar la configuración del motor de búsqueda SearchXNG y comenzar la búsqueda en línea",
338
- "unconfiguredTitle": "Motor de búsqueda SearchXNG no configurado"
393
+ "baseURL": "Por favor ingrese",
394
+ "description": "Ingrese la URL de SearchXNG para comenzar la búsqueda en línea",
395
+ "keyPlaceholder": "Por favor ingrese la clave",
396
+ "title": "Configurar motor de búsqueda SearchXNG",
397
+ "unconfiguredDesc": "Por favor contacte al administrador para completar la configuración del motor de búsqueda SearchXNG y comenzar la búsqueda en línea",
398
+ "unconfiguredTitle": "SearchXNG no configurado"
339
399
  },
340
400
  "title": "Búsqueda en línea"
341
401
  },
342
- "setting": "Configuración de complementos",
402
+ "setting": "Configuración del plugin",
343
403
  "settings": {
344
404
  "capabilities": {
345
405
  "prompts": "Indicaciones",
@@ -358,52 +418,52 @@
358
418
  "url": "Dirección del servicio"
359
419
  },
360
420
  "edit": "Editar",
361
- "envConfigDescription": "Estas configuraciones se pasarán como variables de entorno al proceso cuando se inicie el servidor MCP",
362
- "httpTypeNotice": "Los complementos MCP de tipo HTTP no requieren variables de entorno configurables",
421
+ "envConfigDescription": "Estas configuraciones se pasarán como variables de entorno al iniciar el servidor MCP",
422
+ "httpTypeNotice": "Los plugins MCP de tipo HTTP no requieren variables de entorno configurables",
363
423
  "indexUrl": {
364
- "title": "Índice de mercado",
365
- "tooltip": "No se admite la edición en línea. Configure a través de variables de entorno al implementar."
424
+ "title": "Índice del mercado",
425
+ "tooltip": "No se soporta edición en línea, por favor configure mediante variables de entorno al desplegar"
366
426
  },
367
427
  "messages": {
368
428
  "connectionUpdateFailed": "Error al actualizar la información de conexión",
369
429
  "connectionUpdateSuccess": "Información de conexión actualizada con éxito",
370
- "envUpdateFailed": "Error al guardar las variables de entorno",
430
+ "envUpdateFailed": "Error al guardar variables de entorno",
371
431
  "envUpdateSuccess": "Variables de entorno guardadas con éxito"
372
432
  },
373
- "modalDesc": "Después de configurar la dirección del mercado de complementos, puede utilizar un mercado personalizado de complementos.",
433
+ "modalDesc": "Después de configurar la dirección del mercado de plugins, podrá usar mercados personalizados",
374
434
  "rules": {
375
- "argsRequired": "Por favor, introduzca los parámetros de inicio",
376
- "commandRequired": "Por favor, introduzca el comando de inicio",
377
- "urlRequired": "Por favor, introduzca la dirección del servicio"
435
+ "argsRequired": "Por favor ingrese los parámetros de inicio",
436
+ "commandRequired": "Por favor ingrese el comando de inicio",
437
+ "urlRequired": "Por favor ingrese la dirección del servicio"
378
438
  },
379
439
  "saveSettings": "Guardar configuración",
380
- "title": "Configuración del mercado de complementos"
440
+ "title": "Configurar mercado de plugins"
381
441
  },
382
- "showInPortal": "Por favor, consulta los detalles en el portal de trabajo",
442
+ "showInPortal": "Por favor vea los detalles en el espacio de trabajo",
383
443
  "store": {
384
444
  "actions": {
385
445
  "cancel": "Cancelar instalación",
386
- "confirmUninstall": "Está a punto de desinstalar este complemento. Se eliminará la configuración del complemento. Confirme su acción.",
446
+ "confirmUninstall": "Está a punto de desinstalar este plugin, la configuración del plugin será eliminada. Por favor confirme su acción",
387
447
  "detail": "Detalles",
388
448
  "install": "Instalar",
389
449
  "manifest": "Editar archivo de instalación",
390
450
  "settings": "Configuración",
391
451
  "uninstall": "Desinstalar"
392
452
  },
393
- "communityPlugin": "Comunidad",
453
+ "communityPlugin": "Comunidad de terceros",
394
454
  "customPlugin": "Personalizado",
395
- "empty": "No hay complementos instalados",
396
- "emptySelectHint": "Seleccione un complemento para previsualizar los detalles",
455
+ "empty": "No hay plugins instalados",
456
+ "emptySelectHint": "Seleccione un plugin para previsualizar detalles",
397
457
  "installAllPlugins": "Instalar todos",
398
- "networkError": "Error al obtener la tienda de complementos. Verifique la conexión a internet e inténtelo de nuevo.",
399
- "placeholder": "Buscar por nombre, descripción o palabra clave del complemento...",
458
+ "networkError": "Error al obtener la tienda de plugins, por favor revise la conexión de red e intente de nuevo",
459
+ "placeholder": "Buscar por nombre, descripción o palabra clave del plugin...",
400
460
  "releasedAt": "Publicado el {{createdAt}}",
401
461
  "tabs": {
402
462
  "installed": "Instalados",
403
- "mcp": "Complemento MCP",
404
- "old": "Plugin LobeChat"
463
+ "mcp": "Plugins MCP",
464
+ "old": "Plugins LobeChat"
405
465
  },
406
- "title": "Tienda de complementos"
466
+ "title": "Tienda de plugins"
407
467
  },
408
468
  "unknownError": "Error desconocido",
409
469
  "unknownPlugin": "Plugin desconocido"