@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,45 +1,45 @@
1
1
  {
2
2
  "confirm": "확인",
3
3
  "debug": {
4
- "arguments": "함수 호출 인수",
4
+ "arguments": "호출 매개변수",
5
5
  "function_call": "함수 호출",
6
6
  "off": "디버그 끄기",
7
7
  "on": "플러그인 호출 정보 보기",
8
- "payload": "페이로드",
8
+ "payload": "플러그인 페이로드",
9
9
  "pluginState": "플러그인 상태",
10
- "response": "응답",
11
- "title": "플러그인 세부정보",
12
- "tool_call": "도구 호출"
10
+ "response": "응답 결과",
11
+ "title": "플러그인 상세 정보",
12
+ "tool_call": "도구 호출 요청"
13
13
  },
14
14
  "detailModal": {
15
15
  "customPlugin": {
16
16
  "description": "자세한 내용은 편집 페이지에서 확인하세요",
17
17
  "editBtn": "지금 편집",
18
- "title": "이것은 사용자 정의 플러그인입니다"
18
+ "title": "사용자 정의 플러그인입니다"
19
19
  },
20
20
  "emptyState": {
21
- "description": "이 플러그인을 설치한 후 플러그인 기능과 설정 옵션을 확인하세요",
22
- "title": "설치 후 플러그인 세부 정보 보기"
21
+ "description": "플러그인 기능과 설정 옵션을 보려면 먼저 이 플러그인을 설치하세요",
22
+ "title": "설치 후 플러그인 상세 정보 보기"
23
23
  },
24
24
  "info": {
25
25
  "description": "API 설명",
26
26
  "name": "API 이름"
27
27
  },
28
28
  "tabs": {
29
- "info": "플러그인 능력",
29
+ "info": "플러그인 기능",
30
30
  "manifest": "설치 파일",
31
31
  "settings": "설정"
32
32
  },
33
- "title": "플러그인 상세정보"
33
+ "title": "플러그인 상세 정보"
34
34
  },
35
35
  "dev": {
36
- "confirmDeleteDevPlugin": "로컬 플러그인을 삭제하시겠습니까? 삭제 후에는 복구할 수 없습니다.",
36
+ "confirmDeleteDevPlugin": "로컬 플러그인을 삭제하면 복구할 수 없습니다. 삭제하시겠습니까?",
37
37
  "customParams": {
38
38
  "useProxy": {
39
- "label": "프록시 사용 (크로스 도메인 오류가 발생할 경우 이 옵션을 활성화한 다시 설치해 보세요)"
39
+ "label": "프록시를 통해 설치 (교차 출처 오류 발생 이 옵션을 켜고 다시 설치해 보세요)"
40
40
  }
41
41
  },
42
- "deleteSuccess": "플러그인이 성공적으로 삭제되었습니다.",
42
+ "deleteSuccess": "플러그인 삭제 성공",
43
43
  "manifest": {
44
44
  "identifier": {
45
45
  "desc": "플러그인의 고유 식별자",
@@ -61,19 +61,19 @@
61
61
  "title": "고급 설정"
62
62
  },
63
63
  "args": {
64
- "desc": "실행 명령에 전달할 매개변수 목록으로, 일반적으로 여기에서 MCP 서버 이름 또는 시작 스크립트 경로를 입력합니다.",
64
+ "desc": "명령 실행에 전달되는 매개변수 목록, 일반적으로 MCP 서버 이름 또는 시작 스크립트 경로를 입력",
65
65
  "label": "명령 매개변수",
66
66
  "placeholder": "예: mcp-hello-world",
67
67
  "required": "시작 매개변수를 입력하세요"
68
68
  },
69
69
  "auth": {
70
70
  "bear": "API 키",
71
- "desc": "MCP 서버의 인증 방식을 선택하세요",
71
+ "desc": "MCP 서버 인증 방식 선택",
72
72
  "label": "인증 유형",
73
73
  "none": "인증 불필요",
74
74
  "placeholder": "인증 유형을 선택하세요",
75
75
  "token": {
76
- "desc": "API 키 또는 Bearer 토큰을 입력하세요",
76
+ "desc": "API 키 또는 Bearer 토큰 입력",
77
77
  "label": "API 키",
78
78
  "placeholder": "sk-xxxxx",
79
79
  "required": "인증 토큰을 입력하세요"
@@ -86,34 +86,34 @@
86
86
  "desc": "MCP STDIO 서버를 시작하는 실행 파일 또는 스크립트",
87
87
  "label": "명령",
88
88
  "placeholder": "예: npx / uv / docker 등",
89
- "required": "시작 명령어를 입력하세요"
89
+ "required": "시작 명령을 입력하세요"
90
90
  },
91
91
  "desc": {
92
- "desc": "플러그인에 대한 설명 추가",
92
+ "desc": "플러그인 설명 추가",
93
93
  "label": "플러그인 설명",
94
- "placeholder": " 플러그인의 사용 설명 상황 등의 정보를 추가하세요"
94
+ "placeholder": "플러그인 사용법과 시나리오 정보 보충"
95
95
  },
96
96
  "endpoint": {
97
- "desc": "당신의 MCP 스트리밍 HTTP 서버 주소를 입력하세요",
97
+ "desc": "MCP Streamable HTTP 서버 주소 입력",
98
98
  "label": "MCP 엔드포인트 URL"
99
99
  },
100
100
  "env": {
101
101
  "add": "행 추가",
102
- "desc": "MCP 서버에 필요한 환경 변수를 입력하세요.",
103
- "duplicateKeyError": "필드 키는 고유해야 합니다.",
104
- "formValidationFailed": "양식 검증 실패, 매개변수 형식을 확인하세요.",
105
- "keyRequired": "필드 키는 비워둘 수 없습니다.",
102
+ "desc": "MCP 서버에 필요한 환경 변수 입력",
103
+ "duplicateKeyError": "키는 고유해야 합니다",
104
+ "formValidationFailed": " 검증 실패, 매개변수 형식을 확인하세요",
105
+ "keyRequired": "키는 비워둘 수 없습니다",
106
106
  "label": "MCP 서버 환경 변수",
107
- "stringifyError": "매개변수를 직렬화할 수 없습니다. 매개변수 형식을 확인하세요."
107
+ "stringifyError": "매개변수를 직렬화할 수 없습니다, 형식을 확인하세요"
108
108
  },
109
109
  "headers": {
110
110
  "add": "행 추가",
111
- "desc": "요청 헤더를 입력하세요",
111
+ "desc": "요청 헤더 입력",
112
112
  "label": "HTTP 헤더"
113
113
  },
114
114
  "identifier": {
115
- "desc": "당신의 MCP 플러그인에 이름을 지정하세요, 영어 문자 사용 필요",
116
- "invalid": "영어 문자, 숫자, - _ 기호만 입력할 수 있습니다",
115
+ "desc": "MCP 플러그인 이름 지정, 영문자 사용 필요",
116
+ "invalid": "식별자는 문자, 숫자, 하이픈, 밑줄만 포함할 수 있습니다",
117
117
  "label": "MCP 플러그인 이름",
118
118
  "placeholder": "예: my-mcp-plugin",
119
119
  "required": "MCP 서비스 식별자를 입력하세요"
@@ -121,63 +121,63 @@
121
121
  "previewManifest": "플러그인 설명 파일 미리보기",
122
122
  "quickImport": "JSON 구성 빠른 가져오기",
123
123
  "quickImportError": {
124
- "empty": "입력 내용이 비어 있을 수 없습니다",
125
- "invalidJson": "유효하지 않은 JSON 형식입니다",
124
+ "empty": "입력 내용이 비어 있습니다",
125
+ "invalidJson": "유효하지 않은 JSON 형식",
126
126
  "invalidStructure": "JSON 형식이 유효하지 않습니다"
127
127
  },
128
- "stdioNotSupported": "현재 환경에서는 stdio 유형의 MCP 플러그인이 지원되지 않습니다",
128
+ "stdioNotSupported": "현재 환경은 stdio 유형 MCP 플러그인을 지원하지 않습니다",
129
129
  "testConnection": "연결 테스트",
130
- "testConnectionTip": "연결 테스트가 성공해야 MCP 플러그인을 정상적으로 사용할 수 있습니다",
130
+ "testConnectionTip": "연결 테스트 성공 MCP 플러그인을 정상 사용할 수 있습니다",
131
131
  "type": {
132
- "desc": "MCP 플러그인의 통신 방식을 선택하세요, 웹 버전은 스트리밍 HTTP만 지원합니다",
133
- "httpFeature1": "웹 버전과 데스크톱 버전 호환",
134
- "httpFeature2": "원격 MCP 서버에 연결, 추가 설치 및 구성 필요 없음",
132
+ "desc": "MCP 플러그인 통신 방식 선택, 웹 버전은 Streamable HTTP만 지원",
133
+ "httpFeature1": "웹 데스크톱 호환",
134
+ "httpFeature2": "원격 MCP 서버 연결, 추가 설치 불필요",
135
135
  "httpShortDesc": "스트리밍 HTTP 기반 통신 프로토콜",
136
136
  "label": "MCP 플러그인 유형",
137
137
  "stdioFeature1": "더 낮은 통신 지연, 로컬 실행에 적합",
138
- "stdioFeature2": "로컬에 MCP 서버를 설치하고 실행해야 ",
138
+ "stdioFeature2": "로컬에 MCP 서버 설치 실행 필요",
139
139
  "stdioNotAvailable": "STDIO 모드는 데스크톱 버전에서만 사용 가능",
140
- "stdioShortDesc": "표준 입력 출력을 기반으로 한 통신 프로토콜",
140
+ "stdioShortDesc": "표준 입출력 기반 통신 프로토콜",
141
141
  "title": "MCP 플러그인 유형"
142
142
  },
143
143
  "url": {
144
- "desc": "MCP 서버의 스트리밍 HTTP 주소를 입력하세요. SSE 모드는 지원하지 않습니다.",
144
+ "desc": "MCP 서버 Streamable HTTP 주소 입력, SSE 모드 미지원",
145
145
  "invalid": "유효한 URL 주소를 입력하세요",
146
- "label": "HTTP 엔드포인트 URL",
146
+ "label": "Streamable HTTP 엔드포인트 URL",
147
147
  "required": "MCP 서비스 URL을 입력하세요"
148
148
  }
149
149
  },
150
150
  "meta": {
151
151
  "author": {
152
- "desc": "플러그인 작성자",
153
- "label": "작성자"
152
+ "desc": "플러그인 제작자",
153
+ "label": "제작자"
154
154
  },
155
155
  "avatar": {
156
- "desc": "플러그인 아이콘으로는 Emoji 또는 URL 사용할 수 있습니다.",
156
+ "desc": "플러그인 아이콘, 이모지 또는 URL 사용 가능",
157
157
  "label": "아이콘"
158
158
  },
159
159
  "description": {
160
160
  "desc": "플러그인 설명",
161
161
  "label": "설명",
162
- "placeholder": "검색 엔진에서 정보 가져오기"
162
+ "placeholder": "검색 엔진에서 정보 조회"
163
163
  },
164
- "formFieldRequired": "이 필드는 필수 입력 사항입니다.",
164
+ "formFieldRequired": "이 필드는 필수입니다",
165
165
  "homepage": {
166
166
  "desc": "플러그인 홈페이지",
167
167
  "label": "홈페이지"
168
168
  },
169
169
  "identifier": {
170
- "desc": "플러그인의 고유 식별자는 manifest에서 자동으로 인식됩니다.",
171
- "errorDuplicate": "식별자가 이미 있는 플러그인과 중복되었습니다. 식별자를 수정해주세요.",
170
+ "desc": "플러그인 고유 식별자, manifest에서 자동 인식",
171
+ "errorDuplicate": "식별자가 기존 플러그인과 중복됩니다, 수정하세요",
172
172
  "label": "식별자",
173
- "pattenErrorMessage": "영문자, 숫자, - 및 _만 입력할 수 있습니다."
173
+ "pattenErrorMessage": "영문자, 숫자, - 및 _ 만 입력할 수 있습니다"
174
174
  },
175
175
  "lobe": "{{appName}} 플러그인",
176
176
  "manifest": {
177
- "desc": "{{appName}} 이 링크를 통해 플러그인을 설치합니다.",
178
- "label": "Manifest 파일 URL",
177
+ "desc": "{{appName}} 이 링크를 통해 플러그인을 설치합니다",
178
+ "label": "플러그인 설명 파일 (Manifest) URL",
179
179
  "preview": "Manifest 미리보기",
180
- "refresh": "새로 고침"
180
+ "refresh": "새로고침"
181
181
  },
182
182
  "openai": "OpenAI 플러그인",
183
183
  "title": {
@@ -187,28 +187,28 @@
187
187
  }
188
188
  },
189
189
  "metaConfig": "플러그인 메타 정보 구성",
190
- "modalDesc": "사용자 정의 플러그인을 추가하면 플러그인 개발을 검증하거나 세션에서 직접 사용할 있습니다. 플러그인 개발은 <1>개발 문서↗</>를 참조하세요.",
190
+ "modalDesc": "사용자 정의 플러그인 추가 플러그인 개발 검증 대화에서 직접 사용 가능. 플러그인 개발은 <1>개발 문서↗</> 참고",
191
191
  "openai": {
192
192
  "importUrl": "URL 링크에서 가져오기",
193
193
  "schema": "스키마"
194
194
  },
195
195
  "preview": {
196
196
  "api": {
197
- "noParams": "이 도구에는 매개변수가 없습니다",
197
+ "noParams": "이 도구는 매개변수가 없습니다",
198
198
  "noResults": "검색 조건에 맞는 API를 찾을 수 없습니다",
199
199
  "params": "매개변수:",
200
200
  "searchPlaceholder": "도구 검색..."
201
201
  },
202
- "card": "플러그인 미리보기",
202
+ "card": "플러그인 미리보기 표시",
203
203
  "desc": "플러그인 설명 미리보기",
204
204
  "empty": {
205
- "desc": "구성을 완료한 후, 이곳에서 플러그인이 지원하는 도구 기능을 미리 수 있습니다",
205
+ "desc": "구성 완료 이곳에서 플러그인 지원 도구 기능을 미리볼 수 있습니다",
206
206
  "title": "플러그인 구성 후 미리보기 시작"
207
207
  },
208
208
  "title": "플러그인 이름 미리보기"
209
209
  },
210
210
  "save": "플러그인 설치",
211
- "saveSuccess": "플러그인 설정이 성공적으로 저장되었습니다.",
211
+ "saveSuccess": "플러그인 설정 저장 성공",
212
212
  "tabs": {
213
213
  "manifest": "기능 설명 목록 (Manifest)",
214
214
  "meta": "플러그인 메타 정보"
@@ -218,21 +218,21 @@
218
218
  "edit": "사용자 정의 플러그인 편집"
219
219
  },
220
220
  "type": {
221
- "lobe": "LobeChat 플러그인",
221
+ "lobe": "{{appName}} 플러그인",
222
222
  "openai": "OpenAI 플러그인"
223
223
  },
224
224
  "update": "업데이트",
225
- "updateSuccess": "플러그인 설정이 성공적으로 업데이트되었습니다."
225
+ "updateSuccess": "플러그인 설정 업데이트 성공"
226
226
  },
227
227
  "error": {
228
- "fetchError": "해당 manifest 링크를 요청하는 오류가 발생했습니다. 링크의 유효성을 확인하고, 링크가 크로스 도메인 액세스를 허용하는지 확인하세요.",
228
+ "fetchError": "manifest 링크 요청 실패, 링크 유효성 교차 출처 접근 허용 여부를 확인하세요",
229
229
  "installError": "플러그인 {{name}} 설치 실패",
230
- "manifestInvalid": "manifest 규격에 맞지 않습니다. 유효성 검사 결과: \n\n {{error}}",
231
- "noManifest": "설명 파일이 없습니다",
232
- "openAPIInvalid": "OpenAPI 파싱에 실패했습니다. 오류: \n\n {{error}}",
233
- "reinstallError": "플러그인 {{name}} 다시 설치 중 오류가 발생했습니다.",
234
- "testConnectionFailed": "매니페스트를 가져오는 실패했습니다: {{error}}",
235
- "urlError": " 링크는 JSON 형식의 내용을 반환하지 않습니다. 유효한 링크인지 확인하세요."
230
+ "manifestInvalid": "manifest 규격 불일치, 검증 결과: \n\n {{error}}",
231
+ "noManifest": "설명 파일이 존재하지 않습니다",
232
+ "openAPIInvalid": "OpenAPI 파싱 실패, 오류: \n\n {{error}}",
233
+ "reinstallError": "플러그인 {{name}} 새로고침 실패",
234
+ "testConnectionFailed": "Manifest 가져오기 실패: {{error}}",
235
+ "urlError": "링크가 JSON 형식 내용을 반환하지 않습니다, 유효한 링크인지 확인하세요"
236
236
  },
237
237
  "inspector": {
238
238
  "args": "매개변수 목록 보기",
@@ -241,7 +241,7 @@
241
241
  "list": {
242
242
  "item": {
243
243
  "deprecated.title": "삭제됨",
244
- "local.config": "구성",
244
+ "local.config": "설정",
245
245
  "local.title": "사용자 정의"
246
246
  }
247
247
  },
@@ -254,7 +254,7 @@
254
254
  "listLocalFiles": "파일 목록 보기",
255
255
  "moveLocalFiles": "파일 이동",
256
256
  "readLocalFile": "파일 내용 읽기",
257
- "renameLocalFile": "이름 바꾸기",
257
+ "renameLocalFile": "파일 이름 변경",
258
258
  "searchLocalFiles": "파일 검색",
259
259
  "writeLocalFile": "파일 쓰기"
260
260
  },
@@ -263,31 +263,31 @@
263
263
  "mcpInstall": {
264
264
  "CHECKING_INSTALLATION": "설치 환경 확인 중...",
265
265
  "COMPLETED": "설치 완료",
266
- "CONFIGURATION_REQUIRED": "관련 구성을 완료한 후 설치를 계속 진행하세요",
266
+ "CONFIGURATION_REQUIRED": "관련 설정을 완료한 후 설치를 계속하세요",
267
267
  "ERROR": "설치 오류",
268
268
  "FETCHING_MANIFEST": "플러그인 설명 파일 가져오는 중...",
269
269
  "GETTING_SERVER_MANIFEST": "MCP 서버 초기화 중...",
270
270
  "INSTALLING_PLUGIN": "플러그인 설치 중...",
271
- "configurationDescription": "이 MCP 플러그인은 정상 작동을 위해 구성 매개변수가 필요합니다. 필수 구성 정보를 입력하세요.",
272
- "configurationRequired": "플러그인 매개변수 구성",
273
- "continueInstall": "설치 계속하기",
274
- "dependenciesDescription": "이 플러그인은 정상 작동을 위해 다음 시스템 종속 항목 설치가 필요합니다. 안내에 따라 누락된 종속 항목을 설치한 후 다시 확인하여 설치를 계속 진행하세요.",
275
- "dependenciesRequired": "플러그인 시스템 종속 항목을 설치하세요",
271
+ "configurationDescription": "이 MCP 플러그인은 정상 작동을 위해 설정 매개변수가 필요합니다. 필수 정보를 입력하세요",
272
+ "configurationRequired": "플러그인 매개변수 설정",
273
+ "continueInstall": "설치 계속",
274
+ "dependenciesDescription": "이 플러그인은 정상 작동을 위해 다음 시스템 의존성이 필요합니다. 안내에 따라 누락된 의존성을 설치한 후 다시 확인하여 설치를 계속하세요.",
275
+ "dependenciesRequired": "플러그인 시스템 의존성 설치 필요",
276
276
  "dependencyStatus": {
277
277
  "installed": "설치됨",
278
- "notInstalled": "설치되지 않음",
278
+ "notInstalled": "미설치",
279
279
  "requiredVersion": "필요 버전: {{version}}"
280
280
  },
281
281
  "errorDetails": {
282
282
  "args": "매개변수",
283
- "command": "명령어",
283
+ "command": "명령",
284
284
  "connectionParams": "연결 매개변수",
285
285
  "env": "환경 변수",
286
286
  "errorOutput": "오류 로그",
287
287
  "exitCode": "종료 코드",
288
- "hideDetails": "세부 정보 숨기기",
288
+ "hideDetails": "상세 정보 숨기기",
289
289
  "originalError": "원본 오류",
290
- "showDetails": "세부 정보 보기"
290
+ "showDetails": "상세 정보 보기"
291
291
  },
292
292
  "errorTypes": {
293
293
  "AUTHORIZATION_ERROR": "권한 인증 오류",
@@ -297,15 +297,75 @@
297
297
  "UNKNOWN_ERROR": "알 수 없는 오류",
298
298
  "VALIDATION_ERROR": "매개변수 검증 실패"
299
299
  },
300
- "installError": "MCP 플러그인 설치 실패, 실패 원인: {{detail}}",
300
+ "installError": "MCP 플러그인 설치 실패, 원인: {{detail}}",
301
301
  "installMethods": {
302
302
  "manual": "수동 설치:",
303
303
  "recommended": "권장 설치 방법:"
304
304
  },
305
- "recheckDependencies": "다시 확인",
305
+ "recheckDependencies": "의존성 재확인",
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": "여러 페이지 내용 읽기",
@@ -315,14 +375,14 @@
315
375
  "config": {
316
376
  "addKey": "키 추가",
317
377
  "close": "삭제",
318
- "confirm": "구성이 완료되었습니다. 다시 시도하십시오."
378
+ "confirm": "설정 완료 재시도"
319
379
  },
320
380
  "crawPages": {
321
381
  "crawling": "링크 인식 중",
322
382
  "detail": {
323
383
  "preview": "미리보기",
324
384
  "raw": "원본 텍스트",
325
- "tooLong": "텍스트 내용이 너무 깁니다. 대화 맥락은 앞의 {{characters}}자만 유지되며, 초과 부분은 대화 맥락에 포함되지 않습니다."
385
+ "tooLong": "텍스트가 너무 깁니다. 대화 컨텍스트는 처음 {{characters}}자만 유지하며, 초과 부분은 대화에 포함되지 않습니다."
326
386
  },
327
387
  "meta": {
328
388
  "crawler": "크롤링 모드",
@@ -330,14 +390,14 @@
330
390
  }
331
391
  },
332
392
  "searchxng": {
333
- "baseURL": "입력하십시오",
334
- "description": "SearchXNG URL을 입력하면 인터넷 검색을 시작할 수 있습니다.",
335
- "keyPlaceholder": "키를 입력하십시오",
336
- "title": "SearchXNG 검색 엔진 구성",
337
- "unconfiguredDesc": "관리자에게 연락하여 SearchXNG 검색 엔진 구성을 완료하십시오. 인터넷 검색을 시작할 수 있습니다.",
338
- "unconfiguredTitle": "SearchXNG 검색 엔진이 아직 구성되지 않았습니다."
339
- },
340
- "title": "인터넷 검색"
393
+ "baseURL": "입력하세요",
394
+ "description": "SearchXNG 웹사이트 주소를 입력하면 네트워크 검색을 시작할 수 있습니다",
395
+ "keyPlaceholder": "키를 입력하세요",
396
+ "title": "SearchXNG 검색 엔진 설정",
397
+ "unconfiguredDesc": "관리자에게 문의하여 SearchXNG 검색 엔진 설정을 완료한 네트워크 검색을 시작하세요",
398
+ "unconfiguredTitle": "SearchXNG 검색 엔진 미설정"
399
+ },
400
+ "title": "네트워크 검색"
341
401
  },
342
402
  "setting": "플러그인 설정",
343
403
  "settings": {
@@ -352,17 +412,17 @@
352
412
  },
353
413
  "connection": {
354
414
  "args": "시작 매개변수",
355
- "command": "시작 명령어",
415
+ "command": "시작 명령",
356
416
  "title": "연결 정보",
357
417
  "type": "연결 유형",
358
418
  "url": "서비스 주소"
359
419
  },
360
420
  "edit": "편집",
361
- "envConfigDescription": "이 구성은 MCP 서버 시작 시 환경 변수로 프로세스에 전달됩니다",
362
- "httpTypeNotice": "HTTP 유형의 MCP 플러그인은 현재 구성할 환경 변수가 없습니다",
421
+ "envConfigDescription": "이 설정은 MCP 서버 시작 시 환경 변수로 프로세스에 전달됩니다",
422
+ "httpTypeNotice": "HTTP 유형 MCP 플러그인은 현재 설정할 환경 변수가 없습니다",
363
423
  "indexUrl": {
364
424
  "title": "마켓 인덱스",
365
- "tooltip": "온라인 편집은 지원되지 않습니다. 배포 환경 변수를 통해 설정해주세요."
425
+ "tooltip": "온라인 편집은 지원하지 않으며, 배포 환경 변수로 설정하세요"
366
426
  },
367
427
  "messages": {
368
428
  "connectionUpdateFailed": "연결 정보 업데이트 실패",
@@ -370,34 +430,34 @@
370
430
  "envUpdateFailed": "환경 변수 저장 실패",
371
431
  "envUpdateSuccess": "환경 변수 저장 성공"
372
432
  },
373
- "modalDesc": "플러그인 마켓의 주소를 구성하면 사용자 정의 플러그인 마켓을 사용할 수 있습니다.",
433
+ "modalDesc": "플러그인 마켓 주소를 설정하면 사용자 정의 플러그인 마켓을 사용할 수 있습니다",
374
434
  "rules": {
375
435
  "argsRequired": "시작 매개변수를 입력하세요",
376
- "commandRequired": "시작 명령어를 입력하세요",
436
+ "commandRequired": "시작 명령을 입력하세요",
377
437
  "urlRequired": "서비스 주소를 입력하세요"
378
438
  },
379
439
  "saveSettings": "설정 저장",
380
440
  "title": "플러그인 마켓 설정"
381
441
  },
382
- "showInPortal": "작업 영역에서 자세히 확인하세요",
442
+ "showInPortal": "작업 공간에서 상세 정보를 확인하세요",
383
443
  "store": {
384
444
  "actions": {
385
445
  "cancel": "설치 취소",
386
- "confirmUninstall": "이 플러그인을 제거하려고 합니다. 제거하면 플러그인 구성이 지워지므로 작업을 확인하세요.",
387
- "detail": "상세정보",
446
+ "confirmUninstall": "이 플러그인을 제거하면 설정도 삭제됩니다. 계속하시겠습니까?",
447
+ "detail": "상세 정보",
388
448
  "install": "설치",
389
449
  "manifest": "설치 파일 편집",
390
450
  "settings": "설정",
391
451
  "uninstall": "제거"
392
452
  },
393
- "communityPlugin": "커뮤니티 플러그인",
394
- "customPlugin": "사용자 정의 플러그인",
453
+ "communityPlugin": "서드파티 커뮤니티",
454
+ "customPlugin": "사용자 정의",
395
455
  "empty": "설치된 플러그인이 없습니다",
396
- "emptySelectHint": "플러그인을 선택하여 자세한 정보를 미리보기 하세요",
456
+ "emptySelectHint": "플러그인을 선택하여 상세 정보를 미리보세요",
397
457
  "installAllPlugins": "모두 설치",
398
- "networkError": "플러그인 스토어를 가져오는 실패했습니다. 네트워크 연결을 확인한 후 다시 시도하십시오",
399
- "placeholder": "플러그인 이름 또는 키워드를 검색하세요...",
400
- "releasedAt": "{{createdAt}}에 출시",
458
+ "networkError": "플러그인 스토어를 불러오지 못했습니다. 네트워크 연결을 확인 후 다시 시도하세요",
459
+ "placeholder": "플러그인 이름, 설명 또는 키워드 검색...",
460
+ "releasedAt": "{{createdAt}}에 출시됨",
401
461
  "tabs": {
402
462
  "installed": "설치됨",
403
463
  "mcp": "MCP 플러그인",