@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
@@ -5,11 +5,11 @@
5
5
  "function_call": "Gọi hàm",
6
6
  "off": "Tắt gỡ lỗi",
7
7
  "on": "Xem thông tin gọi plugin",
8
- "payload": "Dữ liệu cắm",
8
+ "payload": "Tải trọng plugin",
9
9
  "pluginState": "Trạng thái plugin",
10
10
  "response": "Kết quả trả về",
11
11
  "title": "Chi tiết plugin",
12
- "tool_call": "Yêu cầu công cụ"
12
+ "tool_call": "Yêu cầu gọi công cụ"
13
13
  },
14
14
  "detailModal": {
15
15
  "customPlugin": {
@@ -18,7 +18,7 @@
18
18
  "title": "Đây là một plugin tùy chỉnh"
19
19
  },
20
20
  "emptyState": {
21
- "description": "Vui lòng cài đặt plugin này trước để xem các tính năng và tùy chọn cấu hình của plugin",
21
+ "description": "Vui lòng cài đặt plugin này trước để xem khả năng và tùy chọn cấu hình",
22
22
  "title": "Xem chi tiết plugin sau khi cài đặt"
23
23
  },
24
24
  "info": {
@@ -33,10 +33,10 @@
33
33
  "title": "Chi tiết plugin"
34
34
  },
35
35
  "dev": {
36
- "confirmDeleteDevPlugin": "Bạn sắp xóa plugin cục bộ này, sau khi xóa sẽ không thể khôi phục, bạn có muốn xóa plugin này không?",
36
+ "confirmDeleteDevPlugin": "Bạn sắp xóa plugin cục bộ này, sau khi xóa sẽ không thể khôi phục, bạn có chắc muốn xóa plugin này không?",
37
37
  "customParams": {
38
38
  "useProxy": {
39
- "label": "Cài đặt thông qua proxy (nếu gặp lỗi truy cập qua các miền, hãy thử bật tùy chọn này cài đặt lại)"
39
+ "label": "Cài đặt qua proxy (nếu gặp lỗi truy cập chéo, hãy thử bật tùy chọn này rồi cài lại)"
40
40
  }
41
41
  },
42
42
  "deleteSuccess": "Xóa plugin thành công",
@@ -46,14 +46,14 @@
46
46
  "label": "Định danh"
47
47
  },
48
48
  "mode": {
49
- "mcp": "MCP Plugin",
50
- "mcpExp": "Thí nghiệm",
49
+ "mcp": "Plugin MCP",
50
+ "mcpExp": "Thử nghiệm",
51
51
  "url": "Liên kết trực tuyến"
52
52
  },
53
53
  "name": {
54
54
  "desc": "Tiêu đề plugin",
55
55
  "label": "Tiêu đề",
56
- "placeholder": "Tìm kiếm công cụ tìm kiếm"
56
+ "placeholder": "Công cụ tìm kiếm"
57
57
  }
58
58
  },
59
59
  "mcp": {
@@ -61,14 +61,14 @@
61
61
  "title": "Cài đặt nâng cao"
62
62
  },
63
63
  "args": {
64
- "desc": "Danh sách các tham số được truyền cho lệnh thực thi, thường nhập tên máy chủ MCP hoặc đường dẫn đến tập lệnh khởi động",
64
+ "desc": "Danh sách tham số truyền cho lệnh thực thi, thường nhập tên máy chủ MCP hoặc đường dẫn script khởi động",
65
65
  "label": "Tham số lệnh",
66
66
  "placeholder": "Ví dụ: mcp-hello-world",
67
67
  "required": "Vui lòng nhập tham số khởi động"
68
68
  },
69
69
  "auth": {
70
70
  "bear": "API Key",
71
- "desc": "Chọn phương thức xác thực cho máy chủ MCP",
71
+ "desc": "Chọn phương thức xác thực máy chủ MCP",
72
72
  "label": "Loại xác thực",
73
73
  "none": "Không cần xác thực",
74
74
  "placeholder": "Vui lòng chọn loại xác thực",
@@ -76,101 +76,101 @@
76
76
  "desc": "Nhập API Key hoặc Bearer Token của bạn",
77
77
  "label": "API Key",
78
78
  "placeholder": "sk-xxxxx",
79
- "required": "Vui lòng nhập xác thực"
79
+ "required": "Vui lòng nhập token xác thực"
80
80
  }
81
81
  },
82
82
  "avatar": {
83
- "label": "Biểu tượng tiện ích"
83
+ "label": "Biểu tượng plugin"
84
84
  },
85
85
  "command": {
86
- "desc": "Tập tin thực thi hoặc kịch bản dùng để khởi động Máy chủ MCP STDIO",
86
+ "desc": "Tệp thực thi hoặc script dùng để khởi động MCP STDIO Server",
87
87
  "label": "Lệnh",
88
- "placeholder": "Ví dụ: npx / uv / docker v.v.",
88
+ "placeholder": "Ví dụ: npx / uv / docker, v.v.",
89
89
  "required": "Vui lòng nhập lệnh khởi động"
90
90
  },
91
91
  "desc": {
92
- "desc": " tả về tiện ích",
93
- "label": "Mô tả tiện ích",
94
- "placeholder": "Bổ sung thông tin về cách sử dụng và các tình huống của tiện ích này"
92
+ "desc": "Thêm tả cho plugin",
93
+ "label": "Mô tả plugin",
94
+ "placeholder": "Bổ sung hướng dẫn sử dụng và kịch bản"
95
95
  },
96
96
  "endpoint": {
97
- "desc": "Nhập địa chỉ của máy chủ HTTP Streamable MCP của bạn",
98
- "label": "URL Điểm cuối MCP"
97
+ "desc": "Nhập địa chỉ MCP Streamable HTTP Server của bạn",
98
+ "label": "URL MCP Endpoint"
99
99
  },
100
100
  "env": {
101
- "add": "Thêm một dòng",
102
- "desc": "Nhập các biến môi trường cần thiết cho máy chủ MCP của bạn",
103
- "duplicateKeyError": "Khóa trường phải duy nhất",
104
- "formValidationFailed": "Xác thực biểu mẫu không thành công, vui lòng kiểm tra định dạng tham số",
101
+ "add": "Thêm dòng mới",
102
+ "desc": "Nhập biến môi trường cần thiết cho MCP Server",
103
+ "duplicateKeyError": "Khóa trường phải duy nhất",
104
+ "formValidationFailed": "Xác thực biểu mẫu thất bại, vui lòng kiểm tra định dạng tham số",
105
105
  "keyRequired": "Khóa trường không được để trống",
106
- "label": "Biến môi trường máy chủ MCP",
107
- "stringifyError": "Không thể tuần tự hóa tham số, vui lòng kiểm tra định dạng tham số"
106
+ "label": "Biến môi trường MCP Server",
107
+ "stringifyError": "Không thể tuần tự hóa tham số, vui lòng kiểm tra định dạng"
108
108
  },
109
109
  "headers": {
110
110
  "add": "Thêm dòng mới",
111
- "desc": "Nhập tiêu đề yêu cầu",
111
+ "desc": "Nhập header yêu cầu",
112
112
  "label": "HTTP Headers"
113
113
  },
114
114
  "identifier": {
115
- "desc": "Chỉ định một tên cho plugin MCP của bạn, cần sử dụng ký tự tiếng Anh",
116
- "invalid": "Chỉ thể nhập tự tiếng Anh, số, hai hiệu - và _",
115
+ "desc": "Đặt tên cho plugin MCP của bạn, phải dùng ký tự tiếng Anh",
116
+ "invalid": "Định danh chỉ được chứa chữ cái, số, dấu gạch ngang gạch dưới",
117
117
  "label": "Tên plugin MCP",
118
118
  "placeholder": "Ví dụ: my-mcp-plugin",
119
119
  "required": "Vui lòng nhập định danh dịch vụ MCP"
120
120
  },
121
121
  "previewManifest": "Xem trước tệp mô tả plugin",
122
- "quickImport": "Nhập khẩu nhanh cấu hình JSON",
122
+ "quickImport": "Nhập nhanh cấu hình JSON",
123
123
  "quickImportError": {
124
- "empty": "Nội dung nhập vào không được để trống",
124
+ "empty": "Nội dung nhập không được để trống",
125
125
  "invalidJson": "Định dạng JSON không hợp lệ",
126
- "invalidStructure": "Định dạng JSON không hợp lệ"
126
+ "invalidStructure": "Cấu trúc JSON không hợp lệ"
127
127
  },
128
128
  "stdioNotSupported": "Môi trường hiện tại không hỗ trợ plugin MCP loại stdio",
129
129
  "testConnection": "Kiểm tra kết nối",
130
- "testConnectionTip": "Chỉ sau khi kiểm tra kết nối thành công, plugin MCP mới có thể được sử dụng bình thường",
130
+ "testConnectionTip": "Plugin MCP chỉ có thể sử dụng bình thường khi kiểm tra kết nối thành công",
131
131
  "type": {
132
132
  "desc": "Chọn phương thức giao tiếp của plugin MCP, phiên bản web chỉ hỗ trợ Streamable HTTP",
133
- "httpFeature1": "Tương thích với phiên bản web và desktop",
134
- "httpFeature2": "Kết nối với máy chủ MCP từ xa, không cần cài đặt cấu hình thêm",
135
- "httpShortDesc": "Giao thức truyền thông dựa trên HTTP theo dòng",
133
+ "httpFeature1": "Tương thích web và desktop",
134
+ "httpFeature2": "Kết nối máy chủ MCP từ xa, không cần cài đặt thêm",
135
+ "httpShortDesc": "Giao thức HTTP dạng luồng",
136
136
  "label": "Loại plugin MCP",
137
- "stdioFeature1": "Độ trễ truyền thông thấp hơn, phù hợp cho thực thi cục bộ",
138
- "stdioFeature2": "Cần cài đặt chạy máy chủ MCP cục bộ",
139
- "stdioNotAvailable": "Chế độ STDIO chỉ khả dụng trên phiên bản desktop",
140
- "stdioShortDesc": "Giao thức truyền thông dựa trên đầu vào và đầu ra tiêu chuẩn",
137
+ "stdioFeature1": "Độ trễ giao tiếp thấp hơn, phù hợp chạy cục bộ",
138
+ "stdioFeature2": "Cần cài đặt MCP server chạy cục bộ",
139
+ "stdioNotAvailable": "Chế độ STDIO chỉ trên bản desktop",
140
+ "stdioShortDesc": "Giao thức dựa trên nhập xuất chuẩn",
141
141
  "title": "Loại plugin MCP"
142
142
  },
143
143
  "url": {
144
- "desc": "Nhập địa chỉ HTTP Streamable của máy chủ MCP của bạn, không hỗ trợ chế độ SSE",
145
- "invalid": "Vui lòng nhập địa chỉ URL hợp lệ",
146
- "label": "URL Điểm cuối HTTP",
144
+ "desc": "Nhập địa chỉ MCP Server Streamable HTTP, không hỗ trợ chế độ SSE",
145
+ "invalid": "Vui lòng nhập URL hợp lệ",
146
+ "label": "URL Streamable HTTP Endpoint",
147
147
  "required": "Vui lòng nhập URL dịch vụ MCP"
148
148
  }
149
149
  },
150
150
  "meta": {
151
151
  "author": {
152
- "desc": "Tác giả của plugin",
152
+ "desc": "Tác giả plugin",
153
153
  "label": "Tác giả"
154
154
  },
155
155
  "avatar": {
156
- "desc": "Biểu tượng của plugin, có thể sử dụng Emoji hoặc URL",
156
+ "desc": "Biểu tượng plugin, có thể dùng Emoji hoặc URL",
157
157
  "label": "Biểu tượng"
158
158
  },
159
159
  "description": {
160
160
  "desc": "Mô tả plugin",
161
161
  "label": "Mô tả",
162
- "placeholder": "Tìm kiếm công cụ tìm kiếm để lấy thông tin"
162
+ "placeholder": "Tìm kiếm thông tin qua công cụ tìm kiếm"
163
163
  },
164
164
  "formFieldRequired": "Trường này là bắt buộc",
165
165
  "homepage": {
166
- "desc": "Trang chủ của plugin",
166
+ "desc": "Trang chủ plugin",
167
167
  "label": "Trang chủ"
168
168
  },
169
169
  "identifier": {
170
- "desc": "Định danh duy nhất của plugin, sẽ tự động nhận dạng từ manifest",
171
- "errorDuplicate": "Định danh trùng với plugin đã có, vui lòng sửa đổi định danh",
170
+ "desc": "Định danh duy nhất của plugin, tự động nhận diện từ manifest",
171
+ "errorDuplicate": "Định danh trùng với plugin đã có, vui lòng đổi tên",
172
172
  "label": "Định danh",
173
- "pattenErrorMessage": "Chỉ thể nhập ký tự tiếng Anh, số, - và _"
173
+ "pattenErrorMessage": "Chỉ được nhập ký tự tiếng Anh, số, dấu - và _"
174
174
  },
175
175
  "lobe": "Plugin {{appName}}",
176
176
  "manifest": {
@@ -183,11 +183,11 @@
183
183
  "title": {
184
184
  "desc": "Tiêu đề plugin",
185
185
  "label": "Tiêu đề",
186
- "placeholder": "Tìm kiếm công cụ tìm kiếm"
186
+ "placeholder": "Công cụ tìm kiếm"
187
187
  }
188
188
  },
189
- "metaConfig": "Cấu hình thông tin plugin",
190
- "modalDesc": "Sau khi thêm plugin tùy chỉnh, có thể sử dụng để xác minh phát triển plugin, cũng có thể sử dụng trực tiếp trong cuộc trò chuyện. Vui lòng tham khảo<1>tài liệu phát triển↗</>",
189
+ "metaConfig": "Cấu hình thông tin meta plugin",
190
+ "modalDesc": "Sau khi thêm plugin tùy chỉnh, có thể dùng để kiểm tra phát triển hoặc sử dụng trực tiếp trong hội thoại. Vui lòng tham khảo <1>tài liệu phát triển↗</> để biết thêm chi tiết.",
191
191
  "openai": {
192
192
  "importUrl": "Nhập từ liên kết URL",
193
193
  "schema": "Schema"
@@ -195,44 +195,44 @@
195
195
  "preview": {
196
196
  "api": {
197
197
  "noParams": "Công cụ này không có tham số",
198
- "noResults": "Không tìm thấy API nào phù hợp với điều kiện tìm kiếm",
198
+ "noResults": "Không tìm thấy API phù hợp với điều kiện tìm kiếm",
199
199
  "params": "Tham số:",
200
200
  "searchPlaceholder": "Tìm kiếm công cụ..."
201
201
  },
202
- "card": "Xem trước hiệu ứng plugin",
202
+ "card": "Xem trước hiệu ứng hiển thị plugin",
203
203
  "desc": "Xem trước mô tả plugin",
204
204
  "empty": {
205
- "desc": "Sau khi hoàn thành cấu hình, bạn sẽ có thể xem trước khả năng của các công cụ hỗ trợ plugin tại đây",
205
+ "desc": "Sau khi cấu hình xong, bạn có thể xem trước khả năng công cụ hỗ trợ tại đây",
206
206
  "title": "Bắt đầu xem trước sau khi cấu hình plugin"
207
207
  },
208
208
  "title": "Xem trước tên plugin"
209
209
  },
210
210
  "save": "Cài đặt plugin",
211
- "saveSuccess": "Lưu cài đặt plugin thành công",
211
+ "saveSuccess": "Lưu cấu hình plugin thành công",
212
212
  "tabs": {
213
213
  "manifest": "Danh sách mô tả chức năng (Manifest)",
214
- "meta": "Thông tin plugin"
214
+ "meta": "Thông tin meta plugin"
215
215
  },
216
216
  "title": {
217
217
  "create": "Thêm plugin tùy chỉnh",
218
218
  "edit": "Chỉnh sửa plugin tùy chỉnh"
219
219
  },
220
220
  "type": {
221
- "lobe": "Plugin LobeChat",
221
+ "lobe": "Plugin {{appName}}",
222
222
  "openai": "Plugin OpenAI"
223
223
  },
224
224
  "update": "Cập nhật",
225
- "updateSuccess": "Cập nhật cài đặt plugin thành công"
225
+ "updateSuccess": "Cập nhật cấu hình plugin thành công"
226
226
  },
227
227
  "error": {
228
- "fetchError": "Lỗi khi yêu cầu liên kết manifest, vui lòng đảm bảo tính hợp lệ của liên kết kiểm tra xem liên kết có cho phép truy cập qua tên miền khác không",
228
+ "fetchError": "Yêu cầu lấy liên kết manifest thất bại, vui lòng đảm bảo liên kết hợp lệ và cho phép truy cập chéo",
229
229
  "installError": "Cài đặt plugin {{name}} thất bại",
230
- "manifestInvalid": "Manifest không tuân theo quy tắc, kết quả kiểm tra: \n\n {{error}}",
231
- "noManifest": "Tệp tả không tồn tại",
232
- "openAPIInvalid": "OpenAPI phân tích thất bại, lỗi: \n\n {{error}}",
230
+ "manifestInvalid": "Manifest không hợp lệ, kết quả kiểm tra: \n\n {{error}}",
231
+ "noManifest": "Không tìm thấy tệp tả",
232
+ "openAPIInvalid": "Phân tích OpenAPI thất bại, lỗi: \n\n {{error}}",
233
233
  "reinstallError": "Làm mới plugin {{name}} thất bại",
234
234
  "testConnectionFailed": "Lấy Manifest thất bại: {{error}}",
235
- "urlError": "Liên kết này không trả về nội dung dạng JSON, vui lòng đảm bảo rằng đó là một liên kết hợp lệ"
235
+ "urlError": "Liên kết này không trả về nội dung định dạng JSON, vui lòng đảm bảo liên kết hợp lệ"
236
236
  },
237
237
  "inspector": {
238
238
  "args": "Xem danh sách tham số",
@@ -240,7 +240,7 @@
240
240
  },
241
241
  "list": {
242
242
  "item": {
243
- "deprecated.title": "Đã loại bỏ",
243
+ "deprecated.title": "Đã xóa",
244
244
  "local.config": "Cấu hình",
245
245
  "local.title": "Tùy chỉnh"
246
246
  }
@@ -256,22 +256,22 @@
256
256
  "readLocalFile": "Đọc nội dung tệp",
257
257
  "renameLocalFile": "Đổi tên",
258
258
  "searchLocalFiles": "Tìm kiếm tệp",
259
- "writeLocalFile": "Ghi vào tệp"
259
+ "writeLocalFile": "Ghi tệp"
260
260
  },
261
261
  "title": "Tệp cục bộ"
262
262
  },
263
263
  "mcpInstall": {
264
264
  "CHECKING_INSTALLATION": "Đang kiểm tra môi trường cài đặt...",
265
- "COMPLETED": "Cài đặt hoàn tất",
266
- "CONFIGURATION_REQUIRED": "Vui lòng hoàn thành cấu hình liên quan trước khi tiếp tục cài đặt",
265
+ "COMPLETED": "Hoàn thành cài đặt",
266
+ "CONFIGURATION_REQUIRED": "Vui lòng hoàn thành cấu hình trước khi tiếp tục cài đặt",
267
267
  "ERROR": "Lỗi cài đặt",
268
268
  "FETCHING_MANIFEST": "Đang lấy tệp mô tả plugin...",
269
269
  "GETTING_SERVER_MANIFEST": "Khởi tạo máy chủ MCP...",
270
270
  "INSTALLING_PLUGIN": "Đang cài đặt plugin...",
271
- "configurationDescription": "Plugin MCP này cần cấu hình các tham số để hoạt động bình thường, vui lòng điền thông tin cấu hình cần thiết",
271
+ "configurationDescription": "Plugin MCP này cần cấu hình tham số để hoạt động bình thường, vui lòng điền thông tin cần thiết",
272
272
  "configurationRequired": "Cấu hình tham số plugin",
273
273
  "continueInstall": "Tiếp tục cài đặt",
274
- "dependenciesDescription": "Plugin này cần cài đặt các phụ thuộc hệ thống sau để hoạt động bình thường, vui lòng làm theo hướng dẫn để cài đặt các phụ thuộc còn thiếu, sau đó nhấn kiểm tra lại để tiếp tục cài đặt.",
274
+ "dependenciesDescription": "Plugin này cần cài đặt các phụ thuộc hệ thống sau để hoạt động, vui lòng làm theo hướng dẫn để cài đặt các phụ thuộc còn thiếu, sau đó nhấn kiểm tra lại để tiếp tục cài đặt.",
275
275
  "dependenciesRequired": "Vui lòng cài đặt các phụ thuộc hệ thống của plugin",
276
276
  "dependencyStatus": {
277
277
  "installed": "Đã cài đặt",
@@ -290,30 +290,90 @@
290
290
  "showDetails": "Xem chi tiết"
291
291
  },
292
292
  "errorTypes": {
293
- "AUTHORIZATION_ERROR": "Lỗi xác thực ủy quyền",
293
+ "AUTHORIZATION_ERROR": "Lỗi xác thực",
294
294
  "CONNECTION_FAILED": "Kết nối thất bại",
295
295
  "INITIALIZATION_TIMEOUT": "Khởi tạo quá thời gian",
296
- "PROCESS_SPAWN_ERROR": "Khởi tạo tiến trình thất bại",
296
+ "PROCESS_SPAWN_ERROR": "Khởi động tiến trình thất bại",
297
297
  "UNKNOWN_ERROR": "Lỗi không xác định",
298
298
  "VALIDATION_ERROR": "Xác thực tham số thất bại"
299
299
  },
300
- "installError": "Cài đặt plugin MCP thất bại, nguyên nhân: {{detail}}",
300
+ "installError": "Cài đặt plugin MCP thất bại, do: {{detail}}",
301
301
  "installMethods": {
302
302
  "manual": "Cài đặt thủ công:",
303
- "recommended": "Phương thức cài đặt được khuyến nghị:"
303
+ "recommended": "Phương pháp cài đặt được khuyến nghị:"
304
304
  },
305
305
  "recheckDependencies": "Kiểm tra lại",
306
306
  "skipDependencies": "Bỏ qua kiểm tra"
307
307
  },
308
308
  "pluginList": "Danh sách plugin",
309
+ "protocolInstall": {
310
+ "actions": {
311
+ "install": "Cài đặt",
312
+ "installAnyway": "Vẫn cài đặt",
313
+ "installed": "Đã cài đặt"
314
+ },
315
+ "config": {
316
+ "args": "Tham số",
317
+ "command": "Lệnh",
318
+ "env": "Biến môi trường",
319
+ "headers": "Header yêu cầu",
320
+ "title": "Thông tin cấu hình",
321
+ "type": {
322
+ "http": "Loại: HTTP",
323
+ "label": "Loại",
324
+ "stdio": "Loại: Stdio"
325
+ },
326
+ "url": "Địa chỉ dịch vụ"
327
+ },
328
+ "custom": {
329
+ "badge": "Plugin tùy chỉnh",
330
+ "security": {
331
+ "description": "Plugin này chưa được xác thực chính thức, việc cài đặt có thể tiềm ẩn rủi ro bảo mật! Vui lòng đảm bảo bạn tin tưởng nguồn plugin.",
332
+ "title": "⚠️ Cảnh báo rủi ro bảo mật"
333
+ },
334
+ "title": "Cài đặt plugin tùy chỉnh"
335
+ },
336
+ "marketplace": {
337
+ "title": "Cài đặt plugin bên thứ ba",
338
+ "trustedBy": "Cung cấp bởi {{name}}",
339
+ "unverified": {
340
+ "title": "Plugin bên thứ ba chưa xác thực",
341
+ "warning": "Plugin này đến từ thị trường bên thứ ba chưa được xác thực, vui lòng xác nhận bạn tin tưởng nguồn trước khi cài đặt."
342
+ },
343
+ "verified": "Đã xác thực"
344
+ },
345
+ "messages": {
346
+ "connectionTestFailed": "Kiểm tra kết nối thất bại",
347
+ "installError": "Cài đặt plugin thất bại, vui lòng thử lại",
348
+ "installSuccess": "Cài đặt plugin {{name}} thành công!",
349
+ "manifestError": "Lấy chi tiết plugin thất bại, vui lòng kiểm tra kết nối mạng và thử lại",
350
+ "manifestNotFound": "Không tìm thấy tệp mô tả plugin"
351
+ },
352
+ "meta": {
353
+ "author": "Tác giả",
354
+ "homepage": "Trang chủ",
355
+ "identifier": "Định danh",
356
+ "source": "Nguồn",
357
+ "version": "Phiên bản"
358
+ },
359
+ "official": {
360
+ "badge": "Plugin chính thức của LobeHub",
361
+ "description": "Plugin này được phát triển và duy trì bởi LobeHub chính thức, đã qua kiểm tra bảo mật nghiêm ngặt, bạn có thể yên tâm sử dụng.",
362
+ "loadingMessage": "Đang lấy chi tiết plugin...",
363
+ "loadingTitle": "Đang tải",
364
+ "title": "Cài đặt plugin chính thức"
365
+ },
366
+ "title": "Cài đặt plugin MCP",
367
+ "warning": "⚠️ Vui lòng xác nhận bạn tin tưởng nguồn plugin này, plugin độc hại có thể gây nguy hiểm cho hệ thống của bạn."
368
+ },
309
369
  "search": {
310
370
  "apiName": {
311
- "crawlMultiPages": "Đọc nội dung của nhiều trang",
371
+ "crawlMultiPages": "Đọc nội dung nhiều trang",
312
372
  "crawlSinglePage": "Đọc nội dung trang",
313
373
  "search": "Tìm kiếm trang"
314
374
  },
315
375
  "config": {
316
- "addKey": "Thêm khóa",
376
+ "addKey": "Thêm khóa bí mật",
317
377
  "close": "Xóa",
318
378
  "confirm": "Đã hoàn thành cấu hình và thử lại"
319
379
  },
@@ -322,7 +382,7 @@
322
382
  "detail": {
323
383
  "preview": "Xem trước",
324
384
  "raw": "Văn bản gốc",
325
- "tooLong": "Nội dung văn bản quá dài, chỉ giữ lại {{characters}} ký tự đầu tiên trong ngữ cảnh cuộc trò chuyện, phần vượt quá sẽ không được tính vào ngữ cảnh cuộc trò chuyện"
385
+ "tooLong": "Nội dung văn bản quá dài, ngữ cảnh hội thoại chỉ giữ lại {{characters}} ký tự đầu, phần vượt quá không được tính vào ngữ cảnh."
326
386
  },
327
387
  "meta": {
328
388
  "crawler": "Chế độ thu thập",
@@ -330,11 +390,11 @@
330
390
  }
331
391
  },
332
392
  "searchxng": {
333
- "baseURL": "Nhập vào",
334
- "description": "Nhập URL của SearchXNG để bắt đầu tìm kiếm trực tuyến",
335
- "keyPlaceholder": "Nhập khóa",
393
+ "baseURL": "Vui lòng nhập",
394
+ "description": "Nhập địa chỉ SearchXNG để bắt đầu tìm kiếm trực tuyến",
395
+ "keyPlaceholder": "Vui lòng nhập khóa bí mật",
336
396
  "title": "Cấu hình công cụ tìm kiếm SearchXNG",
337
- "unconfiguredDesc": "Vui lòng liên hệ với quản trị viên để hoàn thành cấu hình công cụ tìm kiếm SearchXNG, để bắt đầu tìm kiếm trực tuyến",
397
+ "unconfiguredDesc": "Vui lòng liên hệ quản trị viên để hoàn thành cấu hình SearchXNG, sau đó thể bắt đầu tìm kiếm trực tuyến",
338
398
  "unconfiguredTitle": "Chưa cấu hình công cụ tìm kiếm SearchXNG"
339
399
  },
340
400
  "title": "Tìm kiếm trực tuyến"
@@ -358,11 +418,11 @@
358
418
  "url": "Địa chỉ dịch vụ"
359
419
  },
360
420
  "edit": "Chỉnh sửa",
361
- "envConfigDescription": "Các cấu hình này sẽ được truyền dưới dạng biến môi trường khi máy chủ MCP khởi động",
362
- "httpTypeNotice": "Plugin MCP loại HTTP hiện không biến môi trường cần cấu hình",
421
+ "envConfigDescription": "Các cấu hình này sẽ được truyền dưới dạng biến môi trường khi MCP server khởi động",
422
+ "httpTypeNotice": "Plugin MCP loại HTTP hiện chưa cần cấu hình biến môi trường",
363
423
  "indexUrl": {
364
424
  "title": "Chỉ mục thị trường",
365
- "tooltip": "Hiện không hỗ trợ chỉnh sửa trực tuyến, vui lòng thiết lập thông qua biến môi trường khi triển khai"
425
+ "tooltip": "Hiện chưa hỗ trợ chỉnh sửa trực tuyến, vui lòng cấu hình qua biến môi trường khi triển khai"
366
426
  },
367
427
  "messages": {
368
428
  "connectionUpdateFailed": "Cập nhật thông tin kết nối thất bại",
@@ -379,28 +439,28 @@
379
439
  "saveSettings": "Lưu cài đặt",
380
440
  "title": "Cài đặt thị trường plugin"
381
441
  },
382
- "showInPortal": "Vui lòng xem chi tiết trong khu vực làm việc",
442
+ "showInPortal": "Vui lòng xem chi tiết trong không gian làm việc",
383
443
  "store": {
384
444
  "actions": {
385
445
  "cancel": "Hủy cài đặt",
386
- "confirmUninstall": "Sắp gỡ bỏ plugin này, sau khi gỡ bỏ sẽ xóa cấu hình của plugin này, vui lòng xác nhận hành động của bạn",
446
+ "confirmUninstall": "Bạn sắp gỡ cài đặt plugin này, thao tác sẽ xóa cấu hình plugin, vui lòng xác nhận",
387
447
  "detail": "Chi tiết",
388
448
  "install": "Cài đặt",
389
449
  "manifest": "Chỉnh sửa tệp cài đặt",
390
450
  "settings": "Cài đặt",
391
- "uninstall": "Gỡ bỏ"
451
+ "uninstall": "Gỡ cài đặt"
392
452
  },
393
453
  "communityPlugin": "Cộng đồng bên thứ ba",
394
454
  "customPlugin": "Tùy chỉnh",
395
- "empty": "Hiện chưa có plugin được cài đặt",
396
- "emptySelectHint": "Chọn plugin để xem trước thông tin chi tiết",
455
+ "empty": "Chưa có plugin đã cài đặt",
456
+ "emptySelectHint": "Chọn plugin để xem chi tiết",
397
457
  "installAllPlugins": "Cài đặt tất cả",
398
458
  "networkError": "Lấy cửa hàng plugin thất bại, vui lòng kiểm tra kết nối mạng và thử lại",
399
- "placeholder": "Tìm kiếm tên hoặc mô tả plugin...",
400
- "releasedAt": "Đã phát hành vào {{createdAt}}",
459
+ "placeholder": "Tìm kiếm tên, mô tả hoặc từ khóa plugin...",
460
+ "releasedAt": "Phát hành vào {{createdAt}}",
401
461
  "tabs": {
402
462
  "installed": "Đã cài đặt",
403
- "mcp": "Tiện ích MCP",
463
+ "mcp": "Plugin MCP",
404
464
  "old": "Plugin LobeChat"
405
465
  },
406
466
  "title": "Cửa hàng plugin"
@@ -306,6 +306,66 @@
306
306
  "skipDependencies": "跳过检查"
307
307
  },
308
308
  "pluginList": "插件列表",
309
+ "protocolInstall": {
310
+ "actions": {
311
+ "install": "安装",
312
+ "installAnyway": "仍要安装",
313
+ "installed": "已安装"
314
+ },
315
+ "config": {
316
+ "args": "参数",
317
+ "command": "命令",
318
+ "env": "环境变量",
319
+ "headers": "请求头",
320
+ "title": "配置信息",
321
+ "type": {
322
+ "http": "类型: HTTP",
323
+ "label": "类型",
324
+ "stdio": "类型: Stdio"
325
+ },
326
+ "url": "服务地址"
327
+ },
328
+ "custom": {
329
+ "badge": "自定义插件",
330
+ "security": {
331
+ "description": "此插件未经过官方验证,安装可能存在安全风险!请确保您信任插件来源。",
332
+ "title": "⚠️ 安全风险提示"
333
+ },
334
+ "title": "安装自定义插件"
335
+ },
336
+ "marketplace": {
337
+ "title": "安装第三方插件",
338
+ "trustedBy": "由 {{name}} 提供",
339
+ "unverified": {
340
+ "title": "未经验证的第三方插件",
341
+ "warning": "此插件来自未验证的第三方市场,安装前请确认您信任该来源。"
342
+ },
343
+ "verified": "已验证"
344
+ },
345
+ "messages": {
346
+ "connectionTestFailed": "连接测试失败",
347
+ "installError": "插件安装失败,请重试",
348
+ "installSuccess": "插件 {{name}} 安装成功!",
349
+ "manifestError": "获取插件详情失败,请检查网络连接后重试",
350
+ "manifestNotFound": "未能获取插件描述文件"
351
+ },
352
+ "meta": {
353
+ "author": "作者",
354
+ "homepage": "主页",
355
+ "identifier": "标识符",
356
+ "source": "来源",
357
+ "version": "版本"
358
+ },
359
+ "official": {
360
+ "badge": "LobeHub 官方插件",
361
+ "description": "此插件由 LobeHub 官方开发和维护,经过严格的安全审核,可放心使用。",
362
+ "loadingMessage": "正在获取插件详情...",
363
+ "loadingTitle": "加载中",
364
+ "title": "安装官方插件"
365
+ },
366
+ "title": "安装 MCP 插件",
367
+ "warning": "⚠️ 请确认您信任此插件的来源,恶意插件可能会危害您的系统安全。"
368
+ },
309
369
  "search": {
310
370
  "apiName": {
311
371
  "crawlMultiPages": "读取多个页面内容",