@moraya/core 0.2.0 → 0.4.0

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 (54) hide show
  1. package/README.md +215 -41
  2. package/dist/ai/drivers/claude.d.ts +6 -0
  3. package/dist/ai/drivers/claude.js +229 -0
  4. package/dist/ai/drivers/claude.js.map +1 -0
  5. package/dist/ai/drivers/gemini.d.ts +6 -0
  6. package/dist/ai/drivers/gemini.js +212 -0
  7. package/dist/ai/drivers/gemini.js.map +1 -0
  8. package/dist/ai/drivers/index.d.ts +14 -0
  9. package/dist/ai/drivers/index.js +617 -0
  10. package/dist/ai/drivers/index.js.map +1 -0
  11. package/dist/ai/drivers/ollama.d.ts +8 -0
  12. package/dist/ai/drivers/ollama.js +158 -0
  13. package/dist/ai/drivers/ollama.js.map +1 -0
  14. package/dist/ai/drivers/openai.d.ts +7 -0
  15. package/dist/ai/drivers/openai.js +225 -0
  16. package/dist/ai/drivers/openai.js.map +1 -0
  17. package/dist/ai/drivers/tool-bridge.d.ts +37 -0
  18. package/dist/ai/drivers/tool-bridge.js +138 -0
  19. package/dist/ai/drivers/tool-bridge.js.map +1 -0
  20. package/dist/ai/drivers/types.d.ts +2 -0
  21. package/dist/ai/drivers/types.js +1 -0
  22. package/dist/ai/drivers/types.js.map +1 -0
  23. package/dist/ai/drivers/util.d.ts +13 -0
  24. package/dist/ai/drivers/util.js +40 -0
  25. package/dist/ai/drivers/util.js.map +1 -0
  26. package/dist/ai/image.d.ts +37 -0
  27. package/dist/ai/image.js +36 -0
  28. package/dist/ai/image.js.map +1 -0
  29. package/dist/ai/index.d.ts +37 -0
  30. package/dist/ai/index.js +826 -0
  31. package/dist/ai/index.js.map +1 -0
  32. package/dist/ai/types.d.ts +92 -0
  33. package/dist/ai/types.js +1 -0
  34. package/dist/ai/types.js.map +1 -0
  35. package/dist/ai/voice.d.ts +42 -0
  36. package/dist/ai/voice.js +34 -0
  37. package/dist/ai/voice.js.map +1 -0
  38. package/dist/chat-markdown/index.d.ts +82 -0
  39. package/dist/chat-markdown/index.js +165 -0
  40. package/dist/chat-markdown/index.js.map +1 -0
  41. package/dist/i18n/locales/ar.json +806 -732
  42. package/dist/i18n/locales/de.json +912 -838
  43. package/dist/i18n/locales/en.json +34 -5
  44. package/dist/i18n/locales/es.json +952 -876
  45. package/dist/i18n/locales/fr.json +1784 -1708
  46. package/dist/i18n/locales/hi.json +1808 -1734
  47. package/dist/i18n/locales/ja.json +839 -765
  48. package/dist/i18n/locales/ko.json +1783 -1709
  49. package/dist/i18n/locales/pt.json +894 -820
  50. package/dist/i18n/locales/ru.json +812 -738
  51. package/dist/i18n/locales/zh-CN.json +34 -5
  52. package/dist/i18n/locales/zh-Hant.json +1039 -965
  53. package/dist/types-CwM77g7u.d.ts +88 -0
  54. package/package.json +26 -2
@@ -1,60 +1,58 @@
1
1
  {
2
2
  "admin": {
3
- "__mt": true,
4
- "title": "Team Admin",
5
- "tab_members": "Members",
6
- "tab_kbs": "Knowledge Bases",
7
- "tab_usage": "Usage",
8
- "members": "Members",
9
- "knowledge_bases": "Knowledge Bases",
10
- "invite_member": "Invite Member",
11
- "remove_member": "Remove",
12
- "create_kb": "Create KB",
13
- "no_members": "No members yet.",
14
- "no_kbs": "No knowledge bases yet.",
15
- "col_name": "Name",
16
- "col_email": "Email",
17
- "col_role": "Role",
18
- "col_joined": "Joined",
3
+ "title": "팀 관리자",
4
+ "tab_members": "회원",
5
+ "tab_kbs": "기술 자료",
6
+ "tab_usage": "용법",
7
+ "members": "회원",
8
+ "knowledge_bases": "기술 자료",
9
+ "invite_member": "회원 초대",
10
+ "remove_member": "제거하다",
11
+ "create_kb": "KB 만들기",
12
+ "no_members": "아직 회원이 없습니다.",
13
+ "no_kbs": "아직 기술 자료가 없습니다.",
14
+ "col_name": "이름",
15
+ "col_email": "이메일",
16
+ "col_role": "역할",
17
+ "col_joined": "가입됨",
19
18
  "e2e": "E2E",
20
- "ai": "AI",
21
- "usage_summary": "Usage Summary",
22
- "storage": "Storage",
23
- "notes": "Notes",
24
- "ai_queries": "AI Queries",
25
- "active_members": "Active Members",
26
- "this_month": "this month"
19
+ "ai": "일체 포함",
20
+ "usage_summary": "사용량 요약",
21
+ "storage": "저장",
22
+ "notes": "메모",
23
+ "ai_queries": "AI 쿼리",
24
+ "active_members": "활동 회원",
25
+ "this_month": "이번 "
27
26
  },
28
27
  "agent": {
29
- "__mt": true,
30
- "title": "AI Agent",
31
- "subtitle": "Let AI handle multi-step tasks across your knowledge base",
32
- "query_placeholder": "Describe a task for the agent to complete...",
33
- "run": "Run",
34
- "pause": "Pause",
35
- "resume": "Resume",
36
- "cancel": "Cancel",
37
- "new_task": "New Task",
38
- "final_answer": "Final Answer",
39
- "upgrade_required": "AI Agent is available on Personal and above plans.",
28
+ "title": "AI 에이전트",
29
+ "subtitle": "AI 지식 기반 전반에 걸쳐 다단계 작업을 처리하도록 하세요.",
30
+ "query_placeholder": "에이전트가 완료해야 작업을 설명하세요.",
31
+ "run": "달리다",
32
+ "pause": "정지시키다",
33
+ "resume": "재개하다",
34
+ "cancel": "취소",
35
+ "new_task": "새 작업",
36
+ "final_answer": "최종 답변",
37
+ "upgrade_required": "AI Agent는 Personal 이상의 요금제에서 사용할 수 있습니다.",
40
38
  "mode": {
41
- "react": "ReAct (Adaptive)",
42
- "plan_execute": "Plan & Execute"
39
+ "react": "리액트(적응형)",
40
+ "plan_execute": "계획 실행"
43
41
  },
44
42
  "history": {
45
- "title": "Agent History",
46
- "search_placeholder": "Search tasks...",
47
- "no_results": "No tasks match your search.",
48
- "empty": "No agent tasks yet. Start your first task!",
49
- "steps": "steps"
43
+ "title": "에이전트 기록",
44
+ "search_placeholder": "작업 검색...",
45
+ "no_results": "검색어와 일치하는 작업이 없습니다.",
46
+ "empty": "아직 에이전트 작업이 없습니다. 번째 작업을 시작하세요!",
47
+ "steps": "단계"
50
48
  },
51
49
  "market": {
52
- "title": "Agent Templates",
53
- "subtitle": "Browse ready-to-use agent templates",
54
- "search_placeholder": "Search templates...",
55
- "no_results": "No templates match your search.",
56
- "all_tags": "All",
57
- "use": "Use Template"
50
+ "title": "에이전트 템플릿",
51
+ "subtitle": "즉시 사용 가능한 에이전트 템플릿 찾아보기",
52
+ "search_placeholder": "템플릿 검색...",
53
+ "no_results": "검색어와 일치하는 템플릿이 없습니다.",
54
+ "all_tags": "모두",
55
+ "use": "템플릿 사용"
58
56
  }
59
57
  },
60
58
  "ai": {
@@ -101,20 +99,21 @@
101
99
  "testing": "테스트 중...",
102
100
  "connected": "연결 성공!",
103
101
  "failed": "실패",
104
- "test_failed": "연결 테스트 실패"
102
+ "test_failed": "연결 테스트 실패",
103
+ "endpoint_id_placeholder": "추론 엔드포인트 ID 입력"
105
104
  },
106
105
  "providers": {
107
- "claude": "Anthropic Claude",
106
+ "claude": "인류애적인 클로드",
108
107
  "openai": "OpenAI",
109
- "gemini": "Google Gemini",
108
+ "gemini": "구글 제미니",
110
109
  "deepseek": "DeepSeek",
111
110
  "ollama": "Ollama (로컬)",
112
111
  "custom": "사용자 지정 API",
113
- "grok": "xAI Grok",
114
- "mistral": "Mistral AI",
115
- "glm": "Zhipu GLM",
112
+ "grok": "xAI 그록",
113
+ "mistral": "미스트랄 AI",
114
+ "glm": "지푸 GLM",
116
115
  "minimax": "MiniMax",
117
- "doubao": "Doubao (ByteDance)"
116
+ "doubao": "두바오(ByteDance)"
118
117
  },
119
118
  "multi_model": {
120
119
  "add_model": "+ 모델 추가",
@@ -129,7 +128,7 @@
129
128
  "title": "이미지 생성 AI",
130
129
  "provider": "서비스 제공자",
131
130
  "provider_openai": "OpenAI DALL-E",
132
- "provider_grok": "Grok (xAI)",
131
+ "provider_grok": "그록(xAI)",
133
132
  "provider_custom": "사용자 지정 (OpenAI 호환)",
134
133
  "api_key": "API 키",
135
134
  "api_key_placeholder": "이미지 API 키 입력",
@@ -142,9 +141,9 @@
142
141
  "size_large": "대",
143
142
  "size_medium": "중",
144
143
  "size_small": "소",
145
- "provider_gemini": "Google Gemini Imagen",
146
- "provider_qwen": "Qwen (Alibaba)",
147
- "provider_doubao": "Doubao (ByteDance)"
144
+ "provider_gemini": "Google Gemini 이미지",
145
+ "provider_qwen": "퀀(알리바바)",
146
+ "provider_doubao": "두바오(ByteDance)"
148
147
  },
149
148
  "commands": {
150
149
  "write": "작성",
@@ -174,13 +173,13 @@
174
173
  "truncation_continue": "출력 길이 제한으로 이전 응답이 잘렸습니다. 위의 텍스트는 저장되었습니다. 이제 필요한 도구 호출을 통해 작업을 완료하세요. 내용을 반복하지 말고 도구 인수에서 직접 사용하세요.",
175
174
  "continuation_prompt": "계속 진행하여 작업을 완료하기 위한 필요한 도구 호출을 수행하세요. 이미 말한 내용을 반복하지 말고 도구 호출을 직접 진행하세요.",
176
175
  "mcp_tool_prompt": "{toolName} 도구를 사용하세요 ({serverName}에서 제공)",
177
- "review_context": "---\nThis document has {count} pending review comments:\n{items}\n---",
178
- "review_context_item": "[Line {line}] @{author}: \"{text}\"",
179
- "review_context_item_unanchored": "[Position lost] @{author}: \"{text}\"",
180
- "ai_review_request": "Please review the current document and identify issues across four dimensions: logic, expression, fact, and structure. Use the write_ai_reviews tool to return up to 10 structured review comments. For each, provide markedText (an exact text fragment from the document being reviewed), comment (your review), and dimension (one of: logic, expression, fact, structure). If your model does not support tool calls, return the same data as a JSON code block.",
181
- "ai_improve_request": "The document has {count} pending review comments:\n{items}\n\nPlease apply these reviews and improve the document. Use the update_editor_content tool to write the improved full document. Preserve formatting and original structure where possible.",
182
- "ai_summary_request": "The document has {count} review comments (including resolved):\n{items}\n\nPlease summarize them across four dimensions (logic / expression / fact / structure), and rate the priority (high / medium / low) for each dimension.",
183
- "ai_respond_request": "The document contains this text:\n\"{markedText}\"\n\nThe reviewer commented:\n\"{commentText}\"\n\nPlease provide specific suggestions for revision. Do NOT modify the document — give suggestions only."
176
+ "review_context": "---\n이 문서에는 검토 의견이 대기 중인 {count} 있습니다.\n{items}\n---",
177
+ "review_context_item": "[라인 {line}] @{author}: \"{text}\"",
178
+ "review_context_item_unanchored": "[위치 상실] @{author}: \"{text}\"",
179
+ "ai_review_request": "현재 문서를 검토하고 논리, 표현, 사실, 구조의 가지 차원에서 문제를 식별하십시오. write_ai_reviews 도구를 사용하면 구조화된 리뷰 댓글을 최대 10개까지 반환할 있습니다. 각각에 대해 markText(검토 중인 문서의 정확한 텍스트 조각), 설명(귀하의 검토) 차원(논리, 표현, 사실, 구조 하나) 제공하십시오. 모델이 도구 호출을 지원하지 않는 경우 JSON 코드 블록과 동일한 데이터를 반환합니다.",
180
+ "ai_improve_request": "문서에 검토 의견이 보류 중인 {count} 있습니다.\n{items}\n\n이 리뷰를 적용하고 문서를 개선해 주세요. 향상된 전체 문서를 작성하려면 update_editor_content 도구를 사용하세요. 가능한 경우 서식과 원래 구조를 유지하세요.",
181
+ "ai_summary_request": "문서에 {count} 검토 의견(해결된 내용 포함)이 있습니다.\n{items}\n\n이를 4가지 차원(논리/표현/사실/구조)으로 요약하고, 차원에 대한 우선순위(높음/중간/낮음) 평가해 주세요.",
182
+ "ai_respond_request": "문서에는 다음 텍스트가 포함되어 있습니다.\n\"{markedText}\"\n\n리뷰어는 다음과 같이 논평했습니다.\n\"{commentText}\"\n\n개정에 대한 구체적인 제안을 부탁드립니다. 문서를 수정하지 마십시오. 제안만 제공하십시오."
184
183
  },
185
184
  "detection": {
186
185
  "intent_prefixes": "제가|저는|먼저|다음으로|이제|저도|제가 할|시작하겠습니다|진행하겠습니다",
@@ -191,163 +190,210 @@
191
190
  },
192
191
  "sections": {
193
192
  "image_ai": "이미지 AI",
194
- "image_aihint": "AI 이미지 생성 모델 구성."
193
+ "image_aihint": "AI 이미지 생성 모델 구성.",
194
+ "session_ai": "세션 AI",
195
+ "session_aihint": "텍스트 채팅 모델 구성.",
196
+ "realtime_voice_ai": "엔드투엔드 음성 AI",
197
+ "realtime_voice_aihint": "실시간 음성 대화 구성(여러 공급자)."
195
198
  },
196
199
  "generating": "생성 중…",
197
- "not_configured": "AI 공급자가 구성되지 않았습니다"
200
+ "not_configured": "AI 공급자가 구성되지 않았습니다",
201
+ "model_short": {
202
+ "none": "구성된 모델이 없습니다.",
203
+ "chat": "채팅",
204
+ "realtime": "RT보이스",
205
+ "image": "영상",
206
+ "speech": "목소리"
207
+ },
208
+ "voice": {
209
+ "record": "음성 녹음",
210
+ "cancel": "음성 입력 취소",
211
+ "commit": "성적표 사용"
212
+ },
213
+ "realtime": {
214
+ "chat_model_group": "채팅 모델",
215
+ "realtime_model_group": "엔드투엔드 모델",
216
+ "image_model_group": "이미지 생성",
217
+ "speech_model_group": "음성 전사",
218
+ "add_model": "+ 음성 모델 추가",
219
+ "no_models": "구성된 엔드투엔드 음성 모델이 없습니다.",
220
+ "no_models_hint": "웨이브 버튼 음성 채팅을 활성화하려면 실시간 음성 모델을 추가하세요.",
221
+ "missing_config": "사용 가능한 엔드투엔드 음성 모델이 없습니다. 설정 -> 채팅에서 구성하세요.",
222
+ "start_voice": "음성 대화 시작",
223
+ "stop_voice": "음성 대화 중지",
224
+ "live": "살다",
225
+ "providers": {
226
+ "gemini-live": "제미니 라이브",
227
+ "openai-realtime": "OpenAI 실시간",
228
+ "doubao-realtime": "두바오 실시간",
229
+ "qwen-realtime": "Qwen 실시간",
230
+ "stepfun-realtime": "StepFun 실시간",
231
+ "tongyi-bailing": "퉁이 바이링",
232
+ "amazon-nova-sonic": "아마존 노바 소닉"
233
+ },
234
+ "config": {
235
+ "access_key_id": "액세스 키 ID",
236
+ "secret_access_key": "비밀 액세스 키",
237
+ "session_token": "세션 토큰",
238
+ "doubao_app_id": "앱 ID(X-Api-App-ID)",
239
+ "doubao_access_key": "액세스 토큰(X-Api-Access-Key)",
240
+ "doubao_secret_key": "앱 키(X-Api-App-Key)",
241
+ "voice": "목소리",
242
+ "region": "지역",
243
+ "optional": "선택 과목",
244
+ "secret_placeholder": "비밀 키를 입력하세요",
245
+ "missing_credential": "먼저 API 키 또는 필수 자격 증명을 제공하세요."
246
+ }
247
+ }
198
248
  },
199
249
  "ai_budget": {
200
- "__mt": true,
201
- "title": "AI Budget",
202
- "description": "Set monthly and per-call spending limits for AI requests routed through Moraya.",
203
- "monthly_spend": "Monthly Spend",
204
- "monthly_limit": "Monthly Limit",
205
- "per_call_limit": "Per-Call Limit",
206
- "hard_stop": "Hard Stop",
207
- "hard_stop_hint": "Block all AI calls once the monthly limit is reached.",
208
- "zero_unlimited": "0 = unlimited",
209
- "limit_reached": "Monthly budget limit reached. AI calls are blocked.",
210
- "near_limit": "You have used {pct}% of your monthly budget.",
211
- "saved": "Settings saved.",
212
- "save": "Save",
213
- "reset": "Reset Month",
214
- "how_it_works": "How It Works",
215
- "info1": "The router tracks estimated and actual costs per API call.",
216
- "info2": "Hard stop blocks new calls; soft limit shows warnings only.",
217
- "info3": "Monthly counters reset on the 1st of each month automatically."
250
+ "title": "AI 예산",
251
+ "description": "Moraya를 통해 라우팅되는 AI 요청에 대한 월간 및 호출당 지출 한도를 설정합니다.",
252
+ "monthly_spend": "월간 지출",
253
+ "monthly_limit": " 한도",
254
+ "per_call_limit": "통화당 한도",
255
+ "hard_stop": "하드 스톱",
256
+ "hard_stop_hint": "월별 한도에 도달하면 모든 AI 호출을 차단합니다.",
257
+ "zero_unlimited": "0 = 무제한",
258
+ "limit_reached": " 예산 한도에 도달했습니다. AI 호출이 차단됩니다.",
259
+ "near_limit": " 예산의 {pct}%를 사용했습니다.",
260
+ "saved": "설정이 저장되었습니다.",
261
+ "save": "구하다",
262
+ "reset": "월 재설정",
263
+ "how_it_works": "작동 방식",
264
+ "info1": "라우터는 API 호출당 예상 비용과 실제 비용을 추적합니다.",
265
+ "info2": "강제 중지는 통화를 차단합니다. 소프트 제한은 경고만 표시합니다.",
266
+ "info3": "월별 카운터는 매월 1일 자동으로 재설정됩니다."
218
267
  },
219
268
  "ai_history": {
220
- "__mt": true,
221
- "title": "AI Call History",
222
- "total_calls": "Total Calls",
223
- "month_cost": "This Month",
224
- "success_rate": "Success Rate",
225
- "tab_list": "Calls",
226
- "tab_provider": "By Provider",
227
- "tab_daily": "By Day",
228
- "no_records": "No call records yet.",
229
- "failed": "Failed",
230
- "provider": "Provider",
231
- "calls": "Calls",
232
- "cost": "Cost",
233
- "share": "Share"
269
+ "title": "AI 통화 내역",
270
+ "total_calls": " 통화",
271
+ "month_cost": "이번 ",
272
+ "success_rate": "성공률",
273
+ "tab_list": "통화",
274
+ "tab_provider": "공급자별",
275
+ "tab_daily": "일별",
276
+ "no_records": "아직 통화 기록이 없습니다.",
277
+ "failed": "실패한",
278
+ "provider": "공급자",
279
+ "calls": "통화",
280
+ "cost": "비용",
281
+ "share": "공유하다"
234
282
  },
235
283
  "app": {
236
- "__mt": true,
237
- "name": "Moraya Web",
238
- "tagline": "Your AI, your data, your cloud."
284
+ "name": "모라야 웹",
285
+ "tagline": "귀하의 AI, 귀하의 데이터, 귀하의 클라우드."
239
286
  },
240
287
  "audit": {
241
- "report_title": "Document Audit Report: {filename}",
242
- "generated_at": "Generated at",
243
- "knowledge_base": "Knowledge base",
244
- "git_repo": "Git repository",
245
- "branch": "branch",
246
- "commit_history": "Commit History",
247
- "col_time": "Time",
248
- "col_author": "Author",
249
- "col_summary": "Summary",
250
- "review_summary": "Review Summary",
251
- "summary_stats": "Total {total} review(s); {resolved} resolved, {wontfix} won't fix, {open} open",
252
- "resolved_section": "Resolved ({count})",
253
- "wontfix_section": "Won't Fix ({count})",
254
- "open_section": "Open ({count})",
255
- "resolved_note": "resolved at {date} by {user}",
256
- "wontfix_note": "marked won't fix at {date} by {user}",
257
- "no_reviews": "No reviews recorded",
258
- "showing_last_commits": "(Showing only the last {count} commits)",
259
- "not_git_bound": "Not linked to a Git repository",
260
- "line_n": "Line {n}",
261
- "unanchored_label": "Position lost",
262
- "export_dialog_title": "Export Audit Report",
263
- "export_filename": "Filename",
264
- "export_format": "Format",
265
- "format_markdown": "Markdown (.md)",
266
- "include_history": "Commit history (last {count} commits)",
267
- "include_reviews": "Review summary ({total} reviews, {resolved} resolved)",
268
- "anonymize_authors": "Anonymize authors (@{name} → @reviewer-1)",
269
- "include_full_discussion": "Include full review discussion (default: summary only)",
270
- "privacy_notice": "The report will be saved locally. No data is sent to any external service.",
271
- "cancel": "Cancel",
272
- "save": "Save…",
273
- "title": "Audit Log",
274
- "events": "events",
275
- "verify_integrity": "Verify Integrity",
276
- "chain_valid": "Chain Valid",
277
- "chain_invalid": "Chain Broken",
278
- "no_events": "No audit events found.",
279
- "loading": "Loading audit log…"
288
+ "report_title": "문서 감사 보고서: {filename}",
289
+ "generated_at": "생성 날짜",
290
+ "knowledge_base": "지식 기반",
291
+ "git_repo": "힘내 저장소",
292
+ "branch": "나뭇가지",
293
+ "commit_history": "커밋 기록",
294
+ "col_time": "시간",
295
+ "col_author": "작가",
296
+ "col_summary": "요약",
297
+ "review_summary": "검토 요약",
298
+ "summary_stats": " {total} 리뷰; {resolved} 해결됨, {wontfix} 해결되지 않음, {open} 열려 있음",
299
+ "resolved_section": "해결됨({count})",
300
+ "wontfix_section": "수정되지 않음({count})",
301
+ "open_section": "공개({count})",
302
+ "resolved_note": "{user}에 의해 {date}에서 해결됨",
303
+ "wontfix_note": "표시된 것은 {user}에 의해 {date}에서 수정되지 않습니다.",
304
+ "no_reviews": "기록된 리뷰가 없습니다.",
305
+ "showing_last_commits": "(마지막 {count} 커밋만 표시)",
306
+ "not_git_bound": "Git 저장소에 연결되지 않음",
307
+ "line_n": "라인 {n}",
308
+ "unanchored_label": "위치 상실",
309
+ "export_dialog_title": "수출 감사 보고서",
310
+ "export_filename": "파일 이름",
311
+ "export_format": "체재",
312
+ "format_markdown": "마크다운(.md)",
313
+ "include_history": "커밋 내역(마지막 {count} 커밋)",
314
+ "include_reviews": "리뷰 요약({total} 리뷰, {resolved} 해결됨)",
315
+ "anonymize_authors": "작성자 익명화(@{name} → @reviewer-1)",
316
+ "include_full_discussion": "전체 검토 토론 포함(기본값: 요약만)",
317
+ "privacy_notice": "보고서는 로컬에 저장됩니다. 데이터는 외부 서비스로 전송되지 않습니다.",
318
+ "cancel": "취소",
319
+ "save": "구하다…",
320
+ "title": "감사 로그",
321
+ "events": "이벤트",
322
+ "verify_integrity": "무결성 확인",
323
+ "chain_valid": "체인 유효",
324
+ "chain_invalid": "체인이 끊어짐",
325
+ "no_events": "감사 이벤트가 없습니다.",
326
+ "loading": "감사 로그 로드 중…"
280
327
  },
281
328
  "auth": {
282
- "__mt": true,
283
- "login": "Sign in with Picora",
284
- "logout": "Sign out",
285
- "logging_in": "Signing in...",
286
- "login_title": "Welcome to Moraya Web",
287
- "login_subtitle": "Sign in with your Picora account to access your knowledge base.",
288
- "continue_offline": "Continue offline (no sync)",
289
- "connect_picora": "Connect Picora to sync",
290
- "connected_to_picora": "Connected to Picora",
291
- "disconnect": "Disconnect",
292
- "local_only_notice": "You are working locally. Notes are stored on this device only."
329
+ "login": "Picora로 로그인",
330
+ "logout": "로그아웃",
331
+ "logging_in": "로그인 중...",
332
+ "login_title": "모라야 웹에 오신 것을 환영합니다",
333
+ "login_subtitle": "지식 베이스에 액세스하려면 Picora 계정으로 로그인하세요.",
334
+ "continue_offline": "오프라인으로 계속(동기화 됨)",
335
+ "connect_picora": "Picora를 연결하여 동기화",
336
+ "connected_to_picora": "Picora 연결됨",
337
+ "disconnect": "연결 끊기",
338
+ "local_only_notice": "당신은 현지에서 일하고 있습니다. 메모는 이 장치에만 저장됩니다."
293
339
  },
294
340
  "billing": {
295
- "__mt": true,
296
- "title": "Billing",
297
- "current_plan": "Current Plan",
298
- "upgrade_title": "Upgrade Your Plan",
299
- "upgrade_subtitle": "Get more AI calls, unlimited storage, and premium features.",
300
- "downgrade_title": "Downgrade Plan",
301
- "downgrade_subtitle": "You can choose to downgrade effective immediately or at the end of your billing period.",
302
- "cancel_title": "Cancel Subscription",
303
- "cancel_subtitle": "We're sorry to see you go. You can cancel effective immediately or at the end of your billing period.",
304
- "plan_personal": "Personal",
305
- "plan_team": "Team",
306
- "plan_enterprise": "Enterprise",
307
- "plan_connect": "Connect (Free)",
308
- "monthly": "Monthly",
309
- "yearly": "Yearly",
310
- "yearly_savings": "Save 2 months",
311
- "per_seat": "/seat",
312
- "pay_with_stripe": "Pay with Card (Stripe)",
313
- "pay_with_alipay": "Pay with Alipay",
314
- "seats_label": "Number of seats",
315
- "seats_hint": "Minimum 1 seat",
316
- "effective_immediate": "Effective immediately",
317
- "effective_period_end": "At the end of the billing period",
318
- "cancel_confirm": "I understand my subscription will end",
319
- "downgrade_confirm": "I understand I may lose access to some features",
320
- "confirm_cancel": "Cancel Subscription",
321
- "confirm_downgrade": "Confirm Downgrade",
322
- "refund_title": "Request Refund",
323
- "refund_14day": "As a first-time subscriber within 14 days, you qualify for an automatic refund.",
324
- "refund_request": "Request Refund",
325
- "refund_pending": "Refund request submitted. Our team will review it.",
326
- "back_to_billing": "Back to Billing",
327
- "loading": "Loading...",
328
- "error": "Something went wrong. Please try again.",
329
- "checkout_redirect": "Redirecting to checkout...",
330
- "alipay_scan": "Scan with Alipay app to complete payment",
331
- "devices_title": "Manage Devices",
332
- "devices_subtitle": "Devices signed into your account.",
333
- "device_current": "This device",
334
- "device_revoke": "Sign out",
335
- "device_revoke_confirm": "Sign out this device?",
336
- "device_last_active": "Last active",
337
- "devices_limit_reached": "You've reached the device limit for your plan.",
338
- "usage_ai_calls": "AI Calls",
339
- "usage_kbs": "Knowledge Bases",
340
- "usage_devices": "Devices",
341
- "usage_of": "{used} of {limit}",
342
- "upgrade_prompt_ai": "You've used {used}/{limit} AI calls this month.",
343
- "upgrade_prompt_kb": "You've reached your KB limit ({limit}).",
344
- "upgrade_now": "Upgrade Now",
345
- "plan_features_personal": "Unlimited KBs, 2000 AI calls/month, BYO API key, E2E encryption, BYOC storage",
346
- "plan_features_team": "Everything in Personal, team collaboration, 5000 AI calls/month, Cloud KMS",
347
- "currency_usd": "USD ($)",
348
- "currency_cny": "CNY (¥)",
349
- "currency_eur": "EUR (€)",
350
- "change_currency": "Change currency"
341
+ "title": "청구",
342
+ "current_plan": "현재 계획",
343
+ "upgrade_title": "계획을 업그레이드하세요",
344
+ "upgrade_subtitle": " 많은 AI 호출, 무제한 저장 공간, 프리미엄 기능을 이용하세요.",
345
+ "downgrade_title": "다운그레이드 계획",
346
+ "downgrade_subtitle": "다운그레이드는 즉시 적용되거나 청구 기간 종료 시 적용되도록 선택할 수 있습니다.",
347
+ "cancel_title": "구독 취소",
348
+ "cancel_subtitle": "떠나셨다니 안타깝습니다. 즉시 취소하거나 청구 기간이 끝나면 취소할 수 있습니다.",
349
+ "plan_personal": "개인의",
350
+ "plan_team": "",
351
+ "plan_enterprise": "기업",
352
+ "plan_connect": "연결(무료)",
353
+ "monthly": "월간 간행물",
354
+ "yearly": "매년",
355
+ "yearly_savings": "2개월 절약",
356
+ "per_seat": "/좌석",
357
+ "pay_with_stripe": "카드결제(스트라이프)",
358
+ "pay_with_alipay": "알리페이로 ​​결제",
359
+ "seats_label": "좌석 ",
360
+ "seats_hint": "최소 1석",
361
+ "effective_immediate": "즉시 발효",
362
+ "effective_period_end": "청구 기간이 끝나면",
363
+ "cancel_confirm": " 구독이 종료된다는 점을 이해합니다.",
364
+ "downgrade_confirm": "일부 기능에 액세스하지 못할 있음을 이해합니다.",
365
+ "confirm_cancel": "구독 취소",
366
+ "confirm_downgrade": "다운그레이드 확인",
367
+ "refund_title": "환불 요청",
368
+ "refund_14day": "14일 이내에 처음 구독하시면 자동 환불을 받으실 수 있습니다.",
369
+ "refund_request": "환불 요청",
370
+ "refund_pending": "환불 요청이 제출되었습니다. 우리 팀에서 이를 검토할 것입니다.",
371
+ "back_to_billing": "청구로 돌아가기",
372
+ "loading": "로드 중...",
373
+ "error": "문제가 발생했습니다. 다시 시도해 주세요.",
374
+ "checkout_redirect": "결제 페이지로 리디렉션 중...",
375
+ "alipay_scan": "결제를 완료하려면 Alipay 앱으로 스캔하세요.",
376
+ "devices_title": "장치 관리",
377
+ "devices_subtitle": "귀하의 계정에 로그인된 기기입니다.",
378
+ "device_current": " 장치",
379
+ "device_revoke": "로그아웃",
380
+ "device_revoke_confirm": " 기기에서 로그아웃하시겠습니까?",
381
+ "device_last_active": "마지막 활동",
382
+ "devices_limit_reached": "요금제의 기기 한도에 도달했습니다.",
383
+ "usage_ai_calls": "AI 호출",
384
+ "usage_kbs": "기술 자료",
385
+ "usage_devices": "장치",
386
+ "usage_of": "{limit} 중 {used}",
387
+ "upgrade_prompt_ai": "이번 달에는 {used}/{limit} AI 호출을 사용하셨습니다.",
388
+ "upgrade_prompt_kb": "KB 한도({limit})에 도달했습니다.",
389
+ "upgrade_now": "지금 업그레이드",
390
+ "plan_features_personal": "무제한 KB, 월 2000개 AI 호출, BYO API 키, E2E 암호화, BYOC 스토리지",
391
+ "plan_features_team": "개인의 모든 것, 협업, 5000개의 AI 호출, Cloud KMS",
392
+ "currency_usd": "미국달러($)",
393
+ "currency_cny": "위안()",
394
+ "currency_eur": "유로()",
395
+ "change_currency": "통화 변경",
396
+ "upgrade": "치받이"
351
397
  },
352
398
  "cloud_picker": {
353
399
  "title_image": "클라우드 이미지 삽입",
@@ -396,18 +442,17 @@
396
442
  "no_results": "결과를 찾을 수 없습니다"
397
443
  },
398
444
  "commands": {
399
- "__mt": true,
400
- "palette_title": "Command Palette",
401
- "placeholder": "Search commands...",
402
- "no_results": "No commands found",
403
- "type_to_search": "Type to search commands",
404
- "go_home": "Go to Home",
405
- "open_settings": "Open Settings",
406
- "open_workflows": "Open Workflows",
407
- "toggle_sidebar": "Toggle Sidebar",
408
- "sidebar_kb": "Sidebar: Knowledge Bases",
409
- "sidebar_explorer": "Sidebar: Files",
410
- "sidebar_outline": "Sidebar: Outline"
445
+ "palette_title": "명령 팔레트",
446
+ "placeholder": "검색 명령...",
447
+ "no_results": "명령을 찾을 수 없습니다.",
448
+ "type_to_search": "검색 명령어를 입력하세요",
449
+ "go_home": "홈으로 이동",
450
+ "open_settings": "설정 열기",
451
+ "open_workflows": "개방형 워크플로",
452
+ "toggle_sidebar": "사이드바 전환",
453
+ "sidebar_kb": "사이드바: 기술 자료",
454
+ "sidebar_explorer": "사이드바: 파일",
455
+ "sidebar_outline": "사이드바: 개요"
411
456
  },
412
457
  "common": {
413
458
  "save": "저장",
@@ -433,92 +478,90 @@
433
478
  "new": "새로 만들기"
434
479
  },
435
480
  "compose": {
436
- "__mt": true,
437
- "title": "Compose article",
438
- "start_over": "Start over",
439
- "stepper_label": "Compose stages",
481
+ "title": "기사 작성",
482
+ "start_over": "다시 시작하세요",
483
+ "stepper_label": "스테이지 구성",
440
484
  "step": {
441
- "topic": "Topic",
442
- "article": "Article",
443
- "cover": "Cover",
444
- "review": "Review"
485
+ "topic": "주제",
486
+ "article": "기사",
487
+ "cover": "씌우다",
488
+ "review": "검토"
445
489
  },
446
490
  "topic": {
447
- "title": "What's the article about?",
448
- "hint": "Describe the topic, audience, key points — the more specific, the better.",
449
- "placeholder": "e.g. A deep dive on why Rust's async model handles backpressure better than Go's…",
450
- "next": "Next: write article →"
491
+ "title": "기사 내용은 무엇입니까?",
492
+ "hint": "주제, 청중, 핵심 사항을 설명하십시오. 구체적일수록 좋습니다.",
493
+ "placeholder": "예를 들어 Rust의 비동기 모델이 Go의 비동기 모델보다 역압을 처리하는 이유에 대한 심층 분석…",
494
+ "next": "다음: 기사 작성 →"
451
495
  },
452
496
  "tone": {
453
- "title": "Tone",
454
- "general": "General",
455
- "marketing": "Marketing",
456
- "technical": "Technical",
457
- "story": "Story"
497
+ "title": "음정",
498
+ "general": "일반적인",
499
+ "marketing": "마케팅",
500
+ "technical": "인위적인",
501
+ "story": "이야기"
458
502
  },
459
503
  "length": {
460
- "title": "Length",
461
- "short": "Short",
462
- "medium": "Medium",
463
- "long": "Long"
504
+ "title": "길이",
505
+ "short": "짧은",
506
+ "medium": "중간",
507
+ "long": ""
464
508
  },
465
509
  "article": {
466
- "title": "Write the article",
467
- "ready": "Ready to generate. Tap below to stream the article.",
468
- "generate": "Generate article",
469
- "generating": "Streaming from the model…",
470
- "cancel": "Stop",
471
- "regenerate": "Regenerate",
472
- "next": "Next: cover image →",
473
- "no_provider": "No AI provider configured. Set one up to generate articles.",
474
- "configure": "Configure AI provider"
510
+ "title": "기사 쓰기",
511
+ "ready": "생성 준비가 완료되었습니다. 기사를 스트리밍하려면 아래를 탭하세요.",
512
+ "generate": "기사 생성",
513
+ "generating": "모델에서 스트리밍 중…",
514
+ "cancel": "멈추다",
515
+ "regenerate": "재생성",
516
+ "next": "다음: 표지 이미지 →",
517
+ "no_provider": "구성된 AI 제공업체가 없습니다. 기사를 생성하려면 하나를 설정하세요.",
518
+ "configure": "AI 공급자 구성"
475
519
  },
476
520
  "cover": {
477
- "title": "Cover image",
478
- "prompt_hint": "This prompt was auto-derived from your article. Edit if you want a specific look.",
479
- "prompt_placeholder": "Cover illustration for: ...",
480
- "generate": "Generate cover",
481
- "generating": "Generating…",
482
- "next": "Next: review →",
483
- "preview_alt": "Cover image preview",
484
- "no_provider": "No image generation provider configured. Set one up to make cover images.",
485
- "configure": "Configure image-gen provider",
486
- "style": "Style"
521
+ "title": "표지 이미지",
522
+ "prompt_hint": " 메시지는 귀하의 기사에서 자동으로 파생되었습니다. 특정 모양을 원하면 편집하세요.",
523
+ "prompt_placeholder": "표지 그림: ...",
524
+ "generate": "표지 생성",
525
+ "generating": "생성 중…",
526
+ "next": "다음: 검토 →",
527
+ "preview_alt": "표지 이미지 미리보기",
528
+ "no_provider": "구성된 이미지 생성 공급자가 없습니다. 표지 이미지를 만들려면 하나를 설정하세요.",
529
+ "configure": "이미지 생성 공급자 구성",
530
+ "style": "스타일"
487
531
  },
488
532
  "review": {
489
- "title": "Review & publish",
490
- "publish_hint": "Insert into a note, or set up an MCP publish target to send this article to WeChat / RSS / custom platforms.",
491
- "insert": "Insert into note",
492
- "configure_publish": "Configure publish target",
493
- "uploading": "Uploading cover…",
494
- "cover_upload_failed": "Cover upload failed inserting without it.",
495
- "insert_failed": "Insert failed: {err}"
533
+ "title": "검토 게시",
534
+ "publish_hint": " 기사를 WeChat/RSS/사용자 정의 플랫폼으로 보내려면 메모에 삽입하거나 MCP 게시 대상을 설정하세요.",
535
+ "insert": "메모에 삽입",
536
+ "configure_publish": "게시 대상 구성",
537
+ "uploading": "표지 업로드 중…",
538
+ "cover_upload_failed": "표지 업로드 실패 - 표지 없이 삽입 중입니다.",
539
+ "insert_failed": "삽입 실패: {err}"
496
540
  },
497
541
  "publish": {
498
- "send": "Send to…",
499
- "opening": "Preparing…",
500
- "picker_title": "Where to publish?",
501
- "empty": "No publish targets configured yet.",
502
- "configure": "Configure publish targets",
503
- "success": "Published to {target}",
504
- "failed": "{target} failed: {err}"
542
+ "send": "다음으로 보내기…",
543
+ "opening": "준비 중…",
544
+ "picker_title": "어디에 출판하나요?",
545
+ "empty": "아직 구성된 게시 대상이 없습니다.",
546
+ "configure": "게시 대상 구성",
547
+ "success": "{target}에 게시됨",
548
+ "failed": "{target} 실패: {err}"
505
549
  },
506
550
  "drafts": {
507
- "title": "Drafts",
508
- "new": "New draft",
509
- "new_sub": "Archive current and start fresh",
510
- "active": "Active",
511
- "untitled": "Untitled draft",
512
- "delete": "Delete draft"
551
+ "title": "체커",
552
+ "new": " 초안",
553
+ "new_sub": "현재 내용을 보관하고 새로 시작하기",
554
+ "active": "활동적인",
555
+ "untitled": "제목 없는 초안",
556
+ "delete": "초안 삭제"
513
557
  }
514
558
  },
515
559
  "conflict": {
516
- "__mt": true,
517
- "title": "Conflict Detected",
518
- "description": "This note was edited on another device.",
519
- "keep_server": "Keep server version",
520
- "keep_local": "Keep my version",
521
- "merge": "Merge manually"
560
+ "title": "충돌이 감지되었습니다.",
561
+ "description": " 메모는 다른 기기에서 수정되었습니다.",
562
+ "keep_server": "서버 버전 유지",
563
+ "keep_local": " 버전 유지",
564
+ "merge": "수동으로 병합"
522
565
  },
523
566
  "context_menu": {
524
567
  "cut": "잘라내기",
@@ -535,20 +578,20 @@
535
578
  "insert_cloud_video": "클라우드 동영상 삽입…"
536
579
  },
537
580
  "diff": {
538
- "title": "{filename} · {hash1} {hash2}",
539
- "back_to_edit": "← Back to Edit",
540
- "no_changes": "The two versions are identical — no differences",
541
- "binary_file": "This version contains binary content and cannot be displayed as text diff",
542
- "added_line": "Added line",
543
- "deleted_line": "Deleted line",
544
- "stats_line": "+{added} added · -{deleted} deleted",
545
- "left_label": "Old",
546
- "right_label": "New"
581
+ "title": "{filename} · {hash1} {hash2}",
582
+ "back_to_edit": "← 편집으로 돌아가기",
583
+ "no_changes": " 버전은 동일하며 차이가 없습니다.",
584
+ "binary_file": " 버전에는 바이너리 콘텐츠가 포함되어 있어 텍스트 비교로 표시할 없습니다.",
585
+ "added_line": "라인 추가",
586
+ "deleted_line": "삭제된 ",
587
+ "stats_line": "+{added} 추가됨 · -{deleted} 삭제됨",
588
+ "left_label": "오래된",
589
+ "right_label": "새로운"
547
590
  },
548
591
  "editor": {
549
- "source_mode": "Source",
550
- "visual_mode": "Visual",
551
- "split_mode": "Split",
592
+ "source_mode": "원천",
593
+ "visual_mode": "시각적",
594
+ "split_mode": "나뉘다",
552
595
  "unsaved_title": "저장되지 않은 변경사항",
553
596
  "unsaved_new_doc_msg": "저장되지 않은 내용이 있습니다. 먼저 저장하시겠습니까?",
554
597
  "save_first": "저장",
@@ -557,136 +600,134 @@
557
600
  "parsing": "Markdown 파싱 중…",
558
601
  "rendering": "렌더링 중…"
559
602
  },
560
- "saving": "Saving...",
561
- "saved": "Saved",
562
- "offline_cached": "Saved offline",
563
- "conflict": "Conflict detected",
564
- "unsaved_changes": "You have unsaved changes. Discard?",
565
- "discard": "Discard",
566
- "cancel": "Cancel",
567
- "words": "words",
568
- "chars": "chars",
569
- "new_note": "New note"
603
+ "saving": "절약...",
604
+ "saved": "저장됨",
605
+ "offline_cached": "오프라인으로 저장됨",
606
+ "conflict": "충돌이 감지되었습니다.",
607
+ "unsaved_changes": "저장되지 않은 변경사항이 있습니다. 버리다?",
608
+ "discard": "버리다",
609
+ "cancel": "취소",
610
+ "words": "단어",
611
+ "chars": "문자",
612
+ "new_note": " 메모"
570
613
  },
571
614
  "enterprise": {
572
- "__mt": true,
573
615
  "hsm": {
574
- "title": "Hardware Security Module (HSM)",
575
- "subtitle": "Connect your HSM provider for FIPS 140-2 Level 3+ key operations",
576
- "upgrade_required": "HSM integration requires the Enterprise plan.",
616
+ "title": "하드웨어 보안 모듈(HSM)",
617
+ "subtitle": "FIPS 140-2 레벨 3+ 작업을 위해 HSM 공급자를 연결하세요",
618
+ "upgrade_required": "HSM 통합에는 Enterprise 플랜이 필요합니다.",
577
619
  "providers": {
578
620
  "aws": "AWS CloudHSM",
579
- "aliyun": "Aliyun HSM",
580
- "pkcs11": "PKCS#11 (Generic)"
621
+ "aliyun": "알리윤 HSM",
622
+ "pkcs11": "PKCS#11(일반)"
581
623
  },
582
624
  "aws": {
583
- "cluster_id": "Cluster ID",
584
- "region": "AWS Region"
625
+ "cluster_id": "클러스터 ID",
626
+ "region": "AWS 지역"
585
627
  },
586
628
  "aliyun": {
587
- "instance_id": "Instance ID",
588
- "region": "Region"
629
+ "instance_id": "인스턴스 ID",
630
+ "region": "지역"
589
631
  },
590
632
  "pkcs11": {
591
- "lib_path": "Library Path (.so / .dll / .dylib)",
592
- "slot": "Slot ID",
593
- "supported_mechanisms": "Supported Mechanisms"
633
+ "lib_path": "라이브러리 경로(.so / .dll / .dylib)",
634
+ "slot": "슬롯 ID",
635
+ "supported_mechanisms": "지원되는 메커니즘"
594
636
  }
595
637
  },
596
638
  "orgs": {
597
- "title": "Multi-Organization Management",
598
- "subtitle": "Manage seat allocation and cross-org knowledge sharing",
599
- "upgrade_required": "Multi-org management requires the Enterprise plan.",
600
- "seat_allocation": "Seat Allocation",
601
- "total_seats": "Total Seats",
602
- "allocated": "Allocated",
603
- "unallocated": "Unallocated",
604
- "org_list": "Organizations",
605
- "members": "Members",
606
- "cross_org_sharing": "Cross-Org Sharing",
607
- "shares_to": "shares KBs to",
608
- "kb_ids_placeholder": "kb-1, kb-2, ...",
609
- "request_share": "Request Share"
639
+ "title": "다중 조직 관리",
640
+ "subtitle": "좌석 할당 조직 지식 공유 관리",
641
+ "upgrade_required": "다중 조직 관리에는 Enterprise 요금제가 필요합니다.",
642
+ "seat_allocation": "좌석 배정",
643
+ "total_seats": " 좌석수",
644
+ "allocated": "할당됨",
645
+ "unallocated": "할당되지 않음",
646
+ "org_list": "조직",
647
+ "members": "회원",
648
+ "cross_org_sharing": "조직 간 공유",
649
+ "shares_to": "KB를 공유합니다.",
650
+ "kb_ids_placeholder": "kb-1, kb-2,...",
651
+ "request_share": "공유 요청"
610
652
  },
611
653
  "compliance": {
612
- "title": "Compliance & Archiving",
613
- "subtitle": "GDPR, HIPAA, SOC2, ISO 27001 compliance exports and WORM archiving",
614
- "upgrade_required": "Compliance archiving requires the Enterprise plan.",
654
+ "title": "규정 준수 및 아카이빙",
655
+ "subtitle": "GDPR, HIPAA, SOC2, ISO 27001 규정 준수 내보내기 WORM 보관",
656
+ "upgrade_required": "규정 준수 아카이빙에는 Enterprise 플랜이 필요합니다.",
615
657
  "tabs": {
616
- "retention": "Retention",
617
- "worm": "WORM",
618
- "export": "Export"
658
+ "retention": "보유",
659
+ "worm": "벌레",
660
+ "export": "내보내다"
619
661
  },
620
662
  "retention": {
621
- "title": "7-Year Retention",
622
- "hint": "Records are retained for 7 years and cannot be deleted during this period.",
623
- "days_left": "days left",
624
- "years": "years"
663
+ "title": "7 보존",
664
+ "hint": "기록은 7 동안 보관되며, 기간 동안 삭제할 없습니다.",
665
+ "days_left": " 남음",
666
+ "years": "연령"
625
667
  },
626
668
  "worm": {
627
- "title": "WORM Records",
628
- "description": "Write-Once-Read-Many records are immutable once created.",
629
- "immutable_label": "Immutable",
630
- "immutable_desc": "Records cannot be modified or deleted after creation.",
631
- "retention_years": "Retention Period"
669
+ "title": "WORM 레코드",
670
+ "description": "Write-Once-Read-Many 레코드는 일단 생성되면 변경할 수 없습니다.",
671
+ "immutable_label": "불변",
672
+ "immutable_desc": "기록을 생성한 후에는 수정하거나 삭제할 없습니다.",
673
+ "retention_years": "보유기간"
632
674
  },
633
675
  "export": {
634
- "title": "Compliance Export",
635
- "standard": "Standard",
636
- "format": "Format",
637
- "generate": "Generate Export",
638
- "applicable_events": "Applicable audit events"
676
+ "title": "규정 준수 수출",
677
+ "standard": "기준",
678
+ "format": "체재",
679
+ "generate": "내보내기 생성",
680
+ "applicable_events": "적용 가능한 감사 이벤트"
639
681
  }
640
682
  },
641
683
  "custom_domain": {
642
- "title": "Custom Domain",
643
- "subtitle": "Use your own domain name for the Moraya workspace.",
644
- "upgrade_required": "Custom domain requires the Enterprise plan.",
645
- "hostname": "Your Domain",
646
- "cname_target": "CNAME Target",
647
- "dns_record": "DNS Record to Add",
648
- "dns_hint": "Add this CNAME record to your DNS provider and wait for propagation (up to 48h).",
649
- "save": "Save & Verify",
650
- "verifying_hint": "Verification in progress. DNS propagation may take up to 48 hours."
684
+ "title": "맞춤 도메인",
685
+ "subtitle": "Moraya 작업 공간에는 자신의 도메인 이름을 사용하십시오.",
686
+ "upgrade_required": "사용자 정의 도메인에는 Enterprise 요금제가 필요합니다.",
687
+ "hostname": "귀하의 도메인",
688
+ "cname_target": "CNAME 타겟",
689
+ "dns_record": "추가할 DNS 레코드",
690
+ "dns_hint": " CNAME 레코드를 DNS 공급자에 추가하고 전파될 때까지 기다립니다(최대 48시간).",
691
+ "save": "저장 확인",
692
+ "verifying_hint": "확인이 진행 중입니다. DNS 전파에는 최대 48시간이 걸릴 있습니다."
651
693
  },
652
694
  "custom_ai": {
653
- "title": "Custom AI Endpoint",
654
- "subtitle": "Connect your own OpenAI-compatible LLM endpoint.",
655
- "upgrade_required": "Custom AI endpoints require the Enterprise plan.",
656
- "add_provider": "Add Provider",
657
- "provider_name": "Provider Name",
658
- "base_url": "Base URL",
659
- "api_key_ref": "API Key Reference (Keychain ID)",
660
- "models_csv": "Models (comma-separated)",
661
- "add": "Add Provider",
662
- "saved_providers": "Saved Providers",
663
- "context_window": "Context window",
664
- "models": "models",
665
- "openai_compatible": "OpenAI-compatible",
666
- "custom_format": "Custom format"
695
+ "title": "맞춤형 AI 엔드포인트",
696
+ "subtitle": "자체 OpenAI 호환 LLM 엔드포인트를 연결하세요.",
697
+ "upgrade_required": "사용자 정의 AI 엔드포인트에는 Enterprise 플랜이 필요합니다.",
698
+ "add_provider": "공급자 추가",
699
+ "provider_name": "제공자 이름",
700
+ "base_url": "기본 URL",
701
+ "api_key_ref": "API 참조(키체인 ID)",
702
+ "models_csv": "모델(쉼표로 구분)",
703
+ "add": "공급자 추가",
704
+ "saved_providers": "저장된 공급자",
705
+ "context_window": "컨텍스트 ",
706
+ "models": "모델",
707
+ "openai_compatible": "OpenAI 호환",
708
+ "custom_format": "사용자 정의 서식"
667
709
  },
668
710
  "data_residency": {
669
- "title": "Data Residency",
670
- "subtitle": "Control where your organization's data is stored and processed.",
671
- "upgrade_required": "Data residency control requires the Enterprise plan.",
672
- "primary_region": "Primary Region",
673
- "allowed_regions": "Allowed Regions",
674
- "restrict_cross_region": "Restrict cross-region data transfers",
675
- "filter_by_compliance": "Filter by Compliance Standard",
676
- "all": "All",
677
- "requirements": "Legal Requirements",
678
- "save_policy": "Save Policy",
679
- "policy_saved": "Policy saved"
711
+ "title": "데이터 상주",
712
+ "subtitle": "조직의 데이터가 저장되고 처리되는 위치를 제어합니다.",
713
+ "upgrade_required": "데이터 상주 제어에는 Enterprise 요금제가 필요합니다.",
714
+ "primary_region": "기본 지역",
715
+ "allowed_regions": "허용된 지역",
716
+ "restrict_cross_region": "지역 데이터 전송 제한",
717
+ "filter_by_compliance": "규정 준수 기준으로 필터링",
718
+ "all": "모두",
719
+ "requirements": "법적 요구사항",
720
+ "save_policy": "정책 저장",
721
+ "policy_saved": "정책이 저장되었습니다."
680
722
  }
681
723
  },
682
724
  "entitlement": {
683
- "__mt": true,
684
- "connect": "Connect",
685
- "personal": "Personal",
686
- "team": "Team",
687
- "enterprise": "Enterprise",
688
- "current_plan": "Current plan",
689
- "upgrade": "Upgrade"
725
+ "connect": "연결하다",
726
+ "personal": "개인의",
727
+ "team": "",
728
+ "enterprise": "기업",
729
+ "current_plan": "현재 계획",
730
+ "upgrade": "치받이"
690
731
  },
691
732
  "errors": {
692
733
  "ai_not_configured": "AI가 구성되지 않았습니다.",
@@ -694,54 +735,53 @@
694
735
  "chat_request_failed": "채팅 요청 실패",
695
736
  "unknown_command": "알 수 없는 AI 명령어: {command}",
696
737
  "auth": {
697
- "picora_token_expired": "Session expired. Please sign in again.",
698
- "picora_plan_expired": "Your Picora plan has expired. Please renew or upgrade.",
699
- "oauth_state_missing": "Login session not found. Please try again.",
700
- "csrf_state_mismatch": "Security check failed. Please try again."
738
+ "picora_token_expired": "세션이 만료되었습니다. 다시 로그인해 주세요.",
739
+ "picora_plan_expired": "귀하의 Picora 요금제가 만료되었습니다. Please renew or upgrade.",
740
+ "oauth_state_missing": "Login session not found. 다시 시도해 주세요.",
741
+ "csrf_state_mismatch": "Security check failed. 다시 시도해 주세요."
701
742
  },
702
743
  "storage": {
703
- "network_offline": "You're offline. Changes saved locally.",
704
- "conflict_detected": "Someone else edited this note. Please resolve the conflict.",
705
- "not_found": "Note not found.",
706
- "access_denied": "Access denied.",
707
- "too_large": "File is too large.",
708
- "quota_exceeded": "Storage quota exceeded.",
709
- "rate_limited": "Too many requests. Please wait.",
710
- "server_error": "Server error. Please try again."
744
+ "network_offline": "오프라인 상태입니다. 변경사항이 로컬에 저장되었습니다.",
745
+ "conflict_detected": "다른 사람이 메모를 편집했습니다. 갈등을 해결해주세요.",
746
+ "not_found": "메모를 찾을 수 없습니다.",
747
+ "access_denied": "접근 불가.",
748
+ "too_large": "파일이 너무 큽니다.",
749
+ "quota_exceeded": "저장용량을 초과했습니다.",
750
+ "rate_limited": "Too many requests. 기다리세요.",
751
+ "server_error": "Server error. 다시 시도해 주세요."
711
752
  },
712
753
  "editor": {
713
- "mount_failed": "Editor failed to load. Please refresh the page."
754
+ "mount_failed": "편집기를 로드하지 못했습니다. 페이지를 새로 고침하세요."
714
755
  },
715
756
  "browser": {
716
- "unsupported": "Your browser is not supported. Please use Chrome 96+, Firefox 95+, or Safari 14+."
757
+ "unsupported": "귀하의 브라우저는 지원되지 않습니다. Please use Chrome 96+, Firefox 95+, or Safari 14+."
717
758
  },
718
759
  "internal": {
719
- "unknown": "An unexpected error occurred."
760
+ "unknown": "예기치 않은 오류가 발생했습니다."
720
761
  },
721
762
  "ai": {
722
- "e2e_proxy_blocked": "Moraya proxy AI is not available in E2E mode. Please use your own API key.",
723
- "e2e_rag_blocked": "Server-side RAG requires Cloud KMS mode."
763
+ "e2e_proxy_blocked": "Moraya 프록시 AI E2E 모드에서 사용할 없습니다. 자신의 API 키를 사용하세요.",
764
+ "e2e_rag_blocked": "서버 RAG에는 Cloud KMS 모드가 필요합니다."
724
765
  },
725
766
  "kms": {
726
- "gcp_not_implemented": "GCP KMS is not yet supported."
767
+ "gcp_not_implemented": "GCP KMS 아직 지원되지 않습니다."
727
768
  }
728
769
  },
729
770
  "explorer": {
730
- "__mt": true,
731
- "title": "Files",
732
- "filter_placeholder": "Filter notes...",
733
- "empty": "No notes yet",
734
- "no_results": "No matching notes",
735
- "new_note": "New note",
736
- "new_folder": "New folder",
737
- "rename": "Rename",
738
- "delete": "Delete",
739
- "favorite": "Add to favorites",
740
- "unfavorite": "Remove from favorites",
741
- "context_menu": "File options",
742
- "tags": "Tags",
743
- "no_tags": "No tags found",
744
- "untagged": "Untagged"
771
+ "title": "파일",
772
+ "filter_placeholder": "메모 필터링...",
773
+ "empty": "아직 메모가 없습니다.",
774
+ "no_results": "일치하는 메모 없음",
775
+ "new_note": " 메모",
776
+ "new_folder": " 폴더",
777
+ "rename": "이름 바꾸기",
778
+ "delete": "삭제",
779
+ "favorite": "즐겨찾기에 추가",
780
+ "unfavorite": "즐겨찾기에서 제거",
781
+ "context_menu": "파일 옵션",
782
+ "tags": "태그",
783
+ "no_tags": "태그를 찾을 수 없습니다",
784
+ "untagged": "태그되지 않음"
745
785
  },
746
786
  "export": {
747
787
  "export_as": "{format}(으)로 내보내기",
@@ -749,13 +789,13 @@
749
789
  "html": "HTML (스타일 포함)",
750
790
  "html_plain": "HTML (스타일 미포함)",
751
791
  "image": "이미지 (PNG)",
752
- "doc": "Word (.doc)",
792
+ "doc": "워드(.doc)",
753
793
  "rtf": "RTF",
754
- "epub": "Epub",
755
- "latex": "LaTeX",
756
- "mediawiki": "MediaWiki",
757
- "rst": "reStructuredText",
758
- "textile": "Textile",
794
+ "epub": "이펍",
795
+ "latex": "유액",
796
+ "mediawiki": "미디어위키",
797
+ "rst": "재구성된 텍스트",
798
+ "textile": "직물",
759
799
  "opml": "OPML",
760
800
  "progress": {
761
801
  "preparing": "준비 중…",
@@ -775,38 +815,37 @@
775
815
  }
776
816
  },
777
817
  "fulltext_search": {
778
- "__mt": true,
779
- "title": "Hybrid Search",
780
- "placeholder": "Search notes, memories, workflows...",
781
- "clear": "Clear",
782
- "filters": "Filters",
783
- "filter_time": "Time",
784
- "filter_source": "Source",
785
- "filter_tags": "Tags",
786
- "time_all": "All time",
787
- "time_today": "Today",
788
- "time_7d": "Last 7 days",
789
- "time_30d": "Last 30 days",
790
- "time_90d": "Last 90 days",
791
- "source_all": "All sources",
792
- "source_note": "Notes",
793
- "source_memory": "Memory",
794
- "source_workflow": "Workflows",
795
- "cross_kb_hint": "Upgrade for cross-KB search",
796
- "tab_results": "Results",
797
- "tab_history": "History",
798
- "tab_saved": "Saved",
799
- "save_search": "Save search",
800
- "save_name_prompt": "Name this saved search",
801
- "searching": "Searching...",
802
- "no_results": "No results found",
803
- "start_typing": "Type to search",
804
- "history_empty": "No search history",
805
- "saved_empty": "No saved searches",
806
- "clear_history": "Clear history",
807
- "hint_navigate": "Navigate",
808
- "hint_open": "Open",
809
- "hint_close": "Close"
818
+ "title": "하이브리드 검색",
819
+ "placeholder": "메모, 추억, 작업 흐름을 검색하세요...",
820
+ "clear": "분명한",
821
+ "filters": "필터",
822
+ "filter_time": "시간",
823
+ "filter_source": "원천",
824
+ "filter_tags": "태그",
825
+ "time_all": "모든 시간",
826
+ "time_today": "오늘",
827
+ "time_7d": "지난 7일",
828
+ "time_30d": "지난 30일",
829
+ "time_90d": "지난 90일",
830
+ "source_all": "모든 소스",
831
+ "source_note": "메모",
832
+ "source_memory": "메모리",
833
+ "source_workflow": "워크플로",
834
+ "cross_kb_hint": "KB 간 검색을 위한 업그레이드",
835
+ "tab_results": "결과",
836
+ "tab_history": "역사",
837
+ "tab_saved": "저장됨",
838
+ "save_search": "검색 저장",
839
+ "save_name_prompt": "저장된 검색어 이름 지정",
840
+ "searching": "수색...",
841
+ "no_results": "검색결과가 없습니다",
842
+ "start_typing": "검색하려면 입력하세요.",
843
+ "history_empty": "검색 기록이 없습니다",
844
+ "saved_empty": "저장된 검색결과 없음",
845
+ "clear_history": "기록 지우기",
846
+ "hint_navigate": "탐색",
847
+ "hint_open": "열려 있는",
848
+ "hint_close": "닫다"
810
849
  },
811
850
  "git": {
812
851
  "bind_title": "Git 저장소 연결",
@@ -852,55 +891,54 @@
852
891
  "not_installed": "Git 미설치"
853
892
  },
854
893
  "history": {
855
- "tab_label": "History",
856
- "title": "Commit history of {filename}",
857
- "export_btn": "Export",
858
- "view_snapshot": "View Snapshot",
859
- "compare_with_current": "Compare with Current",
860
- "compare_with_prev": "Compare with Previous",
861
- "back_to_list": "← Back to History",
862
- "blame_toggle": "Show Author Tracking",
863
- "blame_not_supported_visual": "Blame is only available in Source Mode. Press ⌘/ to switch.",
864
- "blame_uncommitted": "uncommitted",
865
- "loading": "Loading…",
866
- "showing_last": "Showing the last {count} commits",
867
- "renamed_from": "↪ from {oldPath}",
894
+ "tab_label": "역사",
895
+ "title": "{filename}의 커밋 내역",
896
+ "export_btn": "내보내다",
897
+ "view_snapshot": "스냅샷 보기",
898
+ "compare_with_current": "현재와 ​​비교",
899
+ "compare_with_prev": "이전과 비교",
900
+ "back_to_list": "← 역사로 돌아가기",
901
+ "blame_toggle": "작성자 추적 표시",
902
+ "blame_not_supported_visual": "비난은 소스 모드에서만 사용할 있습니다. 전환하려면 ⌘/를 누르세요.",
903
+ "blame_uncommitted": "어느 편도 아닌",
904
+ "loading": "로드 중…",
905
+ "showing_last": "마지막 {count} 커밋 표시",
906
+ "renamed_from": "↪ {oldPath}에서",
868
907
  "empty": {
869
- "no_git": "This knowledge base is not linked to Git",
870
- "no_git_hint": "History requires Git sync support",
871
- "no_git_action": "Link a Git repository",
872
- "no_commits": "This file has no commit history yet",
873
- "no_commits_hint": "Save and sync to Git to view history",
874
- "no_commits_action": "Save and commit now",
875
- "error": "Failed to load Git history",
876
- "error_hint": "Please check repository status",
877
- "error_retry": "Retry"
908
+ "no_git": " 기술 자료는 Git에 연결되어 있지 않습니다.",
909
+ "no_git_hint": "기록에는 Git 동기화 지원이 필요합니다.",
910
+ "no_git_action": "Git 저장소 연결",
911
+ "no_commits": " 파일에는 아직 커밋 기록이 없습니다.",
912
+ "no_commits_hint": "기록을 보려면 Git 저장하고 동기화하세요.",
913
+ "no_commits_action": "지금 저장하고 커밋하세요",
914
+ "error": "Git 기록을 로드하지 못했습니다.",
915
+ "error_hint": "저장소 상태를 확인하세요.",
916
+ "error_retry": "다시 해 보다"
878
917
  },
879
918
  "snapshot": {
880
- "label": "Snapshot @ {hash}",
881
- "notice": "This is a historical snapshot (read-only)",
882
- "copy": "Copy snapshot",
883
- "compare": "Compare with Current",
884
- "restore": "Restore this version",
885
- "confirm_restore": "Restoring will replace the editor content with this snapshot. After saving, a new commit will be created. Continue?"
886
- },
887
- "dirty_confirm": "The current document has unsaved changes. Continue anyway?",
888
- "continue_anyway": "Continue",
889
- "save_first": "Save first",
890
- "cancel": "Cancel",
891
- "merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first."
919
+ "label": "스냅샷 @ {hash}",
920
+ "notice": "기록 스냅샷입니다(읽기 전용).",
921
+ "copy": "스냅샷 복사",
922
+ "compare": "현재와 ​​비교",
923
+ "restore": " 버전을 복원하세요",
924
+ "confirm_restore": "복원하면 편집기 콘텐츠가 스냅샷으로 대체됩니다. 저장 후에는 새로운 커밋이 생성됩니다. 계속하다?"
925
+ },
926
+ "dirty_confirm": "현재 문서에 저장되지 않은 변경사항이 있습니다. 그래도 계속하시겠습니까?",
927
+ "continue_anyway": "계속하다",
928
+ "save_first": "먼저 저장하세요",
929
+ "cancel": "취소",
930
+ "merge_blocked": "저장소가 병합 중입니다. 갈등을 먼저 해결하세요."
892
931
  },
893
932
  "image_ctx": {
894
- "__mt": true,
895
- "copy_url": "Copy URL",
896
- "replace": "Replace Image",
897
- "edit_alt": "Edit Alt Text",
898
- "resize": "Resize",
899
- "delete": "Delete Image",
900
- "alt_label": "Alt Text",
901
- "alt_placeholder": "Describe the image...",
902
- "alt_hint": "Improves accessibility and SEO",
903
- "save_alt": "Save"
933
+ "copy_url": "URL 복사",
934
+ "replace": "이미지 교체",
935
+ "edit_alt": "대체 텍스트 편집",
936
+ "resize": "크기 조정",
937
+ "delete": "이미지 삭제",
938
+ "alt_label": "대체 텍스트",
939
+ "alt_placeholder": "이미지설명좀...",
940
+ "alt_hint": "접근성 SEO 향상",
941
+ "save_alt": "구하다"
904
942
  },
905
943
  "image_dialog": {
906
944
  "title": "이미지 삽입",
@@ -998,7 +1036,7 @@
998
1036
  "title": "이미지 호스팅",
999
1037
  "provider": "서비스 제공자",
1000
1038
  "smms": "SM.MS",
1001
- "imgur": "Imgur",
1039
+ "imgur": "임구르",
1002
1040
  "github": "GitHub 저장소",
1003
1041
  "custom": "사용자 지정 API",
1004
1042
  "api_token": "API 토큰",
@@ -1013,7 +1051,7 @@
1013
1051
  "github_repo_url_placeholder": "https://github.com/user/images",
1014
1052
  "github_branch": "브랜치",
1015
1053
  "github_dir": "이미지 디렉터리",
1016
- "github_token": "Personal Access Token",
1054
+ "github_token": "개인 액세스 토큰",
1017
1055
  "github_token_placeholder": "ghp_xxxxxxxxxxxx",
1018
1056
  "github_cdn": "URL 형식",
1019
1057
  "github_cdn_raw": "raw.githubusercontent.com",
@@ -1034,27 +1072,27 @@
1034
1072
  "set_default": "기본값으로 설정",
1035
1073
  "gitlab": "GitLab 저장소",
1036
1074
  "git_custom": "사용자 지정 Git (Gitea/Forgejo)",
1037
- "qiniu": "Qiniu Kodo",
1038
- "aliyun_oss": "Aliyun OSS",
1039
- "tencent_cos": "Tencent COS",
1075
+ "qiniu": "키니우 코도",
1076
+ "aliyun_oss": "알리윤 OSS",
1077
+ "tencent_cos": "텐센트 코스",
1040
1078
  "aws_s3": "AWS S3",
1041
- "google_gcs": "Google Cloud Storage",
1079
+ "google_gcs": "구글 클라우드 스토리지",
1042
1080
  "group_api": "API 호스팅",
1043
1081
  "group_git": "Git 저장소",
1044
1082
  "group_oss": "오브젝트 스토리지",
1045
1083
  "gitlab_repo_url": "저장소 URL",
1046
1084
  "gitlab_branch": "브랜치",
1047
1085
  "gitlab_dir": "이미지 디렉터리",
1048
- "gitlab_token": "Personal Access Token",
1086
+ "gitlab_token": "개인 액세스 토큰",
1049
1087
  "gitlab_token_placeholder": "glpat-xxxxxxxxxxxx",
1050
1088
  "git_custom_repo_url": "저장소 URL",
1051
1089
  "git_custom_branch": "브랜치",
1052
1090
  "git_custom_dir": "이미지 디렉터리",
1053
1091
  "git_custom_token": "액세스 토큰",
1054
1092
  "git_custom_token_placeholder": "토큰 입력",
1055
- "oss_access_key": "Access Key",
1093
+ "oss_access_key": "액세스 ",
1056
1094
  "oss_access_key_placeholder": "Access Key ID 입력",
1057
- "oss_secret_key": "Secret Key",
1095
+ "oss_secret_key": "비밀키",
1058
1096
  "oss_secret_key_placeholder": "Secret Key 입력",
1059
1097
  "oss_bucket": "버킷",
1060
1098
  "oss_bucket_placeholder": "예: my-images-bucket",
@@ -1083,7 +1121,7 @@
1083
1121
  "picora_api_url_placeholder": "https://api.picora.me/v1/images",
1084
1122
  "picora_img_domain": "CDN 도메인",
1085
1123
  "picora_img_domain_placeholder": "https://media.picora.me",
1086
- "picora_api_key": "API Key",
1124
+ "picora_api_key": "API ",
1087
1125
  "picora_api_key_placeholder": "sk_live_...",
1088
1126
  "picora_user_email": "Picora 계정",
1089
1127
  "picora_token_preview": "토큰 미리보기",
@@ -1142,94 +1180,94 @@
1142
1180
  "delete_model": "모델 삭제",
1143
1181
  "select_local_model": "다운로드된 모델 선택",
1144
1182
  "no_local_models": "다운로드된 모델이 없습니다. 아래에서 다운로드하세요.",
1145
- "loading": "Loading knowledge base...",
1146
- "empty": "No knowledge base found.",
1147
- "create_in_picora": "Create a KB in Picora",
1148
- "select_note": "Select a note to edit",
1149
- "untitled": "Untitled"
1183
+ "loading": "기술 자료 로드 중...",
1184
+ "empty": "기술 자료를 찾을 수 없습니다.",
1185
+ "create_in_picora": "Picora에서 KB 만들기",
1186
+ "select_note": "편집할 메모를 선택하세요",
1187
+ "untitled": "제목 없음"
1150
1188
  },
1151
1189
  "kb_sync": {
1152
1190
  "card": {
1153
- "bind": "☁ Picora Sync",
1154
- "settings": "☁ Bound · Settings"
1191
+ "bind": "☁ Picora 동기화",
1192
+ "settings": "☁ 바운드 · 설정"
1155
1193
  },
1156
1194
  "bind_dialog": {
1157
- "title": "Bind Picora Sync — {name}",
1158
- "step": "Step {current} / {total}",
1159
- "step1_title": "Select Picora account",
1160
- "step2_title": "Link or create cloud KB",
1161
- "step3_title": "Sync strategy",
1162
- "step4_title": "Preview first sync (dry-run)",
1163
- "no_picora": "No Picora accounts found. Please add one in Settings Hosting first.",
1164
- "loading_kbs": "Loading cloud KBs…",
1165
- "create_new": "Create new cloud KB",
1166
- "link_existing": "Link to existing cloud KB",
1167
- "kb_name": "Name",
1168
- "kb_slug": "Slug (URL-friendly ID)",
1169
- "select_kb": "Select a cloud KB…",
1170
- "back": "← Back",
1171
- "next": "Next →",
1172
- "start_sync": "Start Sync ✓",
1173
- "binding": "Binding…",
1174
- "previewing": "Scanning local files…",
1175
- "will_upload": "↑ Upload to cloud ({n} items)",
1176
- "will_download": "↓ Download to local ({n} items)",
1177
- "will_delete": "⊘ Delete ({n} items)",
1178
- "skipped": "⚠ Skippedexceeds size limit ({n} items)",
1179
- "first_bind_hint": "No conflicts detected. All local files will be uploaded.",
1180
- "confirm_label": "I understand my local KB will be the initial authority",
1195
+ "title": "Picora 동기화 바인딩 — {name}",
1196
+ "step": "단계 {current} / {total}",
1197
+ "step1_title": "Picora 계정 선택",
1198
+ "step2_title": "클라우드 KB 연결 또는 생성",
1199
+ "step3_title": "동기화 전략",
1200
+ "step4_title": " 번째 동기화 미리보기(시험 실행)",
1201
+ "no_picora": "Picora 계정을 찾을 없습니다. 먼저 설정호스팅에서 추가해 주세요.",
1202
+ "loading_kbs": "클라우드 KB 로드 중…",
1203
+ "create_new": " 클라우드 KB 만들기",
1204
+ "link_existing": "기존 클라우드 KB에 연결",
1205
+ "kb_name": "이름",
1206
+ "kb_slug": "슬러그(URL 친화적인 ID)",
1207
+ "select_kb": "클라우드 KB를 선택하세요…",
1208
+ "back": "← 뒤로",
1209
+ "next": "다음 →",
1210
+ "start_sync": "동기화 시작 ✓",
1211
+ "binding": "제본…",
1212
+ "previewing": "로컬 파일 검사 중…",
1213
+ "will_upload": "↑ 클라우드에 업로드 ({n} 항목)",
1214
+ "will_download": "↓ 로컬로 다운로드 ({n} 항목)",
1215
+ "will_delete": "⊘ 삭제({n} 항목)",
1216
+ "skipped": "⚠ 건너뛰었습니다크기 제한을 초과했습니다({n} 항목).",
1217
+ "first_bind_hint": "충돌이 감지되지 않았습니다. 모든 로컬 파일이 업로드됩니다.",
1218
+ "confirm_label": "이해합니다. 지역 KB 초기 권한이 됩니다.",
1181
1219
  "link_existing_instead": "대신 기존 KB 연결"
1182
1220
  },
1183
1221
  "strategy": {
1184
- "mode": "Trigger",
1185
- "mode_manual": "Manual only",
1186
- "mode_on_save": "On save (3s delay)",
1187
- "mode_interval": "Scheduled",
1188
- "mode_startup": "On startup & close",
1189
- "interval60": "Every 1 minute",
1190
- "interval300": "Every 5 minutes",
1191
- "interval900": "Every 15 minutes",
1192
- "interval1800": "Every 30 minutes",
1193
- "scope": "Scope",
1194
- "scope_md_only": "Markdown files only (.md / .markdown)",
1195
- "scope_md_rules": "Markdown + rule files (MORAYA.md / CLAUDE.md / .mdx)",
1196
- "scope_all": "All text files including hidden directories",
1197
- "conflict": "Conflict policy",
1198
- "conflict_prompt": "Prompt me (recommended)",
1199
- "conflict_local": "Prefer local",
1200
- "conflict_remote": "Prefer remote"
1222
+ "mode": "방아쇠",
1223
+ "mode_manual": "수동으로만",
1224
+ "mode_on_save": "저장 (3초 지연)",
1225
+ "mode_interval": "예정됨",
1226
+ "mode_startup": "시작 닫을 때",
1227
+ "interval60": "1분마다",
1228
+ "interval300": "5분마다",
1229
+ "interval900": "15분마다",
1230
+ "interval1800": "30분마다",
1231
+ "scope": "범위",
1232
+ "scope_md_only": "마크다운 파일만(.md / .markdown)",
1233
+ "scope_md_rules": "마크다운 + 규칙 파일(MORAYA.md / CLAUDE.md / .mdx)",
1234
+ "scope_all": "숨겨진 디렉터리를 포함한 모든 텍스트 파일",
1235
+ "conflict": "갈등 정책",
1236
+ "conflict_prompt": "확인(권장)",
1237
+ "conflict_local": "현지 선호",
1238
+ "conflict_remote": "원격 선호"
1201
1239
  },
1202
1240
  "settings": {
1203
- "global_switch": "Enable KB auto-sync on this machine",
1204
- "global_switch_hint": "When off, all scheduled syncs are paused. Manual \"Sync Now\" still works.",
1205
- "last_sync": "Last sync",
1206
- "never": "Never",
1207
- "unbound": "Not bound to Picora",
1208
- "sync_now": "Sync Now",
1209
- "syncing": "Syncing…",
1210
- "edit_strategy": "Edit strategy",
1211
- "unbind": "Unbind",
1212
- "unbind_title": "Unbind Picora Sync",
1213
- "unbind_confirm": "Remove Picora sync binding for \"{name}\"? Cloud data is preserved.",
1214
- "view_conflicts": "Conflicts",
1215
- "bind": "Bind to Picora",
1216
- "no_kbs": "No knowledge bases added yet."
1241
+ "global_switch": " 컴퓨터에서 KB 자동 동기화를 활성화합니다.",
1242
+ "global_switch_hint": "꺼져 있으면 예약된 모든 동기화가 일시 중지됩니다. 수동 \"지금 동기화\" 계속 작동합니다.",
1243
+ "last_sync": "마지막 동기화",
1244
+ "never": "절대",
1245
+ "unbound": "Picora에 바인딩되지 않음",
1246
+ "sync_now": "지금 동기화",
1247
+ "syncing": "동기화 중…",
1248
+ "edit_strategy": "전략 수정",
1249
+ "unbind": "바인딩 해제",
1250
+ "unbind_title": "Picora 동기화 바인딩 해제",
1251
+ "unbind_confirm": "'{name}'에 대한 Picora 동기화 바인딩을 제거하시겠습니까? 클라우드 데이터는 보존됩니다.",
1252
+ "view_conflicts": "충돌",
1253
+ "bind": "Picora에 바인딩",
1254
+ "no_kbs": "아직 추가된 기술 자료가 없습니다."
1217
1255
  },
1218
1256
  "conflict": {
1219
- "title": "Conflict Resolution — {name} ({n} items)",
1220
- "no_conflicts": "No conflicts to resolve.",
1221
- "local": "Local version",
1222
- "remote": "Cloud version",
1223
- "no_preview": "(no preview)",
1224
- "keep_local": "Keep local (overwrite cloud)",
1225
- "keep_remote": "Pull cloud (overwrite local)",
1226
- "keep_both": "Keep both (cloud copy saved as .conflict.md)",
1227
- "skip": "Skip",
1228
- "apply_one": "Apply this",
1229
- "apply_all": "Apply all selected ({n})"
1257
+ "title": "충돌 해결 — {name}({n} 항목)",
1258
+ "no_conflicts": "해결해야 충돌이 없습니다.",
1259
+ "local": "로컬 버전",
1260
+ "remote": "클라우드 버전",
1261
+ "no_preview": "(미리보기 없음)",
1262
+ "keep_local": "로컬 유지(클라우드 덮어쓰기)",
1263
+ "keep_remote": "클라우드 가져오기(로컬 덮어쓰기)",
1264
+ "keep_both": " 유지(클라우드 사본이 .contribute.md로 저장됨)",
1265
+ "skip": "건너뛰다",
1266
+ "apply_one": "이것을 적용하십시오",
1267
+ "apply_all": "선택한 항목 모두 적용({n})"
1230
1268
  },
1231
1269
  "statusbar": {
1232
- "tooltip": "KB Sync status click for details",
1270
+ "tooltip": "KB 동기화 상태 - 자세한 내용을 보려면 클릭하세요.",
1233
1271
  "error_label": "동기화 오류:"
1234
1272
  },
1235
1273
  "sync_now": "지금 동기화",
@@ -1282,7 +1320,7 @@
1282
1320
  "remove": "링크 제거"
1283
1321
  },
1284
1322
  "mcp": {
1285
- "title": "MCP servers",
1323
+ "title": "MCP 서버",
1286
1324
  "tabs": {
1287
1325
  "servers": "서버",
1288
1326
  "publish": "게시",
@@ -1308,7 +1346,7 @@
1308
1346
  },
1309
1347
  "servers": {
1310
1348
  "empty": "구성된 MCP 서버가 없습니다",
1311
- "local_mcp": "Local MCP",
1349
+ "local_mcp": "로컬 MCP",
1312
1350
  "add_server": "서버 추가",
1313
1351
  "add_server_plus": "+ 서버 추가",
1314
1352
  "connected": "연결됨",
@@ -1322,7 +1360,7 @@
1322
1360
  "command_placeholder": "명령어 (예: npx, node, python)",
1323
1361
  "args_placeholder": "인수 (예: -y @modelcontextprotocol/server-filesystem /path)",
1324
1362
  "env_placeholder": "ENV_KEY=value (줄당 하나)",
1325
- "presets": "Remote MCP",
1363
+ "presets": "원격 MCP",
1326
1364
  "presets_hint": "인기 MCP 서버 원클릭 추가",
1327
1365
  "preset_desc": {
1328
1366
  "filesystem": "로컬 파일 읽기, 검색 및 관리",
@@ -1390,8 +1428,8 @@
1390
1428
  "search": "MCP 서버 검색...",
1391
1429
  "source": "소스",
1392
1430
  "source_official": "공식",
1393
- "source_lobehub": "LobeHub",
1394
- "source_smithery": "Smithery",
1431
+ "source_lobehub": "로브허브",
1432
+ "source_smithery": "대장간",
1395
1433
  "install": "설치",
1396
1434
  "install_and_connect": "설치 및 연결",
1397
1435
  "installing": "설치 중...",
@@ -1408,149 +1446,147 @@
1408
1446
  "verified": "인증됨",
1409
1447
  "cancel": "취소"
1410
1448
  },
1411
- "subtitle": "Connect to Model Context Protocol servers to give the AI agent tools and resources.",
1412
- "settings_card_label": "MCP servers",
1449
+ "subtitle": "AI 에이전트 도구 리소스를 제공하려면 모델 컨텍스트 프로토콜 서버에 연결하세요.",
1450
+ "settings_card_label": "MCP 서버",
1413
1451
  "empty_state": {
1414
- "title": "No MCP servers configured",
1415
- "body": "Add a remote SSE or HTTP MCP server URL. Mobile builds intentionally do not spawn local processes see the bridging guide below for how to expose a local MCP server (e.g. via Tailscale tailnet or an SSH tunnel) as a remote URL.",
1416
- "cta": "Add server"
1452
+ "title": "구성된 MCP 서버가 없습니다.",
1453
+ "body": "원격 SSE 또는 HTTP MCP 서버 URL 추가합니다. 모바일 빌드는 의도적으로 로컬 프로세스를 생성하지 않습니다. 로컬 MCP 서버(예: Tailscale tailnet 또는 SSH 터널을 통해) 원격 URL로 노출하는 방법은 아래 브리징 가이드를 참조하세요.",
1454
+ "cta": "서버 추가"
1417
1455
  },
1418
1456
  "list": {
1419
- "add_button": "Add server",
1457
+ "add_button": "서버 추가",
1420
1458
  "status": {
1421
- "connected": "Connected",
1422
- "connecting": "Connecting…",
1423
- "disconnected": "Disconnected",
1424
- "error": "Error"
1459
+ "connected": "연결됨",
1460
+ "connecting": "연결 중…",
1461
+ "disconnected": "연결이 끊김",
1462
+ "error": "오류"
1425
1463
  },
1426
- "tool_count": "{count} tools",
1427
- "resource_count": "{count} resources",
1428
- "last_connected": "Last connected {when}",
1429
- "help_button": "How do I connect?"
1464
+ "tool_count": "{count} 도구",
1465
+ "resource_count": "{count} 리소스",
1466
+ "last_connected": "마지막 연결 {when}",
1467
+ "help_button": "어떻게 연결하나요?"
1430
1468
  },
1431
1469
  "edit": {
1432
- "title_new": "Add MCP server",
1433
- "title_edit": "Edit MCP server",
1434
- "name_label": "Name",
1435
- "name_placeholder": "e.g. WeChat publisher",
1436
- "transport_label": "Transport",
1437
- "transport_sse": "SSE (Server-Sent Events)",
1438
- "transport_http": "HTTP (Streamable)",
1470
+ "title_new": "MCP 서버 추가",
1471
+ "title_edit": "MCP 서버 편집",
1472
+ "name_label": "이름",
1473
+ "name_placeholder": "예를 들어 위챗 퍼블리셔",
1474
+ "transport_label": "수송",
1475
+ "transport_sse": "SSE(서버 전송 이벤트)",
1476
+ "transport_http": "HTTP(스트리밍 가능)",
1439
1477
  "url_label": "URL",
1440
1478
  "url_placeholder_sse": "https://example.com/mcp/sse",
1441
- "url_placeholder_http": "https://example.com/mcp",
1442
- "headers_label": "HTTP headers (optional)",
1443
- "headers_add": "Add header",
1444
- "header_key_placeholder": "Authorization",
1445
- "header_value_placeholder": "Bearer …",
1446
- "enabled_label": "Enable on startup",
1447
- "save_button": "Save",
1448
- "cancel_button": "Cancel",
1449
- "delete_button": "Delete server",
1450
- "delete_confirm": "Remove this MCP server? Saved tools and any open connection will be cleared.",
1479
+ "url_placeholder_http": "https://example.com",
1480
+ "headers_label": "HTTP 헤더(선택사항)",
1481
+ "headers_add": "헤더 추가",
1482
+ "header_key_placeholder": "권한 부여",
1483
+ "header_value_placeholder": "무기명 …",
1484
+ "enabled_label": "시작 활성화",
1485
+ "save_button": "구하다",
1486
+ "cancel_button": "취소",
1487
+ "delete_button": "서버 삭제",
1488
+ "delete_confirm": " MCP 서버를 삭제하시겠습니까? 저장된 도구와 열려 있는 모든 연결이 지워집니다.",
1451
1489
  "validation": {
1452
- "name_required": "Name is required.",
1453
- "url_required": "URL is required.",
1454
- "url_invalid": "URL must start with http:// or https://"
1490
+ "name_required": "이름은 필수입니다.",
1491
+ "url_required": "URL 필요합니다.",
1492
+ "url_invalid": "URL http:// 또는 https://로 시작해야 합니다."
1455
1493
  }
1456
1494
  },
1457
1495
  "detail": {
1458
- "title": "Server details",
1459
- "reconnect_button": "Reconnect",
1460
- "disconnect_button": "Disconnect",
1496
+ "title": "서버 세부정보",
1497
+ "reconnect_button": "다시 연결",
1498
+ "disconnect_button": "연결 끊기",
1461
1499
  "edit_button": "Edit",
1462
- "tools_heading": "Tools ({count})",
1463
- "resources_heading": "Resources ({count})",
1464
- "no_tools": "No tools exposed yet. Connect first.",
1465
- "no_resources": "No resources exposed.",
1466
- "error_heading": "Last error",
1467
- "transport_label": "Transport: {transport}",
1500
+ "tools_heading": "도구({count})",
1501
+ "resources_heading": "리소스({count})",
1502
+ "no_tools": "아직 노출된 도구가 없습니다. 먼저 연결하세요.",
1503
+ "no_resources": "노출된 리소스가 없습니다.",
1504
+ "error_heading": "마지막 오류",
1505
+ "transport_label": "운송: {transport}",
1468
1506
  "url_label": "URL: {url}"
1469
1507
  },
1470
1508
  "help": {
1471
- "title": "How to bridge a local MCP server",
1472
- "intro": "Mobile builds only speak to remote MCP servers over SSE or HTTP. Local stdio servers must be exposed via an external bridge — Moraya does not embed Tailscale, an SSH tunnel, or any other bridging tool.",
1509
+ "title": "로컬 MCP 서버를 연결하는 방법",
1510
+ "intro": "모바일 빌드는 SSE 또는 HTTP를 통해서만 원격 MCP 서버와 통신합니다. 로컬 stdio 서버는 외부 브리지를 통해 노출되어야 합니다. Moraya Tailscale, SSH 터널 또는 기타 브리징 도구를 포함하지 않습니다.",
1473
1511
  "tailscale": {
1474
- "heading": "Via your own LAN (e.g. Tailscale tailnet)",
1475
- "body": "Run your stdio MCP server on a laptop with a public-from-your-device hostname, then add a server here with a URL like http://laptop-name.your-tailnet.ts.net:3030/sse. The hostname is whatever your VPN / LAN provides Moraya does not detect it for you."
1512
+ "heading": "자체 LAN 통해(예: Tailscale tailnet)",
1513
+ "body": "public-from-your-device 호스트 이름을 사용하여 노트북에서 stdio MCP 서버를 실행한 다음 http://laptop-name.your-tailnet.ts.net:3030/sse 같은 URL을 사용하여 여기에 서버를 추가하세요. 호스트 이름은 VPN/LAN 제공하는 것입니다. Moraya 이를 감지하지 않습니다."
1476
1514
  },
1477
1515
  "tunnel": {
1478
- "heading": "Via a remote tunnel (e.g. SSH or Termex)",
1479
- "body": "Forward a remote server's MCP port to a URL you can reach from the phone, then paste that URL here. Same shape as a local LAN URL — Moraya treats every remote endpoint identically."
1516
+ "heading": "원격 터널(예: SSH 또는 Termex)을 통해",
1517
+ "body": "원격 서버의 MCP 포트를 전화에서 연결할 있는 URL 전달한 다음 해당 URL을 여기에 붙여넣습니다. 로컬 LAN URL 동일한 형태 - Moraya 모든 원격 엔드포인트를 동일하게 처리합니다."
1480
1518
  },
1481
1519
  "security": {
1482
- "heading": "Security",
1483
- "body": "URLs and headers are stored locally on this device. Headers are sent on every request use a short-lived token if you connect to anything outside your private network. Plain http:// URLs may require an NSAppTransportSecurity exception on iOS; HTTPS is recommended whenever possible."
1520
+ "heading": "보안",
1521
+ "body": "URL과 헤더는 장치에 로컬로 저장됩니다. 헤더는 요청이 있을 때마다 전송됩니다. 개인 네트워크 외부에 연결하는 경우 단기 토큰을 사용하세요. 일반 http:// URL에는 iOS에서 NSAppTransportSecurity 예외가 필요할 있습니다. 가능하다면 HTTPS 권장합니다."
1484
1522
  },
1485
- "close_button": "Got it"
1523
+ "close_button": "알았어요"
1486
1524
  },
1487
1525
  "errors": {
1488
- "connect_failed": "Failed to connect to {name}: {message}",
1489
- "tool_call_failed": "Tool call failed: {message}",
1490
- "server_not_connected": "Server is not connected.",
1491
- "tool_not_found": "Tool not found on any connected server."
1526
+ "connect_failed": "{name} 연결하지 못했습니다: {message}",
1527
+ "tool_call_failed": "도구 호출 실패: {message}",
1528
+ "server_not_connected": "서버가 연결되지 않았습니다.",
1529
+ "tool_not_found": "연결된 서버에서 도구를 찾을 없습니다."
1492
1530
  }
1493
1531
  },
1494
1532
  "media": {
1495
- "__mt": true,
1496
- "upload_title": "Media Uploads",
1497
- "uploading": "Uploading",
1498
- "upload_done": "Uploaded",
1499
- "upload_error": "Upload failed",
1500
- "compressed_from": "Compressed",
1501
- "compress_auto": "Auto-compress images > 1MB",
1502
- "size_limit_exceeded": "File exceeds size limit for your plan",
1503
- "mime_not_allowed": "File type not supported",
1504
- "quota_warn": "This note has over 10MB of media",
1505
- "quota_hard": "Media quota exceeded (100MB per note)",
1506
- "quota_title": "Media Usage",
1507
- "paste_title": "Paste Media"
1533
+ "upload_title": "미디어 업로드",
1534
+ "uploading": "업로드 ",
1535
+ "upload_done": "업로드됨",
1536
+ "upload_error": "업로드 실패",
1537
+ "compressed_from": "압축",
1538
+ "compress_auto": "이미지 자동 압축 > 1MB",
1539
+ "size_limit_exceeded": "파일이 계획의 크기 제한을 초과합니다.",
1540
+ "mime_not_allowed": "지원되지 않는 파일 형식",
1541
+ "quota_warn": " 메모에는 10MB가 넘는 미디어가 있습니다.",
1542
+ "quota_hard": "미디어 할당량 초과(메모당 100MB)",
1543
+ "quota_title": "미디어 사용",
1544
+ "paste_title": "미디어 붙여넣기"
1508
1545
  },
1509
1546
  "memory": {
1510
- "__mt": true,
1511
- "title": "Long-Term Memory",
1512
- "upgrade_required": "Long-term memory requires Personal plan or above.",
1513
- "health_title": "Memory Health",
1514
- "settings_title": "Memory Settings",
1515
- "half_life_label": "Memory half-life",
1516
- "half_life_never": "Never (no decay)",
1517
- "days": "days",
1518
- "export_import": "Export / Import",
1519
- "memories_title": "Memories",
1520
- "search_placeholder": "Search memories...",
1521
- "filter_all": "All types",
1522
- "kind_preference": "Preference",
1523
- "kind_project": "Project",
1524
- "kind_fact": "Fact",
1525
- "no_memories": "No memories yet. Use /memorize in chat to add one.",
1526
- "edit": "Edit",
1527
- "delete": "Delete",
1528
- "enable": "Enable",
1529
- "disable": "Disable",
1530
- "save": "Save",
1531
- "cancel": "Cancel",
1532
- "weight": "Weight",
1533
- "danger_zone": "Danger Zone",
1534
- "reset_all": "Reset all memories",
1535
- "reset_confirm_instruction": "Type RESET to confirm deleting all memories. This cannot be undone.",
1536
- "confirm_reset": "Delete all memories",
1537
- "export_title": "Export Memories",
1538
- "export_hint": "Download all your memories as a JSON file for backup or migration.",
1539
- "export_btn": "Export memories",
1540
- "export_invalid_format": "Invalid memory export format.",
1541
- "import_title": "Import Memories",
1542
- "import_hint": "Import memories from a previously exported JSON file.",
1543
- "choose_file": "Choose file (.json)",
1544
- "import_placeholder": "Or paste JSON here...",
1545
- "import_btn": "Import",
1546
- "import_success": "Memories imported successfully.",
1547
- "memorize_ack": "Memory saved.",
1548
- "forget_ack": "Memory forgotten.",
1549
- "forget_not_found": "No matching memories found.",
1550
- "private_mode_on": "Private mode on this conversation will not be extracted.",
1551
- "extract_queued": "{n} memory/memories pending your review.",
1552
- "conflict_detected": "Conflict detected with existing memory.",
1553
- "upgrade_memory": "Upgrade to Personal to unlock long-term memory."
1547
+ "title": "장기 기억",
1548
+ "upgrade_required": "장기 기억을 위해서는 개인 계획 이상이 필요합니다.",
1549
+ "health_title": "메모리 상태",
1550
+ "settings_title": "메모리 설정",
1551
+ "half_life_label": "메모리 반감기",
1552
+ "half_life_never": "없음(감소 없음)",
1553
+ "days": "",
1554
+ "export_import": "내보내기/가져오기",
1555
+ "memories_title": "추억",
1556
+ "search_placeholder": "추억 검색...",
1557
+ "filter_all": "모든 유형",
1558
+ "kind_preference": "선호",
1559
+ "kind_project": "프로젝트",
1560
+ "kind_fact": "사실",
1561
+ "no_memories": "아직 추억이 없습니다. 추가하려면 채팅에서 /memorize를 사용하세요.",
1562
+ "edit": "편집하다",
1563
+ "delete": "삭제",
1564
+ "enable": "할 수 있게 하다",
1565
+ "disable": "장애를 입히다",
1566
+ "save": "구하다",
1567
+ "cancel": "취소",
1568
+ "weight": "무게",
1569
+ "danger_zone": "위험지대",
1570
+ "reset_all": "모든 추억을 재설정",
1571
+ "reset_confirm_instruction": "모든 메모리 삭제를 확인하려면 RESET을 입력하세요. 이 작업은 취소할 수 없습니다.",
1572
+ "confirm_reset": "모든 추억 삭제",
1573
+ "export_title": "추억 내보내기",
1574
+ "export_hint": "백업 또는 마이그레이션을 위해 모든 추억을 JSON 파일로 다운로드하세요.",
1575
+ "export_btn": "추억 내보내기",
1576
+ "export_invalid_format": "메모리 내보내기 형식이 잘못되었습니다.",
1577
+ "import_title": "추억 가져오기",
1578
+ "import_hint": "이전에 내보낸 JSON 파일에서 추억을 가져옵니다.",
1579
+ "choose_file": "파일(.json) 선택",
1580
+ "import_placeholder": "아니면 여기에 JSON을 붙여넣으세요...",
1581
+ "import_btn": "수입",
1582
+ "import_success": "추억을 성공적으로 가져왔습니다.",
1583
+ "memorize_ack": "메모리가 절약되었습니다.",
1584
+ "forget_ack": "잊혀진 기억.",
1585
+ "forget_not_found": "일치하는 추억을 찾을 수 없습니다.",
1586
+ "private_mode_on": "비공개 모드 켜짐 — 이 대화는 추출되지 않습니다.",
1587
+ "extract_queued": "{n} 메모리/검토 대기 중인 추억.",
1588
+ "conflict_detected": "기존 메모리와 충돌이 감지되었습니다.",
1589
+ "upgrade_memory": "장기 기억을 잠금 해제하려면 개인용으로 업그레이드하세요."
1554
1590
  },
1555
1591
  "menu": {
1556
1592
  "file": "파일",
@@ -1569,7 +1605,7 @@
1569
1605
  "export_html": "HTML",
1570
1606
  "export_pdf": "PDF",
1571
1607
  "export_image": "이미지 (PNG)",
1572
- "export_doc": "Word (.doc)",
1608
+ "export_doc": "워드(.doc)",
1573
1609
  "heading1": "제목 1",
1574
1610
  "heading2": "제목 2",
1575
1611
  "heading3": "제목 3",
@@ -1623,391 +1659,398 @@
1623
1659
  "empty": "빈 다이어그램"
1624
1660
  },
1625
1661
  "mfa": {
1626
- "__mt": true,
1627
- "title": "Multi-Factor Authentication",
1628
- "description": "Configure MFA requirements for team members.",
1629
- "policy": "MFA Policy",
1630
- "allowed_types": "Allowed MFA Methods",
1631
- "grace_period": "Grace Period",
1632
- "grace_period_hint": "Hours new members have to enroll in MFA after joining.",
1633
- "hours": "hours",
1634
- "required_banner": "MFA is required. All members must enroll before accessing team resources.",
1635
- "save": "Save MFA Settings",
1636
- "saved_success": "MFA settings saved."
1662
+ "title": "다단계 인증",
1663
+ "description": " 구성원에 대한 MFA 요구 사항을 구성합니다.",
1664
+ "policy": "MFA 정책",
1665
+ "allowed_types": "허용되는 MFA 방법",
1666
+ "grace_period": "유예기간",
1667
+ "grace_period_hint": "신규 회원은 가입 후 MFA에 등록해야 하는 시간이 있습니다.",
1668
+ "hours": "시간",
1669
+ "required_banner": "MFA가 필요합니다. 모든 구성원은 팀 리소스에 액세스하기 전에 등록해야 합니다.",
1670
+ "save": "MFA 설정 저장",
1671
+ "saved_success": "MFA 설정이 저장되었습니다."
1637
1672
  },
1638
1673
  "migration": {
1639
- "__mt": true,
1640
- "title": "KB Migration",
1641
- "subtitle": "Move your knowledge base to a different storage provider",
1642
- "new_migration": "New Migration",
1643
- "wizard_title": "New Migration Wizard",
1674
+ "title": "KB 마이그레이션",
1675
+ "subtitle": "기술 자료를 다른 스토리지 제공업체로 이동하세요.",
1676
+ "new_migration": "새로운 마이그레이션",
1677
+ "wizard_title": " 마이그레이션 마법사",
1644
1678
  "kb_id": "KB ID",
1645
- "kb_name": "KB Name",
1646
- "provider": "Provider",
1647
- "bucket": "Bucket",
1648
- "prefix": "Prefix",
1649
- "source": "Source",
1650
- "target": "Target",
1651
- "encryption_mode": "Encryption Mode",
1652
- "dry_run_label": "Dry run (simulate only, no files copied)",
1653
- "dry_run_badge": "Dry Run",
1654
- "dry_run_start": "Start Dry Run",
1655
- "start_migration": "Start Migration",
1656
- "cancel": "Cancel",
1657
- "files": "files",
1658
- "errors": "Errors",
1659
- "started": "Started",
1660
- "rollback_deadline": "Rollback deadline",
1661
- "rollback": "Rollback",
1662
- "download_log": "Download Log",
1663
- "history_title": "Migration History",
1664
- "history_empty": "No migrations yet",
1665
- "loading": "Loading...",
1666
- "confirm_delete": "Delete this migration session?"
1679
+ "kb_name": "KB 이름",
1680
+ "provider": "공급자",
1681
+ "bucket": "버킷",
1682
+ "prefix": "접두사",
1683
+ "source": "원천",
1684
+ "target": "목표",
1685
+ "encryption_mode": "암호화 모드",
1686
+ "dry_run_label": "테스트 실행(시뮬레이션만 가능, 파일은 복사되지 않음)",
1687
+ "dry_run_badge": "드라이런",
1688
+ "dry_run_start": "연습 실행 시작",
1689
+ "start_migration": "마이그레이션 시작",
1690
+ "cancel": "취소",
1691
+ "files": "파일",
1692
+ "errors": "오류",
1693
+ "started": "시작됨",
1694
+ "rollback_deadline": "롤백 기한",
1695
+ "rollback": "롤백",
1696
+ "download_log": "로그 다운로드",
1697
+ "history_title": "마이그레이션 기록",
1698
+ "history_empty": "아직 마이그레이션이 없습니다.",
1699
+ "loading": "로드 중...",
1700
+ "confirm_delete": " 마이그레이션 세션을 삭제하시겠습니까?"
1667
1701
  },
1668
1702
  "mobile": {
1669
- "__mt": true,
1670
1703
  "tab": {
1671
- "nav_label": "Primary navigation",
1704
+ "nav_label": "기본 탐색",
1672
1705
  "edit": "Edit",
1673
- "ai": "AI",
1674
- "files": "Knowledge Base",
1675
- "settings": "Settings"
1706
+ "ai": "일체 포함",
1707
+ "files": "기술 자료",
1708
+ "settings": "설정"
1676
1709
  },
1677
1710
  "appbar": {
1678
- "menu": "Open sidebar",
1679
- "more": "More actions",
1680
- "toggle_ai_pane": "Toggle AI pane",
1681
- "untitled": "Untitled"
1711
+ "menu": "사이드바 열기",
1712
+ "more": "추가 작업",
1713
+ "toggle_ai_pane": "AI 창 전환",
1714
+ "untitled": "제목 없음"
1682
1715
  },
1683
1716
  "overflow": {
1684
- "mode_label": "Mode",
1685
- "mode_visual": "Visual",
1686
- "mode_source": "Source",
1687
- "search": "Find & Replace",
1688
- "outline": "Outline",
1689
- "export": "Export",
1690
- "share": "Share"
1717
+ "mode_label": "방법",
1718
+ "mode_visual": "시각적",
1719
+ "mode_source": "원천",
1720
+ "search": "찾기 바꾸기",
1721
+ "outline": "개요",
1722
+ "export": "내보내다",
1723
+ "share": "공유하다"
1691
1724
  },
1692
1725
  "format": {
1693
- "bold": "Bold",
1694
- "italic": "Italic",
1695
- "heading": "Heading",
1696
- "list": "List",
1697
- "code": "Code",
1698
- "link": "Link",
1699
- "link_prompt": "Enter URL",
1700
- "image": "Image"
1726
+ "bold": "용감한",
1727
+ "italic": "이탤릭체",
1728
+ "heading": "표제",
1729
+ "list": "목록",
1730
+ "code": "암호",
1731
+ "link": "링크",
1732
+ "link_prompt": "URL을 입력하세요",
1733
+ "image": "영상"
1701
1734
  },
1702
1735
  "ai": {
1703
- "title": "AI",
1704
- "placeholder": "Ask anything or describe what you want to write…",
1705
- "send": "Send",
1706
- "voice": "Voice",
1707
- "model": "Model",
1708
- "empty_state": "Your AI conversations will appear here.",
1709
- "thinking": "Thinking…",
1710
- "clear": "Clear conversation",
1711
- "clear_confirm": "Clear all messages?",
1712
- "stub_response": "Hi! I'm a placeholder response. The real AI provider will be wired up in v0.68.",
1713
- "not_configured_title": "AI is not configured yet",
1714
- "not_configured_text": "Add an API key or pick a local model in Settings → AI to start chatting.",
1715
- "not_configured": "AI is not configured. Open Settings to set up an AI model?",
1716
- "configure_now": "Set up",
1717
- "stop": "Stop",
1718
- "error_prefix": "Error",
1719
- "pick_model": "Switch AI model",
1720
- "no_providers": "No AI providers configured yet. Tap “Set up” to add one.",
1721
- "conversations": "Conversations",
1722
- "new_chat": "New chat",
1723
- "no_conversations": "No conversations yet. Tap “New chat” to start.",
1724
- "no_matches": "No conversations match your search.",
1725
- "search_placeholder": "Search conversations…",
1726
- "attach_image": "Attach image",
1727
- "remove_attachment": "Remove attachment",
1728
- "attached_image": "Attached image",
1729
- "compressing": "Compressing…",
1730
- "copy": "Copy",
1731
- "sync_syncing": "Syncing with Picora…",
1732
- "sync_idle": "Synced with Picora",
1733
- "sync_offline": "Offline (will retry)",
1734
- "sync_error": "Sync error — check connection",
1735
- "sync_disabled": "Sync disabled",
1736
- "mention_title": "Mention a note",
1737
- "mention_search": "Search your notes…",
1738
- "no_notes": "No notes yet — open one from the Files tab.",
1739
- "insert_action": "Insert",
1740
- "insert_title": "Insert into note",
1741
- "insert_append": "Append to current note",
1742
- "insert_append_sub": "Add this AI reply to the doc you have open in the Edit tab.",
1743
- "insert_new": "Create new note",
1744
- "insert_new_sub": "Make a new doc from this AI reply and open it.",
1745
- "insert_no_active": "No document is open in the Edit tab.",
1746
- "insert_failed": "Could not write the note check storage permissions.",
1747
- "insert_append_ok": "Appended to current note.",
1748
- "insert_new_ok": "New note created.",
1749
- "export": "Export / Share",
1750
- "export_failed": "Could not export this conversation.",
1751
- "export_ok": "Conversation exported.",
1752
- "rag_used": "Referenced {n} past message(s)",
1753
- "rag_on_title": "History RAG enabled — past conversations may be used as context",
1754
- "citations_title": "{n} reference(s)",
1755
- "citations_empty": "No citations attached to this message.",
1756
- "params_title": "Generation parameters",
1757
- "params_hint": "Override AI generation settings for this conversation only. Leave blank to use the provider default.",
1758
- "params_save": "Save",
1759
- "params_reset": "Reset to defaults",
1760
- "param_temperature": "Temperature",
1761
- "param_temperature_sub": "0 = deterministic · 1 = balanced · 2 = creative",
1762
- "param_max_tokens": "Max output tokens",
1763
- "param_max_tokens_sub": "Hard cap on the model's reply length",
1764
- "param_top_p": "Top-P",
1765
- "param_top_p_sub": "Nucleus sampling threshold (0–1)",
1766
- "param_stop": "Stop sequences",
1767
- "param_stop_sub": "Model halts when about to emit any of these. Comma-separated; use \\n for newline.",
1768
- "param_stop_placeholder": "\\n\\n###, END",
1769
- "presets_label": "Presets",
1770
- "preset_save_as": "Save current as preset",
1771
- "preset_save_prompt": "Name this preset:",
1772
- "preset_delete_confirm": "Delete preset \"{name}\"?",
1773
- "preset_delete_aria": "Delete preset",
1774
- "preset_picker_title": "Pick a preset",
1775
- "preset_picker_hint": "Switch tone for this conversation. For fine-tuning, use the ⚙ gear.",
1776
- "preset_picker_custom_note": "Currently using custom values — open ⚙ to view or save them as a preset.",
1777
- "preset_custom_label": "Custom",
1778
- "retry_title": "Retry this reply",
1779
- "retry_action": "Retry",
1780
- "retry_as_is": "Retry with current params",
1781
- "retry_with_preset": "Or try a different preset",
1782
- "retry_done": "Reply regenerating",
1783
- "retry_undone": "Original reply restored",
1784
- "undo": "Undo",
1736
+ "title": "일체 포함",
1737
+ "placeholder": "무엇이든 물어보거나 쓰고 싶은 내용을 기술해 보세요.",
1738
+ "send": "보내다",
1739
+ "voice": "목소리",
1740
+ "model": "모델",
1741
+ "empty_state": "AI 대화가 여기에 표시됩니다.",
1742
+ "thinking": "생각…",
1743
+ "clear": "명확한 대화",
1744
+ "clear_confirm": "모든 메시지를 지우시겠습니까?",
1745
+ "cleared": "대화가 지워졌습니다",
1746
+ "clear_undone": "메시지가 복원되었습니다",
1747
+ "stub_response": "안녕! 나는 자리 표시자 응답입니다. 실제 AI 공급자는 v0.68에 연결됩니다.",
1748
+ "not_configured_title": "AI 아직 구성되지 않았습니다.",
1749
+ "not_configured_text": "채팅을 시작하려면 API 키를 추가하거나 설정 → AI에서 로컬 모델을 선택하세요.",
1750
+ "not_configured": "AI가 구성되지 않았습니다. 설정을 열어 AI 모델을 설정하시겠습니까?",
1751
+ "configure_now": "설정",
1752
+ "stop": "멈추다",
1753
+ "error_prefix": "오류",
1754
+ "pick_model": "AI 모델 전환",
1755
+ "no_providers": "아직 구성된 AI 제공업체가 없습니다. 추가하려면 '설정'을 탭하세요.",
1756
+ "conversations": "대화",
1757
+ "new_chat": " 채팅",
1758
+ "no_conversations": "아직 대화가 없습니다. 시작하려면 '새 채팅'을 탭하세요.",
1759
+ "no_matches": "검색어와 일치하는 대화가 없습니다.",
1760
+ "search_placeholder": "대화 검색…",
1761
+ "attach_image": "이미지 첨부",
1762
+ "remove_attachment": "첨부파일 삭제",
1763
+ "attached_image": "첨부된 이미지",
1764
+ "compressing": "압축 중…",
1765
+ "copy": "복사",
1766
+ "sync_syncing": "Picora와 동기화 중…",
1767
+ "sync_idle": "Picora와 동기화됨",
1768
+ "sync_offline": "오프라인(다시 시도합니다)",
1769
+ "sync_error": "동기화 오류 — 연결을 확인하세요",
1770
+ "sync_disabled": "동기화가 비활성화되었습니다.",
1771
+ "mention_title": "메모 언급",
1772
+ "mention_search": "메모 검색…",
1773
+ "no_notes": "아직 메모가 없습니다. 파일 탭에서 메모를 여세요.",
1774
+ "insert_action": "끼워 넣다",
1775
+ "insert_title": "메모에 삽입",
1776
+ "insert_append": "현재 메모에 추가",
1777
+ "insert_append_sub": "편집 탭에 열려 있는 문서에 AI 답글을 추가하세요.",
1778
+ "insert_new": " 메모 만들기",
1779
+ "insert_new_sub": " AI 답글로 문서를 만들고 열어보세요.",
1780
+ "insert_no_active": "편집 탭에 문서가 열려 있지 않습니다.",
1781
+ "insert_failed": "메모를 작성할 수 없습니다. 저장 권한을 확인하세요.",
1782
+ "insert_append_ok": "현재 메모에 추가되었습니다.",
1783
+ "insert_new_ok": " 메모가 생성되었습니다.",
1784
+ "export": "내보내기/공유",
1785
+ "export_failed": " 대화를 내보낼 수 없습니다.",
1786
+ "export_ok": "대화를 내보냈습니다.",
1787
+ "rag_used": "{n} 과거 메시지를 참조했습니다.",
1788
+ "rag_on_title": "기록 RAG 활성화 과거 대화를 컨텍스트로 사용할 수 있습니다.",
1789
+ "citations_title": "{n} 참조",
1790
+ "citations_empty": " 메시지에는 인용문이 첨부되지 않았습니다.",
1791
+ "params_title": "생성 매개변수",
1792
+ "params_hint": " 대화에 대해서만 AI 생성 설정을 재정의합니다. 공급자 기본값을 사용하려면 비워 두세요.",
1793
+ "params_save": "구하다",
1794
+ "params_reset": "기본값으로 재설정",
1795
+ "param_temperature": "온도",
1796
+ "param_temperature_sub": "0 = 결정적 · 1 = 균형 · 2 = 창의적",
1797
+ "param_max_tokens": "최대 출력 토큰",
1798
+ "param_max_tokens_sub": "모델의 응답 길이에 대한 하드 캡",
1799
+ "param_top_p": "탑-P",
1800
+ "param_top_p_sub": " 샘플링 임계값(0-1)",
1801
+ "param_stop": "정지 시퀀스",
1802
+ "param_stop_sub": "이러한 항목을 방출하려고 하면 모델이 중지됩니다. 쉼표로 구분됩니다. 개행에는 \\n을 사용하세요.",
1803
+ "param_stop_placeholder": "\\n\\n###, ",
1804
+ "presets_label": "사전 설정",
1805
+ "preset_save_as": "현재를 사전 설정으로 저장",
1806
+ "preset_save_prompt": " 사전 설정의 이름을 지정합니다.",
1807
+ "preset_delete_confirm": "사전 설정 '{name}'을 삭제하시겠습니까?",
1808
+ "preset_delete_aria": "사전 설정 삭제",
1809
+ "preset_deleted": "프리셋 \"{name}\" 삭제됨",
1810
+ "preset_restored": "프리셋이 복원되었습니다",
1811
+ "preset_picker_title": "사전 설정 선택",
1812
+ "preset_picker_hint": "이 대화의 톤을 전환하세요. 미세 조정을 위해서는 ⚙ 기어를 사용하세요.",
1813
+ "preset_picker_custom_note": "현재 사용자 정의 값을 사용 중입니다. ⚙를 열어 해당 값을 보거나 사전 설정으로 저장하세요.",
1814
+ "preset_custom_label": "관습",
1815
+ "retry_title": " 답장을 다시 시도하세요.",
1816
+ "retry_action": "다시 보다",
1817
+ "retry_as_is": "현재 매개변수로 재시도",
1818
+ "retry_with_preset": "아니면 다른 사전 설정을 사용해 보세요.",
1819
+ "retry_done": "답장을 재생성하는 중",
1820
+ "retry_undone": "원래 답글이 복원되었습니다.",
1821
+ "undo": "끄르다",
1785
1822
  "presets": {
1786
1823
  "default": {
1787
- "label": "Default"
1824
+ "label": "기본"
1788
1825
  },
1789
1826
  "precise": {
1790
- "label": "Precise"
1827
+ "label": "정밀한"
1791
1828
  },
1792
1829
  "balanced": {
1793
- "label": "Balanced"
1830
+ "label": "균형 잡힌"
1794
1831
  },
1795
1832
  "creative": {
1796
- "label": "Creative"
1833
+ "label": "창의적인"
1797
1834
  }
1798
1835
  },
1799
- "default": "Default",
1800
- "quick_actions_header": "Start with",
1801
- "workflows_header": "Workflows",
1802
- "wf_steps": "steps",
1836
+ "default": "기본",
1837
+ "quick_actions_header": "다음으로 시작",
1838
+ "workflows_header": "워크플로",
1839
+ "wf_steps": "단계",
1803
1840
  "wf": {
1804
1841
  "summarize-then-translate": {
1805
- "name": "SummarizeTranslate",
1806
- "desc": "TL;DR the input, then translate the summary."
1842
+ "name": "요약번역",
1843
+ "desc": "입력 내용을 TL;DR 다음 요약을 번역하세요."
1807
1844
  },
1808
1845
  "translate-then-polish": {
1809
- "name": "TranslatePolish",
1810
- "desc": "Translate input, then smooth the translation."
1846
+ "name": "번역폴란드어",
1847
+ "desc": "입력을 번역한 다음 번역을 부드럽게 합니다."
1811
1848
  },
1812
1849
  "step": {
1813
- "summarize": "Summarizing",
1814
- "translate": "Translating",
1815
- "polish": "Polishing",
1816
- "tone": "Tone",
1817
- "length": "Length",
1818
- "article": "Writing article",
1819
- "cover": "Cover image",
1820
- "target_lang": "Target language",
1821
- "dictate": "Dictation",
1822
- "structurize": "Structuring"
1850
+ "summarize": "요약",
1851
+ "translate": "번역 중",
1852
+ "polish": "세련",
1853
+ "tone": "음정",
1854
+ "length": "길이",
1855
+ "article": "기사 작성",
1856
+ "cover": "표지 이미지",
1857
+ "target_lang": "대상 언어",
1858
+ "dictate": "받아쓰기",
1859
+ "structurize": "구조화"
1823
1860
  },
1824
1861
  "write-article": {
1825
- "name": "Write article + cover",
1826
- "desc": "Topictone/lengtharticle → AI cover",
1827
- "ask_tone": "What tone should the article take?",
1828
- "ask_length": "How long should it be?",
1829
- "cover_hint": "Generating a cover image…"
1862
+ "name": "기사 쓰기 + 표지",
1863
+ "desc": "주제어조/길이기사 → AI 표지",
1864
+ "ask_tone": "기사는 어떤 톤을 취해야 합니까?",
1865
+ "ask_length": "얼마나 오래 있어야 합니까?",
1866
+ "cover_hint": "표지 이미지 생성 중…"
1830
1867
  },
1831
1868
  "translate": {
1832
- "name": "Translate",
1833
- "desc": "Translate text into a target language",
1834
- "ask_lang": "Translate into which language?"
1869
+ "name": "번역하다",
1870
+ "desc": "텍스트를 대상 언어로 번역",
1871
+ "ask_lang": "어떤 언어로 번역하시겠습니까?"
1835
1872
  },
1836
1873
  "voice-transcribe": {
1837
- "name": "Voicenote",
1838
- "desc": "Dictate, then structure into a note",
1839
- "hint": "Tap done when you finish speaking."
1874
+ "name": "음성메모",
1875
+ "desc": "받아쓰기한 메모로 구성",
1876
+ "hint": "말하기를 마치면 완료를 탭하세요."
1840
1877
  },
1841
1878
  "tone": {
1842
- "general": "General",
1843
- "marketing": "Marketing",
1844
- "technical": "Technical",
1845
- "story": "Story"
1879
+ "general": "일반적인",
1880
+ "marketing": "마케팅",
1881
+ "technical": "인위적인",
1882
+ "story": "이야기"
1846
1883
  },
1847
1884
  "length": {
1848
- "short": "Short (~500)",
1849
- "medium": "Medium (~1500)",
1850
- "long": "Long (~3000)"
1885
+ "short": "단기(~500)",
1886
+ "medium": "중간(~1500)",
1887
+ "long": "(~3000)"
1851
1888
  },
1852
1889
  "lang": {
1853
- "en": "English",
1854
- "zh": "Chinese",
1855
- "ja": "Japanese",
1856
- "ko": "Korean"
1890
+ "en": "영어",
1891
+ "zh": "중국인",
1892
+ "ja": "일본어",
1893
+ "ko": "한국인"
1857
1894
  },
1858
- "cancel": "Cancel",
1859
- "listening": "Listening…",
1860
- "stt_done": "Done",
1861
- "generating_cover": "Generating cover…",
1862
- "cover_failed": "Cover generation failed",
1863
- "skip_cover": "Skip cover",
1864
- "regenerate": "Regenerate",
1865
- "insert_with_cover": "Insert article + cover",
1866
- "no_image_provider": "No image providerset one up in Settings → Image generation."
1895
+ "cancel": "취소",
1896
+ "listening": "청취…",
1897
+ "stt_done": "완료",
1898
+ "generating_cover": "표지 생성 중…",
1899
+ "cover_failed": "표지 생성 실패",
1900
+ "skip_cover": "표지 건너뛰기",
1901
+ "regenerate": "재생성",
1902
+ "insert_with_cover": "기사 + 표지 삽입",
1903
+ "no_image_provider": "이미지 제공자 없음설정 이미지 생성에서 설정하세요."
1867
1904
  },
1868
1905
  "tpl": {
1869
1906
  "screenshot-to-md": {
1870
- "name": "ImageMarkdown",
1871
- "desc": "Convert a screenshot, photo, or chart to clean Markdown.",
1872
- "input": "Add a caption or leave empty — the model uses your image."
1907
+ "name": "이미지마크다운",
1908
+ "desc": "스크린샷, 사진, 차트를 변환하여 Markdown을 정리하세요.",
1909
+ "input": "캡션을 추가하거나 비워 두세요. 모델이 이미지를 사용합니다."
1873
1910
  },
1874
1911
  "summarize-current": {
1875
- "name": "Summarize note",
1876
- "desc": "TL;DR + key terms of the doc open in the Edit tab.",
1877
- "input": "Optional focus: “key claims only”, “as bullet list”…"
1912
+ "name": "메모 요약",
1913
+ "desc": "TL;DR + 문서의 주요 용어는 편집 탭에서 열립니다.",
1914
+ "input": "선택적 초점: \"주요 주장만\", \"글머리 기호 목록으로\"..."
1878
1915
  },
1879
1916
  "continue-writing": {
1880
- "name": "Continue writing",
1881
- "desc": "Pick up where you left off in the current doc.",
1882
- "input": "Optional steering: tone, length, next section…"
1917
+ "name": "계속 쓰기",
1918
+ "desc": "현재 문서에서 중단한 부분부터 다시 시작하세요.",
1919
+ "input": "선택적 조정: 톤, 길이, 다음 섹션…"
1883
1920
  },
1884
1921
  "translate-zh-en": {
1885
- "name": "Translate ZH EN",
1886
- "desc": "Auto-detects source language. Preserves Markdown.",
1887
- "input": "Paste the text to translate."
1922
+ "name": "ZH EN 번역",
1923
+ "desc": "소스 언어를 자동 감지합니다. 마크다운을 유지합니다.",
1924
+ "input": "번역할 텍스트를 붙여넣으세요."
1888
1925
  }
1889
1926
  },
1890
- "rename": "Rename",
1891
- "rename_prompt": "New title",
1892
- "delete_confirm": "Delete “{title}”? This cannot be undone.",
1893
- "conv_deleted": "Deleted “{title}",
1894
- "conv_restored": "Conversation restored",
1895
- "usage_tooltip": "Prompt tokens Completion tokens ↓",
1896
- "budget_warn_confirm": "You are nearing your monthly AI budget. Send anyway?",
1897
- "budget_over_confirm": "You are OVER your monthly AI budget. Send anyway?",
1898
- "bulk_import": "Import all",
1899
- "bulk_export": "Export all",
1900
- "import_ok": "Imported {n} conversation(s).",
1901
- "import_empty": "No conversations in that file.",
1902
- "import_failed": "Import failed: {err}",
1903
- "compose": "Compose article",
1904
- "commands_title": "Commands",
1905
- "more_actions": "More actions",
1906
- "commands_empty": "No matching commands.",
1907
- "voice_dictate": "Voice input",
1908
- "voice_stop": "Stop",
1909
- "voice_read_aloud": "Read aloud",
1910
- "voice_local_badge": "On-device",
1911
- "voice_permission_denied": "Microphone or speech permission denied. Enable it in Settings to use voice.",
1912
- "voice_start_failed": "Could not start voice input.",
1913
- "voice_speak_failed": "Could not read this message aloud."
1927
+ "rename": "이름 바꾸기",
1928
+ "rename_prompt": " 제목",
1929
+ "delete_confirm": "'{title}'을 삭제하시겠습니까? 작업은 취소할 수 없습니다.",
1930
+ "conv_deleted": "'{title}'을(를) 삭제했습니다.",
1931
+ "conv_restored": "대화가 복원되었습니다.",
1932
+ "usage_tooltip": "프롬프트 토큰완료 토큰 ↓",
1933
+ "budget_warn_confirm": "월별 AI 예산이 거의 가까워졌습니다. 그래도 보내시겠습니까?",
1934
+ "budget_over_confirm": "월간 AI 예산을 초과했습니다. 그래도 보내시겠습니까?",
1935
+ "bulk_import": "모두 가져오기",
1936
+ "bulk_export": "모두 내보내기",
1937
+ "import_ok": "{n} 대화를 가져왔습니다.",
1938
+ "import_empty": "해당 파일에는 대화가 없습니다.",
1939
+ "import_failed": "가져오기 실패: {err}",
1940
+ "compose": "기사 작성",
1941
+ "commands_title": "명령",
1942
+ "more_actions": "추가 작업",
1943
+ "commands_empty": "일치하는 명령이 없습니다.",
1944
+ "voice_dictate": "음성 입력",
1945
+ "voice_stop": "멈추다",
1946
+ "voice_read_aloud": "소리내어 읽기",
1947
+ "voice_local_badge": "기기 내",
1948
+ "voice_permission_denied": "마이크 또는 음성 권한이 거부되었습니다. 음성을 사용하려면 설정에서 활성화하세요.",
1949
+ "voice_start_failed": "음성 입력을 시작할 없습니다.",
1950
+ "voice_speak_failed": " 메시지를 소리내어 읽을 없습니다.",
1951
+ "delete": "삭제"
1914
1952
  },
1915
1953
  "files": {
1916
- "title": "Knowledge Base",
1917
- "kb": "Knowledge Bases",
1918
- "tree": "All Notes",
1919
- "recent": "Recent",
1920
- "favorites": "Favorites",
1921
- "open_local": "Open from device",
1922
- "open_local_failed": "Could not open this file. Make sure it's a text or Markdown file.",
1923
- "new": "New document",
1924
- "no_recent": "No recently opened documents.",
1925
- "no_favorites": "No favorites yet. Star a document from the editor to add it here.",
1926
- "empty": "No notes yet. Tap “New document” or “Open from device” to start.",
1927
- "loading": "Loading…",
1928
- "new_kb": "New knowledge base",
1929
- "kb_name_placeholder": "Knowledge base name",
1930
- "create": "Create",
1931
- "cancel": "Cancel",
1932
- "kb_create_failed": "Could not create the knowledge base."
1954
+ "title": "기술 자료",
1955
+ "kb": "기술 자료",
1956
+ "tree": "모든 노트",
1957
+ "recent": "최근의",
1958
+ "favorites": "즐겨찾기",
1959
+ "open_local": "기기에서 열기",
1960
+ "open_local_failed": " 파일을 없습니다. 텍스트 파일인지 Markdown 파일인지 확인하세요.",
1961
+ "new": " 문서",
1962
+ "no_recent": "최근에 열었던 문서가 없습니다.",
1963
+ "no_favorites": "아직 즐겨찾기가 없습니다. 여기에 추가하려면 편집기에서 문서에 별표를 표시하세요.",
1964
+ "empty": "아직 메모가 없습니다. 시작하려면 '새 문서' 또는 '기기에서 열기'를 탭하세요.",
1965
+ "loading": "로드 중…",
1966
+ "new_kb": "새로운 지식 기반",
1967
+ "kb_name_placeholder": "기술 자료 이름",
1968
+ "create": "만들다",
1969
+ "cancel": "취소",
1970
+ "kb_create_failed": "기술 자료를 만들 없습니다."
1933
1971
  },
1934
1972
  "media": {
1935
- "title": "Cloud images",
1936
- "search": "Search images",
1937
- "loading": "Loading…",
1938
- "empty": "No cloud images yet.",
1939
- "insert": "Insert cloud image"
1973
+ "title": "클라우드 이미지",
1974
+ "search": "이미지 검색",
1975
+ "loading": "로드 중…",
1976
+ "empty": "아직 클라우드 이미지가 없습니다.",
1977
+ "insert": "클라우드 이미지 삽입"
1940
1978
  }
1941
1979
  },
1942
1980
  "notifications": {
1943
- "__mt": true,
1944
- "title": "Push Notifications",
1945
- "subtitle": "Receive alerts when your AI tasks finish or collaborators @ you.",
1946
- "unsupported": "This browser does not support push notifications.",
1947
- "permission_status": "Permission",
1948
- "permission_denied": "Notification permission denied.",
1949
- "denied_hint": "Open your browser settings to re-enable notifications.",
1950
- "enable": "Enable",
1951
- "disable": "Disable",
1952
- "no_token": "Failed to obtain a device token.",
1953
- "device_registered": "This device is registered:",
1954
- "registered_devices": "Registered devices",
1955
- "no_devices": "No devices registered yet.",
1956
- "revoke": "Revoke",
1957
- "revoke_confirm": "Revoke this device? It will stop receiving push notifications immediately.",
1981
+ "title": "푸시 알림",
1982
+ "subtitle": "AI 작업이 완료되거나 공동 작업자가 귀하에게 연락하면 알림을 받습니다.",
1983
+ "unsupported": " 브라우저는 푸시 알림을 지원하지 않습니다.",
1984
+ "permission_status": "허가",
1985
+ "permission_denied": "알림 권한이 거부되었습니다.",
1986
+ "denied_hint": "브라우저 설정을 열어 알림을 다시 활성화하세요.",
1987
+ "enable": " 있게 하다",
1988
+ "disable": "장애를 입히다",
1989
+ "no_token": "장치 토큰을 가져오지 못했습니다.",
1990
+ "device_registered": " 장치는 등록되어 있습니다:",
1991
+ "registered_devices": "등록된 기기",
1992
+ "no_devices": "아직 등록된 기기가 없습니다.",
1993
+ "revoke": "취소",
1994
+ "revoke_confirm": "이 기기를 취소하시겠습니까? 푸시 알림 수신이 즉시 중단됩니다.",
1958
1995
  "platform": {
1959
- "web": "Web",
1960
- "ios": "iOS",
1961
- "android": "Android",
1962
- "desktop": "Desktop",
1963
- "unknown": "Unknown"
1964
- },
1965
- "registered_at": "Registered {date}",
1966
- "last_seen": "Last seen {date}",
1967
- "error_register": "Could not register this device.",
1968
- "error_list": "Could not load device list."
1996
+ "web": "편물",
1997
+ "ios": "애플. iOS",
1998
+ "android": "기계적 인조 인간",
1999
+ "desktop": "데스크탑",
2000
+ "unknown": "알려지지 않은"
2001
+ },
2002
+ "registered_at": "{date} 등록됨",
2003
+ "last_seen": "마지막으로 날짜: {date}",
2004
+ "error_register": " 장치를 등록할 없습니다.",
2005
+ "error_list": "기기 목록을 로드할 없습니다.",
2006
+ "recent": "최근 알림"
2007
+ },
2008
+ "ocr": {
2009
+ "capture_button": "텍스트 캡처 및 추출",
2010
+ "capture_short": "포착",
2011
+ "recognizing": "텍스트를 인식하는 중…",
2012
+ "empty_result": "감지된 텍스트 없음",
2013
+ "failed": "OCR 실패",
2014
+ "engine_unavailable": "이 장치에서는 OCR을 사용할 수 없습니다"
1969
2015
  },
1970
2016
  "offline": {
1971
- "__mt": true,
1972
- "cache_enabled": "Offline cache enabled",
1973
- "cache_disabled": "Offline cache disabled",
1974
- "cache_size": "{size} cached",
1975
- "cache_note_count": "{count} notes cached",
1976
- "cache_expired": "Cache expired",
1977
- "note_cached": "Note cached for offline",
1978
- "note_evicted": "Note evicted from cache",
1979
- "offline_banner": "You are offline. Showing cached content.",
1980
- "cache_settings": "Offline Cache Settings",
1981
- "max_notes": "Max cached notes"
2017
+ "cache_enabled": "오프라인 캐시 활성화됨",
2018
+ "cache_disabled": "오프라인 캐시가 비활성화되었습니다.",
2019
+ "cache_size": "{size} 캐시됨",
2020
+ "cache_note_count": "{count} 메모가 캐시됨",
2021
+ "cache_expired": "캐시가 만료되었습니다.",
2022
+ "note_cached": "오프라인용으로 캐시된 메모",
2023
+ "note_evicted": "캐시에서 메모가 제거됨",
2024
+ "offline_banner": "귀하는 오프라인 상태입니다. 캐시된 콘텐츠를 표시합니다.",
2025
+ "cache_settings": "오프라인 캐시 설정",
2026
+ "max_notes": "최대 캐시된 메모"
1982
2027
  },
1983
2028
  "outline": {
1984
- "empty": "No headings found",
1985
- "title": "Outline",
1986
- "expand": "Expand",
1987
- "collapse": "Collapse"
2029
+ "empty": "제목을 찾을 수 없습니다.",
2030
+ "title": "개요",
2031
+ "expand": "확장하다",
2032
+ "collapse": "무너지다"
1988
2033
  },
1989
2034
  "perf": {
1990
- "__mt": true,
1991
- "memory_warning": "High memory usage detected ({percent}%)",
1992
- "memory_critical": "Critical memory usage ({percent}%)",
1993
- "memory_trend_growing": "Memory growing",
1994
- "memory_trend_stable": "Memory stable",
1995
- "memory_trend_shrinking": "Memory shrinking",
1996
- "vitals_score": "Performance score: {score}",
1997
- "vitals_good": "Good",
1998
- "vitals_needs_improvement": "Needs improvement",
1999
- "vitals_poor": "Poor"
2035
+ "memory_warning": "높은 메모리 사용량이 감지되었습니다({percent}%).",
2036
+ "memory_critical": "중요 메모리 사용량({percent}%)",
2037
+ "memory_trend_growing": "메모리 성장",
2038
+ "memory_trend_stable": "메모리 안정",
2039
+ "memory_trend_shrinking": "메모리 축소",
2040
+ "vitals_score": "성능 점수: {score}",
2041
+ "vitals_good": "좋은",
2042
+ "vitals_needs_improvement": "개선이 필요함",
2043
+ "vitals_poor": "가난한"
2000
2044
  },
2001
2045
  "permissions": {
2002
- "__mt": true,
2003
- "paste_title": "Allow Clipboard Access?",
2004
- "paste_desc": "Moraya wants to read image data from your clipboard. This is used only when you paste an image.",
2005
- "allow_once": "Allow Once",
2006
- "allow_always": "Always Allow",
2007
- "deny": "Deny",
2008
- "granted": "Clipboard access granted",
2009
- "denied": "Clipboard access denied",
2010
- "revoke": "Revoke Permission"
2046
+ "paste_title": "클립보드 액세스를 허용하시겠습니까?",
2047
+ "paste_desc": "Moraya는 클립보드에서 이미지 데이터를 읽으려고 합니다. 이미지를 붙여넣을 경우에만 사용됩니다.",
2048
+ "allow_once": " 번만 허용",
2049
+ "allow_always": "항상 허용",
2050
+ "deny": "부인하다",
2051
+ "granted": "클립보드 액세스 권한이 부여되었습니다.",
2052
+ "denied": "클립보드 액세스가 거부되었습니다.",
2053
+ "revoke": "권한 철회"
2011
2054
  },
2012
2055
  "plugin_action": {
2013
2056
  "title": "플러그인 실행",
@@ -2097,10 +2140,10 @@
2097
2140
  "repo_url_placeholder": "https://github.com/user/blog",
2098
2141
  "branch": "브랜치",
2099
2142
  "articles_dir": "글 디렉터리",
2100
- "articles_dir_placeholder": "content/posts/",
2143
+ "articles_dir_placeholder": "콘텐츠/게시물/",
2101
2144
  "images_dir": "이미지 디렉터리",
2102
- "images_dir_placeholder": "static/images/",
2103
- "token": "Personal Access Token",
2145
+ "images_dir_placeholder": "정적/이미지/",
2146
+ "token": "개인 액세스 토큰",
2104
2147
  "token_placeholder": "ghp_xxxxxxxxxxxx",
2105
2148
  "front_matter_template": "Front Matter 템플릿",
2106
2149
  "endpoint": "API 엔드포인트",
@@ -2109,9 +2152,9 @@
2109
2152
  "headers": "헤더 (JSON)",
2110
2153
  "body_template": "본문 템플릿",
2111
2154
  "template_presets": "템플릿 프리셋",
2112
- "preset_hugo": "Hugo",
2113
- "preset_hexo": "Hexo",
2114
- "preset_astro": "Astro",
2155
+ "preset_hugo": "휴고",
2156
+ "preset_hexo": "헥소",
2157
+ "preset_astro": "아스트로",
2115
2158
  "preset_custom": "사용자 지정",
2116
2159
  "file_name_pattern": "파일 이름 패턴",
2117
2160
  "file_name_preset": "이름 프리셋",
@@ -2125,7 +2168,7 @@
2125
2168
  "rss_enable": "RSS 피드 생성",
2126
2169
  "rss_enable_hint": "게시 시 feed.xml을 자동으로 업데이트합니다",
2127
2170
  "rss_feed_path": "피드 파일 경로",
2128
- "rss_feed_path_placeholder": "feed.xml",
2171
+ "rss_feed_path_placeholder": "피드.xml",
2129
2172
  "rss_site_url": "사이트 URL",
2130
2173
  "rss_site_url_placeholder": "https://myblog.com",
2131
2174
  "rss_feed_title": "피드 제목",
@@ -2152,43 +2195,40 @@
2152
2195
  "seo_no_provider": "AI 제공업체가 구성되지 않았습니다. 설정에서 AI 제공업체를 구성하세요."
2153
2196
  },
2154
2197
  "pwa": {
2155
- "__mt": true,
2156
- "install_prompt": "Install Moraya Web for a better experience.",
2157
- "install": "Install",
2158
- "dismiss": "Not now",
2159
- "update_available": "A new version is available.",
2160
- "refresh": "Refresh"
2198
+ "install_prompt": "더 나은 경험을 위해 Moraya Web을 설치하세요.",
2199
+ "install": "설치하다",
2200
+ "dismiss": "지금은 아님",
2201
+ "update_available": " 버전을 사용할 수 있습니다.",
2202
+ "refresh": "새로 고치다"
2161
2203
  },
2162
2204
  "quickopen": {
2163
- "__mt": true,
2164
- "title": "Quick Open",
2165
- "placeholder": "Search notes...",
2166
- "no_results": "No notes found",
2167
- "hint_enter": " Open",
2168
- "hint_cmd_enter": "⌘↵ Open in new tab"
2205
+ "title": "빠른 열기",
2206
+ "placeholder": "메모 검색...",
2207
+ "no_results": "메모를 찾을 수 없습니다.",
2208
+ "hint_enter": " 열기",
2209
+ "hint_cmd_enter": "⌘↵ 새 탭에서 열기"
2169
2210
  },
2170
2211
  "rag": {
2171
- "__mt": true,
2172
- "title": "AI Knowledge Search (RAG)",
2173
- "mode_label": "Search Mode",
2174
- "mode_disabled": "Disabled",
2175
- "mode_client": "Client-side (E2E compatible)",
2176
- "mode_server": "Server-side (faster, KMS required)",
2177
- "index_status": "Index Status",
2178
- "indexed_notes": "Indexed notes",
2179
- "rebuild_index": "Rebuild Full Index",
2180
- "pause_rebuild": "Pause",
2181
- "rebuilding": "Rebuilding index...",
2182
- "search_settings": "Search Settings",
2183
- "top_k_label": "Results (top-K)",
2184
- "threshold_label": "Min. similarity",
2185
- "sources_label": "Sources",
2186
- "sources_count": "{n} note excerpts",
2187
- "jump_to_source": "Jump to note →",
2188
- "no_sources": "No sources",
2189
- "server_mode_warning": "Server mode lets Moraya temporarily decrypt your notes for indexing. Requires Cloud KMS.",
2190
- "model_version": "Model version",
2191
- "upgrade_for_cross_kb": "Upgrade to Personal to search across all your knowledge bases."
2212
+ "title": "AI 지식 검색(RAG)",
2213
+ "mode_label": "검색 모드",
2214
+ "mode_disabled": "장애가 있는",
2215
+ "mode_client": "클라이언트측(E2E 호환)",
2216
+ "mode_server": "서버측( 빠름, KMS 필요)",
2217
+ "index_status": "지수현황",
2218
+ "indexed_notes": "색인된 메모",
2219
+ "rebuild_index": "전체 인덱스 재구축",
2220
+ "pause_rebuild": "정지시키다",
2221
+ "rebuilding": "인덱스 재구축 중...",
2222
+ "search_settings": "검색 설정",
2223
+ "top_k_label": "결과(상위-K)",
2224
+ "threshold_label": "최소 유사",
2225
+ "sources_label": "출처",
2226
+ "sources_count": "{n} 메모 발췌",
2227
+ "jump_to_source": "메모로 이동 ",
2228
+ "no_sources": "출처 없음",
2229
+ "server_mode_warning": "서버 모드를 사용하면 Moraya가 색인화를 위해 메모를 일시적으로 해독할 수 있습니다. Cloud KMS가 필요합니다.",
2230
+ "model_version": "모델 버전",
2231
+ "upgrade_for_cross_kb": "모든 지식 기반을 검색하려면 개인으로 업그레이드하세요."
2192
2232
  },
2193
2233
  "review": {
2194
2234
  "panel_title": "리뷰",
@@ -2202,7 +2242,7 @@
2202
2242
  "resolved_count": "해결됨",
2203
2243
  "add_review": "리뷰 추가",
2204
2244
  "reply": "답장",
2205
- "resolve": "Resolve",
2245
+ "resolve": "해결하다",
2206
2246
  "wontfix": "수정하지 않음",
2207
2247
  "reanchor": "재앵커",
2208
2248
  "mark_resolved": "해결됨으로 표시",
@@ -2220,122 +2260,131 @@
2220
2260
  "select_text_first": "먼저 텍스트를 선택해 주세요",
2221
2261
  "source_mode_limit_hint": "리뷰는 시각적 모드에서만 사용 가능합니다",
2222
2262
  "default_comment": "",
2223
- "ai_improve": "AI Improve",
2224
- "ai_summary": "AI Summary",
2225
- "ai_review": "AI Review",
2226
- "ai_respond": "AI Suggest",
2227
- "ai_in_progress": "AI is analyzing the document…",
2228
- "ai_cancel": "Cancel",
2229
- "ai_no_results": "AI generated no review suggestions",
2230
- "ai_invalid_filtered": "{count} review(s) had invalid format and were skipped",
2263
+ "ai_improve": "AI 개선",
2264
+ "ai_summary": "AI 요약",
2265
+ "ai_review": "AI 검토",
2266
+ "ai_respond": "AI 제안",
2267
+ "ai_in_progress": "AI 문서를 분석하고 있다…",
2268
+ "ai_cancel": "취소",
2269
+ "ai_no_results": "AI 리뷰 제안을 생성하지 않았습니다.",
2270
+ "ai_invalid_filtered": "{count} 리뷰의 형식이 잘못되어 건너뛰었습니다.",
2231
2271
  "ai_author_badge": "AI",
2232
- "ai_hint_from_tool": "AI returned reviews via tool call",
2233
- "ai_hint_from_json": "AI returned reviews via JSON fallback",
2234
- "ai_hint_failed": "This model does not support AI Review. Switch to Claude / GPT-4 / Gemini.",
2235
- "ai_disclaimer_title": "Enable AI Review Data Use Notice",
2236
- "ai_disclaimer_body": "AI Review will send the entire current document and all review comments to your selected AI provider:",
2237
- "ai_disclaimer_body_details": "Reviews may include team members' names and internal discussion. Please confirm this knowledge base is suitable for cloud processing.",
2238
- "ai_disclaimer_local_hint": "Want to keep everything local? Switch to an Ollama provider all processing happens on this machine.",
2239
- "ai_disclaimer_switch_local": "Switch to local provider",
2240
- "ai_disclaimer_confirm": "I understand, enable AI Review",
2241
- "ai_disclaimer_dont_ask": "Don't ask again for this provider",
2242
- "dimension_logic": "Logic",
2243
- "dimension_expression": "Expression",
2244
- "dimension_fact": "Fact",
2245
- "dimension_structure": "Structure",
2246
- "ai_inflight_cancelled": "AI Review cancelled because the active file changed",
2247
- "ai_merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first.",
2248
- "title": "Reviews",
2249
- "no_open": "No open reviews.",
2250
- "resolved_section": "Resolved",
2251
- "add_comment": "Add a comment…",
2252
- "send": "Send",
2253
- "orphaned": "orphaned",
2254
- "type_suggest": "Suggestion",
2255
- "type_question": "Question",
2256
- "type_approve": "Approved",
2257
- "type_reject": "Rejected",
2258
- "ai_review_unavailable": "AI Review requires Cloud KMS encryption mode.",
2259
- "close": "Close"
2272
+ "ai_hint_from_tool": "AI 도구 호출을 통해 리뷰를 반환했습니다.",
2273
+ "ai_hint_from_json": "AI JSON 대체를 통해 리뷰를 반환했습니다.",
2274
+ "ai_hint_failed": " 모델은 AI Review 지원하지 않습니다. Claude / GPT-4 / Gemini로 전환하세요.",
2275
+ "ai_disclaimer_title": "AI 검토 활성화 - 데이터 사용 공지",
2276
+ "ai_disclaimer_body": "AI Review 현재 문서 전체와 모든 검토 의견을 선택한 AI 공급자에게 보냅니다.",
2277
+ "ai_disclaimer_body_details": "리뷰에는 팀원의 이름과 내부 토론이 포함될 있습니다. 기술 자료가 클라우드 처리에 적합한지 확인하세요.",
2278
+ "ai_disclaimer_local_hint": "모든 것을 로컬에 유지하고 싶나요? Ollama 제공업체로 전환하세요. 모든 처리는 시스템에서 이루어집니다.",
2279
+ "ai_disclaimer_switch_local": "지역 공급자로 전환",
2280
+ "ai_disclaimer_confirm": "이해했습니다. AI 검토를 활성화합니다.",
2281
+ "ai_disclaimer_dont_ask": " 제공업체에 대해 다시 묻지 않음",
2282
+ "dimension_logic": "논리",
2283
+ "dimension_expression": "표현",
2284
+ "dimension_fact": "사실",
2285
+ "dimension_structure": "구조",
2286
+ "ai_inflight_cancelled": "활성 파일이 변경되어 AI Review가 취소되었습니다.",
2287
+ "ai_merge_blocked": "저장소가 병합 중입니다. 갈등을 먼저 해결하세요.",
2288
+ "title": "리뷰",
2289
+ "no_open": "공개된 리뷰가 없습니다.",
2290
+ "resolved_section": "해결됨",
2291
+ "add_comment": "댓글 추가…",
2292
+ "send": "보내다",
2293
+ "orphaned": "고아가 된",
2294
+ "type_suggest": "제안",
2295
+ "type_question": "질문",
2296
+ "type_approve": "승인됨",
2297
+ "type_reject": "거부됨",
2298
+ "ai_review_unavailable": "AI Review에는 Cloud KMS 암호화 모드가 필요합니다.",
2299
+ "close": "닫다"
2260
2300
  },
2261
2301
  "search": {
2262
- "find_placeholder": "Find...",
2263
- "replace_placeholder": "Replace with...",
2264
- "no_results": "No results",
2302
+ "find_placeholder": "찾다...",
2303
+ "replace_placeholder": "다음으로 교체...",
2304
+ "no_results": "결과 없음",
2265
2305
  "case_sensitive": "대소문자 구분",
2266
- "replace": "Replace",
2267
- "replace_all": "Replace All",
2306
+ "replace": "바꾸다",
2307
+ "replace_all": "모두 바꾸기",
2268
2308
  "regex": "정규식 사용",
2269
2309
  "regex_error": "잘못된 정규식",
2270
- "match_status": "{current} / {total}",
2271
- "toggle_regex": "Toggle regular expression",
2272
- "toggle_case": "Toggle case-sensitive",
2273
- "prev": "Previous match",
2274
- "next": "Next match",
2275
- "open_replace": "Open replace",
2276
- "close_replace": "Close replace",
2277
- "close": "Close search",
2278
- "invalid_regex": "Invalid regular expression"
2310
+ "match_status": "{current}/{total}",
2311
+ "toggle_regex": "정규식 전환",
2312
+ "toggle_case": "대소문자 구분 전환",
2313
+ "prev": "이전 경기",
2314
+ "next": "다음 경기",
2315
+ "open_replace": "교체 열기",
2316
+ "close_replace": "교체 닫기",
2317
+ "close": "검색 닫기",
2318
+ "invalid_regex": "잘못된 정규 표현식"
2279
2319
  },
2280
2320
  "security": {
2281
- "__mt": true,
2282
- "title": "Security",
2283
- "encryption_mode_label": "Encryption Mode",
2284
- "mode_none": "None",
2285
- "mode_e2e": "E2E Client Encryption",
2286
- "mode_kms": "Cloud KMS",
2287
- "setup_title": "Set Up E2E Encryption",
2288
- "setup_subtitle": "Your notes will be encrypted before leaving your device. Moraya cannot read your notes.",
2289
- "passphrase_label": "Passphrase",
2290
- "passphrase_confirm_label": "Confirm Passphrase",
2291
- "passphrase_strength_weak": "Too weak",
2292
- "passphrase_strength_fair": "Fair",
2293
- "passphrase_strength_strong": "Strong",
2294
- "passphrase_strength_very_strong": "Very strong",
2295
- "passphrase_min_length": "Minimum 12 characters",
2296
- "passphrase_mismatch": "Passphrases do not match",
2297
- "passphrase_too_weak": "Passphrase is too weak. Use a longer, more complex phrase.",
2298
- "warning_no_recovery": "⚠️ If you forget your passphrase and lose your recovery code, your data cannot be recovered. Moraya has no backup.",
2299
- "recovery_code_title": "Your Recovery Code",
2300
- "recovery_code_subtitle": "Write down these 12 words. You will need them if you forget your passphrase.",
2301
- "recovery_confirm_instruction": "Enter word #{n} to confirm you wrote it down:",
2302
- "recovery_confirm_correct": "Correct! Enter word #{n}:",
2303
- "recovery_confirm_wrong": "Wrong word. Try again.",
2304
- "recovery_complete": "Recovery code confirmed.",
2305
- "i_have_written_down": "I have written down my recovery code",
2306
- "unlock_title": "Unlock Your Notes",
2307
- "unlock_subtitle": "Enter your passphrase to decrypt your notes.",
2308
- "unlock_button": "Unlock",
2309
- "unlock_failed": "Wrong passphrase. Please try again.",
2310
- "unlock_remember_device": "Remember this device for 7 days",
2311
- "migrate_title": "Upgrade to Cloud KMS",
2312
- "migrate_subtitle": "Your notes will be re-encrypted using your cloud KMS. Moraya can use your KMS to assist with AI features.",
2313
- "migrate_warning": "This is a one-way migration. You cannot revert to E2E mode without exporting and re-importing all data.",
2314
- "migrate_confirm": "I understand and want to proceed",
2315
- "migrate_progress": "Migrating {completed}/{total} notes...",
2316
- "migrate_done": "Migration complete!",
2317
- "migrate_failed": "Migration failed. Your original data is unchanged.",
2318
- "kms_provider_label": "KMS Provider",
2319
- "kms_key_arn_label": "Key ARN / Key ID",
2320
- "kms_role_arn_label": "Role ARN (for AssumeRole)",
2321
- "kms_verify": "Verify KMS Connection",
2322
- "kms_verified": "KMS connection verified",
2323
- "kms_verify_failed": "KMS connection failed",
2324
- "back": "Back",
2325
- "next": "Next",
2326
- "save": "Save",
2327
- "cancel": "Cancel",
2328
- "setup_complete": "E2E encryption enabled",
2329
- "deriving_key": "Deriving encryption key...",
2330
- "encrypting": "Encrypting notes...",
2331
- "current_mode": "Current mode: {mode}",
2332
- "last_unlock": "Last unlocked: {time}",
2333
- "use_recovery_code": "Use recovery code instead",
2334
- "recovery_unlock_title": "Recover Access",
2335
- "recovery_unlock_subtitle": "Enter your 12-word recovery code to regain access.",
2336
- "recovery_code_input": "Recovery Code (12 words, space-separated)",
2337
- "recovery_unlock_button": "Recover",
2338
- "set_new_passphrase": "Set New Passphrase"
2321
+ "title": "보안",
2322
+ "encryption_mode_label": "암호화 모드",
2323
+ "mode_none": "없음",
2324
+ "mode_e2e": "E2E 클라이언트 암호화",
2325
+ "mode_kms": "클라우드 KMS",
2326
+ "setup_title": "E2E 암호화 설정",
2327
+ "setup_subtitle": "귀하의 메모는 장치를 떠나기 전에 암호화됩니다. Moraya가 메모를 읽을 수 없습니다.",
2328
+ "passphrase_label": "암호",
2329
+ "passphrase_confirm_label": "암호 확인",
2330
+ "passphrase_strength_weak": "너무 약함",
2331
+ "passphrase_strength_fair": "공정한",
2332
+ "passphrase_strength_strong": "강한",
2333
+ "passphrase_strength_very_strong": "매우 강함",
2334
+ "passphrase_min_length": "최소 12자",
2335
+ "passphrase_mismatch": "암호가 일치하지 않습니다.",
2336
+ "passphrase_too_weak": "암호가 너무 약합니다. 더 길고 복잡한 문구를 사용하세요.",
2337
+ "warning_no_recovery": "⚠️ 암호를 잊어버리고 복구 코드를 분실한 경우 데이터를 복구할 수 없습니다. Moraya에는 백업이 없습니다.",
2338
+ "recovery_code_title": "복구 코드",
2339
+ "recovery_code_subtitle": " 12개의 단어를 적어보세요. 암호를 잊어버린 경우 필요합니다.",
2340
+ "recovery_confirm_instruction": "#{n} 단어를 입력하여 적어두었는지 확인하세요.",
2341
+ "recovery_confirm_correct": "옳은! 단어 #{n} 입력:",
2342
+ "recovery_confirm_wrong": "잘못된 단어입니다. 다시 시도해 보세요.",
2343
+ "recovery_complete": "복구 코드가 확인되었습니다.",
2344
+ "i_have_written_down": "복구 코드를 적어 두었습니다",
2345
+ "unlock_title": "노트 잠금 해제",
2346
+ "unlock_subtitle": "메모를 해독하려면 암호를 입력하세요.",
2347
+ "unlock_button": "터놓다",
2348
+ "unlock_failed": "잘못된 암호입니다. 다시 시도해 주세요.",
2349
+ "unlock_remember_device": " 장치를 7일 동안 기억합니다",
2350
+ "migrate_title": "Cloud KMS로 업그레이드",
2351
+ "migrate_subtitle": "귀하의 메모는 클라우드 KMS를 사용하여 다시 암호화됩니다. Moraya는 KMS를 사용하여 AI 기능을 지원할 수 있습니다.",
2352
+ "migrate_warning": "이는 단방향 마이그레이션입니다. 모든 데이터를 내보내고 다시 가져오지 않으면 E2E 모드로 되돌릴 없습니다.",
2353
+ "migrate_confirm": "이해했으며 계속 진행하겠습니다.",
2354
+ "migrate_progress": "{completed}/{total} 메모 이전 중...",
2355
+ "migrate_done": "마이그레이션이 완료되었습니다.",
2356
+ "migrate_failed": "마이그레이션에 실패했습니다. 원본 데이터는 변경되지 않습니다.",
2357
+ "kms_provider_label": "KMS 공급자",
2358
+ "kms_key_arn_label": " ARN/키 ID",
2359
+ "kms_role_arn_label": "역할 ARN(AssumeRole용)",
2360
+ "kms_verify": "KMS 연결 확인",
2361
+ "kms_verified": "KMS 연결이 확인되었습니다.",
2362
+ "kms_verify_failed": "KMS 연결 실패",
2363
+ "back": "뒤쪽에",
2364
+ "next": "다음",
2365
+ "save": "구하다",
2366
+ "cancel": "취소",
2367
+ "setup_complete": "E2E 암호화 활성화됨",
2368
+ "deriving_key": "암호화 키를 가져오는 중...",
2369
+ "encrypting": "메모 암호화 중...",
2370
+ "current_mode": "현재 모드: {mode}",
2371
+ "last_unlock": "마지막 잠금 해제: {time}",
2372
+ "use_recovery_code": "대신 복구 코드를 사용하세요",
2373
+ "recovery_unlock_title": "액세스 복구",
2374
+ "recovery_unlock_subtitle": "액세스 권한을 다시 얻으려면 12단어 복구 코드를 입력하세요.",
2375
+ "recovery_code_input": "복구 코드(12단어, 공백으로 구분)",
2376
+ "recovery_unlock_button": "다시 덮다",
2377
+ "set_new_passphrase": "새 암호 설정",
2378
+ "biometric_unlock_title": "모라야 잠금 해제",
2379
+ "biometric_unlock_subtitle": "데이터에 액세스하려면 인증하세요",
2380
+ "biometric_failed": "인증 실패",
2381
+ "unlock_with_biometric": "생체 인식으로 잠금 해제",
2382
+ "unlock_with_face_id": "Face ID로 잠금 해제",
2383
+ "unlock_with_touch_id": "Touch ID로 잠금 해제",
2384
+ "unlock_with_fingerprint": "지문으로 잠금 해제",
2385
+ "unlock_with_iris": "홍채 스캔으로 잠금 해제",
2386
+ "unlock_with_passkey": "패스키로 잠금 해제",
2387
+ "use_passphrase_fallback": "대신 암호를 사용하세요"
2339
2388
  },
2340
2389
  "seo": {
2341
2390
  "title": "SEO 최적화",
@@ -2355,24 +2404,23 @@
2355
2404
  "step_description": "제목, 발췌 및 태그를 생성합니다"
2356
2405
  },
2357
2406
  "sessions": {
2358
- "__mt": true,
2359
- "title": "Active Sessions",
2360
- "active_sessions": "Active Sessions",
2361
- "anomaly_alerts": "Security Alerts",
2362
- "current": "Current",
2363
- "last_active": "Last active",
2364
- "revoke": "Revoke",
2365
- "revoking": "Revoking…",
2366
- "confirm_revoke": "Revoke this session?",
2367
- "yes": "Yes",
2368
- "no": "Cancel",
2369
- "dismiss": "Dismiss",
2370
- "just_now": "Just now",
2371
- "hours_ago": "h ago",
2372
- "days_ago": "d ago"
2407
+ "title": "활성 세션",
2408
+ "active_sessions": "활성 세션",
2409
+ "anomaly_alerts": "보안 경고",
2410
+ "current": "현재의",
2411
+ "last_active": "마지막 활동",
2412
+ "revoke": "취소",
2413
+ "revoking": "취소 중…",
2414
+ "confirm_revoke": "이 세션을 취소하시겠습니까?",
2415
+ "yes": "",
2416
+ "no": "취소",
2417
+ "dismiss": "해고하다",
2418
+ "just_now": "방금",
2419
+ "hours_ago": "시간 ",
2420
+ "days_ago": " "
2373
2421
  },
2374
2422
  "settings": {
2375
- "title": "Settings",
2423
+ "title": "설정",
2376
2424
  "tabs": {
2377
2425
  "general": "일반",
2378
2426
  "editor": "편집기",
@@ -2437,7 +2485,7 @@
2437
2485
  "tab_size": "탭 크기",
2438
2486
  "show_line_numbers": "소스 모드에서 줄 번호 표시"
2439
2487
  },
2440
- "version": "Moraya v{version}",
2488
+ "version": "모라야 v{version}",
2441
2489
  "permissions": {
2442
2490
  "mcp_title": "MCP 권한",
2443
2491
  "ai_title": "AI 설정",
@@ -2454,10 +2502,10 @@
2454
2502
  "edit_provider": "서비스 편집",
2455
2503
  "no_providers": "음성 인식 서비스가 구성되지 않았습니다.",
2456
2504
  "provider": "서비스 제공자",
2457
- "api_key": "API Key",
2505
+ "api_key": "API ",
2458
2506
  "api_key_optional": "AWS의 경우 선택 사항 (Access Key 사용)",
2459
- "aws_access_key": "AWS Access Key ID",
2460
- "aws_secret_key": "AWS Secret Access Key",
2507
+ "aws_access_key": "AWS 액세스 ID",
2508
+ "aws_secret_key": "AWS 비밀 액세스 ",
2461
2509
  "region": "리전",
2462
2510
  "model": "모델",
2463
2511
  "model_placeholder": "모델 이름 입력",
@@ -2574,15 +2622,15 @@
2574
2622
  "plan": {
2575
2623
  "none": "비활성",
2576
2624
  "trial": "체험",
2577
- "pro": "Pro",
2578
- "pro_plus": "Pro+"
2625
+ "pro": "찬성",
2626
+ "pro_plus": "프로+"
2579
2627
  }
2580
2628
  },
2581
2629
  "export": {
2582
2630
  "paper_size": "용지 크기",
2583
2631
  "paper_a4": "A4",
2584
- "paper_letter": "Letter",
2585
- "paper_legal": "Legal",
2632
+ "paper_letter": "편지",
2633
+ "paper_legal": "합법적인",
2586
2634
  "paper_a3": "A3",
2587
2635
  "paper_a5": "A5",
2588
2636
  "orientation": "방향",
@@ -2609,307 +2657,307 @@
2609
2657
  "auto_fallback": "실패 시 호환 모드로 자동 폴백",
2610
2658
  "auto_fallback_hint": "네이티브 인쇄 경로가 실패하면 canvas 기반 경로로 재시도합니다. 비활성화하면 오류를 표시하여 사용자가 수동으로 재시도하게 합니다."
2611
2659
  },
2612
- "account": "Account",
2613
- "devices": "Devices",
2614
- "about": "About",
2615
- "select_section": "Select a settings section from the left.",
2660
+ "account": "계정",
2661
+ "devices": "장치",
2662
+ "about": "에 대한",
2663
+ "select_section": "왼쪽에서 설정 섹션을 선택합니다.",
2616
2664
  "ai": {
2617
2665
  "title": "AI",
2618
- "cloud_providers": "Cloud Providers",
2619
- "local_models": "On-device Models",
2620
- "add": "Add",
2621
- "edit": "Edit provider",
2622
- "delete": "Delete",
2623
- "delete_confirm": "Delete this provider configuration?",
2624
- "provider_deleted": "Deleted “{label}",
2625
- "provider_restored": "Provider restored",
2626
- "save": "Save",
2627
- "test": "Test",
2628
- "testing": "Testing…",
2629
- "test_ok": "Connection OK",
2630
- "test_auth_error": "Auth failedcheck API key",
2631
- "test_network_error": "Network error",
2632
- "test_rate_limited": "Rate limited try later",
2633
- "test_unsupported": "Unsupported response",
2634
- "test_not_configured": "Not configured",
2635
- "provider": "Provider",
2636
- "label": "Label",
2637
- "api_key": "API Key",
2638
- "api_key_hint": "Stored only on this device.",
2639
- "base_url": "Base URL (optional)",
2640
- "base_url_hint": "Custom OpenAI-compatible endpoint, e.g. Ollama: http://192.168.1.10:11434/v1",
2641
- "default_model": "Default model",
2642
- "active": "Active",
2643
- "set_active": "Use",
2644
- "status_ready": "Ready",
2645
- "status_not_configured": "Not configured",
2646
- "empty_cloud": "No cloud providers configured. Tap “Add” to set up OpenAI, Claude, Gemini, DeepSeek, or any OpenAI-compatible endpoint.",
2647
- "cloud_hint": "Your API keys are stored locally and sent directly to the provider Moraya never sees them.",
2666
+ "cloud_providers": "클라우드 제공업체",
2667
+ "local_models": "온디바이스 모델",
2668
+ "add": "추가하다",
2669
+ "edit": "제공업체 수정",
2670
+ "delete": "삭제",
2671
+ "delete_confirm": " 제공업체 구성을 삭제하시겠습니까?",
2672
+ "provider_deleted": "'{label}'을(를) 삭제했습니다.",
2673
+ "provider_restored": "제공업체가 복원되었습니다.",
2674
+ "save": "구하다",
2675
+ "test": "시험",
2676
+ "testing": "테스트 중…",
2677
+ "test_ok": "연결 OK",
2678
+ "test_auth_error": "인증 실패 — API 키 확인",
2679
+ "test_network_error": "네트워크 오류",
2680
+ "test_rate_limited": "속도 제한됨 - 나중에 시도",
2681
+ "test_unsupported": "지원되지 않는 응답",
2682
+ "test_not_configured": "구성되지 않음",
2683
+ "provider": "공급자",
2684
+ "label": "상표",
2685
+ "api_key": "API ",
2686
+ "api_key_hint": " 기기에만 저장됩니다.",
2687
+ "base_url": "기본 URL(선택사항)",
2688
+ "base_url_hint": "맞춤형 OpenAI 호환 엔드포인트(예: 올라마: http://192.168.1.10:11434/v1",
2689
+ "default_model": "기본 모델",
2690
+ "active": "활동적인",
2691
+ "set_active": "사용",
2692
+ "status_ready": "준비가 된",
2693
+ "status_not_configured": "구성되지 않음",
2694
+ "empty_cloud": "구성된 클라우드 제공업체가 없습니다. OpenAI, Claude, Gemini, DeepSeek 또는 OpenAI 호환 엔드포인트를 설정하려면 \"추가\"를 탭하세요.",
2695
+ "cloud_hint": "귀하의 API 키는 로컬에 저장되어 공급자에게 직접 전송됩니다. Moraya는 이를 결코 없습니다.",
2648
2696
  "rag": {
2649
- "title": "History Reference (RAG)",
2650
- "enabled": "Reference past conversations",
2651
- "topk": "Snippets per send",
2652
- "hint": "When on, Moraya finds up to N relevant snippets from your past AI chats and includes them as context. Off by default increases token usage. Keyword-based search (no embeddings yet)."
2697
+ "title": "역사 참조(RAG)",
2698
+ "enabled": "과거 대화 참고",
2699
+ "topk": "전송당 스니펫",
2700
+ "hint": "켜져 있으면 Moraya 과거 AI 채팅에서 최대 N개의 관련 조각을 찾아 컨텍스트로 포함합니다. 기본적으로 꺼짐토큰 사용량이 늘어납니다. 키워드 기반 검색(아직 임베딩 없음)"
2653
2701
  },
2654
2702
  "local": {
2655
- "free_space": "Device free space",
2656
- "unknown": "Unknown",
2657
- "estimate_hint": "Estimated from browser quota.",
2658
- "native_probe_failed": "Could not read native device free space; showing browser estimate.",
2659
- "browser_only_hint": "On-device models are available only inside the Moraya iOS / Android app.",
2660
- "browser_only_footer": "Open this page inside the Moraya mobile app to download and run on-device models.",
2661
- "mobile_only": "On-device models are only available in the Moraya iOS / Android app.",
2662
- "download": "Download",
2663
- "cancel": "Cancel",
2664
- "use": "Use",
2665
- "delete": "Delete",
2666
- "delete_confirm": "Delete {name} from this device?",
2667
- "delete_failed": "Delete failed: {err}",
2668
- "download_failed": "Download failed: {err}",
2669
- "now_active": "{name} is now your active AI model.",
2670
- "installed": "Installed",
2671
- "too_big": "Too large",
2672
- "fit_warn_inline": "This download will use more than 70% of your free space.",
2673
- "fit_warn": "This model ({size}) will use over 70% of your free space and may slow iOS. Continue?",
2674
- "fit_block": "Not enough free space for this model ({size}).",
2675
- "engine_pending_title": "Inference engine pending Xcode setup",
2676
- "engine_pending_text": "Models can be downloaded today. To run them, link MLX-Swift via Xcode → FileAdd Package Dependencies (https://github.com/ml-explore/mlx-swift + mlx-swift-examples), or run `ruby scripts/add-mlx-spm.rb` in moraya-mobile/. The plugin auto-detects the link and activates.",
2677
- "wifi_only": "Wi-Fi only downloads",
2678
- "on_wifi": "Connected via Wi-Fi.",
2679
- "on_cellular_blocked": "On cellular downloads paused. Toggle off to allow.",
2680
- "on_cellular_ok": "On cellular downloads allowed.",
2681
- "offline": "No network connection.",
2682
- "cellular_blocked": "Downloads are blocked on cellular. Connect to Wi-Fi or turn off “Wi-Fi only”.",
2683
- "update": "Update",
2684
- "update_confirm": "Update {name}? The current copy will be deleted and the latest version downloaded."
2685
- },
2686
- "custom_templates": "Custom AI Templates",
2687
- "empty_templates": "No custom templates yet. Tap “Add” to create a reusable system prompt.",
2688
- "templates_hint": "Your templates appear in the AI tab’s empty-state quick actions alongside the built-ins.",
2689
- "custom_workflows": "Custom AI Workflows",
2690
- "empty_workflows": "No custom workflows yet. Tap “Add” to chain multiple AI steps.",
2691
- "workflows_hint": "Workflows run their steps sequentially, feeding each step’s output into the next.",
2703
+ "free_space": "장치 여유 공간",
2704
+ "unknown": "알려지지 않은",
2705
+ "estimate_hint": "브라우저 할당량으로 추정됩니다.",
2706
+ "native_probe_failed": "기본 장치의 여유 공간을 읽을 없습니다. 브라우저 추정치를 표시합니다.",
2707
+ "browser_only_hint": "온디바이스 모델은 Moraya iOS/Android 내에서만 사용할 있습니다.",
2708
+ "browser_only_footer": "Moraya 모바일 내에서 페이지를 열어 온디바이스 모델을 다운로드하고 실행하세요.",
2709
+ "mobile_only": "온디바이스 모델은 Moraya iOS/Android 앱에서만 사용할 수 있습니다.",
2710
+ "download": "다운로드",
2711
+ "cancel": "취소",
2712
+ "use": "사용",
2713
+ "delete": "삭제",
2714
+ "delete_confirm": " 기기에서 {name} 삭제하시겠습니까?",
2715
+ "delete_failed": "삭제 실패: {err}",
2716
+ "download_failed": "다운로드 실패: {err}",
2717
+ "now_active": "{name} 이제 활성 AI 모델입니다.",
2718
+ "installed": "설치됨",
2719
+ "too_big": "너무 ",
2720
+ "fit_warn_inline": " 다운로드는 여유 공간의 70% 이상을 사용합니다.",
2721
+ "fit_warn": " 모델({size}) 여유 공간의 70% 이상을 사용하므로 iOS 속도가 느려질 있습니다. 계속하다?",
2722
+ "fit_block": " 모델에 대한 여유 공간이 부족합니다({size}).",
2723
+ "engine_pending_title": "추론 엔진 보류 중인 Xcode 설정",
2724
+ "engine_pending_text": "오늘부터 모델을 다운로드할 있습니다. 실행하려면 Xcode → 파일패키지 종속성 추가(https://github.com/ml-explore/mlx-swift + mlx-swift-examples) 통해 MLX-Swift를 연결하거나 moraya-mobile/에서 `ruby scripts/add-mlx-spm.rb`를 실행하세요. 플러그인이 링크를 자동 감지하고 활성화합니다.",
2725
+ "wifi_only": "Wi-Fi 전용 다운로드",
2726
+ "on_wifi": "Wi-Fi를 통해 연결되었습니다.",
2727
+ "on_cellular_blocked": "셀룰러에서다운로드가 일시 중지되었습니다. 허용하려면 끄세요.",
2728
+ "on_cellular_ok": "셀룰러에서다운로드가 허용됩니다.",
2729
+ "offline": "네트워크 연결이 없습니다.",
2730
+ "cellular_blocked": "셀룰러에서는 다운로드가 차단됩니다. Wi-Fi 연결하거나 'Wi-Fi 전용'을 끄세요.",
2731
+ "update": "업데이트",
2732
+ "update_confirm": "{name}을(를) 업데이트하시겠습니까? 현재 복사본이 삭제되고 최신 버전이 다운로드됩니다."
2733
+ },
2734
+ "custom_templates": "맞춤형 AI 템플릿",
2735
+ "empty_templates": "아직 맞춤 템플릿이 없습니다. 재사용 가능한 시스템 프롬프트를 생성하려면 “추가”를 누르세요.",
2736
+ "templates_hint": "템플릿은 기본 기능과 함께 AI 탭의 상태 빠른 작업에 표시됩니다.",
2737
+ "custom_workflows": "맞춤형 AI 워크플로우",
2738
+ "empty_workflows": "아직 맞춤 워크플로가 없습니다. 여러 AI 단계를 연결하려면 \"추가\"를 탭하세요.",
2739
+ "workflows_hint": "워크플로는 단계를 순차적으로 실행하여 단계의 출력을 다음 단계에 공급합니다.",
2692
2740
  "wf": {
2693
- "add": "New workflow",
2694
- "edit": "Edit workflow",
2695
- "name_placeholder": "e.g. Translate then bullet-summarize",
2696
- "desc_placeholder": "Shown under the tile in the AI tab",
2697
- "step_label_placeholder": "Step label (e.g. “Translate”)",
2698
- "step_system_placeholder": "System prompt for this step",
2699
- "input_tpl_hint": "Use {prev} for the previous step's output and {input} for the user's first message.",
2700
- "add_step": "Add step",
2701
- "remove_step": "Remove step",
2702
- "required_name": "Workflow needs a name.",
2703
- "required_steps": "Workflow needs at least one step with a system prompt.",
2704
- "delete_confirm": "Delete this workflow?",
2705
- "deleted": "Deleted “{name}",
2706
- "restored": "Workflow restored"
2741
+ "add": "새로운 작업 흐름",
2742
+ "edit": "작업 흐름 편집",
2743
+ "name_placeholder": "예를 들어 번역 후 글머리 기호 요약",
2744
+ "desc_placeholder": "AI 탭의 타일 아래에 표시됩니다.",
2745
+ "step_label_placeholder": "단계 라벨(예: '번역')",
2746
+ "step_system_placeholder": " 단계에 대한 시스템 프롬프트",
2747
+ "input_tpl_hint": "이전 단계의 출력에는 {prev} 사용하고 사용자의 번째 메시지에는 {input} 사용합니다.",
2748
+ "add_step": "단계 추가",
2749
+ "remove_step": "단계 삭제",
2750
+ "required_name": "워크플로에는 이름이 필요합니다.",
2751
+ "required_steps": "워크플로에는 시스템 프롬프트가 포함된 하나 이상의 단계가 필요합니다.",
2752
+ "delete_confirm": " 워크플로를 삭제하시겠습니까?",
2753
+ "deleted": "'{name}'을(를) 삭제했습니다.",
2754
+ "restored": "워크플로가 복원되었습니다."
2707
2755
  },
2708
2756
  "tpl": {
2709
- "add": "New template",
2710
- "edit": "Edit template",
2711
- "icon": "Icon",
2712
- "name": "Name",
2713
- "name_placeholder": "e.g. Code reviewer",
2714
- "desc": "Short description",
2715
- "desc_placeholder": "Shown under the tile",
2716
- "system_prompt": "System prompt",
2717
- "system_prompt_placeholder": "Behavior guidance the model receives at the start of every conversation using this template.",
2718
- "requires_image": "Open image picker on tap",
2719
- "requires_doc": "Auto-mention the open doc",
2720
- "auto_insert": "Auto-open “Insert into note” when finished",
2721
- "save": "Save",
2722
- "delete": "Delete",
2723
- "delete_confirm": "Delete this template?",
2724
- "deleted": "Deleted “{name}",
2725
- "restored": "Template restored",
2726
- "required_fields": "Name and system prompt are required.",
2727
- "import": "Import",
2728
- "export": "Export",
2729
- "import_merge_confirm": "Import {n} template(s) and append to your library?",
2730
- "import_empty": "The file contains no templates.",
2731
- "import_failed": "Import failed: {err}"
2757
+ "add": " 템플릿",
2758
+ "edit": "템플릿 편집",
2759
+ "icon": "",
2760
+ "name": "이름",
2761
+ "name_placeholder": "예를 들어 코드 검토자",
2762
+ "desc": "간단한 설명",
2763
+ "desc_placeholder": "타일 ​​아래에 표시됨",
2764
+ "system_prompt": "시스템 프롬프트",
2765
+ "system_prompt_placeholder": " 템플릿을 사용하여 모든 대화가 시작될 모델이 받는 행동 지침입니다.",
2766
+ "requires_image": "탭하여 이미지 선택 도구 열기",
2767
+ "requires_doc": "열린 문서 자동 멘션",
2768
+ "auto_insert": "완료되면 '메모에 삽입' 자동 열기",
2769
+ "save": "구하다",
2770
+ "delete": "삭제",
2771
+ "delete_confirm": " 템플릿을 삭제하시겠습니까?",
2772
+ "deleted": "'{name}'을(를) 삭제했습니다.",
2773
+ "restored": "템플릿이 복원되었습니다.",
2774
+ "required_fields": "이름과 시스템 프롬프트가 필요합니다.",
2775
+ "import": "수입",
2776
+ "export": "내보내다",
2777
+ "import_merge_confirm": "{n} 템플릿을 가져와 라이브러리에 추가하시겠습니까?",
2778
+ "import_empty": "파일에 템플릿이 없습니다.",
2779
+ "import_failed": "가져오기 실패: {err}"
2732
2780
  },
2733
2781
  "usage": {
2734
- "title": "AI Usage",
2735
- "loading": "Reading conversations…",
2736
- "empty": "No AI calls this month yet usage shows up after your first reply.",
2737
- "tokens": "Tokens",
2738
- "conversations": "Conversations",
2739
- "cost": "Cost",
2740
- "by_model": "By model",
2741
- "history": "Previous months"
2782
+ "title": "AI 활용",
2783
+ "loading": "대화를 읽는 중…",
2784
+ "empty": "이번 달에는 아직 AI 호출이 없습니다. 번째 응답 후에 사용량이 표시됩니다.",
2785
+ "tokens": "토큰",
2786
+ "conversations": "대화",
2787
+ "cost": "비용",
2788
+ "by_model": "모델별",
2789
+ "history": "지난 "
2742
2790
  },
2743
2791
  "budget": {
2744
- "title": "Monthly Budget",
2792
+ "title": "월예산",
2745
2793
  "edit": "Edit",
2746
- "done": "Done",
2747
- "no_limit": "No monthly limit set.",
2748
- "usd_limit": "USD limit / month",
2749
- "cny_limit": "CNY limit / month",
2750
- "alert_threshold": "Warn at (0–1)",
2751
- "hint": "Setting either currency to 0 disables that cap. Warn threshold 0 disables warnings."
2794
+ "done": "완료",
2795
+ "no_limit": "월별 한도가 설정되어 있지 않습니다.",
2796
+ "usd_limit": "USD 한도/월",
2797
+ "cny_limit": "CNY 한도/월",
2798
+ "alert_threshold": "(0–1)에 경고",
2799
+ "hint": " 통화 하나를 0으로 설정하면 해당 한도가 비활성화됩니다. 경고 임계값 0 경고를 비활성화합니다."
2752
2800
  }
2753
2801
  },
2754
- "mcp": "MCP servers",
2802
+ "mcp": "MCP 서버",
2755
2803
  "image_gen": {
2756
- "title": "Image generation",
2757
- "providers": "Providers",
2758
- "add": "Add",
2759
- "edit": "Edit image provider",
2760
- "delete": "Delete",
2761
- "save": "Save",
2762
- "provider": "Provider",
2763
- "label": "Label",
2764
- "api_key": "API Key",
2765
- "api_key_hint": "Stored only on this device. BYO keynever sent to Moraya servers.",
2766
- "base_url": "Base URL (optional)",
2767
- "base_url_hint": "Override for OpenAI-compatible image endpoints (Together AI, Cloudflare AI Gateway, on-prem proxies).",
2768
- "default_model": "Default model",
2769
- "active": "Active",
2770
- "set_active": "Use",
2771
- "status_ready": "Ready",
2772
- "status_no_key": "No API key",
2773
- "empty": "No image providers configured. Tap “Add” to set up OpenAI DALL-E or Doubao Seedream.",
2774
- "hint": "Image-gen providers power workflow `ai.image` nodes and the upcoming Compose Article flow. Configure at least one to enable cover-image generation.",
2804
+ "title": "이미지 생성",
2805
+ "providers": "공급자",
2806
+ "add": "추가하다",
2807
+ "edit": "이미지 제공자 수정",
2808
+ "delete": "삭제",
2809
+ "save": "구하다",
2810
+ "provider": "공급자",
2811
+ "label": "상표",
2812
+ "api_key": "API ",
2813
+ "api_key_hint": " 기기에만 저장됩니다. BYO Moraya 서버로 전송되지 않습니다.",
2814
+ "base_url": "기본 URL(선택사항)",
2815
+ "base_url_hint": "OpenAI 호환 이미지 엔드포인트(Together AI, Cloudflare AI Gateway, 온프레미스 프록시)에 대해 재정의합니다.",
2816
+ "default_model": "기본 모델",
2817
+ "active": "활동적인",
2818
+ "set_active": "사용",
2819
+ "status_ready": "준비가 된",
2820
+ "status_no_key": "API 키 없음",
2821
+ "empty": "구성된 이미지 제공업체가 없습니다. OpenAI DALL-E 또는 Doubao Seedream을 설정하려면 “추가”를 탭하세요.",
2822
+ "hint": "이미지 생성 제공업체는 워크플로 'ai.image' 노드와 출시될 기사 작성 흐름을 지원합니다. 표지 이미지 생성을 활성화하려면 하나 이상을 구성하세요.",
2775
2823
  "style": {
2776
- "section": "Style presets",
2777
- "add": "Add",
2778
- "edit": "Edit style preset",
2779
- "delete": "Delete",
2780
- "save": "Save",
2781
- "label": "Label",
2782
- "label_placeholder": "e.g. Moody noir",
2783
- "suffix": "Style suffix",
2784
- "suffix_placeholder": "Appended to “Cover illustration for: <title>. ”",
2785
- "suffix_hint": "Describe lighting, palette, mood, aspect ratio anything the model should remember for this style.",
2786
- "hint": "These presets apply when you tap one in the Compose Cover step. Built-in presets stay available even after you edit them.",
2787
- "builtin": "Built-in",
2788
- "builtin_note": "This is a built-in preset. Your changes save as an override and can be reset by deleting (built-ins cannot be removed)."
2824
+ "section": "스타일 사전 설정",
2825
+ "add": "추가하다",
2826
+ "edit": "스타일 사전 설정 수정",
2827
+ "delete": "삭제",
2828
+ "save": "구하다",
2829
+ "label": "상표",
2830
+ "label_placeholder": "예를 들어 무디 느와르",
2831
+ "suffix": "스타일 접미사",
2832
+ "suffix_placeholder": "'표지 그림: <제목>'에 추가되었습니다.",
2833
+ "suffix_hint": "조명, 팔레트, 분위기, 종횡비 모델이 스타일에 대해 기억해야 하는 모든 것을 설명합니다.",
2834
+ "hint": "이러한 사전 설정은 표지 작성 단계에서 하나를 탭하면 적용됩니다. 내장된 사전 설정은 편집 후에도 계속 사용할 있습니다.",
2835
+ "builtin": "내장",
2836
+ "builtin_note": "이는 내장된 사전 설정입니다. 변경 사항은 재정의로 저장되며 삭제하여 재설정할 있습니다(내장된 기능은 제거할 없음)."
2789
2837
  }
2790
2838
  },
2791
2839
  "publish": {
2792
- "title": "Publish targets",
2793
- "section": "Targets",
2794
- "add": "Add",
2795
- "edit": "Edit publish target",
2796
- "delete": "Delete",
2797
- "save": "Save",
2798
- "icon": "Icon",
2799
- "label": "Label",
2800
- "label_placeholder": "WeChat 公众号 (主号)",
2801
- "mcp_tool": "MCP tool",
2802
- "mcp_tool_hint": "Bare name (`publish`) or namespaced (`mcp.<server-id>.<tool>`). Configure the MCP server itself in Settings → MCP.",
2803
- "arg_template": "Argument template (JSON)",
2804
- "arg_template_hint": "Use {title} {body} {topic} {coverKey} {coverPrompt} placeholders. Strings are JSON-escaped before substitution.",
2805
- "empty": "No publish targets configured. Tap “Add” to wire a target to an MCP tool.",
2806
- "hint": "Each target points at one MCP tool e.g. a WeChat 公众号 bridge, a Substack webhook, or your own remote MCP. Compose’s Send menu lists every target."
2840
+ "title": "게시 대상",
2841
+ "section": "대상",
2842
+ "add": "추가하다",
2843
+ "edit": "게시 대상 수정",
2844
+ "delete": "삭제",
2845
+ "save": "구하다",
2846
+ "icon": "",
2847
+ "label": "상표",
2848
+ "label_placeholder": "위챗 公众号 (主号)",
2849
+ "mcp_tool": "MCP 도구",
2850
+ "mcp_tool_hint": "순수 이름(`publish`) 또는 네임스페이스(`mcp.<server-id>.<tool>`). 설정 MCP에서 MCP 서버 자체를 구성하십시오.",
2851
+ "arg_template": "인수 템플릿(JSON)",
2852
+ "arg_template_hint": "{title} {body} {topic} {coverKey} {coverPrompt} 자리 표시자를 사용합니다. 문자열은 대체 전에 JSON으로 이스케이프됩니다.",
2853
+ "empty": "구성된 게시 대상이 없습니다. \"추가\"를 눌러 대상을 MCP 도구에 연결합니다.",
2854
+ "hint": " 대상은 하나의 MCP 도구를 가리킵니다. WeChat 公众号 브리지, Substack 웹훅 또는 자체 원격 MCP. Compose 보내기 메뉴에는 모든 대상이 나열됩니다."
2807
2855
  },
2808
2856
  "voiceai": {
2809
- "title": "Voice AI",
2810
- "engine": "Voice engine",
2811
- "engine_local": "Local (on-device)",
2812
- "engine_local_desc": "Speech recognition and read-aloud run entirely on your device no network, no API keys.",
2813
- "recommended": "Recommended",
2814
- "external_soon": "External cloud voicecoming soon.",
2815
- "unavailable": "On-device voice isn't available here it requires the iOS app.",
2816
- "stt_section": "Speech input",
2817
- "stt_locale": "Recognition language",
2818
- "stt_locale_device": "Follow device",
2819
- "tts_section": "Read aloud",
2820
- "auto_speak": "Auto-read AI replies",
2821
- "voice_label": "Voice",
2822
- "voice_default": "System default",
2823
- "enhanced": "Enhanced",
2824
- "rate": "Speed",
2825
- "test": "Test voice",
2826
- "test_sample": "Hello, I'm Moraya's on-device voice assistant."
2857
+ "title": "음성 AI",
2858
+ "engine": "음성 엔진",
2859
+ "engine_local": "로컬(기기 )",
2860
+ "engine_local_desc": "음성 인식 소리내어 읽기 기능은 네트워크나 API 없이 기기에서 완전히 실행됩니다.",
2861
+ "recommended": "추천",
2862
+ "external_soon": "외부 클라우드 음성 제공될 예정입니다.",
2863
+ "unavailable": "여기에서는 기기 음성을 사용할 없습니다. iOS 앱이 필요합니다.",
2864
+ "stt_section": "음성 입력",
2865
+ "stt_locale": "인식 언어",
2866
+ "stt_locale_device": "기기 팔로우",
2867
+ "tts_section": "소리내어 읽기",
2868
+ "auto_speak": "AI 답변 자동 읽기",
2869
+ "voice_label": "목소리",
2870
+ "voice_default": "시스템 기본값",
2871
+ "enhanced": "향상된",
2872
+ "rate": "속도",
2873
+ "test": "테스트 음성",
2874
+ "test_sample": "안녕하세요, 저는 모라야의 온디바이스 음성비서입니다."
2827
2875
  }
2828
2876
  },
2829
2877
  "shortcuts": {
2830
- "title": "Keyboard Shortcuts",
2831
- "intro": "All keyboard shortcuts in Moraya. Entries marked 🔒 are managed by the native menu and will become user-configurable in a later version.",
2878
+ "title": "키보드 단축키",
2879
+ "intro": "Moraya 모든 키보드 단축키. 🔒로 표시된 항목은 기본 메뉴에서 관리되며 이후 버전에서는 사용자가 구성할 있게 됩니다.",
2832
2880
  "ai_chat_behavior": {
2833
- "title": "AI Chat — Enter Key Behavior",
2834
- "intro": "Choose how the Enter key behaves in the AI chat input.",
2835
- "sends_action": "sends message",
2836
- "newline_action": "newline",
2881
+ "title": "AI Chat — 동작 입력",
2882
+ "intro": "AI 채팅 입력에서 Enter 키가 작동하는 방식을 선택합니다.",
2883
+ "sends_action": "메시지를 보낸다",
2884
+ "newline_action": "개행",
2837
2885
  "mod_enter_send": {
2838
2886
  "label": "Cmd/Ctrl + Enter로 전송"
2839
2887
  },
2840
2888
  "enter_send": {
2841
- "label": "Enter sends"
2889
+ "label": "보내기 입력"
2842
2890
  },
2843
2891
  "default_badge": "기본"
2844
2892
  },
2845
2893
  "categories": {
2846
- "file": "File",
2894
+ "file": "파일",
2847
2895
  "edit": "Edit",
2848
- "paragraph": "Paragraph",
2849
- "format": "Format",
2850
- "view": "View",
2851
- "ai_chat": "AI Chat",
2852
- "workflow": "Workflow",
2896
+ "paragraph": "",
2897
+ "format": "체재",
2898
+ "view": "보다",
2899
+ "ai_chat": "AI채팅",
2900
+ "workflow": "작업 흐름",
2853
2901
  "mcp": "MCP"
2854
2902
  },
2855
2903
  "actions": {
2856
2904
  "file": {
2857
- "new": "New Document",
2858
- "new_window": "New Window",
2859
- "open": "Open File",
2860
- "save": "Save",
2861
- "save_as": "Save As",
2862
- "export_html": "Export HTML",
2905
+ "new": " 문서",
2906
+ "new_window": " ",
2907
+ "open": "파일 열기",
2908
+ "save": "구하다",
2909
+ "save_as": "다른 이름으로 저장",
2910
+ "export_html": "HTML 내보내기",
2863
2911
  "export_pdf": "PDF로 내보내기",
2864
2912
  "export_image": "이미지로 내보내기",
2865
2913
  "export_doc": "Word로 내보내기"
2866
2914
  },
2867
2915
  "edit": {
2868
- "undo": "Undo",
2869
- "redo": "Redo",
2870
- "find": "Find",
2871
- "replace": "Replace"
2916
+ "undo": "끄르다",
2917
+ "redo": "다시 하다",
2918
+ "find": "찾다",
2919
+ "replace": "바꾸다"
2872
2920
  },
2873
2921
  "paragraph": {
2874
- "h1": "Heading 1",
2875
- "h2": "Heading 2",
2876
- "h3": "Heading 3",
2877
- "h4": "Heading 4",
2878
- "h5": "Heading 5",
2879
- "h6": "Heading 6",
2880
- "code_block": "Code Block",
2881
- "quote": "Block Quote"
2922
+ "h1": "제목 1",
2923
+ "h2": "제목 2",
2924
+ "h3": "제목 3",
2925
+ "h4": "제목 4",
2926
+ "h5": "제목 5",
2927
+ "h6": "제목 6",
2928
+ "code_block": "코드 블록",
2929
+ "quote": "블록 견적"
2882
2930
  },
2883
2931
  "format": {
2884
- "bold": "Bold",
2885
- "italic": "Italic",
2886
- "strike": "Strikethrough",
2887
- "code": "Inline Code",
2888
- "link": "Link",
2889
- "insert_image": "Insert Image"
2932
+ "bold": "용감한",
2933
+ "italic": "이탤릭체",
2934
+ "strike": "취소선",
2935
+ "code": "인라인 코드",
2936
+ "link": "링크",
2937
+ "insert_image": "이미지 삽입"
2890
2938
  },
2891
2939
  "view": {
2892
- "toggle_mode": "Toggle Visual / Source",
2893
- "toggle_split": "Toggle Split Mode",
2894
- "toggle_sidebar": "Toggle Sidebar",
2895
- "toggle_aipanel": "Toggle AI Panel",
2896
- "toggle_outline": "Toggle Outline",
2897
- "open_settings": "Open Settings",
2898
- "zoom_in": "Zoom In",
2899
- "zoom_out": "Zoom Out",
2900
- "zoom_reset": "Reset Zoom"
2940
+ "toggle_mode": "시각적/소스 전환",
2941
+ "toggle_split": "분할 모드 전환",
2942
+ "toggle_sidebar": "사이드바 전환",
2943
+ "toggle_aipanel": "AI 패널 전환",
2944
+ "toggle_outline": "개요 전환",
2945
+ "open_settings": "설정 열기",
2946
+ "zoom_in": "확대",
2947
+ "zoom_out": "축소",
2948
+ "zoom_reset": " 재설정"
2901
2949
  },
2902
2950
  "workflow": {
2903
- "quick_open": "Quick Open",
2904
- "command_palette": "Command Palette"
2951
+ "quick_open": "빠른 열기",
2952
+ "command_palette": "명령 팔레트"
2905
2953
  },
2906
2954
  "ai_chat": {
2907
- "send": "Send AI Message",
2908
- "newline": "Insert Newline"
2955
+ "send": "AI 메시지 보내기",
2956
+ "newline": " 바꿈 삽입"
2909
2957
  }
2910
2958
  },
2911
- "locked_hint": "Managed by the native menu not customizable here yet",
2912
- "locked_footnote": "🔒 indicates the shortcut is provided by the OS-native menu and is not customizable in this version.",
2959
+ "locked_hint": "기본 메뉴로 관리 - 아직 여기에서 사용자 정의할 없음",
2960
+ "locked_footnote": "🔒은 바로가기가 OS 기본 메뉴에서 제공되며 버전에서는 사용자 정의할 없음을 나타냅니다.",
2913
2961
  "editor": {
2914
2962
  "prompt": "임의의 키 조합을 누르세요… (Esc로 취소)",
2915
2963
  "needs_modifier": "수정자(Cmd, Ctrl, Alt, Shift) 중 하나 이상이 필요합니다",
@@ -2963,7 +3011,7 @@
2963
3011
  }
2964
3012
  },
2965
3013
  "sidebar": {
2966
- "title": "Sidebar",
3014
+ "title": "사이드바",
2967
3015
  "open_folder": "폴더 열기",
2968
3016
  "no_folder": "열린 폴더 없음",
2969
3017
  "create_kb": "지식 베이스 만들기",
@@ -2997,35 +3045,34 @@
2997
3045
  "reserved_dir_title": "예약된 이름",
2998
3046
  "reserved_dir_name": "\"images\"는 예약된 디렉토리 이름입니다. 다른 이름을 선택하세요.",
2999
3047
  "delete_confirm": "\"{name}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
3000
- "views": "Sidebar views",
3001
- "knowledge_bases": "Knowledge Bases",
3002
- "explorer": "Files",
3003
- "kb_list": "Knowledge base list",
3004
- "tag_view": "Tags",
3005
- "open": "Open sidebar",
3006
- "close": "Close sidebar",
3007
- "local_workspace": "Local"
3048
+ "views": "사이드바 보기",
3049
+ "knowledge_bases": "기술 자료",
3050
+ "explorer": "파일",
3051
+ "kb_list": "기술 자료 목록",
3052
+ "tag_view": "태그",
3053
+ "open": "사이드바 열기",
3054
+ "close": "사이드바 닫기",
3055
+ "local_workspace": "현지의"
3008
3056
  },
3009
3057
  "sso": {
3010
- "__mt": true,
3011
- "title": "Single Sign-On",
3012
- "description": "Configure SSO to let team members authenticate via your identity provider.",
3013
- "enable_sso": "Enable SSO",
3014
- "require_sso": "Require SSO for all members",
3015
- "oidc": "OIDC / OAuth 2.0",
3058
+ "title": "싱글 사인온(SSO)",
3059
+ "description": " 구성원이 ID 공급자를 통해 인증할 수 있도록 SSO를 구성합니다.",
3060
+ "enable_sso": "SSO 활성화",
3061
+ "require_sso": "모든 구성원에 대해 SSO 필요",
3062
+ "oidc": "OIDC/OAuth 2.0",
3016
3063
  "saml": "SAML 2.0",
3017
- "provider": "Identity Provider",
3018
- "custom_provider": "Custom",
3019
- "issuer": "Issuer URL",
3020
- "client_id": "Client ID",
3021
- "client_secret": "Client Secret",
3022
- "scopes": "Scopes",
3023
- "idp_metadata_url": "IdP Metadata URL",
3024
- "sp_entity_id": "SP Entity ID",
3064
+ "provider": "ID 제공자",
3065
+ "custom_provider": "관습",
3066
+ "issuer": "발급자 URL",
3067
+ "client_id": "클라이언트 ID",
3068
+ "client_secret": "클라이언트 비밀번호",
3069
+ "scopes": "범위",
3070
+ "idp_metadata_url": "IdP 메타데이터 URL",
3071
+ "sp_entity_id": "SP 엔터티 ID",
3025
3072
  "sp_acs_url": "ACS URL",
3026
- "signing_cert": "Signing Certificate",
3027
- "save": "Save SSO Configuration",
3028
- "saved_success": "SSO configuration saved."
3073
+ "signing_cert": "서명 인증서",
3074
+ "save": "SSO 구성 저장",
3075
+ "saved_success": "SSO 구성이 저장되었습니다."
3029
3076
  },
3030
3077
  "stale_dmg": {
3031
3078
  "title": "오래된 디스크 이미지 정리",
@@ -3037,7 +3084,7 @@
3037
3084
  "statusbar": {
3038
3085
  "words": "단어 수",
3039
3086
  "characters": "문자 수",
3040
- "format": "Markdown",
3087
+ "format": "가격 인하",
3041
3088
  "source_mode": "소스",
3042
3089
  "visual_mode": "비주얼",
3043
3090
  "split_mode": "분할",
@@ -3045,53 +3092,52 @@
3045
3092
  "ai_tooltip": "AI"
3046
3093
  },
3047
3094
  "storage": {
3048
- "__mt": true,
3049
- "title": "Storage",
3050
- "connected_providers": "Connected Providers",
3051
- "connect_provider": "Connect Provider",
3052
- "primary": "Primary",
3053
- "set_primary": "Set as Primary",
3054
- "remove": "Remove",
3055
- "edit": "Edit",
3056
- "verify": "Verify Connection",
3057
- "verifying": "Verifying...",
3058
- "verify_success": "Connection verified",
3059
- "verify_failed": "Verification failed",
3060
- "no_providers": "No storage providers connected.",
3061
- "connect_prompt": "Connect your own cloud storage to keep full control of your data.",
3062
- "picora_default": "Picora is your storage provider (Connect plan)",
3063
- "upgrade_for_byoc": "Upgrade to Personal to connect your own storage.",
3064
- "step_choose": "Choose Provider",
3065
- "step_setup": "Setup Script",
3066
- "step_credentials": "Enter Credentials",
3067
- "step_verify": "Verify",
3068
- "step_name": "Name & Save",
3069
- "provider_label": "Provider",
3070
- "bucket_label": "Bucket Name",
3071
- "region_label": "Region",
3072
- "access_key_label": "Access Key ID",
3073
- "secret_key_label": "Secret Access Key",
3074
- "role_arn_label": "Role ARN (for STS)",
3075
- "account_id_label": "Account ID",
3076
- "key_id_label": "Key ID",
3077
- "application_key_label": "Application Key",
3078
- "binding_label": "Display Name",
3079
- "copy_script": "Copy Script",
3080
- "copy_policy": "Copy Policy JSON",
3081
- "copied": "Copied!",
3082
- "back": "Back",
3083
- "next": "Next",
3084
- "save": "Save",
3085
- "health_ok": "Healthy",
3086
- "health_degraded": "Degraded",
3087
- "health_failed": "Failed",
3088
- "health_unknown": "Unknown",
3089
- "access_denied": "Access denied.",
3090
- "bucket_not_found": "Bucket not found.",
3091
- "bucket_exists": "Bucket already exists.",
3092
- "clock_skew": "System clock is out of sync. Please check your date/time settings.",
3093
- "b2_no_sts_warning": "Backblaze B2 does not support STS. Credentials are stored in session only. Enable E2E encryption (v0.43) for better security.",
3094
- "r2_token_info": "Create an API Token in Cloudflare Dashboard with R2 Read/Write permissions for this bucket."
3095
+ "title": "저장",
3096
+ "connected_providers": "연결된 제공업체",
3097
+ "connect_provider": "연결 제공자",
3098
+ "primary": "주요한",
3099
+ "set_primary": "기본으로 설정",
3100
+ "remove": "제거하다",
3101
+ "edit": "편집하다",
3102
+ "verify": "연결 확인",
3103
+ "verifying": "확인 중...",
3104
+ "verify_success": "연결이 확인되었습니다.",
3105
+ "verify_failed": "확인 실패",
3106
+ "no_providers": "연결된 스토리지 제공업체가 없습니다.",
3107
+ "connect_prompt": "자신의 클라우드 저장소를 연결하여 데이터를 완벽하게 제어하세요.",
3108
+ "picora_default": "Picora는 스토리지 제공업체입니다(Connect 플랜).",
3109
+ "upgrade_for_byoc": "나만의 스토리지를 연결하려면 개인용으로 업그레이드하세요.",
3110
+ "step_choose": "제공업체 선택",
3111
+ "step_setup": "설정 스크립트",
3112
+ "step_credentials": "자격 증명 입력",
3113
+ "step_verify": "확인하다",
3114
+ "step_name": "이름 지정 및 저장",
3115
+ "provider_label": "공급자",
3116
+ "bucket_label": "버킷 이름",
3117
+ "region_label": "지역",
3118
+ "access_key_label": "액세스 키 ID",
3119
+ "secret_key_label": "비밀 액세스 ",
3120
+ "role_arn_label": "역할 ARN(STS용)",
3121
+ "account_id_label": "계정 ID",
3122
+ "key_id_label": " ID",
3123
+ "application_key_label": "애플리케이션 ",
3124
+ "binding_label": "표시 이름",
3125
+ "copy_script": "스크립트 복사",
3126
+ "copy_policy": "정책 JSON 복사",
3127
+ "copied": "복사되었습니다!",
3128
+ "back": "뒤쪽에",
3129
+ "next": "다음",
3130
+ "save": "구하다",
3131
+ "health_ok": "건강한",
3132
+ "health_degraded": "타락한",
3133
+ "health_failed": "실패한",
3134
+ "health_unknown": "알려지지 않은",
3135
+ "access_denied": "접근 불가.",
3136
+ "bucket_not_found": "버킷을 찾을 수 없습니다.",
3137
+ "bucket_exists": "버킷이 이미 존재합니다.",
3138
+ "clock_skew": "시스템 시계가 동기화되지 않았습니다. 날짜/시간 설정을 확인하세요.",
3139
+ "b2_no_sts_warning": "Backblaze B2는 STS를 지원하지 않습니다. 자격 증명은 세션에만 저장됩니다. 보안 강화를 위해 E2E 암호화(v0.43)를 활성화하세요.",
3140
+ "r2_token_info": " 버킷에 대한 R2 읽기/쓰기 권한으로 Cloudflare Dashboard에서 API 토큰을 생성하세요."
3095
3141
  },
3096
3142
  "table": {
3097
3143
  "insert_row_above": "위에 행 삽입",
@@ -3118,53 +3164,52 @@
3118
3164
  "unsaved_msg": "\"{fileName}\"에 저장되지 않은 변경사항이 있습니다.",
3119
3165
  "save": "저장",
3120
3166
  "discard": "삭제",
3121
- "new_tab": "New Tab",
3122
- "close": "Close Tab",
3123
- "close_others": "Close Other Tabs",
3124
- "close_to_right": "Close Tabs to the Right",
3125
- "close_all": "Close All Tabs",
3126
- "dirty_confirm": "This tab has unsaved changes. Discard and close?",
3127
- "discard_close": "Discard & Close",
3128
- "readonly_banner": "Another tab is editing this note. This tab is read-only.",
3129
- "takeover": "Take Over",
3130
- "open_count": "tabs open",
3131
- "no_tabs": "No open tabs",
3132
- "upgrade_tabs": "Upgrade to Personal to open multiple tabs.",
3133
- "rename": "Rename",
3134
- "rename_placeholder": "Document name",
3135
- "dirty_dot": "Unsaved changes"
3167
+ "new_tab": " ",
3168
+ "close": " 닫기",
3169
+ "close_others": "다른 닫기",
3170
+ "close_to_right": "오른쪽 닫기",
3171
+ "close_all": "모든 닫기",
3172
+ "dirty_confirm": " 탭에는 저장되지 않은 변경사항이 있습니다. 삭제하고 닫으시겠습니까?",
3173
+ "discard_close": "취소 닫기",
3174
+ "readonly_banner": "다른 탭에서 메모를 수정하고 있습니다. 탭은 읽기 전용입니다.",
3175
+ "takeover": "인수하다",
3176
+ "open_count": "탭이 열려 있음",
3177
+ "no_tabs": "열린 없음",
3178
+ "upgrade_tabs": "여러 탭을 열려면 개인으로 업그레이드하세요.",
3179
+ "rename": "이름 바꾸기",
3180
+ "rename_placeholder": "문서 이름",
3181
+ "dirty_dot": "저장되지 않은 변경사항"
3136
3182
  },
3137
3183
  "team": {
3138
- "__mt": true,
3139
- "title": "Team Knowledge Bases",
3140
- "create": "New Team KB",
3141
- "no_kbs": "You don't have any team knowledge bases yet.",
3142
- "create_first": "Create your first team KB",
3143
- "members": "members",
3144
- "open": "Open",
3145
- "settings": "Settings",
3146
- "encryption_kms": "Cloud KMS (AI Review enabled)",
3147
- "encryption_e2e": "E2E Encryption (AI Review disabled)",
3148
- "wizard_title": "Create Team Knowledge Base",
3149
- "step_info": "Name",
3150
- "step_provider": "Storage",
3151
- "step_members": "Members",
3152
- "step_encryption": "Encryption",
3153
- "step_confirm": "Confirm",
3154
- "kb_name_label": "Team KB Name",
3155
- "kb_name_placeholder": "e.g. Engineering Docs",
3156
- "provider_label": "Provider",
3157
- "bucket_label": "Bucket",
3158
- "prefix_label": "Prefix (optional)",
3159
- "invite_emails_label": "Email addresses (comma-separated)",
3160
- "invite_role_label": "Role",
3161
- "mode_kms_name": "Cloud KMS",
3162
- "mode_kms_desc": "AI Review and server-side features enabled.",
3163
- "mode_e2e_name": "End-to-End",
3164
- "mode_e2e_desc": "Maximum privacy. AI Review not available.",
3165
- "confirm_summary": "Confirm & Create",
3166
- "creating": "Creating…",
3167
- "create_kb": "Create Team KB"
3184
+ "title": "팀 기술 자료",
3185
+ "create": "새로운 KB",
3186
+ "no_kbs": "아직 기술 자료가 없습니다.",
3187
+ "create_first": " 번째 KB 만들기",
3188
+ "members": "회원",
3189
+ "open": "열려 있는",
3190
+ "settings": "설정",
3191
+ "encryption_kms": "Cloud KMS(AI 검토 지원)",
3192
+ "encryption_e2e": "E2E 암호화(AI 검토 비활성화됨)",
3193
+ "wizard_title": " 기술 자료 만들기",
3194
+ "step_info": "이름",
3195
+ "step_provider": "저장",
3196
+ "step_members": "회원",
3197
+ "step_encryption": "암호화",
3198
+ "step_confirm": "확인하다",
3199
+ "kb_name_label": "팀 KB 이름",
3200
+ "kb_name_placeholder": "예를 들어 엔지니어링 문서",
3201
+ "provider_label": "공급자",
3202
+ "bucket_label": "버킷",
3203
+ "prefix_label": "접두사(선택사항)",
3204
+ "invite_emails_label": "이메일 주소(쉼표로 구분)",
3205
+ "invite_role_label": "역할",
3206
+ "mode_kms_name": "클라우드 KMS",
3207
+ "mode_kms_desc": "AI 검토 및 서버 측 기능이 활성화되었습니다.",
3208
+ "mode_e2e_name": "엔드투엔드",
3209
+ "mode_e2e_desc": "최대한의 프라이버시. AI 검토를 사용할 수 없습니다.",
3210
+ "confirm_summary": "확인 생성",
3211
+ "creating": "만드는 중…",
3212
+ "create_kb": "팀 KB 만들기"
3168
3213
  },
3169
3214
  "templates": {
3170
3215
  "gallery": {
@@ -3513,51 +3558,51 @@
3513
3558
  "name": "영어 게임",
3514
3559
  "desc": "Word Chain, Hangman, Trivia 등",
3515
3560
  "word_chain": {
3516
- "name": "Word Chain",
3561
+ "name": "워드 체인",
3517
3562
  "desc": "마지막 글자로 다음 단어를 시작합니다"
3518
3563
  },
3519
3564
  "twenty_questions": {
3520
- "name": "20 Questions",
3565
+ "name": "질문 20",
3521
3566
  "desc": "20개의 예/아니오 질문으로 물건을 맞춥니다"
3522
3567
  },
3523
3568
  "hangman": {
3524
- "name": "Hangman",
3569
+ "name": "행맨",
3525
3570
  "desc": "글자 하나씩 단어를 맞춥니다"
3526
3571
  },
3527
3572
  "story_builder": {
3528
- "name": "Story Builder",
3573
+ "name": "스토리 빌더",
3529
3574
  "desc": "번갈아 이야기를 만들어갑니다"
3530
3575
  },
3531
3576
  "word_association": {
3532
- "name": "Word Association",
3577
+ "name": "단어 연관",
3533
3578
  "desc": "자유 연상 단어 이어가기"
3534
3579
  },
3535
3580
  "riddles": {
3536
- "name": "Riddles",
3581
+ "name": "수수께끼",
3537
3582
  "desc": "영어 수수께끼를 풀어봅니다"
3538
3583
  },
3539
3584
  "trivia": {
3540
- "name": "Trivia Quiz",
3585
+ "name": "퀴즈 퀴즈",
3541
3586
  "desc": "일반 상식 퀴즈"
3542
3587
  },
3543
3588
  "rhyme_time": {
3544
- "name": "Rhyme Time",
3589
+ "name": "운율 시간",
3545
3590
  "desc": "라임이 맞는 단어로 이야기를 만듭니다"
3546
3591
  },
3547
3592
  "acronym": {
3548
- "name": "Acronym Game",
3593
+ "name": "약어 게임",
3549
3594
  "desc": "무작위 약어의 의미를 만들어냅니다"
3550
3595
  },
3551
3596
  "taboo": {
3552
- "name": "Taboo",
3597
+ "name": "금기",
3553
3598
  "desc": "금지된 단어를 쓰지 않고 설명합니다"
3554
3599
  },
3555
3600
  "sentence_builder": {
3556
- "name": "Sentence Builder",
3601
+ "name": "문장 작성기",
3557
3602
  "desc": "주어진 단어로 가장 긴 문장을 만듭니다"
3558
3603
  },
3559
3604
  "emoji_story": {
3560
- "name": "Emoji Story",
3605
+ "name": "이모티콘 스토리",
3561
3606
  "desc": "이모지로 이야기를 전합니다"
3562
3607
  }
3563
3608
  },
@@ -3587,29 +3632,28 @@
3587
3632
  }
3588
3633
  },
3589
3634
  "theme": {
3590
- "__mt": true,
3591
- "title": "Appearance",
3592
- "mode_title": "Color Mode",
3593
- "mode_light": "Light",
3594
- "mode_dark": "Dark",
3595
- "mode_system": "System",
3596
- "custom_title": "Custom Themes",
3597
- "custom_new": "New Theme",
3598
- "custom_export": "Export",
3599
- "custom_import": "Import",
3600
- "custom_delete": "Delete",
3601
- "custom_activate": "Activate",
3602
- "custom_deactivate": "Deactivate",
3603
- "custom_edit": "Edit",
3604
- "editor_title": "Theme Editor",
3605
- "name_label": "Theme Name",
3606
- "no_custom": "No custom themes yet. Create one below.",
3607
- "groups_base": "Base Colors",
3608
- "groups_editor": "Editor",
3609
- "groups_ui": "UI Components",
3610
- "groups_code": "Code Block",
3611
- "saved": "Save",
3612
- "import_error": "Invalid theme file. Please use a valid Moraya theme JSON."
3635
+ "title": "모습",
3636
+ "mode_title": "컬러 모드",
3637
+ "mode_light": "",
3638
+ "mode_dark": "어두운",
3639
+ "mode_system": "체계",
3640
+ "custom_title": "맞춤 테마",
3641
+ "custom_new": "새로운 테마",
3642
+ "custom_export": "내보내다",
3643
+ "custom_import": "수입",
3644
+ "custom_delete": "삭제",
3645
+ "custom_activate": "활성화",
3646
+ "custom_deactivate": "비활성화",
3647
+ "custom_edit": "편집하다",
3648
+ "editor_title": "테마 편집기",
3649
+ "name_label": "테마 이름",
3650
+ "no_custom": "아직 맞춤 테마가 없습니다. 아래에서 하나를 만드세요.",
3651
+ "groups_base": "기본 색상",
3652
+ "groups_editor": "편집자",
3653
+ "groups_ui": "UI 구성요소",
3654
+ "groups_code": "코드 블록",
3655
+ "saved": "구하다",
3656
+ "import_error": "테마 파일이 잘못되었습니다. 유효한 Moraya 테마 JSON을 사용하세요."
3613
3657
  },
3614
3658
  "titlebar": {
3615
3659
  "unsaved": "저장되지 않음",
@@ -3638,7 +3682,34 @@
3638
3682
  "summarize_prompt": "다음 전사 내용으로 회의 요약을 생성해 주세요. 주요 논의 사항, 결정 사항 및 액션 아이템을 식별하세요. Markdown 형식으로 작성해 주세요.",
3639
3683
  "no_speech_config": "음성 인식 서비스가 구성되지 않았습니다. 설정 → 음성에서 추가하세요.",
3640
3684
  "no_speech_config_hint": "설정 → 음성으로 이동하여 음성 인식 서비스(예: Deepgram)를 추가하세요.",
3641
- "go_to_voice_settings": "음성 설정 열기"
3685
+ "go_to_voice_settings": "음성 설정 열기",
3686
+ "mute_mic": "마이크 음소거",
3687
+ "unmute_mic": "마이크 음소거 해제",
3688
+ "source_label": "원천",
3689
+ "source_mic": "마이크",
3690
+ "source_system": "체계",
3691
+ "source_mixed": "혼합",
3692
+ "mode_label": "방법",
3693
+ "mode_transcription": "전사",
3694
+ "mode_interview": "회견",
3695
+ "summarize_interview": "인터뷰 요약",
3696
+ "to_document_append": "현재 문서에 추가",
3697
+ "interview_summarize_prompt": "다음 인터뷰 내용을 요약해주세요. 핵심 질문, 간결한 답변 포인트, 최적화 제안을 추출합니다. 마크다운으로 포맷하세요.",
3698
+ "interview_no_aiconfig": "구성된 채팅 AI 모델이 없습니다. 설정 → AI에서 하나 추가해 주세요.",
3699
+ "interview_empty_answer": "AI는 빈 답변을 반환했습니다.",
3700
+ "interview_answer_pending": "최신 컨텍스트 분석 중...",
3701
+ "interview_answer_failed": "인터뷰 답변을 생성하지 못했습니다.",
3702
+ "interview_system_share_hint": "인터뷰 모드는 현재 오디오 소스 설정을 따릅니다. 화면 공유는 시스템 소스가 선택된 경우에만 요청됩니다.",
3703
+ "interview_native_system_hint": "인터뷰 모드는 현재 오디오 소스 설정을 따릅니다. macOS에서 시스템 및 혼합 소스는 화면 공유 대화 상자 대신 기본 시스템 오디오 캡처를 사용합니다.",
3704
+ "system_source_restart_hint": "시스템/혼합 소스로 전환한 후 녹음이 중지되었습니다. 다시 시작을 클릭하여 재인증하고 계속하세요.",
3705
+ "system_source_click_start_hint": "시스템 소스 권한은 시작 버튼에서 트리거되어야 합니다. 다시 시작을 클릭해 주세요.",
3706
+ "system_source_permission_denied": "시스템 소스 권한이 거부되었습니다. 화면 공유를 허용하고 오디오 공유를 활성화한 후 다시 시도하세요.",
3707
+ "system_source_no_audio_track_hint": "시스템 오디오 트랙이 캡처되지 않았습니다. 공유 대화 상자에서 오디오 공유를 활성화하고 전체 화면을 선호합니다. 플랫폼에 오디오 공유 옵션이 없으면 마이크 또는 혼합 소스를 사용하십시오.",
3708
+ "system_source_unsupported_hint": "이 환경은 공유 대화 상자에 시스템 오디오 트랙을 노출하지 않습니다. 소스가 자동으로 마이크로 전환되었습니다. 진정한 시스템 오디오를 위해서는 기본 루프백 캡처 경로를 사용하세요.",
3709
+ "system_source_native_hint": "macOS 기본 시스템 오디오 캡처가 활성화되어 있습니다. 시스템 소스에는 화면 공유 대화 상자가 필요하지 않습니다.",
3710
+ "system_source_native_mixed_hint": "macOS 기본 시스템 오디오 캡처가 활성화되어 있습니다. 혼합 소스는 기본 시스템 오디오와 앱 내 마이크 입력을 결합합니다.",
3711
+ "system_source_native_permission_denied": "macOS는 기본 시스템 오디오 캡처를 거부했습니다. 시스템 설정 → 개인 정보 보호 및 보안에서 앱을 허용한 후 다시 시도해 보세요.",
3712
+ "system_source_runtime_incompatible": "이 macOS 런타임은 기본 시스템 오디오 캡처와 완전히 호환되지 않습니다. macOS를 업데이트하거나 마이크 소스로 전환하세요."
3642
3713
  },
3643
3714
  "update": {
3644
3715
  "title": "버전 정보",
@@ -3658,34 +3729,37 @@
3658
3729
  "new_version_available": "새 버전이 출시되었습니다! 클릭하여 업그레이드하세요."
3659
3730
  },
3660
3731
  "voice": {
3661
- "__mt": true,
3662
- "title": "Voice Capture",
3663
- "provider": "Provider",
3664
- "language": "Language",
3665
- "doubao": "Doubao (Realtime)",
3666
- "start": "Record",
3667
- "stop": "Stop",
3668
- "processing": "Processing...",
3669
- "transcript": "Transcript",
3670
- "words": "words",
3671
- "structurize": "AI Structurize",
3672
- "view_history": "View History",
3673
- "untitled": "Untitled",
3674
- "key_points": "Key Points",
3675
- "action_items": "Action Items",
3676
- "save_note": "Save Note",
3677
- "discard": "Discard",
3678
- "quota_exceeded": "Monthly voice quota exceeded. Upgrade or wait until next month.",
3679
- "quota_near": "You are near your monthly voice limit.",
3732
+ "title": "음성 캡처",
3733
+ "provider": "공급자",
3734
+ "language": "언어",
3735
+ "doubao": "두바오(실시간)",
3736
+ "start": "기록",
3737
+ "stop": "멈추다",
3738
+ "processing": "처리 중...",
3739
+ "transcript": "성적 증명서",
3740
+ "words": "단어",
3741
+ "structurize": "AI 구조화",
3742
+ "view_history": "기록 보기",
3743
+ "untitled": "제목 없음",
3744
+ "key_points": "핵심사항",
3745
+ "action_items": "조치 항목",
3746
+ "save_note": "메모 저장",
3747
+ "discard": "버리다",
3748
+ "quota_exceeded": "월간 음성 할당량을 초과했습니다. 업그레이드하거나 다음 달까지 기다리세요.",
3749
+ "quota_near": "월별 음성 한도에 거의 도달했습니다.",
3680
3750
  "history": {
3681
- "title": "Voice History",
3682
- "new_capture": "+ New Recording",
3683
- "search_placeholder": "Search transcripts...",
3684
- "no_results": "No transcripts match your search.",
3685
- "empty": "No recordings yet. Start capturing your voice!",
3686
- "reprocess": "Re-process",
3687
- "delete": "Delete"
3688
- }
3751
+ "title": "음성 기록",
3752
+ "new_capture": "+ 새로운 녹음",
3753
+ "search_placeholder": "스크립트 검색...",
3754
+ "no_results": "검색어와 일치하는 성적표가 없습니다.",
3755
+ "empty": "아직 녹음이 없습니다. 목소리를 녹음해 보세요!",
3756
+ "reprocess": "재처리",
3757
+ "delete": "삭제"
3758
+ },
3759
+ "hold_to_record": "녹음하려면 길게 누르세요.",
3760
+ "release_to_send": "보내려면 손을 떼세요",
3761
+ "cancel": "슬라이드하여 취소",
3762
+ "permission_denied": "마이크 권한이 거부되었습니다."
3689
3763
  },
3690
3764
  "welcome": {
3691
3765
  "title": "Moraya에 오신 것을 환영합니다",
@@ -3754,116 +3828,116 @@
3754
3828
  "mcp_server_count": "서비스 연결됨",
3755
3829
  "mcp_tool_count": "도구",
3756
3830
  "list": {
3757
- "title": "Workflows",
3758
- "new_workflow": "New Workflow",
3759
- "empty_state": "Automate your notes with AI workflows",
3760
- "no_workflows": "No workflows yet",
3761
- "run_now": "Run Now",
3762
- "last_run": "Last run",
3763
- "never_run": "Never run",
3764
- "enable": "Enable",
3765
- "disable": "Disable",
3766
- "delete": "Delete",
3767
- "confirm_delete": "Delete this workflow?",
3768
- "locked_custom": "Custom workflows require Personal plan or above"
3831
+ "title": "워크플로",
3832
+ "new_workflow": "새로운 작업 흐름",
3833
+ "empty_state": "AI 워크플로우로 메모 자동화",
3834
+ "no_workflows": "아직 워크플로가 없습니다.",
3835
+ "run_now": "지금 실행",
3836
+ "last_run": "마지막 실행",
3837
+ "never_run": "절대 뛰지 마세요",
3838
+ "enable": "할 수 있게 하다",
3839
+ "disable": "장애를 입히다",
3840
+ "delete": "삭제",
3841
+ "confirm_delete": " 워크플로를 삭제하시겠습니까?",
3842
+ "locked_custom": "맞춤형 워크플로우에는 개인 플랜 이상이 필요합니다."
3769
3843
  },
3770
3844
  "trigger": {
3771
- "cron": "Scheduled",
3772
- "manual": "Manual",
3773
- "note_event": "Note Event",
3774
- "webhook": "Webhook"
3845
+ "cron": "예정됨",
3846
+ "manual": "수동",
3847
+ "note_event": "노트 이벤트",
3848
+ "webhook": "웹훅"
3775
3849
  },
3776
3850
  "status": {
3777
- "running": "Running",
3778
- "completed": "Completed",
3779
- "failed": "Failed",
3780
- "paused": "Paused",
3781
- "cancelled": "Cancelled",
3782
- "enabled": "Enabled",
3783
- "disabled": "Disabled"
3851
+ "running": "달리기",
3852
+ "completed": "완전한",
3853
+ "failed": "실패한",
3854
+ "paused": "일시중지됨",
3855
+ "cancelled": "취소",
3856
+ "enabled": "활성화됨",
3857
+ "disabled": "장애가 있는"
3784
3858
  },
3785
3859
  "edit": {
3786
- "title_new": "New Workflow",
3787
- "title_edit": "Edit Workflow",
3788
- "save": "Save",
3789
- "run": "Run",
3790
- "cancel": "Cancel",
3791
- "yaml_label": "Workflow YAML",
3792
- "yaml_placeholder": "Enter workflow YAML...",
3793
- "nodes_label": "Nodes",
3794
- "valid": "Valid",
3795
- "invalid": "Invalid",
3796
- "engine_client": "Client Engine",
3797
- "engine_server": "Server Engine (KMS required)",
3798
- "unsaved_changes": "You have unsaved changes"
3860
+ "title_new": "새로운 작업 흐름",
3861
+ "title_edit": "워크플로우 편집",
3862
+ "save": "구하다",
3863
+ "run": "달리다",
3864
+ "cancel": "취소",
3865
+ "yaml_label": "워크플로 YAML",
3866
+ "yaml_placeholder": "워크플로 YAML 입력...",
3867
+ "nodes_label": "노드",
3868
+ "valid": "유효한",
3869
+ "invalid": "유효하지 않은",
3870
+ "engine_client": "클라이언트 엔진",
3871
+ "engine_server": "서버 엔진(KMS 필요)",
3872
+ "unsaved_changes": "저장되지 않은 변경사항이 있습니다."
3799
3873
  },
3800
3874
  "history": {
3801
- "title": "Execution History",
3802
- "no_runs": "No runs yet",
3803
- "trigger": "Trigger",
3804
- "started": "Started",
3805
- "duration": "Duration",
3806
- "status": "Status",
3807
- "workflow": "Workflow",
3808
- "node_results": "Node Results",
3809
- "node_id": "Node",
3810
- "error_detail": "Error"
3875
+ "title": "실행 내역",
3876
+ "no_runs": "아직 실행 없음",
3877
+ "trigger": "방아쇠",
3878
+ "started": "시작됨",
3879
+ "duration": "지속",
3880
+ "status": "상태",
3881
+ "workflow": "작업 흐름",
3882
+ "node_results": "노드 결과",
3883
+ "node_id": "마디",
3884
+ "error_detail": "오류"
3811
3885
  },
3812
3886
  "market": {
3813
- "title": "Workflow Templates",
3814
- "templates": "Built-in Templates",
3815
- "use_template": "Use Template",
3816
- "export": "Export Workflow",
3817
- "export_select": "Select workflow to export",
3818
- "import": "Import Workflow",
3819
- "import_placeholder": "Paste workflow YAML here...",
3820
- "import_btn": "Import",
3821
- "import_success": "Workflow imported successfully",
3822
- "import_error": "Invalid workflow YAML",
3823
- "search_placeholder": "Search templates..."
3887
+ "title": "워크플로 템플릿",
3888
+ "templates": "내장 템플릿",
3889
+ "use_template": "템플릿 사용",
3890
+ "export": "워크플로 내보내기",
3891
+ "export_select": "내보낼 워크플로 선택",
3892
+ "import": "워크플로 가져오기",
3893
+ "import_placeholder": "여기에 워크플로 YAML 붙여넣으세요...",
3894
+ "import_btn": "수입",
3895
+ "import_success": "워크플로를 성공적으로 가져왔습니다.",
3896
+ "import_error": "잘못된 워크플로 YAML",
3897
+ "search_placeholder": "템플릿 검색..."
3824
3898
  },
3825
3899
  "templates": {
3826
3900
  "daily_summary": {
3827
- "name": "Daily Summary",
3828
- "description": "Automatically summarize your notes every evening"
3901
+ "name": "일일 요약",
3902
+ "description": "매일 저녁 메모를 자동으로 요약합니다."
3829
3903
  },
3830
3904
  "note_translation": {
3831
- "name": "Note Translation",
3832
- "description": "Translate notes to another language on demand"
3905
+ "name": "노트 번역",
3906
+ "description": "요청 메모를 다른 언어로 번역"
3833
3907
  },
3834
3908
  "auto_tagging": {
3835
- "name": "Auto Tagging",
3836
- "description": "Automatically tag newly created notes with AI"
3909
+ "name": "자동 태그 추가",
3910
+ "description": "AI로 새로 생성된 노트에 자동으로 태그 지정"
3837
3911
  },
3838
3912
  "weekly_review": {
3839
- "name": "Weekly Review",
3840
- "description": "Generate a weekly reflection every Sunday evening"
3913
+ "name": "주간 검토",
3914
+ "description": "매주 일요일 저녁에 주간 반성을 생성합니다."
3841
3915
  },
3842
3916
  "knowledge_graph": {
3843
- "name": "Knowledge Graph",
3844
- "description": "Extract entities and relationships from all notes"
3917
+ "name": "지식 그래프",
3918
+ "description": "모든 노트에서 엔터티 관계 추출"
3845
3919
  }
3846
3920
  },
3847
3921
  "nodes": {
3848
- "ai_call": "AI Call",
3849
- "rag_search": "RAG Search",
3850
- "transform": "Transform",
3851
- "if": "Condition",
3852
- "notes_write": "Write Note",
3853
- "notify": "Notify",
3854
- "tool_call": "Tool Call"
3922
+ "ai_call": "AI 통화",
3923
+ "rag_search": "RAG 검색",
3924
+ "transform": "변환",
3925
+ "if": "상태",
3926
+ "notes_write": "메모 쓰기",
3927
+ "notify": "알림",
3928
+ "tool_call": "도구 호출"
3855
3929
  },
3856
3930
  "quota": {
3857
- "exceeded": "Workflow quota exceeded",
3858
- "daily_limit": "Daily run limit reached",
3859
- "ai_quota": "AI call quota exceeded"
3931
+ "exceeded": "워크플로 할당량을 초과했습니다.",
3932
+ "daily_limit": "일일 실행 한도에 도달했습니다.",
3933
+ "ai_quota": "AI 호출 할당량 초과"
3860
3934
  },
3861
3935
  "safety": {
3862
- "write_permission_title": "Allow Workflow to Write Notes?",
3863
- "write_permission_body": "Workflow \"{{ name }}\" wants to create or modify notes.",
3864
- "allow_once": "Allow Once",
3865
- "allow_always": "Always Allow",
3866
- "deny": "Deny"
3936
+ "write_permission_title": "워크플로에서 메모를 작성하도록 허용하시겠습니까?",
3937
+ "write_permission_body": "워크플로 \"{{ 이름 }}\"에서 메모를 생성하거나 수정하려고 합니다.",
3938
+ "allow_once": " 번만 허용",
3939
+ "allow_always": "항상 허용",
3940
+ "deny": "부인하다"
3867
3941
  }
3868
3942
  }
3869
3943
  }