@moraya/core 0.1.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/i18n/index.d.ts +231 -0
- package/dist/i18n/index.js +301 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/ar.json +3873 -0
- package/dist/i18n/locales/de.json +3873 -0
- package/dist/i18n/locales/en.json +3943 -0
- package/dist/i18n/locales/es.json +3871 -0
- package/dist/i18n/locales/fr.json +3871 -0
- package/dist/i18n/locales/hi.json +3873 -0
- package/dist/i18n/locales/ja.json +3873 -0
- package/dist/i18n/locales/ko.json +3873 -0
- package/dist/i18n/locales/pt.json +3873 -0
- package/dist/i18n/locales/ru.json +3873 -0
- package/dist/i18n/locales/zh-CN.json +3943 -0
- package/dist/i18n/locales/zh-Hant.json +3873 -0
- package/package.json +7 -2
|
@@ -0,0 +1,3873 @@
|
|
|
1
|
+
{
|
|
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",
|
|
19
|
+
"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"
|
|
27
|
+
},
|
|
28
|
+
"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.",
|
|
40
|
+
"mode": {
|
|
41
|
+
"react": "ReAct (Adaptive)",
|
|
42
|
+
"plan_execute": "Plan & Execute"
|
|
43
|
+
},
|
|
44
|
+
"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"
|
|
50
|
+
},
|
|
51
|
+
"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"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"ai": {
|
|
61
|
+
"title": "AI",
|
|
62
|
+
"rules_active": "MORAYA.md 규칙 활성화 ({count}개 섹션)",
|
|
63
|
+
"clear_chat": "대화 지우기",
|
|
64
|
+
"unconfigured": "AI가 구성되지 않았습니다.",
|
|
65
|
+
"unconfigured_hint": "설정({shortcut})을 열고 API 키를 구성하여 AI 기능을 활성화하세요.",
|
|
66
|
+
"open_settings": "AI 설정 열기",
|
|
67
|
+
"open_image_settings": "AIGC 설정 열기",
|
|
68
|
+
"text_ai_label": "텍스트 AI (프롬프트 생성)",
|
|
69
|
+
"image_ai_label": "이미지 AI (이미지 생성)",
|
|
70
|
+
"welcome_title": "무엇을 도와드릴까요?",
|
|
71
|
+
"welcome_hint": "메시지를 입력하거나 {kbd}로 명령어를 확인하세요",
|
|
72
|
+
"you": "나",
|
|
73
|
+
"assistant": "AI",
|
|
74
|
+
"typing": "입력 중...",
|
|
75
|
+
"placeholder": "AI에게 무엇이든 물어보세요...",
|
|
76
|
+
"placeholder_selection": "선택한 내용에 대해 질문하세요...",
|
|
77
|
+
"send": "보내기 (⌘↵)",
|
|
78
|
+
"stop": "중지 (Esc)",
|
|
79
|
+
"retry": "재시도",
|
|
80
|
+
"interrupted": "중단됨",
|
|
81
|
+
"insert_to_editor": "편집기에 삽입",
|
|
82
|
+
"replace_selection": "선택 영역 교체",
|
|
83
|
+
"attach_image": "이미지 첨부",
|
|
84
|
+
"attach_image_max": "최대 {max}개 이미지",
|
|
85
|
+
"remove_image": "이미지 제거",
|
|
86
|
+
"close_preview": "미리보기 닫기",
|
|
87
|
+
"more_actions": "더 많은 기능",
|
|
88
|
+
"voice_transcription": "AI 음성 전사",
|
|
89
|
+
"config": {
|
|
90
|
+
"title": "AI 구성",
|
|
91
|
+
"provider": "서비스 제공자",
|
|
92
|
+
"api_key": "API 키",
|
|
93
|
+
"api_key_placeholder": "{provider} API 키 입력",
|
|
94
|
+
"api_key_not_required": "Ollama는 키가 필요 없습니다",
|
|
95
|
+
"base_url": "기본 URL",
|
|
96
|
+
"model": "모델",
|
|
97
|
+
"model_placeholder": "모델 이름 입력",
|
|
98
|
+
"max_tokens": "최대 토큰 수",
|
|
99
|
+
"temperature": "온도",
|
|
100
|
+
"test_connection": "연결 테스트",
|
|
101
|
+
"testing": "테스트 중...",
|
|
102
|
+
"connected": "연결 성공!",
|
|
103
|
+
"failed": "실패",
|
|
104
|
+
"test_failed": "연결 테스트 실패"
|
|
105
|
+
},
|
|
106
|
+
"providers": {
|
|
107
|
+
"claude": "Anthropic Claude",
|
|
108
|
+
"openai": "OpenAI",
|
|
109
|
+
"gemini": "Google Gemini",
|
|
110
|
+
"deepseek": "DeepSeek",
|
|
111
|
+
"ollama": "Ollama (로컬)",
|
|
112
|
+
"custom": "사용자 지정 API",
|
|
113
|
+
"grok": "xAI Grok",
|
|
114
|
+
"mistral": "Mistral AI",
|
|
115
|
+
"glm": "Zhipu GLM",
|
|
116
|
+
"minimax": "MiniMax",
|
|
117
|
+
"doubao": "Doubao (ByteDance)"
|
|
118
|
+
},
|
|
119
|
+
"multi_model": {
|
|
120
|
+
"add_model": "+ 모델 추가",
|
|
121
|
+
"default": "기본값",
|
|
122
|
+
"set_default": "기본값 설정",
|
|
123
|
+
"no_models": "AI 모델이 구성되지 않았습니다",
|
|
124
|
+
"no_models_hint": "AI 기능을 사용하려면 AI 모델을 추가하세요.",
|
|
125
|
+
"no_image_models": "이미지 모델이 구성되지 않았습니다",
|
|
126
|
+
"no_image_models_hint": "AI 이미지 기능을 사용하려면 이미지 생성 모델을 추가하세요."
|
|
127
|
+
},
|
|
128
|
+
"image_config": {
|
|
129
|
+
"title": "이미지 생성 AI",
|
|
130
|
+
"provider": "서비스 제공자",
|
|
131
|
+
"provider_openai": "OpenAI DALL-E",
|
|
132
|
+
"provider_grok": "Grok (xAI)",
|
|
133
|
+
"provider_custom": "사용자 지정 (OpenAI 호환)",
|
|
134
|
+
"api_key": "API 키",
|
|
135
|
+
"api_key_placeholder": "이미지 API 키 입력",
|
|
136
|
+
"base_url": "기본 URL",
|
|
137
|
+
"model": "모델",
|
|
138
|
+
"model_placeholder": "모델 이름 입력",
|
|
139
|
+
"default_size": "기본 크기",
|
|
140
|
+
"ratio": "종횡비",
|
|
141
|
+
"size_level": "크기",
|
|
142
|
+
"size_large": "대",
|
|
143
|
+
"size_medium": "중",
|
|
144
|
+
"size_small": "소",
|
|
145
|
+
"provider_gemini": "Google Gemini Imagen",
|
|
146
|
+
"provider_qwen": "Qwen (Alibaba)",
|
|
147
|
+
"provider_doubao": "Doubao (ByteDance)"
|
|
148
|
+
},
|
|
149
|
+
"commands": {
|
|
150
|
+
"write": "작성",
|
|
151
|
+
"write_desc": "프롬프트에 따라 내용을 작성합니다",
|
|
152
|
+
"continue": "이어쓰기",
|
|
153
|
+
"continue_desc": "텍스트가 끝난 곳에서 이어 작성합니다",
|
|
154
|
+
"summarize": "요약",
|
|
155
|
+
"summarize_desc": "선택한 텍스트를 요약합니다",
|
|
156
|
+
"translate": "번역",
|
|
157
|
+
"translate_desc": "텍스트를 다른 언어로 번역합니다",
|
|
158
|
+
"improve": "개선",
|
|
159
|
+
"improve_desc": "글쓰기 품질을 향상시킵니다",
|
|
160
|
+
"fix_grammar": "문법 수정",
|
|
161
|
+
"fix_grammar_desc": "문법 및 맞춤법 오류를 수정합니다",
|
|
162
|
+
"simplify": "간소화",
|
|
163
|
+
"simplify_desc": "복잡한 텍스트를 간소화합니다",
|
|
164
|
+
"expand": "확장",
|
|
165
|
+
"expand_desc": "주제를 확장합니다",
|
|
166
|
+
"outline": "개요 생성",
|
|
167
|
+
"outline_desc": "글의 개요를 생성합니다",
|
|
168
|
+
"explain": "설명",
|
|
169
|
+
"explain_desc": "선택한 텍스트를 설명합니다"
|
|
170
|
+
},
|
|
171
|
+
"prompts": {
|
|
172
|
+
"empty_response": "빈 응답을 반환했습니다. 작업을 계속하세요: 필요한 도구를 호출하거나, 완료된 사항을 요약하고 남은 항목을 나열하세요. 빈 메시지를 반환하지 마세요.",
|
|
173
|
+
"empty_response_continue": "\n\n마지막 메시지는: \"{lastMessage}\"\n여기서부터 계속하세요.",
|
|
174
|
+
"truncation_continue": "출력 길이 제한으로 이전 응답이 잘렸습니다. 위의 텍스트는 저장되었습니다. 이제 필요한 도구 호출을 통해 작업을 완료하세요. 내용을 반복하지 말고 도구 인수에서 직접 사용하세요.",
|
|
175
|
+
"continuation_prompt": "계속 진행하여 작업을 완료하기 위한 필요한 도구 호출을 수행하세요. 이미 말한 내용을 반복하지 말고 도구 호출을 직접 진행하세요.",
|
|
176
|
+
"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."
|
|
184
|
+
},
|
|
185
|
+
"detection": {
|
|
186
|
+
"intent_prefixes": "제가|저는|먼저|다음으로|이제|저도|제가 할|시작하겠습니다|진행하겠습니다",
|
|
187
|
+
"action_verbs": "생성|읽기|확인|검색|가져오기|보내기|저장|삭제|편집|업로드|다운로드|작성|수정|실행|처리|분석|변환|열기|연결|설정|구성|게시|내보내기|표시|테스트|사용|적용",
|
|
188
|
+
"continuation_phrases": "먼저|다음으로|그런 다음|이제",
|
|
189
|
+
"remaining_phrases": "남은|다음|단계\\d+",
|
|
190
|
+
"unfinished_phrases": "아직|미완료|보류 중|해야 할|다음 단계"
|
|
191
|
+
},
|
|
192
|
+
"sections": {
|
|
193
|
+
"image_ai": "이미지 AI",
|
|
194
|
+
"image_aihint": "AI 이미지 생성 모델 구성."
|
|
195
|
+
},
|
|
196
|
+
"generating": "생성 중…",
|
|
197
|
+
"not_configured": "AI 공급자가 구성되지 않았습니다"
|
|
198
|
+
},
|
|
199
|
+
"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."
|
|
218
|
+
},
|
|
219
|
+
"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"
|
|
234
|
+
},
|
|
235
|
+
"app": {
|
|
236
|
+
"__mt": true,
|
|
237
|
+
"name": "Moraya Web",
|
|
238
|
+
"tagline": "Your AI, your data, your cloud."
|
|
239
|
+
},
|
|
240
|
+
"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…"
|
|
280
|
+
},
|
|
281
|
+
"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."
|
|
293
|
+
},
|
|
294
|
+
"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"
|
|
351
|
+
},
|
|
352
|
+
"cloud_picker": {
|
|
353
|
+
"title_image": "클라우드 이미지 삽입",
|
|
354
|
+
"title_audio": "클라우드 오디오 삽입",
|
|
355
|
+
"title_video": "클라우드 동영상 삽입",
|
|
356
|
+
"no_targets": "Picora 대상이 설정되지 않았습니다. 설정 → 지식 베이스에서 추가하세요.",
|
|
357
|
+
"scope_this_kb": "이 지식 베이스",
|
|
358
|
+
"scope_all": "모든 파일",
|
|
359
|
+
"scope_no_kb": "지식 베이스 없음",
|
|
360
|
+
"tab_recent": "최근",
|
|
361
|
+
"tab_all": "전체",
|
|
362
|
+
"tab_favorites": "즐겨찾기",
|
|
363
|
+
"search_placeholder": "검색…",
|
|
364
|
+
"grid_view": "그리드 보기",
|
|
365
|
+
"list_view": "목록 보기",
|
|
366
|
+
"error_title": "불러오기 실패",
|
|
367
|
+
"last_cache": "마지막 불러오기",
|
|
368
|
+
"empty_title": "파일을 찾을 수 없음",
|
|
369
|
+
"empty_sub": "필터를 조정하거나 Picora에 파일을 업로드하세요.",
|
|
370
|
+
"loading_more": "로딩 중…",
|
|
371
|
+
"selected_count": "{n}개 선택됨",
|
|
372
|
+
"insert_as_html": "HTML로 삽입",
|
|
373
|
+
"insert_btn": "삽입",
|
|
374
|
+
"processing": "처리 중",
|
|
375
|
+
"public": "공개",
|
|
376
|
+
"private": "비공개",
|
|
377
|
+
"favorite": "즐겨찾기",
|
|
378
|
+
"copy_url": "URL 복사",
|
|
379
|
+
"privacy_title": "비공개 파일이 선택됨",
|
|
380
|
+
"privacy_desc": "{n}개 파일이 비공개이며 공개적으로 보이지 않을 수 있습니다.",
|
|
381
|
+
"privacy_warn": "파일을 공개하면 링크가 있는 누구나 볼 수 있게 됩니다.",
|
|
382
|
+
"suppress_privacy": "다시 경고하지 않음",
|
|
383
|
+
"make_public_insert": "공개로 변경 후 삽입",
|
|
384
|
+
"insert_anyway": "그래도 삽입",
|
|
385
|
+
"copy_markdown": "Markdown 복사",
|
|
386
|
+
"empty_kb_scoped_sub": "현재 KB에 파일이 없습니다. 이전 업로드가 이 KB에 태그되지 않았을 수 있습니다.",
|
|
387
|
+
"switch_scope_all": "계정의 모든 파일 표시",
|
|
388
|
+
"url_missing": "미디어 URL이 없습니다 — 항목이 아직 준비되지 않았을 수 있습니다."
|
|
389
|
+
},
|
|
390
|
+
"command_palette": {
|
|
391
|
+
"placeholder": "파일, 명령 또는 지식 베이스 검색...",
|
|
392
|
+
"files": "파일",
|
|
393
|
+
"commands": "명령",
|
|
394
|
+
"semantic_search": "의미 검색",
|
|
395
|
+
"keyword_search": "키워드 검색",
|
|
396
|
+
"no_results": "결과를 찾을 수 없습니다"
|
|
397
|
+
},
|
|
398
|
+
"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"
|
|
411
|
+
},
|
|
412
|
+
"common": {
|
|
413
|
+
"save": "저장",
|
|
414
|
+
"cancel": "취소",
|
|
415
|
+
"close": "닫기",
|
|
416
|
+
"add": "추가",
|
|
417
|
+
"remove": "제거",
|
|
418
|
+
"connect": "연결",
|
|
419
|
+
"disconnect": "연결 해제",
|
|
420
|
+
"insert": "삽입",
|
|
421
|
+
"replace": "바꾸기",
|
|
422
|
+
"copy": "복사",
|
|
423
|
+
"edit": "편집",
|
|
424
|
+
"delete": "삭제",
|
|
425
|
+
"browse": "변경",
|
|
426
|
+
"clear": "초기화",
|
|
427
|
+
"play": "재생",
|
|
428
|
+
"stop": "중지",
|
|
429
|
+
"start": "시작",
|
|
430
|
+
"untitled": "제목 없음",
|
|
431
|
+
"retry": "재시도",
|
|
432
|
+
"refresh": "새로 고침",
|
|
433
|
+
"new": "새로 만들기"
|
|
434
|
+
},
|
|
435
|
+
"compose": {
|
|
436
|
+
"__mt": true,
|
|
437
|
+
"title": "Compose article",
|
|
438
|
+
"start_over": "Start over",
|
|
439
|
+
"stepper_label": "Compose stages",
|
|
440
|
+
"step": {
|
|
441
|
+
"topic": "Topic",
|
|
442
|
+
"article": "Article",
|
|
443
|
+
"cover": "Cover",
|
|
444
|
+
"review": "Review"
|
|
445
|
+
},
|
|
446
|
+
"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 →"
|
|
451
|
+
},
|
|
452
|
+
"tone": {
|
|
453
|
+
"title": "Tone",
|
|
454
|
+
"general": "General",
|
|
455
|
+
"marketing": "Marketing",
|
|
456
|
+
"technical": "Technical",
|
|
457
|
+
"story": "Story"
|
|
458
|
+
},
|
|
459
|
+
"length": {
|
|
460
|
+
"title": "Length",
|
|
461
|
+
"short": "Short",
|
|
462
|
+
"medium": "Medium",
|
|
463
|
+
"long": "Long"
|
|
464
|
+
},
|
|
465
|
+
"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"
|
|
475
|
+
},
|
|
476
|
+
"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"
|
|
487
|
+
},
|
|
488
|
+
"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}"
|
|
496
|
+
},
|
|
497
|
+
"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}"
|
|
505
|
+
},
|
|
506
|
+
"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"
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
"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"
|
|
522
|
+
},
|
|
523
|
+
"context_menu": {
|
|
524
|
+
"cut": "잘라내기",
|
|
525
|
+
"copy": "복사",
|
|
526
|
+
"paste": "붙여넣기",
|
|
527
|
+
"upload_all_images": "모든 이미지를 이미지 호스트에 업로드",
|
|
528
|
+
"upload_starting": "이미지 호스트에 업로드 중...",
|
|
529
|
+
"upload_image_success": "업로드 성공: {name}",
|
|
530
|
+
"upload_image_failed": "업로드 실패: {name} — {error}",
|
|
531
|
+
"upload_all_complete": "업로드 완료: {success}/{total}개 성공",
|
|
532
|
+
"upload_no_config": "먼저 설정에서 이미지 호스트를 구성하세요",
|
|
533
|
+
"insert_cloud_image": "클라우드 이미지 삽입…",
|
|
534
|
+
"insert_cloud_audio": "클라우드 오디오 삽입…",
|
|
535
|
+
"insert_cloud_video": "클라우드 동영상 삽입…"
|
|
536
|
+
},
|
|
537
|
+
"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"
|
|
547
|
+
},
|
|
548
|
+
"editor": {
|
|
549
|
+
"source_mode": "Source",
|
|
550
|
+
"visual_mode": "Visual",
|
|
551
|
+
"split_mode": "Split",
|
|
552
|
+
"unsaved_title": "저장되지 않은 변경사항",
|
|
553
|
+
"unsaved_new_doc_msg": "저장되지 않은 내용이 있습니다. 먼저 저장하시겠습니까?",
|
|
554
|
+
"save_first": "저장",
|
|
555
|
+
"discard_changes": "저장 안 함",
|
|
556
|
+
"loading": {
|
|
557
|
+
"parsing": "Markdown 파싱 중…",
|
|
558
|
+
"rendering": "렌더링 중…"
|
|
559
|
+
},
|
|
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"
|
|
570
|
+
},
|
|
571
|
+
"enterprise": {
|
|
572
|
+
"__mt": true,
|
|
573
|
+
"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.",
|
|
577
|
+
"providers": {
|
|
578
|
+
"aws": "AWS CloudHSM",
|
|
579
|
+
"aliyun": "Aliyun HSM",
|
|
580
|
+
"pkcs11": "PKCS#11 (Generic)"
|
|
581
|
+
},
|
|
582
|
+
"aws": {
|
|
583
|
+
"cluster_id": "Cluster ID",
|
|
584
|
+
"region": "AWS Region"
|
|
585
|
+
},
|
|
586
|
+
"aliyun": {
|
|
587
|
+
"instance_id": "Instance ID",
|
|
588
|
+
"region": "Region"
|
|
589
|
+
},
|
|
590
|
+
"pkcs11": {
|
|
591
|
+
"lib_path": "Library Path (.so / .dll / .dylib)",
|
|
592
|
+
"slot": "Slot ID",
|
|
593
|
+
"supported_mechanisms": "Supported Mechanisms"
|
|
594
|
+
}
|
|
595
|
+
},
|
|
596
|
+
"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"
|
|
610
|
+
},
|
|
611
|
+
"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.",
|
|
615
|
+
"tabs": {
|
|
616
|
+
"retention": "Retention",
|
|
617
|
+
"worm": "WORM",
|
|
618
|
+
"export": "Export"
|
|
619
|
+
},
|
|
620
|
+
"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"
|
|
625
|
+
},
|
|
626
|
+
"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"
|
|
632
|
+
},
|
|
633
|
+
"export": {
|
|
634
|
+
"title": "Compliance Export",
|
|
635
|
+
"standard": "Standard",
|
|
636
|
+
"format": "Format",
|
|
637
|
+
"generate": "Generate Export",
|
|
638
|
+
"applicable_events": "Applicable audit events"
|
|
639
|
+
}
|
|
640
|
+
},
|
|
641
|
+
"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."
|
|
651
|
+
},
|
|
652
|
+
"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"
|
|
667
|
+
},
|
|
668
|
+
"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"
|
|
680
|
+
}
|
|
681
|
+
},
|
|
682
|
+
"entitlement": {
|
|
683
|
+
"__mt": true,
|
|
684
|
+
"connect": "Connect",
|
|
685
|
+
"personal": "Personal",
|
|
686
|
+
"team": "Team",
|
|
687
|
+
"enterprise": "Enterprise",
|
|
688
|
+
"current_plan": "Current plan",
|
|
689
|
+
"upgrade": "Upgrade"
|
|
690
|
+
},
|
|
691
|
+
"errors": {
|
|
692
|
+
"ai_not_configured": "AI가 구성되지 않았습니다.",
|
|
693
|
+
"ai_request_failed": "AI 요청 실패",
|
|
694
|
+
"chat_request_failed": "채팅 요청 실패",
|
|
695
|
+
"unknown_command": "알 수 없는 AI 명령어: {command}",
|
|
696
|
+
"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."
|
|
701
|
+
},
|
|
702
|
+
"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."
|
|
711
|
+
},
|
|
712
|
+
"editor": {
|
|
713
|
+
"mount_failed": "Editor failed to load. Please refresh the page."
|
|
714
|
+
},
|
|
715
|
+
"browser": {
|
|
716
|
+
"unsupported": "Your browser is not supported. Please use Chrome 96+, Firefox 95+, or Safari 14+."
|
|
717
|
+
},
|
|
718
|
+
"internal": {
|
|
719
|
+
"unknown": "An unexpected error occurred."
|
|
720
|
+
},
|
|
721
|
+
"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."
|
|
724
|
+
},
|
|
725
|
+
"kms": {
|
|
726
|
+
"gcp_not_implemented": "GCP KMS is not yet supported."
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
"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"
|
|
745
|
+
},
|
|
746
|
+
"export": {
|
|
747
|
+
"export_as": "{format}(으)로 내보내기",
|
|
748
|
+
"pdf": "PDF",
|
|
749
|
+
"html": "HTML (스타일 포함)",
|
|
750
|
+
"html_plain": "HTML (스타일 미포함)",
|
|
751
|
+
"image": "이미지 (PNG)",
|
|
752
|
+
"doc": "Word (.doc)",
|
|
753
|
+
"rtf": "RTF",
|
|
754
|
+
"epub": "Epub",
|
|
755
|
+
"latex": "LaTeX",
|
|
756
|
+
"mediawiki": "MediaWiki",
|
|
757
|
+
"rst": "reStructuredText",
|
|
758
|
+
"textile": "Textile",
|
|
759
|
+
"opml": "OPML",
|
|
760
|
+
"progress": {
|
|
761
|
+
"preparing": "준비 중…",
|
|
762
|
+
"rendering": "렌더링 중…",
|
|
763
|
+
"paginating": "페이지 나누기 ({current}/{total})",
|
|
764
|
+
"writing": "기록 중…",
|
|
765
|
+
"done": "완료"
|
|
766
|
+
},
|
|
767
|
+
"fallback": {
|
|
768
|
+
"notice": "호환 모드"
|
|
769
|
+
},
|
|
770
|
+
"error": {
|
|
771
|
+
"generic": "내보내기 실패",
|
|
772
|
+
"timeout": "내보내기 시간 초과",
|
|
773
|
+
"subprocess_failed": "하위 프로세스 실패",
|
|
774
|
+
"native_api_failed": "네이티브 인쇄 실패"
|
|
775
|
+
}
|
|
776
|
+
},
|
|
777
|
+
"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"
|
|
810
|
+
},
|
|
811
|
+
"git": {
|
|
812
|
+
"bind_title": "Git 저장소 연결",
|
|
813
|
+
"repo_url": "저장소 URL",
|
|
814
|
+
"branch": "브랜치",
|
|
815
|
+
"token": "개인 액세스 토큰",
|
|
816
|
+
"token_hint": "개인 액세스 토큰 또는 API 키. OS 키체인에 안전하게 저장됩니다.",
|
|
817
|
+
"auth_method": "인증 방식",
|
|
818
|
+
"auth_token": "액세스 토큰",
|
|
819
|
+
"auth_password": "사용자명 & 비밀번호",
|
|
820
|
+
"auth_ssh": "SSH 키",
|
|
821
|
+
"username": "사용자명",
|
|
822
|
+
"password": "비밀번호",
|
|
823
|
+
"ssh_key_path": "SSH 개인 키 경로",
|
|
824
|
+
"ssh_passphrase": "SSH 키 암호",
|
|
825
|
+
"ssh_key_path_hint": "SSH 개인 키 파일의 절대 경로 (예: ~/.ssh/id_ed25519)",
|
|
826
|
+
"ssh_passphrase_hint": "키에 암호가 없으면 비워두세요",
|
|
827
|
+
"error_username_required": "사용자명은 필수입니다",
|
|
828
|
+
"error_password_required": "비밀번호는 필수입니다",
|
|
829
|
+
"error_ssh_key_required": "SSH 키 경로는 필수입니다",
|
|
830
|
+
"mode_clone": "로컬 디렉토리로 클론",
|
|
831
|
+
"mode_push": "로컬 콘텐츠를 원격에 푸시",
|
|
832
|
+
"mode_connect": "기존 저장소에 연결",
|
|
833
|
+
"detecting": "감지 중...",
|
|
834
|
+
"auto_commit": "저장 시 자동 커밋",
|
|
835
|
+
"auto_sync": "백그라운드 자동 동기화",
|
|
836
|
+
"sync_interval": "동기화 간격",
|
|
837
|
+
"minutes": "분",
|
|
838
|
+
"confirm_bind": "저장소 연결",
|
|
839
|
+
"error_url_required": "저장소 URL을 입력하세요",
|
|
840
|
+
"error_token_required": "액세스 토큰을 입력하세요",
|
|
841
|
+
"bind": "Git 저장소 연결",
|
|
842
|
+
"unbind": "Git 연결 해제",
|
|
843
|
+
"unbind_title": "Git 저장소 연결 해제",
|
|
844
|
+
"unbind_confirm": "\"{name}\"의 Git 저장소 연결을 해제하시겠습니까? 로컬 파일은 유지됩니다.",
|
|
845
|
+
"synced": "동기화됨",
|
|
846
|
+
"ahead": "푸시 대기",
|
|
847
|
+
"behind": "풀 대기",
|
|
848
|
+
"syncing": "동기화 중...",
|
|
849
|
+
"committing": "커밋 중...",
|
|
850
|
+
"sync_error": "동기화 실패",
|
|
851
|
+
"sync_now": "지금 동기화",
|
|
852
|
+
"not_installed": "Git 미설치"
|
|
853
|
+
},
|
|
854
|
+
"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}",
|
|
868
|
+
"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"
|
|
878
|
+
},
|
|
879
|
+
"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."
|
|
892
|
+
},
|
|
893
|
+
"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"
|
|
904
|
+
},
|
|
905
|
+
"image_dialog": {
|
|
906
|
+
"title": "이미지 삽입",
|
|
907
|
+
"url_tab": "URL",
|
|
908
|
+
"file_tab": "로컬 파일",
|
|
909
|
+
"url_placeholder": "https://example.com/image.png",
|
|
910
|
+
"alt_placeholder": "이미지 설명 (선택 사항)",
|
|
911
|
+
"select_file": "이미지 선택...",
|
|
912
|
+
"no_file_selected": "선택된 파일 없음",
|
|
913
|
+
"insert": "삽입",
|
|
914
|
+
"cancel": "취소"
|
|
915
|
+
},
|
|
916
|
+
"image_gen": {
|
|
917
|
+
"title": "AI 이미지 생성",
|
|
918
|
+
"step1_title": "이미지 모드",
|
|
919
|
+
"step2_title": "이미지 생성",
|
|
920
|
+
"step3_title": "글에 삽입",
|
|
921
|
+
"generating_prompts": "프롬프트 생성 중...",
|
|
922
|
+
"content_too_short": "이미지 생성을 위한 글 내용이 너무 짧습니다.",
|
|
923
|
+
"style_label": "스타일",
|
|
924
|
+
"count_label": "수량",
|
|
925
|
+
"style_auto": "자동",
|
|
926
|
+
"style_photo": "사진",
|
|
927
|
+
"style_illustration": "일러스트",
|
|
928
|
+
"style_flat": "플랫",
|
|
929
|
+
"style_ink": "수묵화",
|
|
930
|
+
"style_watercolor": "수채화",
|
|
931
|
+
"style_isometric": "아이소메트릭",
|
|
932
|
+
"style_infographic": "인포그래픽",
|
|
933
|
+
"style_editorial": "에디토리얼",
|
|
934
|
+
"style_cartoon": "카툰",
|
|
935
|
+
"style_render": "3D 렌더",
|
|
936
|
+
"style_sketch": "스케치",
|
|
937
|
+
"style_blueprint": "블루프린트",
|
|
938
|
+
"style_clay": "클레이 모델",
|
|
939
|
+
"style_wireframe": "와이어프레임",
|
|
940
|
+
"style_exploded": "분해도",
|
|
941
|
+
"style_section": "단면도",
|
|
942
|
+
"style_cad": "CAD 도면",
|
|
943
|
+
"style_prototype": "프로토타입",
|
|
944
|
+
"style_anime": "애니메이션",
|
|
945
|
+
"style_comic": "만화",
|
|
946
|
+
"style_cinematic": "시네마틱",
|
|
947
|
+
"style_pixel": "픽셀 아트",
|
|
948
|
+
"style_noir": "필름 누아르",
|
|
949
|
+
"style_manga": "망가",
|
|
950
|
+
"style_realistic": "리얼리스틱",
|
|
951
|
+
"style_studio": "스튜디오",
|
|
952
|
+
"style_lifestyle": "라이프스타일",
|
|
953
|
+
"style_flatlay": "플랫 레이",
|
|
954
|
+
"style_macro": "매크로",
|
|
955
|
+
"style_minimalist": "미니멀리스트",
|
|
956
|
+
"style_packaging": "패키징",
|
|
957
|
+
"style_outdoor": "아웃도어",
|
|
958
|
+
"style_mood": "무드",
|
|
959
|
+
"style_abstract": "추상",
|
|
960
|
+
"style_texture": "텍스처",
|
|
961
|
+
"style_gradient": "그라디언트",
|
|
962
|
+
"style_collage": "콜라주",
|
|
963
|
+
"style_vintage": "빈티지",
|
|
964
|
+
"style_botanical": "보태니컬",
|
|
965
|
+
"style_geometric": "기하학적",
|
|
966
|
+
"style_ethereal": "몽환적",
|
|
967
|
+
"style_brutalist": "브루탈리스트",
|
|
968
|
+
"generate": "생성",
|
|
969
|
+
"next": "다음",
|
|
970
|
+
"back": "뒤로",
|
|
971
|
+
"insert_confirm": "삽입",
|
|
972
|
+
"insert_paragraph": "해당 단락 뒤에 삽입 (권장)",
|
|
973
|
+
"insert_end": "글 끝에 삽입",
|
|
974
|
+
"insert_replace": "글의 이미지 교체",
|
|
975
|
+
"insert_clipboard": "Markdown을 클립보드에 복사",
|
|
976
|
+
"selected": "{count}개 선택됨",
|
|
977
|
+
"completed": "이미지 생성 완료",
|
|
978
|
+
"step_description": "글 삽화를 생성합니다",
|
|
979
|
+
"mode_article": "글",
|
|
980
|
+
"mode_design": "디자인",
|
|
981
|
+
"mode_storyboard": "스토리보드",
|
|
982
|
+
"mode_product": "제품",
|
|
983
|
+
"mode_moodboard": "무드보드",
|
|
984
|
+
"mode_portrait": "인물",
|
|
985
|
+
"style_portrait": "인물",
|
|
986
|
+
"style_headshot": "증명사진",
|
|
987
|
+
"style_fullbody": "전신",
|
|
988
|
+
"style_fashion": "패션",
|
|
989
|
+
"style_street": "스트리트",
|
|
990
|
+
"style_glamour": "글래머",
|
|
991
|
+
"style_environmental": "환경",
|
|
992
|
+
"style_candid": "캔디드",
|
|
993
|
+
"style_group": "그룹",
|
|
994
|
+
"pre_defined_detected": "문서에서 {count}개의 사전 정의된 프롬프트가 감지되었습니다",
|
|
995
|
+
"use_predefined": "사전 정의된 프롬프트 사용"
|
|
996
|
+
},
|
|
997
|
+
"image_host": {
|
|
998
|
+
"title": "이미지 호스팅",
|
|
999
|
+
"provider": "서비스 제공자",
|
|
1000
|
+
"smms": "SM.MS",
|
|
1001
|
+
"imgur": "Imgur",
|
|
1002
|
+
"github": "GitHub 저장소",
|
|
1003
|
+
"custom": "사용자 지정 API",
|
|
1004
|
+
"api_token": "API 토큰",
|
|
1005
|
+
"api_token_placeholder": "API 토큰 입력",
|
|
1006
|
+
"custom_endpoint": "업로드 엔드포인트",
|
|
1007
|
+
"custom_endpoint_placeholder": "https://your-api.com/upload",
|
|
1008
|
+
"custom_headers": "사용자 지정 헤더 (JSON)",
|
|
1009
|
+
"custom_url_template": "결과 URL 템플릿",
|
|
1010
|
+
"custom_url_template_placeholder": "https://example.com/i/{id}",
|
|
1011
|
+
"custom_url_template_hint": "자리표시자: {id}, {storageKey}, {filename}, {url}. 비워 두면 응답에서 URL 필드를 자동 감지합니다.",
|
|
1012
|
+
"github_repo_url": "저장소 URL",
|
|
1013
|
+
"github_repo_url_placeholder": "https://github.com/user/images",
|
|
1014
|
+
"github_branch": "브랜치",
|
|
1015
|
+
"github_dir": "이미지 디렉터리",
|
|
1016
|
+
"github_token": "Personal Access Token",
|
|
1017
|
+
"github_token_placeholder": "ghp_xxxxxxxxxxxx",
|
|
1018
|
+
"github_cdn": "URL 형식",
|
|
1019
|
+
"github_cdn_raw": "raw.githubusercontent.com",
|
|
1020
|
+
"github_cdn_jsdelivr": "jsDelivr CDN",
|
|
1021
|
+
"import_from_publish": "게시 대상에서 가져오기",
|
|
1022
|
+
"auto_upload": "붙여넣기/드롭 시 자동 업로드",
|
|
1023
|
+
"test_upload": "업로드 테스트",
|
|
1024
|
+
"test": "테스트",
|
|
1025
|
+
"testing": "테스트 중...",
|
|
1026
|
+
"success": "업로드 성공!",
|
|
1027
|
+
"failed": "업로드 실패",
|
|
1028
|
+
"add_target": "이미지 호스트 추가",
|
|
1029
|
+
"target_name": "이름",
|
|
1030
|
+
"target_name_placeholder": "예: 내 블로그 CDN",
|
|
1031
|
+
"settings_empty": "구성된 이미지 호스팅 대상이 없습니다",
|
|
1032
|
+
"settings_hint": "자동 업로드를 활성화하려면 이미지 호스팅 서비스를 추가하세요.",
|
|
1033
|
+
"default": "기본값",
|
|
1034
|
+
"set_default": "기본값으로 설정",
|
|
1035
|
+
"gitlab": "GitLab 저장소",
|
|
1036
|
+
"git_custom": "사용자 지정 Git (Gitea/Forgejo)",
|
|
1037
|
+
"qiniu": "Qiniu Kodo",
|
|
1038
|
+
"aliyun_oss": "Aliyun OSS",
|
|
1039
|
+
"tencent_cos": "Tencent COS",
|
|
1040
|
+
"aws_s3": "AWS S3",
|
|
1041
|
+
"google_gcs": "Google Cloud Storage",
|
|
1042
|
+
"group_api": "API 호스팅",
|
|
1043
|
+
"group_git": "Git 저장소",
|
|
1044
|
+
"group_oss": "오브젝트 스토리지",
|
|
1045
|
+
"gitlab_repo_url": "저장소 URL",
|
|
1046
|
+
"gitlab_branch": "브랜치",
|
|
1047
|
+
"gitlab_dir": "이미지 디렉터리",
|
|
1048
|
+
"gitlab_token": "Personal Access Token",
|
|
1049
|
+
"gitlab_token_placeholder": "glpat-xxxxxxxxxxxx",
|
|
1050
|
+
"git_custom_repo_url": "저장소 URL",
|
|
1051
|
+
"git_custom_branch": "브랜치",
|
|
1052
|
+
"git_custom_dir": "이미지 디렉터리",
|
|
1053
|
+
"git_custom_token": "액세스 토큰",
|
|
1054
|
+
"git_custom_token_placeholder": "토큰 입력",
|
|
1055
|
+
"oss_access_key": "Access Key",
|
|
1056
|
+
"oss_access_key_placeholder": "Access Key ID 입력",
|
|
1057
|
+
"oss_secret_key": "Secret Key",
|
|
1058
|
+
"oss_secret_key_placeholder": "Secret Key 입력",
|
|
1059
|
+
"oss_bucket": "버킷",
|
|
1060
|
+
"oss_bucket_placeholder": "예: my-images-bucket",
|
|
1061
|
+
"oss_region": "리전",
|
|
1062
|
+
"oss_region_placeholder": "예: cn-east-1, us-east-1",
|
|
1063
|
+
"select_region": "리전 선택",
|
|
1064
|
+
"oss_endpoint": "사용자 지정 엔드포인트 (선택 사항)",
|
|
1065
|
+
"oss_endpoint_placeholder": "예: https://s3.custom.com",
|
|
1066
|
+
"oss_cdn_domain": "CDN 도메인 (선택 사항)",
|
|
1067
|
+
"oss_cdn_domain_placeholder": "예: https://cdn.example.com",
|
|
1068
|
+
"oss_path_prefix": "경로 접두사 (선택 사항)",
|
|
1069
|
+
"oss_path_prefix_placeholder": "예: images/blog/",
|
|
1070
|
+
"required": "필수",
|
|
1071
|
+
"qiniu_cdn_required": "Qiniu는 액세스 가능한 이미지 URL을 생성하려면 CDN 도메인이 필요합니다.",
|
|
1072
|
+
"picora": "Picora",
|
|
1073
|
+
"picora_one_click": "원클릭 가져오기",
|
|
1074
|
+
"picora_import_title": "Picora에서 가져오기",
|
|
1075
|
+
"picora_import_hint": "Picora 콘솔을 열고 API Key 옆의 \"Moraya로 가져오기\"를 클릭하세요. 또는 아래에 직접 입력할 수 있습니다.",
|
|
1076
|
+
"picora_open_console": "Picora 콘솔 열기",
|
|
1077
|
+
"picora_manual_entry": "이미 API Key가 있습니다 — 수동 입력",
|
|
1078
|
+
"picora_verifying": "Picora에서 확인 중…",
|
|
1079
|
+
"picora_verify_failed": "확인 실패. 토큰을 확인하고 다시 시도하세요.",
|
|
1080
|
+
"picora_import_success": "Picora를 가져왔습니다 ({email})",
|
|
1081
|
+
"picora_featured_badge": "추천",
|
|
1082
|
+
"picora_api_url": "Picora 엔드포인트",
|
|
1083
|
+
"picora_api_url_placeholder": "https://api.picora.me/v1/images",
|
|
1084
|
+
"picora_img_domain": "CDN 도메인",
|
|
1085
|
+
"picora_img_domain_placeholder": "https://media.picora.me",
|
|
1086
|
+
"picora_api_key": "API Key",
|
|
1087
|
+
"picora_api_key_placeholder": "sk_live_...",
|
|
1088
|
+
"picora_user_email": "Picora 계정",
|
|
1089
|
+
"picora_token_preview": "토큰 미리보기",
|
|
1090
|
+
"picora_confirm_import": "가져오기 확인",
|
|
1091
|
+
"picora_import_invalid": "가져오기 링크가 잘못되었습니다 — Picora 콘솔에서 다시 시도하세요.",
|
|
1092
|
+
"picora_verify": "확인",
|
|
1093
|
+
"picora_hero_desc": "자체 SaaS 이미지 호스트 · 5분 원클릭 설정",
|
|
1094
|
+
"other_providers": "기타 제공자",
|
|
1095
|
+
"picora_api_key_keychain": "시스템 키체인에 저장됨 · 새 키 입력 시 덮어쓰기",
|
|
1096
|
+
"picora_key_migrated_toast": "{count}개의 Picora API 키를 시스템 키체인으로 이동했습니다."
|
|
1097
|
+
},
|
|
1098
|
+
"image_menu": {
|
|
1099
|
+
"resize": "크기 조절",
|
|
1100
|
+
"upload": "이미지 호스트에 업로드",
|
|
1101
|
+
"edit_alt": "설명 편집",
|
|
1102
|
+
"copy_url": "이미지 URL 복사",
|
|
1103
|
+
"copy_image": "이미지 복사",
|
|
1104
|
+
"open_in_browser": "브라우저에서 열기",
|
|
1105
|
+
"save_as": "이미지를 다른 이름으로 저장...",
|
|
1106
|
+
"delete": "이미지 삭제",
|
|
1107
|
+
"original_size": "원본 크기"
|
|
1108
|
+
},
|
|
1109
|
+
"kb": {
|
|
1110
|
+
"index_all": "모든 문서 인덱싱",
|
|
1111
|
+
"index_file": "파일 인덱싱",
|
|
1112
|
+
"indexing": "인덱싱 중...",
|
|
1113
|
+
"index_complete": "인덱싱 완료",
|
|
1114
|
+
"search_placeholder": "지식 베이스 검색...",
|
|
1115
|
+
"no_index": "인덱스를 찾을 수 없습니다. 지식 베이스를 우클릭하여 인덱스를 생성하세요.",
|
|
1116
|
+
"stale_index": "인덱스가 오래되었습니다. 마지막 인덱싱 이후 {count}개 파일이 변경되었습니다.",
|
|
1117
|
+
"dimensions": "차원",
|
|
1118
|
+
"auto_index": "저장 시 자동 인덱싱",
|
|
1119
|
+
"provider": "임베딩 제공업체",
|
|
1120
|
+
"model": "임베딩 모델",
|
|
1121
|
+
"delete_index": "인덱스 삭제",
|
|
1122
|
+
"reindex_all": "전체 재인덱싱",
|
|
1123
|
+
"delete_confirm": "인덱스를 삭제하시겠습니까?",
|
|
1124
|
+
"use_same_as_ai": "AI 채팅과 동일하게 사용",
|
|
1125
|
+
"online_model": "온라인 모델",
|
|
1126
|
+
"dimension_warning": "이 모델의 최대값: {max}. 현재 사용 중: {actual}.",
|
|
1127
|
+
"status": {
|
|
1128
|
+
"indexed": "인덱싱됨 ({chunks}개 청크, {files}개 파일)",
|
|
1129
|
+
"not_indexed": "인덱싱되지 않음",
|
|
1130
|
+
"stale": "{count}개 파일 변경됨"
|
|
1131
|
+
},
|
|
1132
|
+
"progress": {
|
|
1133
|
+
"scanning": "파일 스캔 중...",
|
|
1134
|
+
"chunking": "문서 분할 중... ({current}/{total})",
|
|
1135
|
+
"embedding": "임베딩 생성 중... ({current}/{total})",
|
|
1136
|
+
"indexing": "인덱스 구축 중...",
|
|
1137
|
+
"done": "완료"
|
|
1138
|
+
},
|
|
1139
|
+
"provider_no_embedding": "현재 AI 채팅 제공업체는 임베딩을 지원하지 않습니다. 위에서 임베딩 제공업체를 선택하세요.",
|
|
1140
|
+
"local_models": "로컬 모델",
|
|
1141
|
+
"download_model": "다운로드",
|
|
1142
|
+
"delete_model": "모델 삭제",
|
|
1143
|
+
"select_local_model": "다운로드된 모델 선택",
|
|
1144
|
+
"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"
|
|
1150
|
+
},
|
|
1151
|
+
"kb_sync": {
|
|
1152
|
+
"card": {
|
|
1153
|
+
"bind": "☁ Picora Sync",
|
|
1154
|
+
"settings": "☁ Bound · Settings"
|
|
1155
|
+
},
|
|
1156
|
+
"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": "⚠ Skipped — exceeds 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",
|
|
1181
|
+
"link_existing_instead": "대신 기존 KB 연결"
|
|
1182
|
+
},
|
|
1183
|
+
"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"
|
|
1201
|
+
},
|
|
1202
|
+
"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."
|
|
1217
|
+
},
|
|
1218
|
+
"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})"
|
|
1230
|
+
},
|
|
1231
|
+
"statusbar": {
|
|
1232
|
+
"tooltip": "KB Sync status — click for details",
|
|
1233
|
+
"error_label": "동기화 오류:"
|
|
1234
|
+
},
|
|
1235
|
+
"sync_now": "지금 동기화",
|
|
1236
|
+
"error": {
|
|
1237
|
+
"target_missing": "Picora 계정을 찾을 수 없습니다 — 이 지식 베이스를 다시 연결하거나 설정에서 계정을 복원해 주세요."
|
|
1238
|
+
},
|
|
1239
|
+
"trash": {
|
|
1240
|
+
"title": "휴지통",
|
|
1241
|
+
"toast_deleted": "Picora가 {count}개의 파일을 삭제하여 휴지통으로 이동했습니다.",
|
|
1242
|
+
"view": "보기",
|
|
1243
|
+
"restore_all": "모두 복원",
|
|
1244
|
+
"restore_success": "{count}개의 파일을 복원했습니다.",
|
|
1245
|
+
"restore_failed": "일부 파일을 복원하지 못했습니다.",
|
|
1246
|
+
"restore_conflict_title": "파일이 이미 존재합니다",
|
|
1247
|
+
"restore_conflict_body": "{path}가 이미 존재합니다. 덮어쓸까요?",
|
|
1248
|
+
"overwrite": "덮어쓰기",
|
|
1249
|
+
"cancel": "취소",
|
|
1250
|
+
"filter_kb_all": "전체 KB",
|
|
1251
|
+
"filter_time7d": "최근 7일",
|
|
1252
|
+
"filter_time30d": "최근 30일",
|
|
1253
|
+
"filter_time_all": "전체 기간",
|
|
1254
|
+
"empty_state": "휴지통이 비어 있습니다.",
|
|
1255
|
+
"loading": "불러오는 중…",
|
|
1256
|
+
"restore": "복원",
|
|
1257
|
+
"delete_forever": "영구 삭제",
|
|
1258
|
+
"delete_forever_confirm": "{path}를 영구 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
|
|
1259
|
+
"purge_all": "휴지통 비우기",
|
|
1260
|
+
"purge_all_confirm": "{days}일 이전의 모든 항목을 삭제할까요?",
|
|
1261
|
+
"purge_result": "{files}개 파일 정리, {size} 확보.",
|
|
1262
|
+
"auto_purge_hint": "7일이 지난 항목은 자동으로 삭제됩니다.",
|
|
1263
|
+
"entry_deleted_at": "{date}에 삭제됨",
|
|
1264
|
+
"kb_unknown": "알 수 없는 KB"
|
|
1265
|
+
}
|
|
1266
|
+
},
|
|
1267
|
+
"knowledge_base": {
|
|
1268
|
+
"title": "지식 베이스",
|
|
1269
|
+
"add": "지식 베이스 추가",
|
|
1270
|
+
"remove": "제거",
|
|
1271
|
+
"rename": "이름 변경",
|
|
1272
|
+
"manage": "지식 베이스 관리...",
|
|
1273
|
+
"empty": "구성된 지식 베이스가 없습니다",
|
|
1274
|
+
"empty_hint": "폴더를 지식 베이스로 추가하여 빠르게 전환하세요.",
|
|
1275
|
+
"delete_confirm": "지식 베이스에서 \"{name}\"을(를) 제거하시겠습니까? 폴더 자체는 삭제되지 않습니다.",
|
|
1276
|
+
"switch_to": "지식 베이스 전환",
|
|
1277
|
+
"save_hint": "이 폴더는 지식 베이스에 등록되지 않았습니다.",
|
|
1278
|
+
"save_as_kb": "지식 베이스로 저장"
|
|
1279
|
+
},
|
|
1280
|
+
"link": {
|
|
1281
|
+
"open": "링크 열기",
|
|
1282
|
+
"remove": "링크 제거"
|
|
1283
|
+
},
|
|
1284
|
+
"mcp": {
|
|
1285
|
+
"title": "MCP servers",
|
|
1286
|
+
"tabs": {
|
|
1287
|
+
"servers": "서버",
|
|
1288
|
+
"publish": "게시",
|
|
1289
|
+
"sync": "동기화",
|
|
1290
|
+
"marketplace": "마켓"
|
|
1291
|
+
},
|
|
1292
|
+
"ai_services": {
|
|
1293
|
+
"empty": "AI가 생성한 서비스가 없습니다",
|
|
1294
|
+
"hint": "AI가 대화 중 MCP 서비스를 생성할 수 있습니다. API와 상호작용하도록 요청해 보세요!",
|
|
1295
|
+
"node_required": "Node.js 18+ 필요",
|
|
1296
|
+
"checking_node": "Node.js 확인 중...",
|
|
1297
|
+
"temp": "임시",
|
|
1298
|
+
"saved": "저장됨",
|
|
1299
|
+
"view_code": "코드",
|
|
1300
|
+
"tools": "{count}개 도구",
|
|
1301
|
+
"service_created": "AI가 {count}개 도구로 \"{name}\" 서비스를 생성했습니다",
|
|
1302
|
+
"service_saved": "\"{name}\" 서비스가 저장되었습니다",
|
|
1303
|
+
"service_removed": "\"{name}\" 서비스가 제거되었습니다",
|
|
1304
|
+
"launch_confirm_title": "AI 서비스 보안 경고",
|
|
1305
|
+
"launch_confirm_msg": "AI가 자동 생성된 코드를 실행해야 하는 MCP 서비스를 생성했습니다:\n 서비스: {name}\n 도구: {tools}\n\n이 코드는 로컬 Node.js 프로세스에서 실행됩니다.\n이 AI 생성 서비스 코드를 신뢰하는지 확인하세요.",
|
|
1306
|
+
"launch_confirm_ok": "실행",
|
|
1307
|
+
"launch_confirm_cancel": "취소"
|
|
1308
|
+
},
|
|
1309
|
+
"servers": {
|
|
1310
|
+
"empty": "구성된 MCP 서버가 없습니다",
|
|
1311
|
+
"local_mcp": "Local MCP",
|
|
1312
|
+
"add_server": "서버 추가",
|
|
1313
|
+
"add_server_plus": "+ 서버 추가",
|
|
1314
|
+
"connected": "연결됨",
|
|
1315
|
+
"disconnected": "연결 해제됨",
|
|
1316
|
+
"server_name": "서버 이름",
|
|
1317
|
+
"server_url": "서버 URL (예: http://localhost:3000/mcp)",
|
|
1318
|
+
"http": "HTTP",
|
|
1319
|
+
"sse": "SSE (서버 전송 이벤트)",
|
|
1320
|
+
"stdio": "stdio (로컬 프로세스)",
|
|
1321
|
+
"command": "명령어",
|
|
1322
|
+
"command_placeholder": "명령어 (예: npx, node, python)",
|
|
1323
|
+
"args_placeholder": "인수 (예: -y @modelcontextprotocol/server-filesystem /path)",
|
|
1324
|
+
"env_placeholder": "ENV_KEY=value (줄당 하나)",
|
|
1325
|
+
"presets": "Remote MCP",
|
|
1326
|
+
"presets_hint": "인기 MCP 서버 원클릭 추가",
|
|
1327
|
+
"preset_desc": {
|
|
1328
|
+
"filesystem": "로컬 파일 읽기, 검색 및 관리",
|
|
1329
|
+
"fetch": "웹 페이지를 가져와 Markdown으로 변환",
|
|
1330
|
+
"git": "Git 저장소 읽기 및 검색",
|
|
1331
|
+
"memory": "AI 메모리용 영구 지식 그래프",
|
|
1332
|
+
"puppeteer": "브라우저 자동화 및 웹 스크래핑",
|
|
1333
|
+
"sqlite": "SQLite 데이터베이스 쿼리 및 관리",
|
|
1334
|
+
"slack": "Slack 채널 및 메시지 읽기/검색",
|
|
1335
|
+
"google_maps": "지오코딩, 경로 안내 및 장소 검색",
|
|
1336
|
+
"sequential_thinking": "단계별 추론 및 문제 해결",
|
|
1337
|
+
"everything": "Everything을 통한 Windows 파일 검색"
|
|
1338
|
+
},
|
|
1339
|
+
"preset_env_title": "환경 변수",
|
|
1340
|
+
"preset_env_desc": {
|
|
1341
|
+
"slack_bot_token": "Slack Bot OAuth Token (xoxb-...)",
|
|
1342
|
+
"slack_team_id": "Slack 팀/워크스페이스 ID (선택 사항)",
|
|
1343
|
+
"google_maps_api_key": "Google Maps API 키"
|
|
1344
|
+
},
|
|
1345
|
+
"preset_add": "추가 및 연결",
|
|
1346
|
+
"form_mode": "양식",
|
|
1347
|
+
"json_mode": "JSON",
|
|
1348
|
+
"json_placeholder": "JSON 구성을 붙여넣으세요. 예:\n{\n \"mcpServers\": {\n \"이름\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@.../server-xxx\"]\n }\n }\n}",
|
|
1349
|
+
"json_no_config": "유효한 MCP 서버 구성을 찾을 수 없습니다",
|
|
1350
|
+
"json_parse_error": "구문 분석 오류",
|
|
1351
|
+
"launch_confirm_title": "보안 경고",
|
|
1352
|
+
"launch_confirm_msg": "외부 프로그램을 실행하려고 합니다:\n 명령어: {command}\n 인수: {args}\n\n이 MCP 서버는 사용자 권한으로 실행되며 로컬 파일 및 네트워크에 접근할 수 있습니다.\n이 MCP 서버가 신뢰할 수 있는 소스인지 확인하세요.",
|
|
1353
|
+
"launch_confirm_ok": "실행",
|
|
1354
|
+
"launch_confirm_cancel": "취소",
|
|
1355
|
+
"auto_approve": "MCP 실행 자동 승인",
|
|
1356
|
+
"auto_approve_hint": "MCP 서버 연결 및 AI 생성 서비스 실행 시 보안 확인을 건너뜁니다. 신뢰할 수 없는 소스에는 권장하지 않습니다.",
|
|
1357
|
+
"error_name_required": "서버 이름을 입력하세요",
|
|
1358
|
+
"error_command_required": "명령어를 입력하세요",
|
|
1359
|
+
"error_url_required": "URL을 입력하세요"
|
|
1360
|
+
},
|
|
1361
|
+
"publish": {
|
|
1362
|
+
"empty": "구성된 게시 대상이 없습니다",
|
|
1363
|
+
"hint": "먼저 게시 기능이 있는 MCP 서버를 연결하세요.",
|
|
1364
|
+
"button": "게시",
|
|
1365
|
+
"publishing": "게시 중...",
|
|
1366
|
+
"published": "게시 완료! {info}",
|
|
1367
|
+
"failed": "실패: {message}",
|
|
1368
|
+
"error": "오류: {message}"
|
|
1369
|
+
},
|
|
1370
|
+
"sync": {
|
|
1371
|
+
"empty": "동기화 구성이 없습니다",
|
|
1372
|
+
"hint": "먼저 MCP 서버를 연결한 후 동기화 구성을 추가하세요.",
|
|
1373
|
+
"sync_now": "지금 동기화",
|
|
1374
|
+
"add_sync": "+ 동기화 추가",
|
|
1375
|
+
"name": "구성 이름",
|
|
1376
|
+
"server": "MCP 서버",
|
|
1377
|
+
"remote_path": "원격 경로",
|
|
1378
|
+
"local_path": "로컬 경로",
|
|
1379
|
+
"direction": "방향",
|
|
1380
|
+
"push": "푸시 (로컬 → 원격)",
|
|
1381
|
+
"pull": "풀 (원격 → 로컬)",
|
|
1382
|
+
"bidirectional": "양방향",
|
|
1383
|
+
"last_sync": "마지막 동기화: {time}",
|
|
1384
|
+
"syncing": "동기화 중...",
|
|
1385
|
+
"success": "동기화 완료",
|
|
1386
|
+
"error": "동기화 오류: {message}"
|
|
1387
|
+
},
|
|
1388
|
+
"marketplace": {
|
|
1389
|
+
"title": "마켓",
|
|
1390
|
+
"search": "MCP 서버 검색...",
|
|
1391
|
+
"source": "소스",
|
|
1392
|
+
"source_official": "공식",
|
|
1393
|
+
"source_lobehub": "LobeHub",
|
|
1394
|
+
"source_smithery": "Smithery",
|
|
1395
|
+
"install": "설치",
|
|
1396
|
+
"install_and_connect": "설치 및 연결",
|
|
1397
|
+
"installing": "설치 중...",
|
|
1398
|
+
"installed": "설치됨",
|
|
1399
|
+
"view_details": "상세 정보",
|
|
1400
|
+
"load_more": "더 보기",
|
|
1401
|
+
"no_results": "MCP 서버를 찾을 수 없습니다",
|
|
1402
|
+
"network_error": "로드 실패, 네트워크를 확인하세요",
|
|
1403
|
+
"retry": "재시도",
|
|
1404
|
+
"env_vars": "환경 변수",
|
|
1405
|
+
"env_required": "(필수)",
|
|
1406
|
+
"popularity": "사용 횟수",
|
|
1407
|
+
"installs": "설치 / 사용",
|
|
1408
|
+
"verified": "인증됨",
|
|
1409
|
+
"cancel": "취소"
|
|
1410
|
+
},
|
|
1411
|
+
"subtitle": "Connect to Model Context Protocol servers to give the AI agent tools and resources.",
|
|
1412
|
+
"settings_card_label": "MCP servers",
|
|
1413
|
+
"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"
|
|
1417
|
+
},
|
|
1418
|
+
"list": {
|
|
1419
|
+
"add_button": "Add server",
|
|
1420
|
+
"status": {
|
|
1421
|
+
"connected": "Connected",
|
|
1422
|
+
"connecting": "Connecting…",
|
|
1423
|
+
"disconnected": "Disconnected",
|
|
1424
|
+
"error": "Error"
|
|
1425
|
+
},
|
|
1426
|
+
"tool_count": "{count} tools",
|
|
1427
|
+
"resource_count": "{count} resources",
|
|
1428
|
+
"last_connected": "Last connected {when}",
|
|
1429
|
+
"help_button": "How do I connect?"
|
|
1430
|
+
},
|
|
1431
|
+
"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)",
|
|
1439
|
+
"url_label": "URL",
|
|
1440
|
+
"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.",
|
|
1451
|
+
"validation": {
|
|
1452
|
+
"name_required": "Name is required.",
|
|
1453
|
+
"url_required": "URL is required.",
|
|
1454
|
+
"url_invalid": "URL must start with http:// or https://"
|
|
1455
|
+
}
|
|
1456
|
+
},
|
|
1457
|
+
"detail": {
|
|
1458
|
+
"title": "Server details",
|
|
1459
|
+
"reconnect_button": "Reconnect",
|
|
1460
|
+
"disconnect_button": "Disconnect",
|
|
1461
|
+
"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}",
|
|
1468
|
+
"url_label": "URL: {url}"
|
|
1469
|
+
},
|
|
1470
|
+
"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.",
|
|
1473
|
+
"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."
|
|
1476
|
+
},
|
|
1477
|
+
"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."
|
|
1480
|
+
},
|
|
1481
|
+
"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."
|
|
1484
|
+
},
|
|
1485
|
+
"close_button": "Got it"
|
|
1486
|
+
},
|
|
1487
|
+
"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."
|
|
1492
|
+
}
|
|
1493
|
+
},
|
|
1494
|
+
"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"
|
|
1508
|
+
},
|
|
1509
|
+
"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."
|
|
1554
|
+
},
|
|
1555
|
+
"menu": {
|
|
1556
|
+
"file": "파일",
|
|
1557
|
+
"edit": "편집",
|
|
1558
|
+
"paragraph": "단락",
|
|
1559
|
+
"format": "서식",
|
|
1560
|
+
"view": "보기",
|
|
1561
|
+
"window": "창",
|
|
1562
|
+
"help": "도움말",
|
|
1563
|
+
"new": "새 문서",
|
|
1564
|
+
"new_window": "새 창",
|
|
1565
|
+
"open": "열기...",
|
|
1566
|
+
"save": "저장",
|
|
1567
|
+
"save_as": "다른 이름으로 저장...",
|
|
1568
|
+
"export": "내보내기",
|
|
1569
|
+
"export_html": "HTML",
|
|
1570
|
+
"export_pdf": "PDF",
|
|
1571
|
+
"export_image": "이미지 (PNG)",
|
|
1572
|
+
"export_doc": "Word (.doc)",
|
|
1573
|
+
"heading1": "제목 1",
|
|
1574
|
+
"heading2": "제목 2",
|
|
1575
|
+
"heading3": "제목 3",
|
|
1576
|
+
"heading4": "제목 4",
|
|
1577
|
+
"heading5": "제목 5",
|
|
1578
|
+
"heading6": "제목 6",
|
|
1579
|
+
"table": "표",
|
|
1580
|
+
"code_block": "코드 블록",
|
|
1581
|
+
"math_block": "수식 블록",
|
|
1582
|
+
"quote": "인용",
|
|
1583
|
+
"bullet_list": "글머리 기호 목록",
|
|
1584
|
+
"ordered_list": "번호 매기기 목록",
|
|
1585
|
+
"task_list": "작업 목록",
|
|
1586
|
+
"horizontal_rule": "수평선",
|
|
1587
|
+
"bold": "굵게",
|
|
1588
|
+
"italic": "기울임",
|
|
1589
|
+
"strikethrough": "취소선",
|
|
1590
|
+
"code": "코드",
|
|
1591
|
+
"link": "링크",
|
|
1592
|
+
"image": "이미지",
|
|
1593
|
+
"visual_mode": "비주얼 모드",
|
|
1594
|
+
"source_mode": "소스 모드",
|
|
1595
|
+
"split_mode": "분할 모드",
|
|
1596
|
+
"toggle_sidebar": "사이드바 전환",
|
|
1597
|
+
"toggle_aipanel": "AI 패널 전환",
|
|
1598
|
+
"toggle_outline": "개요 전환",
|
|
1599
|
+
"zoom_in": "확대",
|
|
1600
|
+
"zoom_out": "축소",
|
|
1601
|
+
"actual_size": "실제 크기",
|
|
1602
|
+
"find": "찾기",
|
|
1603
|
+
"replace": "바꾸기",
|
|
1604
|
+
"changelog": "변경 로그",
|
|
1605
|
+
"privacy_policy": "개인정보 처리방침",
|
|
1606
|
+
"official_website": "공식 웹사이트",
|
|
1607
|
+
"about_moraya": "Moraya 정보",
|
|
1608
|
+
"feedback": "피드백",
|
|
1609
|
+
"settings": "설정...",
|
|
1610
|
+
"version_info": "버전 정보",
|
|
1611
|
+
"workflow": "워크플로",
|
|
1612
|
+
"seo_optimization": "SEO 최적화",
|
|
1613
|
+
"ai_image_generation": "AI 이미지 생성",
|
|
1614
|
+
"publish": "게시",
|
|
1615
|
+
"mcp_tools": "MCP 도구",
|
|
1616
|
+
"no_mcptools": "연결된 MCP 도구 없음"
|
|
1617
|
+
},
|
|
1618
|
+
"mermaid": {
|
|
1619
|
+
"loading": "다이어그램 로딩 중...",
|
|
1620
|
+
"error": "다이어그램 렌더링 실패",
|
|
1621
|
+
"edit": "편집",
|
|
1622
|
+
"preview": "미리보기",
|
|
1623
|
+
"empty": "빈 다이어그램"
|
|
1624
|
+
},
|
|
1625
|
+
"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."
|
|
1637
|
+
},
|
|
1638
|
+
"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",
|
|
1644
|
+
"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?"
|
|
1667
|
+
},
|
|
1668
|
+
"mobile": {
|
|
1669
|
+
"__mt": true,
|
|
1670
|
+
"tab": {
|
|
1671
|
+
"nav_label": "Primary navigation",
|
|
1672
|
+
"edit": "Edit",
|
|
1673
|
+
"ai": "AI",
|
|
1674
|
+
"files": "Knowledge Base",
|
|
1675
|
+
"settings": "Settings"
|
|
1676
|
+
},
|
|
1677
|
+
"appbar": {
|
|
1678
|
+
"menu": "Open sidebar",
|
|
1679
|
+
"more": "More actions",
|
|
1680
|
+
"toggle_ai_pane": "Toggle AI pane",
|
|
1681
|
+
"untitled": "Untitled"
|
|
1682
|
+
},
|
|
1683
|
+
"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"
|
|
1691
|
+
},
|
|
1692
|
+
"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"
|
|
1701
|
+
},
|
|
1702
|
+
"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
|
+
"cleared": "대화가 지워졌습니다",
|
|
1713
|
+
"clear_undone": "메시지가 복원되었습니다",
|
|
1714
|
+
"stub_response": "Hi! I'm a placeholder response. The real AI provider will be wired up in v0.68.",
|
|
1715
|
+
"not_configured_title": "AI is not configured yet",
|
|
1716
|
+
"not_configured_text": "Add an API key or pick a local model in Settings → AI to start chatting.",
|
|
1717
|
+
"not_configured": "AI is not configured. Open Settings to set up an AI model?",
|
|
1718
|
+
"configure_now": "Set up",
|
|
1719
|
+
"stop": "Stop",
|
|
1720
|
+
"error_prefix": "Error",
|
|
1721
|
+
"pick_model": "Switch AI model",
|
|
1722
|
+
"no_providers": "No AI providers configured yet. Tap “Set up” to add one.",
|
|
1723
|
+
"conversations": "Conversations",
|
|
1724
|
+
"new_chat": "New chat",
|
|
1725
|
+
"no_conversations": "No conversations yet. Tap “New chat” to start.",
|
|
1726
|
+
"no_matches": "No conversations match your search.",
|
|
1727
|
+
"search_placeholder": "Search conversations…",
|
|
1728
|
+
"attach_image": "Attach image",
|
|
1729
|
+
"remove_attachment": "Remove attachment",
|
|
1730
|
+
"attached_image": "Attached image",
|
|
1731
|
+
"compressing": "Compressing…",
|
|
1732
|
+
"copy": "Copy",
|
|
1733
|
+
"sync_syncing": "Syncing with Picora…",
|
|
1734
|
+
"sync_idle": "Synced with Picora",
|
|
1735
|
+
"sync_offline": "Offline (will retry)",
|
|
1736
|
+
"sync_error": "Sync error — check connection",
|
|
1737
|
+
"sync_disabled": "Sync disabled",
|
|
1738
|
+
"mention_title": "Mention a note",
|
|
1739
|
+
"mention_search": "Search your notes…",
|
|
1740
|
+
"no_notes": "No notes yet — open one from the Files tab.",
|
|
1741
|
+
"insert_action": "Insert",
|
|
1742
|
+
"insert_title": "Insert into note",
|
|
1743
|
+
"insert_append": "Append to current note",
|
|
1744
|
+
"insert_append_sub": "Add this AI reply to the doc you have open in the Edit tab.",
|
|
1745
|
+
"insert_new": "Create new note",
|
|
1746
|
+
"insert_new_sub": "Make a new doc from this AI reply and open it.",
|
|
1747
|
+
"insert_no_active": "No document is open in the Edit tab.",
|
|
1748
|
+
"insert_failed": "Could not write the note — check storage permissions.",
|
|
1749
|
+
"insert_append_ok": "Appended to current note.",
|
|
1750
|
+
"insert_new_ok": "New note created.",
|
|
1751
|
+
"export": "Export / Share",
|
|
1752
|
+
"export_failed": "Could not export this conversation.",
|
|
1753
|
+
"export_ok": "Conversation exported.",
|
|
1754
|
+
"rag_used": "Referenced {n} past message(s)",
|
|
1755
|
+
"rag_on_title": "History RAG enabled — past conversations may be used as context",
|
|
1756
|
+
"citations_title": "{n} reference(s)",
|
|
1757
|
+
"citations_empty": "No citations attached to this message.",
|
|
1758
|
+
"params_title": "Generation parameters",
|
|
1759
|
+
"params_hint": "Override AI generation settings for this conversation only. Leave blank to use the provider default.",
|
|
1760
|
+
"params_save": "Save",
|
|
1761
|
+
"params_reset": "Reset to defaults",
|
|
1762
|
+
"param_temperature": "Temperature",
|
|
1763
|
+
"param_temperature_sub": "0 = deterministic · 1 = balanced · 2 = creative",
|
|
1764
|
+
"param_max_tokens": "Max output tokens",
|
|
1765
|
+
"param_max_tokens_sub": "Hard cap on the model's reply length",
|
|
1766
|
+
"param_top_p": "Top-P",
|
|
1767
|
+
"param_top_p_sub": "Nucleus sampling threshold (0–1)",
|
|
1768
|
+
"param_stop": "Stop sequences",
|
|
1769
|
+
"param_stop_sub": "Model halts when about to emit any of these. Comma-separated; use \\n for newline.",
|
|
1770
|
+
"param_stop_placeholder": "\\n\\n###, END",
|
|
1771
|
+
"presets_label": "Presets",
|
|
1772
|
+
"preset_save_as": "Save current as preset",
|
|
1773
|
+
"preset_save_prompt": "Name this preset:",
|
|
1774
|
+
"preset_delete_confirm": "Delete preset \"{name}\"?",
|
|
1775
|
+
"preset_delete_aria": "Delete preset",
|
|
1776
|
+
"preset_deleted": "프리셋 \"{name}\" 삭제됨",
|
|
1777
|
+
"preset_restored": "프리셋이 복원되었습니다",
|
|
1778
|
+
"preset_picker_title": "Pick a preset",
|
|
1779
|
+
"preset_picker_hint": "Switch tone for this conversation. For fine-tuning, use the ⚙ gear.",
|
|
1780
|
+
"preset_picker_custom_note": "Currently using custom values — open ⚙ to view or save them as a preset.",
|
|
1781
|
+
"preset_custom_label": "Custom",
|
|
1782
|
+
"retry_title": "Retry this reply",
|
|
1783
|
+
"retry_action": "Retry",
|
|
1784
|
+
"retry_as_is": "Retry with current params",
|
|
1785
|
+
"retry_with_preset": "Or try a different preset",
|
|
1786
|
+
"retry_done": "Reply regenerating",
|
|
1787
|
+
"retry_undone": "Original reply restored",
|
|
1788
|
+
"undo": "Undo",
|
|
1789
|
+
"presets": {
|
|
1790
|
+
"default": {
|
|
1791
|
+
"label": "Default"
|
|
1792
|
+
},
|
|
1793
|
+
"precise": {
|
|
1794
|
+
"label": "Precise"
|
|
1795
|
+
},
|
|
1796
|
+
"balanced": {
|
|
1797
|
+
"label": "Balanced"
|
|
1798
|
+
},
|
|
1799
|
+
"creative": {
|
|
1800
|
+
"label": "Creative"
|
|
1801
|
+
}
|
|
1802
|
+
},
|
|
1803
|
+
"default": "Default",
|
|
1804
|
+
"quick_actions_header": "Start with",
|
|
1805
|
+
"workflows_header": "Workflows",
|
|
1806
|
+
"wf_steps": "steps",
|
|
1807
|
+
"wf": {
|
|
1808
|
+
"summarize-then-translate": {
|
|
1809
|
+
"name": "Summarize → Translate",
|
|
1810
|
+
"desc": "TL;DR the input, then translate the summary."
|
|
1811
|
+
},
|
|
1812
|
+
"translate-then-polish": {
|
|
1813
|
+
"name": "Translate → Polish",
|
|
1814
|
+
"desc": "Translate input, then smooth the translation."
|
|
1815
|
+
},
|
|
1816
|
+
"step": {
|
|
1817
|
+
"summarize": "Summarizing",
|
|
1818
|
+
"translate": "Translating",
|
|
1819
|
+
"polish": "Polishing",
|
|
1820
|
+
"tone": "Tone",
|
|
1821
|
+
"length": "Length",
|
|
1822
|
+
"article": "Writing article",
|
|
1823
|
+
"cover": "Cover image",
|
|
1824
|
+
"target_lang": "Target language",
|
|
1825
|
+
"dictate": "Dictation",
|
|
1826
|
+
"structurize": "Structuring"
|
|
1827
|
+
},
|
|
1828
|
+
"write-article": {
|
|
1829
|
+
"name": "Write article + cover",
|
|
1830
|
+
"desc": "Topic → tone/length → article → AI cover",
|
|
1831
|
+
"ask_tone": "What tone should the article take?",
|
|
1832
|
+
"ask_length": "How long should it be?",
|
|
1833
|
+
"cover_hint": "Generating a cover image…"
|
|
1834
|
+
},
|
|
1835
|
+
"translate": {
|
|
1836
|
+
"name": "Translate",
|
|
1837
|
+
"desc": "Translate text into a target language",
|
|
1838
|
+
"ask_lang": "Translate into which language?"
|
|
1839
|
+
},
|
|
1840
|
+
"voice-transcribe": {
|
|
1841
|
+
"name": "Voice → note",
|
|
1842
|
+
"desc": "Dictate, then structure into a note",
|
|
1843
|
+
"hint": "Tap done when you finish speaking."
|
|
1844
|
+
},
|
|
1845
|
+
"tone": {
|
|
1846
|
+
"general": "General",
|
|
1847
|
+
"marketing": "Marketing",
|
|
1848
|
+
"technical": "Technical",
|
|
1849
|
+
"story": "Story"
|
|
1850
|
+
},
|
|
1851
|
+
"length": {
|
|
1852
|
+
"short": "Short (~500)",
|
|
1853
|
+
"medium": "Medium (~1500)",
|
|
1854
|
+
"long": "Long (~3000)"
|
|
1855
|
+
},
|
|
1856
|
+
"lang": {
|
|
1857
|
+
"en": "English",
|
|
1858
|
+
"zh": "Chinese",
|
|
1859
|
+
"ja": "Japanese",
|
|
1860
|
+
"ko": "Korean"
|
|
1861
|
+
},
|
|
1862
|
+
"cancel": "Cancel",
|
|
1863
|
+
"listening": "Listening…",
|
|
1864
|
+
"stt_done": "Done",
|
|
1865
|
+
"generating_cover": "Generating cover…",
|
|
1866
|
+
"cover_failed": "Cover generation failed",
|
|
1867
|
+
"skip_cover": "Skip cover",
|
|
1868
|
+
"regenerate": "Regenerate",
|
|
1869
|
+
"insert_with_cover": "Insert article + cover",
|
|
1870
|
+
"no_image_provider": "No image provider — set one up in Settings → Image generation."
|
|
1871
|
+
},
|
|
1872
|
+
"tpl": {
|
|
1873
|
+
"screenshot-to-md": {
|
|
1874
|
+
"name": "Image → Markdown",
|
|
1875
|
+
"desc": "Convert a screenshot, photo, or chart to clean Markdown.",
|
|
1876
|
+
"input": "Add a caption or leave empty — the model uses your image."
|
|
1877
|
+
},
|
|
1878
|
+
"summarize-current": {
|
|
1879
|
+
"name": "Summarize note",
|
|
1880
|
+
"desc": "TL;DR + key terms of the doc open in the Edit tab.",
|
|
1881
|
+
"input": "Optional focus: “key claims only”, “as bullet list”…"
|
|
1882
|
+
},
|
|
1883
|
+
"continue-writing": {
|
|
1884
|
+
"name": "Continue writing",
|
|
1885
|
+
"desc": "Pick up where you left off in the current doc.",
|
|
1886
|
+
"input": "Optional steering: tone, length, next section…"
|
|
1887
|
+
},
|
|
1888
|
+
"translate-zh-en": {
|
|
1889
|
+
"name": "Translate ZH ↔ EN",
|
|
1890
|
+
"desc": "Auto-detects source language. Preserves Markdown.",
|
|
1891
|
+
"input": "Paste the text to translate."
|
|
1892
|
+
}
|
|
1893
|
+
},
|
|
1894
|
+
"rename": "Rename",
|
|
1895
|
+
"rename_prompt": "New title",
|
|
1896
|
+
"delete_confirm": "Delete “{title}”? This cannot be undone.",
|
|
1897
|
+
"conv_deleted": "Deleted “{title}”",
|
|
1898
|
+
"conv_restored": "Conversation restored",
|
|
1899
|
+
"usage_tooltip": "Prompt tokens ↑ Completion tokens ↓",
|
|
1900
|
+
"budget_warn_confirm": "You are nearing your monthly AI budget. Send anyway?",
|
|
1901
|
+
"budget_over_confirm": "You are OVER your monthly AI budget. Send anyway?",
|
|
1902
|
+
"bulk_import": "Import all",
|
|
1903
|
+
"bulk_export": "Export all",
|
|
1904
|
+
"import_ok": "Imported {n} conversation(s).",
|
|
1905
|
+
"import_empty": "No conversations in that file.",
|
|
1906
|
+
"import_failed": "Import failed: {err}",
|
|
1907
|
+
"compose": "Compose article",
|
|
1908
|
+
"commands_title": "Commands",
|
|
1909
|
+
"more_actions": "More actions",
|
|
1910
|
+
"commands_empty": "No matching commands.",
|
|
1911
|
+
"voice_dictate": "Voice input",
|
|
1912
|
+
"voice_stop": "Stop",
|
|
1913
|
+
"voice_read_aloud": "Read aloud",
|
|
1914
|
+
"voice_local_badge": "On-device",
|
|
1915
|
+
"voice_permission_denied": "Microphone or speech permission denied. Enable it in Settings to use voice.",
|
|
1916
|
+
"voice_start_failed": "Could not start voice input.",
|
|
1917
|
+
"voice_speak_failed": "Could not read this message aloud."
|
|
1918
|
+
},
|
|
1919
|
+
"files": {
|
|
1920
|
+
"title": "Knowledge Base",
|
|
1921
|
+
"kb": "Knowledge Bases",
|
|
1922
|
+
"tree": "All Notes",
|
|
1923
|
+
"recent": "Recent",
|
|
1924
|
+
"favorites": "Favorites",
|
|
1925
|
+
"open_local": "Open from device",
|
|
1926
|
+
"open_local_failed": "Could not open this file. Make sure it's a text or Markdown file.",
|
|
1927
|
+
"new": "New document",
|
|
1928
|
+
"no_recent": "No recently opened documents.",
|
|
1929
|
+
"no_favorites": "No favorites yet. Star a document from the editor to add it here.",
|
|
1930
|
+
"empty": "No notes yet. Tap “New document” or “Open from device” to start.",
|
|
1931
|
+
"loading": "Loading…",
|
|
1932
|
+
"new_kb": "New knowledge base",
|
|
1933
|
+
"kb_name_placeholder": "Knowledge base name",
|
|
1934
|
+
"create": "Create",
|
|
1935
|
+
"cancel": "Cancel",
|
|
1936
|
+
"kb_create_failed": "Could not create the knowledge base."
|
|
1937
|
+
},
|
|
1938
|
+
"media": {
|
|
1939
|
+
"title": "Cloud images",
|
|
1940
|
+
"search": "Search images",
|
|
1941
|
+
"loading": "Loading…",
|
|
1942
|
+
"empty": "No cloud images yet.",
|
|
1943
|
+
"insert": "Insert cloud image"
|
|
1944
|
+
}
|
|
1945
|
+
},
|
|
1946
|
+
"notifications": {
|
|
1947
|
+
"__mt": true,
|
|
1948
|
+
"title": "Push Notifications",
|
|
1949
|
+
"subtitle": "Receive alerts when your AI tasks finish or collaborators @ you.",
|
|
1950
|
+
"unsupported": "This browser does not support push notifications.",
|
|
1951
|
+
"permission_status": "Permission",
|
|
1952
|
+
"permission_denied": "Notification permission denied.",
|
|
1953
|
+
"denied_hint": "Open your browser settings to re-enable notifications.",
|
|
1954
|
+
"enable": "Enable",
|
|
1955
|
+
"disable": "Disable",
|
|
1956
|
+
"no_token": "Failed to obtain a device token.",
|
|
1957
|
+
"device_registered": "This device is registered:",
|
|
1958
|
+
"registered_devices": "Registered devices",
|
|
1959
|
+
"no_devices": "No devices registered yet.",
|
|
1960
|
+
"revoke": "Revoke",
|
|
1961
|
+
"revoke_confirm": "Revoke this device? It will stop receiving push notifications immediately.",
|
|
1962
|
+
"platform": {
|
|
1963
|
+
"web": "Web",
|
|
1964
|
+
"ios": "iOS",
|
|
1965
|
+
"android": "Android",
|
|
1966
|
+
"desktop": "Desktop",
|
|
1967
|
+
"unknown": "Unknown"
|
|
1968
|
+
},
|
|
1969
|
+
"registered_at": "Registered {date}",
|
|
1970
|
+
"last_seen": "Last seen {date}",
|
|
1971
|
+
"error_register": "Could not register this device.",
|
|
1972
|
+
"error_list": "Could not load device list."
|
|
1973
|
+
},
|
|
1974
|
+
"offline": {
|
|
1975
|
+
"__mt": true,
|
|
1976
|
+
"cache_enabled": "Offline cache enabled",
|
|
1977
|
+
"cache_disabled": "Offline cache disabled",
|
|
1978
|
+
"cache_size": "{size} cached",
|
|
1979
|
+
"cache_note_count": "{count} notes cached",
|
|
1980
|
+
"cache_expired": "Cache expired",
|
|
1981
|
+
"note_cached": "Note cached for offline",
|
|
1982
|
+
"note_evicted": "Note evicted from cache",
|
|
1983
|
+
"offline_banner": "You are offline. Showing cached content.",
|
|
1984
|
+
"cache_settings": "Offline Cache Settings",
|
|
1985
|
+
"max_notes": "Max cached notes"
|
|
1986
|
+
},
|
|
1987
|
+
"outline": {
|
|
1988
|
+
"empty": "No headings found",
|
|
1989
|
+
"title": "Outline",
|
|
1990
|
+
"expand": "Expand",
|
|
1991
|
+
"collapse": "Collapse"
|
|
1992
|
+
},
|
|
1993
|
+
"perf": {
|
|
1994
|
+
"__mt": true,
|
|
1995
|
+
"memory_warning": "High memory usage detected ({percent}%)",
|
|
1996
|
+
"memory_critical": "Critical memory usage ({percent}%)",
|
|
1997
|
+
"memory_trend_growing": "Memory growing",
|
|
1998
|
+
"memory_trend_stable": "Memory stable",
|
|
1999
|
+
"memory_trend_shrinking": "Memory shrinking",
|
|
2000
|
+
"vitals_score": "Performance score: {score}",
|
|
2001
|
+
"vitals_good": "Good",
|
|
2002
|
+
"vitals_needs_improvement": "Needs improvement",
|
|
2003
|
+
"vitals_poor": "Poor"
|
|
2004
|
+
},
|
|
2005
|
+
"permissions": {
|
|
2006
|
+
"__mt": true,
|
|
2007
|
+
"paste_title": "Allow Clipboard Access?",
|
|
2008
|
+
"paste_desc": "Moraya wants to read image data from your clipboard. This is used only when you paste an image.",
|
|
2009
|
+
"allow_once": "Allow Once",
|
|
2010
|
+
"allow_always": "Always Allow",
|
|
2011
|
+
"deny": "Deny",
|
|
2012
|
+
"granted": "Clipboard access granted",
|
|
2013
|
+
"denied": "Clipboard access denied",
|
|
2014
|
+
"revoke": "Revoke Permission"
|
|
2015
|
+
},
|
|
2016
|
+
"plugin_action": {
|
|
2017
|
+
"title": "플러그인 실행",
|
|
2018
|
+
"run_action": "실행",
|
|
2019
|
+
"invoking": "실행 중...",
|
|
2020
|
+
"success": "플러그인 적용됨",
|
|
2021
|
+
"no_changes": "변경 없음",
|
|
2022
|
+
"no_plugins": "실행 중인 플러그인 없음"
|
|
2023
|
+
},
|
|
2024
|
+
"plugins": {
|
|
2025
|
+
"tabs": {
|
|
2026
|
+
"preset": "내장",
|
|
2027
|
+
"installed": "설치됨",
|
|
2028
|
+
"market": "마켓플레이스"
|
|
2029
|
+
},
|
|
2030
|
+
"installed": {
|
|
2031
|
+
"empty": "설치된 플러그인이 없습니다."
|
|
2032
|
+
},
|
|
2033
|
+
"sandbox": {
|
|
2034
|
+
"label": "샌드박스 수준",
|
|
2035
|
+
"sandbox": "샌드박스 (JS)",
|
|
2036
|
+
"local": "로컬 (네트워크 없음)",
|
|
2037
|
+
"system": "시스템 (네트워크 접근)"
|
|
2038
|
+
},
|
|
2039
|
+
"permissions": {
|
|
2040
|
+
"label": "권한"
|
|
2041
|
+
},
|
|
2042
|
+
"market": {
|
|
2043
|
+
"search": "플러그인 검색...",
|
|
2044
|
+
"refresh": "새로고침",
|
|
2045
|
+
"cat_all": "전체",
|
|
2046
|
+
"cached": "캐시된 결과 표시 중",
|
|
2047
|
+
"loading": "마켓플레이스 로딩 중...",
|
|
2048
|
+
"empty": "플러그인을 찾을 수 없습니다",
|
|
2049
|
+
"install": "설치",
|
|
2050
|
+
"installed": "설치됨",
|
|
2051
|
+
"installing": "설치 중..."
|
|
2052
|
+
},
|
|
2053
|
+
"install": {
|
|
2054
|
+
"from_file": ".zip에서 설치",
|
|
2055
|
+
"url_placeholder": "GitHub 저장소 URL (https://github.com/...)",
|
|
2056
|
+
"validate": "가져오기",
|
|
2057
|
+
"confirm_url": "URL에서 플러그인을 설치하시겠습니까?",
|
|
2058
|
+
"author": "작성자",
|
|
2059
|
+
"permissions": "권한",
|
|
2060
|
+
"no_permissions": "권한 없음",
|
|
2061
|
+
"fetching_release": "릴리스 정보를 가져오는 중...",
|
|
2062
|
+
"downloading": "다운로드 중..."
|
|
2063
|
+
},
|
|
2064
|
+
"verified": "인증됨",
|
|
2065
|
+
"enable": "활성화",
|
|
2066
|
+
"disable": "비활성화",
|
|
2067
|
+
"uninstall": "제거",
|
|
2068
|
+
"changelog": "변경 로그",
|
|
2069
|
+
"view_source": "소스",
|
|
2070
|
+
"blacklisted": "블랙리스트 등재",
|
|
2071
|
+
"blacklist_warning": "이 플러그인은 보안 문제로 블랙리스트에 등재되었습니다. 제거하세요.",
|
|
2072
|
+
"process_error": "플러그인 프로세스가 충돌했습니다. 토글하여 재시작하세요.",
|
|
2073
|
+
"error": {
|
|
2074
|
+
"platform_not_supported": "사용 중인 플랫폼에 다운로드가 없습니다."
|
|
2075
|
+
},
|
|
2076
|
+
"preset": {
|
|
2077
|
+
"initializing": "로드 중...",
|
|
2078
|
+
"download": "다운로드",
|
|
2079
|
+
"retry": "재시도",
|
|
2080
|
+
"ready": "활성화됨",
|
|
2081
|
+
"downloading": "다운로드 중...",
|
|
2082
|
+
"loading": "로드 중...",
|
|
2083
|
+
"error": "오류",
|
|
2084
|
+
"large_bundle": "큰 번들 (>500 KB) — 다운로드하는 데 잠시 시간이 걸릴 수 있습니다",
|
|
2085
|
+
"cancel": "취소",
|
|
2086
|
+
"delete": "삭제"
|
|
2087
|
+
}
|
|
2088
|
+
},
|
|
2089
|
+
"publish": {
|
|
2090
|
+
"settings_empty": "구성된 게시 대상이 없습니다",
|
|
2091
|
+
"settings_hint": "글을 게시하려면 GitHub 저장소 또는 사용자 지정 API 엔드포인트를 추가하세요.",
|
|
2092
|
+
"add_target": "대상 추가",
|
|
2093
|
+
"edit_target": "편집",
|
|
2094
|
+
"delete_target": "삭제",
|
|
2095
|
+
"test_connection": "연결 테스트",
|
|
2096
|
+
"github": "GitHub 저장소",
|
|
2097
|
+
"custom_api": "사용자 지정 API",
|
|
2098
|
+
"target_name": "이름",
|
|
2099
|
+
"target_name_placeholder": "예: 내 블로그",
|
|
2100
|
+
"repo_url": "저장소 URL",
|
|
2101
|
+
"repo_url_placeholder": "https://github.com/user/blog",
|
|
2102
|
+
"branch": "브랜치",
|
|
2103
|
+
"articles_dir": "글 디렉터리",
|
|
2104
|
+
"articles_dir_placeholder": "content/posts/",
|
|
2105
|
+
"images_dir": "이미지 디렉터리",
|
|
2106
|
+
"images_dir_placeholder": "static/images/",
|
|
2107
|
+
"token": "Personal Access Token",
|
|
2108
|
+
"token_placeholder": "ghp_xxxxxxxxxxxx",
|
|
2109
|
+
"front_matter_template": "Front Matter 템플릿",
|
|
2110
|
+
"endpoint": "API 엔드포인트",
|
|
2111
|
+
"endpoint_placeholder": "https://api.example.com/articles",
|
|
2112
|
+
"method": "HTTP 메서드",
|
|
2113
|
+
"headers": "헤더 (JSON)",
|
|
2114
|
+
"body_template": "본문 템플릿",
|
|
2115
|
+
"template_presets": "템플릿 프리셋",
|
|
2116
|
+
"preset_hugo": "Hugo",
|
|
2117
|
+
"preset_hexo": "Hexo",
|
|
2118
|
+
"preset_astro": "Astro",
|
|
2119
|
+
"preset_custom": "사용자 지정",
|
|
2120
|
+
"file_name_pattern": "파일 이름 패턴",
|
|
2121
|
+
"file_name_preset": "이름 프리셋",
|
|
2122
|
+
"file_name_preview": "미리보기",
|
|
2123
|
+
"preset_simple": "간단 (파일명)",
|
|
2124
|
+
"preset_date_slug": "날짜 + 슬러그",
|
|
2125
|
+
"preset_date_filename": "날짜 + 파일명",
|
|
2126
|
+
"preset_year_month": "연/월/슬러그",
|
|
2127
|
+
"file_name_variables": "변수: {{date}}, {{year}}, {{month}}, {{day}}, {{slug}}, {{filename}}, {{title}}",
|
|
2128
|
+
"rss_section": "RSS 피드",
|
|
2129
|
+
"rss_enable": "RSS 피드 생성",
|
|
2130
|
+
"rss_enable_hint": "게시 시 feed.xml을 자동으로 업데이트합니다",
|
|
2131
|
+
"rss_feed_path": "피드 파일 경로",
|
|
2132
|
+
"rss_feed_path_placeholder": "feed.xml",
|
|
2133
|
+
"rss_site_url": "사이트 URL",
|
|
2134
|
+
"rss_site_url_placeholder": "https://myblog.com",
|
|
2135
|
+
"rss_feed_title": "피드 제목",
|
|
2136
|
+
"rss_feed_title_placeholder": "내 블로그",
|
|
2137
|
+
"rss_feed_description": "피드 설명",
|
|
2138
|
+
"rss_feed_description_placeholder": "다음에 대한 글...",
|
|
2139
|
+
"rss_language": "언어",
|
|
2140
|
+
"rss_author_name": "작성자",
|
|
2141
|
+
"rss_author_name_placeholder": "홍길동",
|
|
2142
|
+
"rss_max_items": "피드 최대 항목 수",
|
|
2143
|
+
"rss_include_full_content": "피드에 글 전체 내용 포함",
|
|
2144
|
+
"rss_feed_endpoint": "RSS 피드 엔드포인트",
|
|
2145
|
+
"rss_feed_endpoint_placeholder": "https://api.example.com/rss",
|
|
2146
|
+
"rss_update_failed": "RSS 피드 업데이트 실패",
|
|
2147
|
+
"progress_title": "게시 중...",
|
|
2148
|
+
"progress_publishing": "업로드 중...",
|
|
2149
|
+
"progress_rss": "RSS 업데이트 중...",
|
|
2150
|
+
"progress_done": "완료",
|
|
2151
|
+
"progress_failed": "실패",
|
|
2152
|
+
"enable_seo": "SEO 최적화",
|
|
2153
|
+
"enable_seohint": "게시 전 제목, 발췌, 태그 및 메타 설명 생성",
|
|
2154
|
+
"next_seo": "다음: SEO →",
|
|
2155
|
+
"back_to_targets": "뒤로",
|
|
2156
|
+
"seo_no_provider": "AI 제공업체가 구성되지 않았습니다. 설정에서 AI 제공업체를 구성하세요."
|
|
2157
|
+
},
|
|
2158
|
+
"pwa": {
|
|
2159
|
+
"__mt": true,
|
|
2160
|
+
"install_prompt": "Install Moraya Web for a better experience.",
|
|
2161
|
+
"install": "Install",
|
|
2162
|
+
"dismiss": "Not now",
|
|
2163
|
+
"update_available": "A new version is available.",
|
|
2164
|
+
"refresh": "Refresh"
|
|
2165
|
+
},
|
|
2166
|
+
"quickopen": {
|
|
2167
|
+
"__mt": true,
|
|
2168
|
+
"title": "Quick Open",
|
|
2169
|
+
"placeholder": "Search notes...",
|
|
2170
|
+
"no_results": "No notes found",
|
|
2171
|
+
"hint_enter": "↵ Open",
|
|
2172
|
+
"hint_cmd_enter": "⌘↵ Open in new tab"
|
|
2173
|
+
},
|
|
2174
|
+
"rag": {
|
|
2175
|
+
"__mt": true,
|
|
2176
|
+
"title": "AI Knowledge Search (RAG)",
|
|
2177
|
+
"mode_label": "Search Mode",
|
|
2178
|
+
"mode_disabled": "Disabled",
|
|
2179
|
+
"mode_client": "Client-side (E2E compatible)",
|
|
2180
|
+
"mode_server": "Server-side (faster, KMS required)",
|
|
2181
|
+
"index_status": "Index Status",
|
|
2182
|
+
"indexed_notes": "Indexed notes",
|
|
2183
|
+
"rebuild_index": "Rebuild Full Index",
|
|
2184
|
+
"pause_rebuild": "Pause",
|
|
2185
|
+
"rebuilding": "Rebuilding index...",
|
|
2186
|
+
"search_settings": "Search Settings",
|
|
2187
|
+
"top_k_label": "Results (top-K)",
|
|
2188
|
+
"threshold_label": "Min. similarity",
|
|
2189
|
+
"sources_label": "Sources",
|
|
2190
|
+
"sources_count": "{n} note excerpts",
|
|
2191
|
+
"jump_to_source": "Jump to note →",
|
|
2192
|
+
"no_sources": "No sources",
|
|
2193
|
+
"server_mode_warning": "Server mode lets Moraya temporarily decrypt your notes for indexing. Requires Cloud KMS.",
|
|
2194
|
+
"model_version": "Model version",
|
|
2195
|
+
"upgrade_for_cross_kb": "Upgrade to Personal to search across all your knowledge bases."
|
|
2196
|
+
},
|
|
2197
|
+
"review": {
|
|
2198
|
+
"panel_title": "리뷰",
|
|
2199
|
+
"tab_label": "리뷰",
|
|
2200
|
+
"no_reviews": "아직 리뷰가 없습니다",
|
|
2201
|
+
"no_reviews_hint": "편집기에서 텍스트를 선택하고 ⌘⇧R을 사용하여 리뷰를 추가하세요.",
|
|
2202
|
+
"not_git_bound": "Git 리포지토리에 연결되지 않았습니다",
|
|
2203
|
+
"not_git_bound_hint": "협업 리뷰를 사용하려면 지식 베이스를 Git 리포지토리에 연결하세요.",
|
|
2204
|
+
"bind_git_btn": "Git 리포지토리 연결",
|
|
2205
|
+
"open_count": "열림",
|
|
2206
|
+
"resolved_count": "해결됨",
|
|
2207
|
+
"add_review": "리뷰 추가",
|
|
2208
|
+
"reply": "답장",
|
|
2209
|
+
"resolve": "Resolve",
|
|
2210
|
+
"wontfix": "수정하지 않음",
|
|
2211
|
+
"reanchor": "재앵커",
|
|
2212
|
+
"mark_resolved": "해결됨으로 표시",
|
|
2213
|
+
"resolved": "해결됨",
|
|
2214
|
+
"wontfix_label": "수정하지 않음",
|
|
2215
|
+
"unanchored": "위치를 찾을 수 없음",
|
|
2216
|
+
"relocated": "위치가 이동됨",
|
|
2217
|
+
"verified_prompt": "마지막 확인 이후 문서가 변경되었습니다. 검토됨으로 표시하시겠습니까?",
|
|
2218
|
+
"mark_verified": "검토됨으로 표시",
|
|
2219
|
+
"lock_self": "이 파일을 편집 중입니다",
|
|
2220
|
+
"lock_other": "이 파일을 편집 중입니다",
|
|
2221
|
+
"lock_expiry": "분 남음",
|
|
2222
|
+
"view_readonly": "읽기 전용으로 보기",
|
|
2223
|
+
"force_unlock": "강제 잠금 해제",
|
|
2224
|
+
"select_text_first": "먼저 텍스트를 선택해 주세요",
|
|
2225
|
+
"source_mode_limit_hint": "리뷰는 시각적 모드에서만 사용 가능합니다",
|
|
2226
|
+
"default_comment": "",
|
|
2227
|
+
"ai_improve": "AI Improve",
|
|
2228
|
+
"ai_summary": "AI Summary",
|
|
2229
|
+
"ai_review": "AI Review",
|
|
2230
|
+
"ai_respond": "AI Suggest",
|
|
2231
|
+
"ai_in_progress": "AI is analyzing the document…",
|
|
2232
|
+
"ai_cancel": "Cancel",
|
|
2233
|
+
"ai_no_results": "AI generated no review suggestions",
|
|
2234
|
+
"ai_invalid_filtered": "{count} review(s) had invalid format and were skipped",
|
|
2235
|
+
"ai_author_badge": "AI",
|
|
2236
|
+
"ai_hint_from_tool": "AI returned reviews via tool call",
|
|
2237
|
+
"ai_hint_from_json": "AI returned reviews via JSON fallback",
|
|
2238
|
+
"ai_hint_failed": "This model does not support AI Review. Switch to Claude / GPT-4 / Gemini.",
|
|
2239
|
+
"ai_disclaimer_title": "Enable AI Review — Data Use Notice",
|
|
2240
|
+
"ai_disclaimer_body": "AI Review will send the entire current document and all review comments to your selected AI provider:",
|
|
2241
|
+
"ai_disclaimer_body_details": "Reviews may include team members' names and internal discussion. Please confirm this knowledge base is suitable for cloud processing.",
|
|
2242
|
+
"ai_disclaimer_local_hint": "Want to keep everything local? Switch to an Ollama provider — all processing happens on this machine.",
|
|
2243
|
+
"ai_disclaimer_switch_local": "Switch to local provider",
|
|
2244
|
+
"ai_disclaimer_confirm": "I understand, enable AI Review",
|
|
2245
|
+
"ai_disclaimer_dont_ask": "Don't ask again for this provider",
|
|
2246
|
+
"dimension_logic": "Logic",
|
|
2247
|
+
"dimension_expression": "Expression",
|
|
2248
|
+
"dimension_fact": "Fact",
|
|
2249
|
+
"dimension_structure": "Structure",
|
|
2250
|
+
"ai_inflight_cancelled": "AI Review cancelled because the active file changed",
|
|
2251
|
+
"ai_merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first.",
|
|
2252
|
+
"title": "Reviews",
|
|
2253
|
+
"no_open": "No open reviews.",
|
|
2254
|
+
"resolved_section": "Resolved",
|
|
2255
|
+
"add_comment": "Add a comment…",
|
|
2256
|
+
"send": "Send",
|
|
2257
|
+
"orphaned": "orphaned",
|
|
2258
|
+
"type_suggest": "Suggestion",
|
|
2259
|
+
"type_question": "Question",
|
|
2260
|
+
"type_approve": "Approved",
|
|
2261
|
+
"type_reject": "Rejected",
|
|
2262
|
+
"ai_review_unavailable": "AI Review requires Cloud KMS encryption mode.",
|
|
2263
|
+
"close": "Close"
|
|
2264
|
+
},
|
|
2265
|
+
"search": {
|
|
2266
|
+
"find_placeholder": "Find...",
|
|
2267
|
+
"replace_placeholder": "Replace with...",
|
|
2268
|
+
"no_results": "No results",
|
|
2269
|
+
"case_sensitive": "대소문자 구분",
|
|
2270
|
+
"replace": "Replace",
|
|
2271
|
+
"replace_all": "Replace All",
|
|
2272
|
+
"regex": "정규식 사용",
|
|
2273
|
+
"regex_error": "잘못된 정규식",
|
|
2274
|
+
"match_status": "{current} / {total}",
|
|
2275
|
+
"toggle_regex": "Toggle regular expression",
|
|
2276
|
+
"toggle_case": "Toggle case-sensitive",
|
|
2277
|
+
"prev": "Previous match",
|
|
2278
|
+
"next": "Next match",
|
|
2279
|
+
"open_replace": "Open replace",
|
|
2280
|
+
"close_replace": "Close replace",
|
|
2281
|
+
"close": "Close search",
|
|
2282
|
+
"invalid_regex": "Invalid regular expression"
|
|
2283
|
+
},
|
|
2284
|
+
"security": {
|
|
2285
|
+
"__mt": true,
|
|
2286
|
+
"title": "Security",
|
|
2287
|
+
"encryption_mode_label": "Encryption Mode",
|
|
2288
|
+
"mode_none": "None",
|
|
2289
|
+
"mode_e2e": "E2E Client Encryption",
|
|
2290
|
+
"mode_kms": "Cloud KMS",
|
|
2291
|
+
"setup_title": "Set Up E2E Encryption",
|
|
2292
|
+
"setup_subtitle": "Your notes will be encrypted before leaving your device. Moraya cannot read your notes.",
|
|
2293
|
+
"passphrase_label": "Passphrase",
|
|
2294
|
+
"passphrase_confirm_label": "Confirm Passphrase",
|
|
2295
|
+
"passphrase_strength_weak": "Too weak",
|
|
2296
|
+
"passphrase_strength_fair": "Fair",
|
|
2297
|
+
"passphrase_strength_strong": "Strong",
|
|
2298
|
+
"passphrase_strength_very_strong": "Very strong",
|
|
2299
|
+
"passphrase_min_length": "Minimum 12 characters",
|
|
2300
|
+
"passphrase_mismatch": "Passphrases do not match",
|
|
2301
|
+
"passphrase_too_weak": "Passphrase is too weak. Use a longer, more complex phrase.",
|
|
2302
|
+
"warning_no_recovery": "⚠️ If you forget your passphrase and lose your recovery code, your data cannot be recovered. Moraya has no backup.",
|
|
2303
|
+
"recovery_code_title": "Your Recovery Code",
|
|
2304
|
+
"recovery_code_subtitle": "Write down these 12 words. You will need them if you forget your passphrase.",
|
|
2305
|
+
"recovery_confirm_instruction": "Enter word #{n} to confirm you wrote it down:",
|
|
2306
|
+
"recovery_confirm_correct": "Correct! Enter word #{n}:",
|
|
2307
|
+
"recovery_confirm_wrong": "Wrong word. Try again.",
|
|
2308
|
+
"recovery_complete": "Recovery code confirmed.",
|
|
2309
|
+
"i_have_written_down": "I have written down my recovery code",
|
|
2310
|
+
"unlock_title": "Unlock Your Notes",
|
|
2311
|
+
"unlock_subtitle": "Enter your passphrase to decrypt your notes.",
|
|
2312
|
+
"unlock_button": "Unlock",
|
|
2313
|
+
"unlock_failed": "Wrong passphrase. Please try again.",
|
|
2314
|
+
"unlock_remember_device": "Remember this device for 7 days",
|
|
2315
|
+
"migrate_title": "Upgrade to Cloud KMS",
|
|
2316
|
+
"migrate_subtitle": "Your notes will be re-encrypted using your cloud KMS. Moraya can use your KMS to assist with AI features.",
|
|
2317
|
+
"migrate_warning": "This is a one-way migration. You cannot revert to E2E mode without exporting and re-importing all data.",
|
|
2318
|
+
"migrate_confirm": "I understand and want to proceed",
|
|
2319
|
+
"migrate_progress": "Migrating {completed}/{total} notes...",
|
|
2320
|
+
"migrate_done": "Migration complete!",
|
|
2321
|
+
"migrate_failed": "Migration failed. Your original data is unchanged.",
|
|
2322
|
+
"kms_provider_label": "KMS Provider",
|
|
2323
|
+
"kms_key_arn_label": "Key ARN / Key ID",
|
|
2324
|
+
"kms_role_arn_label": "Role ARN (for AssumeRole)",
|
|
2325
|
+
"kms_verify": "Verify KMS Connection",
|
|
2326
|
+
"kms_verified": "KMS connection verified",
|
|
2327
|
+
"kms_verify_failed": "KMS connection failed",
|
|
2328
|
+
"back": "Back",
|
|
2329
|
+
"next": "Next",
|
|
2330
|
+
"save": "Save",
|
|
2331
|
+
"cancel": "Cancel",
|
|
2332
|
+
"setup_complete": "E2E encryption enabled",
|
|
2333
|
+
"deriving_key": "Deriving encryption key...",
|
|
2334
|
+
"encrypting": "Encrypting notes...",
|
|
2335
|
+
"current_mode": "Current mode: {mode}",
|
|
2336
|
+
"last_unlock": "Last unlocked: {time}",
|
|
2337
|
+
"use_recovery_code": "Use recovery code instead",
|
|
2338
|
+
"recovery_unlock_title": "Recover Access",
|
|
2339
|
+
"recovery_unlock_subtitle": "Enter your 12-word recovery code to regain access.",
|
|
2340
|
+
"recovery_code_input": "Recovery Code (12 words, space-separated)",
|
|
2341
|
+
"recovery_unlock_button": "Recover",
|
|
2342
|
+
"set_new_passphrase": "Set New Passphrase"
|
|
2343
|
+
},
|
|
2344
|
+
"seo": {
|
|
2345
|
+
"title": "SEO 최적화",
|
|
2346
|
+
"generating": "글 분석 중...",
|
|
2347
|
+
"titles": "제목 후보",
|
|
2348
|
+
"custom_title": "사용자 지정 제목...",
|
|
2349
|
+
"excerpt": "발췌",
|
|
2350
|
+
"tags": "태그",
|
|
2351
|
+
"add_tag": "태그 추가...",
|
|
2352
|
+
"slug": "URL 슬러그",
|
|
2353
|
+
"meta_description": "메타 설명",
|
|
2354
|
+
"regenerate": "재생성",
|
|
2355
|
+
"apply": "적용",
|
|
2356
|
+
"retry": "재시도",
|
|
2357
|
+
"content_too_short": "SEO 분석을 위한 글 내용이 너무 짧습니다.",
|
|
2358
|
+
"completed": "SEO 최적화 완료",
|
|
2359
|
+
"step_description": "제목, 발췌 및 태그를 생성합니다"
|
|
2360
|
+
},
|
|
2361
|
+
"sessions": {
|
|
2362
|
+
"__mt": true,
|
|
2363
|
+
"title": "Active Sessions",
|
|
2364
|
+
"active_sessions": "Active Sessions",
|
|
2365
|
+
"anomaly_alerts": "Security Alerts",
|
|
2366
|
+
"current": "Current",
|
|
2367
|
+
"last_active": "Last active",
|
|
2368
|
+
"revoke": "Revoke",
|
|
2369
|
+
"revoking": "Revoking…",
|
|
2370
|
+
"confirm_revoke": "Revoke this session?",
|
|
2371
|
+
"yes": "Yes",
|
|
2372
|
+
"no": "Cancel",
|
|
2373
|
+
"dismiss": "Dismiss",
|
|
2374
|
+
"just_now": "Just now",
|
|
2375
|
+
"hours_ago": "h ago",
|
|
2376
|
+
"days_ago": "d ago"
|
|
2377
|
+
},
|
|
2378
|
+
"settings": {
|
|
2379
|
+
"title": "Settings",
|
|
2380
|
+
"tabs": {
|
|
2381
|
+
"general": "일반",
|
|
2382
|
+
"editor": "편집기",
|
|
2383
|
+
"appearance": "외관",
|
|
2384
|
+
"ai": "채팅",
|
|
2385
|
+
"image_ai": "이미지 AI",
|
|
2386
|
+
"mcp": "MCP",
|
|
2387
|
+
"image": "호스팅",
|
|
2388
|
+
"publish": "게시",
|
|
2389
|
+
"voice": "음성 AI",
|
|
2390
|
+
"knowledge_base": "지식 베이스",
|
|
2391
|
+
"plugins": "플러그인",
|
|
2392
|
+
"kb_sync": "KB 동기화",
|
|
2393
|
+
"picora": "Picora",
|
|
2394
|
+
"export": "내보내기",
|
|
2395
|
+
"shortcuts": "단축키"
|
|
2396
|
+
},
|
|
2397
|
+
"groups": {
|
|
2398
|
+
"general": "일반",
|
|
2399
|
+
"ai": "AI 설정",
|
|
2400
|
+
"extensions": "확장",
|
|
2401
|
+
"knowledge_base": "지식 베이스",
|
|
2402
|
+
"picora": "Picora"
|
|
2403
|
+
},
|
|
2404
|
+
"tab_desc": {
|
|
2405
|
+
"image": "이미지 업로드용 클라우드 스토리지 제공업체를 구성합니다.",
|
|
2406
|
+
"publish": "블로그, GitHub Pages, RSS 등 게시 대상을 설정합니다.",
|
|
2407
|
+
"export": "PDF 내보내기 구성 — 용지 크기, 여백, 글꼴 및 콘텐츠 토글."
|
|
2408
|
+
},
|
|
2409
|
+
"language": {
|
|
2410
|
+
"label": "언어",
|
|
2411
|
+
"system": "시스템 설정 따르기"
|
|
2412
|
+
},
|
|
2413
|
+
"theme": {
|
|
2414
|
+
"label": "테마",
|
|
2415
|
+
"system": "시스템 설정 따르기",
|
|
2416
|
+
"light": "밝은 모드",
|
|
2417
|
+
"dark": "어두운 모드"
|
|
2418
|
+
},
|
|
2419
|
+
"appearance": {
|
|
2420
|
+
"theme_section": "테마",
|
|
2421
|
+
"dark_mode_section": "다크 모드",
|
|
2422
|
+
"font_section": "글꼴",
|
|
2423
|
+
"separate_dark_theme": "다크 모드에서 별도 테마 사용",
|
|
2424
|
+
"dark_theme": "다크 모드 테마",
|
|
2425
|
+
"dark_mode_label": "외관 모드"
|
|
2426
|
+
},
|
|
2427
|
+
"font_size": {
|
|
2428
|
+
"label": "글꼴 크기"
|
|
2429
|
+
},
|
|
2430
|
+
"auto_save": {
|
|
2431
|
+
"label": "자동 저장",
|
|
2432
|
+
"interval": "자동 저장 간격"
|
|
2433
|
+
},
|
|
2434
|
+
"remember_last_folder": "마지막 열었던 폴더 기억",
|
|
2435
|
+
"show_cloud_insert_entries": "클라우드 삽입 메뉴 항목 표시",
|
|
2436
|
+
"show_cloud_insert_entries_desc": "형식 메뉴 및 우클릭 메뉴에 '클라우드 이미지/오디오/동영상 삽입' 옵션을 추가합니다.",
|
|
2437
|
+
"rules_history_count": "MORAYA.md 히스토리 버전 수",
|
|
2438
|
+
"rules_history_count_hint": "규칙 파일당 유지할 히스토리 버전 수 (기본값: 10)",
|
|
2439
|
+
"editor": {
|
|
2440
|
+
"line_width": "편집기 줄 너비",
|
|
2441
|
+
"tab_size": "탭 크기",
|
|
2442
|
+
"show_line_numbers": "소스 모드에서 줄 번호 표시"
|
|
2443
|
+
},
|
|
2444
|
+
"version": "Moraya v{version}",
|
|
2445
|
+
"permissions": {
|
|
2446
|
+
"mcp_title": "MCP 권한",
|
|
2447
|
+
"ai_title": "AI 설정",
|
|
2448
|
+
"ai_max_tokens": "최대 출력 토큰 수",
|
|
2449
|
+
"ai_max_tokens_hint": "AI가 한 번의 응답에서 생성할 수 있는 최대 토큰 수입니다. 값이 클수록 더 긴 응답과 도구 호출이 가능하지만, 비용이 더 많이 듭니다.",
|
|
2450
|
+
"ai_tool_result_max_chars": "도구 결과 최대 문자 수",
|
|
2451
|
+
"ai_tool_result_max_chars_hint": "각 MCP 도구 결과에서 보존할 최대 문자 수입니다. 값이 클수록 더 많은 세부 정보를 유지하지만, 더 많은 컨텍스트를 소비합니다.",
|
|
2452
|
+
"ai_max_tool_rounds": "최대 도구 호출 라운드",
|
|
2453
|
+
"ai_max_tool_rounds_hint": "AI가 한 번의 대화 턴에서 수행할 수 있는 최대 도구 호출 라운드 수입니다. 복잡한 다단계 작업의 경우 이 값을 늘리세요."
|
|
2454
|
+
},
|
|
2455
|
+
"voice": {
|
|
2456
|
+
"providers": "음성 인식 서비스",
|
|
2457
|
+
"add_provider": "서비스 추가",
|
|
2458
|
+
"edit_provider": "서비스 편집",
|
|
2459
|
+
"no_providers": "음성 인식 서비스가 구성되지 않았습니다.",
|
|
2460
|
+
"provider": "서비스 제공자",
|
|
2461
|
+
"api_key": "API Key",
|
|
2462
|
+
"api_key_optional": "AWS의 경우 선택 사항 (Access Key 사용)",
|
|
2463
|
+
"aws_access_key": "AWS Access Key ID",
|
|
2464
|
+
"aws_secret_key": "AWS Secret Access Key",
|
|
2465
|
+
"region": "리전",
|
|
2466
|
+
"model": "모델",
|
|
2467
|
+
"model_placeholder": "모델 이름 입력",
|
|
2468
|
+
"endpoint_id_placeholder": "추론 엔드포인트 ID 입력",
|
|
2469
|
+
"language": "언어",
|
|
2470
|
+
"lang_auto": "자동 감지",
|
|
2471
|
+
"lang_multi": "다국어",
|
|
2472
|
+
"base_url": "사용자 지정 WebSocket URL",
|
|
2473
|
+
"test_connection": "연결 테스트",
|
|
2474
|
+
"testing": "테스트 중...",
|
|
2475
|
+
"test_ok": "연결 성공",
|
|
2476
|
+
"test_failed": "연결 실패",
|
|
2477
|
+
"set_active": "기본값 설정",
|
|
2478
|
+
"active": "기본값",
|
|
2479
|
+
"custom": "사용자 지정",
|
|
2480
|
+
"storage": "저장소",
|
|
2481
|
+
"recording_backup_dir": "녹음 백업",
|
|
2482
|
+
"recording_backup_hint": "각 세션 후 전체 녹음을 WAV 파일로 저장합니다.",
|
|
2483
|
+
"voice_sync_dir": "성문 동기화 디렉터리",
|
|
2484
|
+
"voice_sync_hint": "클라우드 스토리지(예: iCloud, Dropbox)를 통해 성문 프로필을 동기화합니다. 변경 버튼으로 폴더를 선택하면 기존 프로필이 자동으로 마이그레이션됩니다.",
|
|
2485
|
+
"sync_default": "앱 데이터 (기본값)",
|
|
2486
|
+
"disabled": "비활성화됨",
|
|
2487
|
+
"migrating_profiles": "마이그레이션 중...",
|
|
2488
|
+
"migration_failed": "마이그레이션 실패",
|
|
2489
|
+
"profiles": "성문 프로필",
|
|
2490
|
+
"no_profiles": "성문 프로필이 없습니다. 전사 세션 후 자동으로 생성됩니다.",
|
|
2491
|
+
"naming": {
|
|
2492
|
+
"male": "남성{n}",
|
|
2493
|
+
"female": "여성{n}",
|
|
2494
|
+
"bystander": "방관자{n}",
|
|
2495
|
+
"speaker": "화자{n}"
|
|
2496
|
+
},
|
|
2497
|
+
"providers_hint": "음성 전사를 위한 음성 제공자 구성."
|
|
2498
|
+
},
|
|
2499
|
+
"image_host": {
|
|
2500
|
+
"picora": {
|
|
2501
|
+
"moved_hint": "Picora 설정은 이제 Picora 탭에 있습니다.",
|
|
2502
|
+
"jump_to_tab": "Picora 탭으로 이동"
|
|
2503
|
+
},
|
|
2504
|
+
"subtitle_suffix": "Picora 전용 옵션은 Picora 탭에 있습니다."
|
|
2505
|
+
},
|
|
2506
|
+
"picora": {
|
|
2507
|
+
"account": {
|
|
2508
|
+
"title": "Picora 계정",
|
|
2509
|
+
"add": "Picora 계정 추가",
|
|
2510
|
+
"add_first": "시작하기",
|
|
2511
|
+
"empty": "아직 Picora 계정이 없습니다. 클라우드 미디어 삽입과 KB 동기화를 활성화하려면 계정을 연결하세요.",
|
|
2512
|
+
"set_default": "기본으로 설정",
|
|
2513
|
+
"test": "연결 테스트",
|
|
2514
|
+
"edit": "편집",
|
|
2515
|
+
"remove": "제거",
|
|
2516
|
+
"quota": "할당량",
|
|
2517
|
+
"unknown_email": "(이메일 없음)",
|
|
2518
|
+
"no_endpoint": "(endpoint 없음)",
|
|
2519
|
+
"in_use": "{n}곳에서 사용 중",
|
|
2520
|
+
"quota_loading": "할당량 로딩 중…",
|
|
2521
|
+
"quota_unavailable": "할당량 사용 불가 — ↻로 재시도",
|
|
2522
|
+
"data_point_na": "데이터 포인트 사용 불가",
|
|
2523
|
+
"needs_picora_v017": "Picora v0.17.1+ 필요",
|
|
2524
|
+
"not_activated": "아직 Picora 플랜을 활성화하지 않았습니다.",
|
|
2525
|
+
"activate": "플랜 활성화",
|
|
2526
|
+
"remove_confirm_title": "Picora 계정 제거",
|
|
2527
|
+
"remove_confirm_body": "제거하려는 항목: {email}",
|
|
2528
|
+
"cascade_default": "이 계정은 기본 Picora 계정입니다 — 새 기본값이 자동으로 선택됩니다.",
|
|
2529
|
+
"cascade_image_host": "이 계정은 기본 이미지 호스트입니다 — 기본값이 지워집니다.",
|
|
2530
|
+
"cascade_kb_bindings": "{n}개 지식 베이스의 바인딩이 해제됩니다. 클라우드 데이터는 Picora에 보존됩니다.",
|
|
2531
|
+
"cloud_data_preserved": "로컬 구성만 제거됩니다. Picora의 클라우드 데이터는 보존됩니다.",
|
|
2532
|
+
"confirm_remove": "제거"
|
|
2533
|
+
},
|
|
2534
|
+
"edit_title": "Picora 계정 편집",
|
|
2535
|
+
"kb_sync": {
|
|
2536
|
+
"title": "지식 베이스 동기화",
|
|
2537
|
+
"open_manager": "KB 동기화 설정 열기",
|
|
2538
|
+
"empty": "아직 지식 베이스가 없습니다.",
|
|
2539
|
+
"missing_target": "(대상 누락)",
|
|
2540
|
+
"never": "동기화한 적 없음",
|
|
2541
|
+
"error": "동기화 오류",
|
|
2542
|
+
"unbound_label": "Picora에 바인딩되지 않음:",
|
|
2543
|
+
"bind_action": "기본값에 바인딩"
|
|
2544
|
+
},
|
|
2545
|
+
"resources": {
|
|
2546
|
+
"title": "클라우드 리소스 브라우저",
|
|
2547
|
+
"tabs": {
|
|
2548
|
+
"image": "이미지",
|
|
2549
|
+
"audio": "오디오",
|
|
2550
|
+
"video": "비디오"
|
|
2551
|
+
}
|
|
2552
|
+
},
|
|
2553
|
+
"advanced": {
|
|
2554
|
+
"title": "고급",
|
|
2555
|
+
"img_domain": "기본 삽입 도메인",
|
|
2556
|
+
"img_domain_hint": "Picora 이미지 삽입 시 공개 URL 접두사로 사용됩니다.",
|
|
2557
|
+
"rewrite_base64": "업로드 시 문서 내 base64 이미지를 Picora CDN으로 자동 재작성",
|
|
2558
|
+
"sidebar_pin": "메인 사이드바에 Picora 바로가기 표시",
|
|
2559
|
+
"debug": "디버그 로깅 활성화"
|
|
2560
|
+
},
|
|
2561
|
+
"banner": "새 Picora 탭이 도착했습니다. 모든 Picora 설정이 여기로 이동되었습니다; 이미지 호스팅 탭도 계속 사용 가능합니다.",
|
|
2562
|
+
"banner_dismiss": "알겠어요",
|
|
2563
|
+
"welcome": {
|
|
2564
|
+
"title": "Picora에 오신 것을 환영합니다 — 미디어의 한 집",
|
|
2565
|
+
"body": "이미지, 오디오, 비디오, Markdown 문서를 자신의 Picora 계정에 호스팅하세요. 기기 간 지식 베이스를 동기화하고 한 번의 클릭으로 에디터에서 클라우드 자산을 삽입하세요.",
|
|
2566
|
+
"one_click": "원클릭 가져오기 (권장)",
|
|
2567
|
+
"manual": "수동으로 추가",
|
|
2568
|
+
"or": "또는",
|
|
2569
|
+
"register": "계정이 없으신가요? Picora 등록"
|
|
2570
|
+
},
|
|
2571
|
+
"quota": {
|
|
2572
|
+
"images": "이미지",
|
|
2573
|
+
"docs": "문서",
|
|
2574
|
+
"audio": "오디오",
|
|
2575
|
+
"videos": "비디오",
|
|
2576
|
+
"kbs": "KB"
|
|
2577
|
+
},
|
|
2578
|
+
"plan": {
|
|
2579
|
+
"none": "비활성",
|
|
2580
|
+
"trial": "체험",
|
|
2581
|
+
"pro": "Pro",
|
|
2582
|
+
"pro_plus": "Pro+"
|
|
2583
|
+
}
|
|
2584
|
+
},
|
|
2585
|
+
"export": {
|
|
2586
|
+
"paper_size": "용지 크기",
|
|
2587
|
+
"paper_a4": "A4",
|
|
2588
|
+
"paper_letter": "Letter",
|
|
2589
|
+
"paper_legal": "Legal",
|
|
2590
|
+
"paper_a3": "A3",
|
|
2591
|
+
"paper_a5": "A5",
|
|
2592
|
+
"orientation": "방향",
|
|
2593
|
+
"orientation_portrait": "세로",
|
|
2594
|
+
"orientation_landscape": "가로",
|
|
2595
|
+
"margins": "여백 (mm)",
|
|
2596
|
+
"margins_top": "위",
|
|
2597
|
+
"margins_right": "오른쪽",
|
|
2598
|
+
"margins_bottom": "아래",
|
|
2599
|
+
"margins_left": "왼쪽",
|
|
2600
|
+
"header_footer": "머리글 및 바닥글",
|
|
2601
|
+
"header_enabled": "머리글 사용",
|
|
2602
|
+
"footer_enabled": "바닥글 사용",
|
|
2603
|
+
"template_hint": "자리표시자: {title} {page} {total} {date}",
|
|
2604
|
+
"typography": "타이포그래피",
|
|
2605
|
+
"font_family": "글꼴",
|
|
2606
|
+
"font_family_placeholder": "시스템 기본값",
|
|
2607
|
+
"font_size": "글꼴 크기",
|
|
2608
|
+
"content": "콘텐츠",
|
|
2609
|
+
"enable_highlight": "코드 구문 강조",
|
|
2610
|
+
"enable_math": "수식 (KaTeX)",
|
|
2611
|
+
"enable_mermaid": "Mermaid 다이어그램",
|
|
2612
|
+
"advanced": "고급",
|
|
2613
|
+
"auto_fallback": "실패 시 호환 모드로 자동 폴백",
|
|
2614
|
+
"auto_fallback_hint": "네이티브 인쇄 경로가 실패하면 canvas 기반 경로로 재시도합니다. 비활성화하면 오류를 표시하여 사용자가 수동으로 재시도하게 합니다."
|
|
2615
|
+
},
|
|
2616
|
+
"account": "Account",
|
|
2617
|
+
"devices": "Devices",
|
|
2618
|
+
"about": "About",
|
|
2619
|
+
"select_section": "Select a settings section from the left.",
|
|
2620
|
+
"ai": {
|
|
2621
|
+
"title": "AI",
|
|
2622
|
+
"cloud_providers": "Cloud Providers",
|
|
2623
|
+
"local_models": "On-device Models",
|
|
2624
|
+
"add": "Add",
|
|
2625
|
+
"edit": "Edit provider",
|
|
2626
|
+
"delete": "Delete",
|
|
2627
|
+
"delete_confirm": "Delete this provider configuration?",
|
|
2628
|
+
"provider_deleted": "Deleted “{label}”",
|
|
2629
|
+
"provider_restored": "Provider restored",
|
|
2630
|
+
"save": "Save",
|
|
2631
|
+
"test": "Test",
|
|
2632
|
+
"testing": "Testing…",
|
|
2633
|
+
"test_ok": "Connection OK",
|
|
2634
|
+
"test_auth_error": "Auth failed — check API key",
|
|
2635
|
+
"test_network_error": "Network error",
|
|
2636
|
+
"test_rate_limited": "Rate limited — try later",
|
|
2637
|
+
"test_unsupported": "Unsupported response",
|
|
2638
|
+
"test_not_configured": "Not configured",
|
|
2639
|
+
"provider": "Provider",
|
|
2640
|
+
"label": "Label",
|
|
2641
|
+
"api_key": "API Key",
|
|
2642
|
+
"api_key_hint": "Stored only on this device.",
|
|
2643
|
+
"base_url": "Base URL (optional)",
|
|
2644
|
+
"base_url_hint": "Custom OpenAI-compatible endpoint, e.g. Ollama: http://192.168.1.10:11434/v1",
|
|
2645
|
+
"default_model": "Default model",
|
|
2646
|
+
"active": "Active",
|
|
2647
|
+
"set_active": "Use",
|
|
2648
|
+
"status_ready": "Ready",
|
|
2649
|
+
"status_not_configured": "Not configured",
|
|
2650
|
+
"empty_cloud": "No cloud providers configured. Tap “Add” to set up OpenAI, Claude, Gemini, DeepSeek, or any OpenAI-compatible endpoint.",
|
|
2651
|
+
"cloud_hint": "Your API keys are stored locally and sent directly to the provider — Moraya never sees them.",
|
|
2652
|
+
"rag": {
|
|
2653
|
+
"title": "History Reference (RAG)",
|
|
2654
|
+
"enabled": "Reference past conversations",
|
|
2655
|
+
"topk": "Snippets per send",
|
|
2656
|
+
"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)."
|
|
2657
|
+
},
|
|
2658
|
+
"local": {
|
|
2659
|
+
"free_space": "Device free space",
|
|
2660
|
+
"unknown": "Unknown",
|
|
2661
|
+
"estimate_hint": "Estimated from browser quota.",
|
|
2662
|
+
"native_probe_failed": "Could not read native device free space; showing browser estimate.",
|
|
2663
|
+
"browser_only_hint": "On-device models are available only inside the Moraya iOS / Android app.",
|
|
2664
|
+
"browser_only_footer": "Open this page inside the Moraya mobile app to download and run on-device models.",
|
|
2665
|
+
"mobile_only": "On-device models are only available in the Moraya iOS / Android app.",
|
|
2666
|
+
"download": "Download",
|
|
2667
|
+
"cancel": "Cancel",
|
|
2668
|
+
"use": "Use",
|
|
2669
|
+
"delete": "Delete",
|
|
2670
|
+
"delete_confirm": "Delete {name} from this device?",
|
|
2671
|
+
"delete_failed": "Delete failed: {err}",
|
|
2672
|
+
"download_failed": "Download failed: {err}",
|
|
2673
|
+
"now_active": "{name} is now your active AI model.",
|
|
2674
|
+
"installed": "Installed",
|
|
2675
|
+
"too_big": "Too large",
|
|
2676
|
+
"fit_warn_inline": "This download will use more than 70% of your free space.",
|
|
2677
|
+
"fit_warn": "This model ({size}) will use over 70% of your free space and may slow iOS. Continue?",
|
|
2678
|
+
"fit_block": "Not enough free space for this model ({size}).",
|
|
2679
|
+
"engine_pending_title": "Inference engine pending Xcode setup",
|
|
2680
|
+
"engine_pending_text": "Models can be downloaded today. To run them, link MLX-Swift via Xcode → File → Add 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.",
|
|
2681
|
+
"wifi_only": "Wi-Fi only downloads",
|
|
2682
|
+
"on_wifi": "Connected via Wi-Fi.",
|
|
2683
|
+
"on_cellular_blocked": "On cellular — downloads paused. Toggle off to allow.",
|
|
2684
|
+
"on_cellular_ok": "On cellular — downloads allowed.",
|
|
2685
|
+
"offline": "No network connection.",
|
|
2686
|
+
"cellular_blocked": "Downloads are blocked on cellular. Connect to Wi-Fi or turn off “Wi-Fi only”.",
|
|
2687
|
+
"update": "Update",
|
|
2688
|
+
"update_confirm": "Update {name}? The current copy will be deleted and the latest version downloaded."
|
|
2689
|
+
},
|
|
2690
|
+
"custom_templates": "Custom AI Templates",
|
|
2691
|
+
"empty_templates": "No custom templates yet. Tap “Add” to create a reusable system prompt.",
|
|
2692
|
+
"templates_hint": "Your templates appear in the AI tab’s empty-state quick actions alongside the built-ins.",
|
|
2693
|
+
"custom_workflows": "Custom AI Workflows",
|
|
2694
|
+
"empty_workflows": "No custom workflows yet. Tap “Add” to chain multiple AI steps.",
|
|
2695
|
+
"workflows_hint": "Workflows run their steps sequentially, feeding each step’s output into the next.",
|
|
2696
|
+
"wf": {
|
|
2697
|
+
"add": "New workflow",
|
|
2698
|
+
"edit": "Edit workflow",
|
|
2699
|
+
"name_placeholder": "e.g. Translate then bullet-summarize",
|
|
2700
|
+
"desc_placeholder": "Shown under the tile in the AI tab",
|
|
2701
|
+
"step_label_placeholder": "Step label (e.g. “Translate”)",
|
|
2702
|
+
"step_system_placeholder": "System prompt for this step",
|
|
2703
|
+
"input_tpl_hint": "Use {prev} for the previous step's output and {input} for the user's first message.",
|
|
2704
|
+
"add_step": "Add step",
|
|
2705
|
+
"remove_step": "Remove step",
|
|
2706
|
+
"required_name": "Workflow needs a name.",
|
|
2707
|
+
"required_steps": "Workflow needs at least one step with a system prompt.",
|
|
2708
|
+
"delete_confirm": "Delete this workflow?",
|
|
2709
|
+
"deleted": "Deleted “{name}”",
|
|
2710
|
+
"restored": "Workflow restored"
|
|
2711
|
+
},
|
|
2712
|
+
"tpl": {
|
|
2713
|
+
"add": "New template",
|
|
2714
|
+
"edit": "Edit template",
|
|
2715
|
+
"icon": "Icon",
|
|
2716
|
+
"name": "Name",
|
|
2717
|
+
"name_placeholder": "e.g. Code reviewer",
|
|
2718
|
+
"desc": "Short description",
|
|
2719
|
+
"desc_placeholder": "Shown under the tile",
|
|
2720
|
+
"system_prompt": "System prompt",
|
|
2721
|
+
"system_prompt_placeholder": "Behavior guidance the model receives at the start of every conversation using this template.",
|
|
2722
|
+
"requires_image": "Open image picker on tap",
|
|
2723
|
+
"requires_doc": "Auto-mention the open doc",
|
|
2724
|
+
"auto_insert": "Auto-open “Insert into note” when finished",
|
|
2725
|
+
"save": "Save",
|
|
2726
|
+
"delete": "Delete",
|
|
2727
|
+
"delete_confirm": "Delete this template?",
|
|
2728
|
+
"deleted": "Deleted “{name}”",
|
|
2729
|
+
"restored": "Template restored",
|
|
2730
|
+
"required_fields": "Name and system prompt are required.",
|
|
2731
|
+
"import": "Import",
|
|
2732
|
+
"export": "Export",
|
|
2733
|
+
"import_merge_confirm": "Import {n} template(s) and append to your library?",
|
|
2734
|
+
"import_empty": "The file contains no templates.",
|
|
2735
|
+
"import_failed": "Import failed: {err}"
|
|
2736
|
+
},
|
|
2737
|
+
"usage": {
|
|
2738
|
+
"title": "AI Usage",
|
|
2739
|
+
"loading": "Reading conversations…",
|
|
2740
|
+
"empty": "No AI calls this month yet — usage shows up after your first reply.",
|
|
2741
|
+
"tokens": "Tokens",
|
|
2742
|
+
"conversations": "Conversations",
|
|
2743
|
+
"cost": "Cost",
|
|
2744
|
+
"by_model": "By model",
|
|
2745
|
+
"history": "Previous months"
|
|
2746
|
+
},
|
|
2747
|
+
"budget": {
|
|
2748
|
+
"title": "Monthly Budget",
|
|
2749
|
+
"edit": "Edit",
|
|
2750
|
+
"done": "Done",
|
|
2751
|
+
"no_limit": "No monthly limit set.",
|
|
2752
|
+
"usd_limit": "USD limit / month",
|
|
2753
|
+
"cny_limit": "CNY limit / month",
|
|
2754
|
+
"alert_threshold": "Warn at (0–1)",
|
|
2755
|
+
"hint": "Setting either currency to 0 disables that cap. Warn threshold 0 disables warnings."
|
|
2756
|
+
}
|
|
2757
|
+
},
|
|
2758
|
+
"mcp": "MCP servers",
|
|
2759
|
+
"image_gen": {
|
|
2760
|
+
"title": "Image generation",
|
|
2761
|
+
"providers": "Providers",
|
|
2762
|
+
"add": "Add",
|
|
2763
|
+
"edit": "Edit image provider",
|
|
2764
|
+
"delete": "Delete",
|
|
2765
|
+
"save": "Save",
|
|
2766
|
+
"provider": "Provider",
|
|
2767
|
+
"label": "Label",
|
|
2768
|
+
"api_key": "API Key",
|
|
2769
|
+
"api_key_hint": "Stored only on this device. BYO key — never sent to Moraya servers.",
|
|
2770
|
+
"base_url": "Base URL (optional)",
|
|
2771
|
+
"base_url_hint": "Override for OpenAI-compatible image endpoints (Together AI, Cloudflare AI Gateway, on-prem proxies).",
|
|
2772
|
+
"default_model": "Default model",
|
|
2773
|
+
"active": "Active",
|
|
2774
|
+
"set_active": "Use",
|
|
2775
|
+
"status_ready": "Ready",
|
|
2776
|
+
"status_no_key": "No API key",
|
|
2777
|
+
"empty": "No image providers configured. Tap “Add” to set up OpenAI DALL-E or Doubao Seedream.",
|
|
2778
|
+
"hint": "Image-gen providers power workflow `ai.image` nodes and the upcoming Compose Article flow. Configure at least one to enable cover-image generation.",
|
|
2779
|
+
"style": {
|
|
2780
|
+
"section": "Style presets",
|
|
2781
|
+
"add": "Add",
|
|
2782
|
+
"edit": "Edit style preset",
|
|
2783
|
+
"delete": "Delete",
|
|
2784
|
+
"save": "Save",
|
|
2785
|
+
"label": "Label",
|
|
2786
|
+
"label_placeholder": "e.g. Moody noir",
|
|
2787
|
+
"suffix": "Style suffix",
|
|
2788
|
+
"suffix_placeholder": "Appended to “Cover illustration for: <title>. ”",
|
|
2789
|
+
"suffix_hint": "Describe lighting, palette, mood, aspect ratio — anything the model should remember for this style.",
|
|
2790
|
+
"hint": "These presets apply when you tap one in the Compose Cover step. Built-in presets stay available even after you edit them.",
|
|
2791
|
+
"builtin": "Built-in",
|
|
2792
|
+
"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)."
|
|
2793
|
+
}
|
|
2794
|
+
},
|
|
2795
|
+
"publish": {
|
|
2796
|
+
"title": "Publish targets",
|
|
2797
|
+
"section": "Targets",
|
|
2798
|
+
"add": "Add",
|
|
2799
|
+
"edit": "Edit publish target",
|
|
2800
|
+
"delete": "Delete",
|
|
2801
|
+
"save": "Save",
|
|
2802
|
+
"icon": "Icon",
|
|
2803
|
+
"label": "Label",
|
|
2804
|
+
"label_placeholder": "WeChat 公众号 (主号)",
|
|
2805
|
+
"mcp_tool": "MCP tool",
|
|
2806
|
+
"mcp_tool_hint": "Bare name (`publish`) or namespaced (`mcp.<server-id>.<tool>`). Configure the MCP server itself in Settings → MCP.",
|
|
2807
|
+
"arg_template": "Argument template (JSON)",
|
|
2808
|
+
"arg_template_hint": "Use {title} {body} {topic} {coverKey} {coverPrompt} placeholders. Strings are JSON-escaped before substitution.",
|
|
2809
|
+
"empty": "No publish targets configured. Tap “Add” to wire a target to an MCP tool.",
|
|
2810
|
+
"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."
|
|
2811
|
+
},
|
|
2812
|
+
"voiceai": {
|
|
2813
|
+
"title": "Voice AI",
|
|
2814
|
+
"engine": "Voice engine",
|
|
2815
|
+
"engine_local": "Local (on-device)",
|
|
2816
|
+
"engine_local_desc": "Speech recognition and read-aloud run entirely on your device — no network, no API keys.",
|
|
2817
|
+
"recommended": "Recommended",
|
|
2818
|
+
"external_soon": "External cloud voice — coming soon.",
|
|
2819
|
+
"unavailable": "On-device voice isn't available here — it requires the iOS app.",
|
|
2820
|
+
"stt_section": "Speech input",
|
|
2821
|
+
"stt_locale": "Recognition language",
|
|
2822
|
+
"stt_locale_device": "Follow device",
|
|
2823
|
+
"tts_section": "Read aloud",
|
|
2824
|
+
"auto_speak": "Auto-read AI replies",
|
|
2825
|
+
"voice_label": "Voice",
|
|
2826
|
+
"voice_default": "System default",
|
|
2827
|
+
"enhanced": "Enhanced",
|
|
2828
|
+
"rate": "Speed",
|
|
2829
|
+
"test": "Test voice",
|
|
2830
|
+
"test_sample": "Hello, I'm Moraya's on-device voice assistant."
|
|
2831
|
+
}
|
|
2832
|
+
},
|
|
2833
|
+
"shortcuts": {
|
|
2834
|
+
"title": "Keyboard Shortcuts",
|
|
2835
|
+
"intro": "All keyboard shortcuts in Moraya. Entries marked 🔒 are managed by the native menu and will become user-configurable in a later version.",
|
|
2836
|
+
"ai_chat_behavior": {
|
|
2837
|
+
"title": "AI Chat — Enter Key Behavior",
|
|
2838
|
+
"intro": "Choose how the Enter key behaves in the AI chat input.",
|
|
2839
|
+
"sends_action": "sends message",
|
|
2840
|
+
"newline_action": "newline",
|
|
2841
|
+
"mod_enter_send": {
|
|
2842
|
+
"label": "Cmd/Ctrl + Enter로 전송"
|
|
2843
|
+
},
|
|
2844
|
+
"enter_send": {
|
|
2845
|
+
"label": "Enter sends"
|
|
2846
|
+
},
|
|
2847
|
+
"default_badge": "기본"
|
|
2848
|
+
},
|
|
2849
|
+
"categories": {
|
|
2850
|
+
"file": "File",
|
|
2851
|
+
"edit": "Edit",
|
|
2852
|
+
"paragraph": "Paragraph",
|
|
2853
|
+
"format": "Format",
|
|
2854
|
+
"view": "View",
|
|
2855
|
+
"ai_chat": "AI Chat",
|
|
2856
|
+
"workflow": "Workflow",
|
|
2857
|
+
"mcp": "MCP"
|
|
2858
|
+
},
|
|
2859
|
+
"actions": {
|
|
2860
|
+
"file": {
|
|
2861
|
+
"new": "New Document",
|
|
2862
|
+
"new_window": "New Window",
|
|
2863
|
+
"open": "Open File",
|
|
2864
|
+
"save": "Save",
|
|
2865
|
+
"save_as": "Save As",
|
|
2866
|
+
"export_html": "Export HTML",
|
|
2867
|
+
"export_pdf": "PDF로 내보내기",
|
|
2868
|
+
"export_image": "이미지로 내보내기",
|
|
2869
|
+
"export_doc": "Word로 내보내기"
|
|
2870
|
+
},
|
|
2871
|
+
"edit": {
|
|
2872
|
+
"undo": "Undo",
|
|
2873
|
+
"redo": "Redo",
|
|
2874
|
+
"find": "Find",
|
|
2875
|
+
"replace": "Replace"
|
|
2876
|
+
},
|
|
2877
|
+
"paragraph": {
|
|
2878
|
+
"h1": "Heading 1",
|
|
2879
|
+
"h2": "Heading 2",
|
|
2880
|
+
"h3": "Heading 3",
|
|
2881
|
+
"h4": "Heading 4",
|
|
2882
|
+
"h5": "Heading 5",
|
|
2883
|
+
"h6": "Heading 6",
|
|
2884
|
+
"code_block": "Code Block",
|
|
2885
|
+
"quote": "Block Quote"
|
|
2886
|
+
},
|
|
2887
|
+
"format": {
|
|
2888
|
+
"bold": "Bold",
|
|
2889
|
+
"italic": "Italic",
|
|
2890
|
+
"strike": "Strikethrough",
|
|
2891
|
+
"code": "Inline Code",
|
|
2892
|
+
"link": "Link",
|
|
2893
|
+
"insert_image": "Insert Image"
|
|
2894
|
+
},
|
|
2895
|
+
"view": {
|
|
2896
|
+
"toggle_mode": "Toggle Visual / Source",
|
|
2897
|
+
"toggle_split": "Toggle Split Mode",
|
|
2898
|
+
"toggle_sidebar": "Toggle Sidebar",
|
|
2899
|
+
"toggle_aipanel": "Toggle AI Panel",
|
|
2900
|
+
"toggle_outline": "Toggle Outline",
|
|
2901
|
+
"open_settings": "Open Settings",
|
|
2902
|
+
"zoom_in": "Zoom In",
|
|
2903
|
+
"zoom_out": "Zoom Out",
|
|
2904
|
+
"zoom_reset": "Reset Zoom"
|
|
2905
|
+
},
|
|
2906
|
+
"workflow": {
|
|
2907
|
+
"quick_open": "Quick Open",
|
|
2908
|
+
"command_palette": "Command Palette"
|
|
2909
|
+
},
|
|
2910
|
+
"ai_chat": {
|
|
2911
|
+
"send": "Send AI Message",
|
|
2912
|
+
"newline": "Insert Newline"
|
|
2913
|
+
}
|
|
2914
|
+
},
|
|
2915
|
+
"locked_hint": "Managed by the native menu — not customizable here yet",
|
|
2916
|
+
"locked_footnote": "🔒 indicates the shortcut is provided by the OS-native menu and is not customizable in this version.",
|
|
2917
|
+
"editor": {
|
|
2918
|
+
"prompt": "임의의 키 조합을 누르세요… (Esc로 취소)",
|
|
2919
|
+
"needs_modifier": "수정자(Cmd, Ctrl, Alt, Shift) 중 하나 이상이 필요합니다",
|
|
2920
|
+
"conflict": "다른 단축키에서 이미 사용 중",
|
|
2921
|
+
"save": "저장",
|
|
2922
|
+
"cancel": "취소",
|
|
2923
|
+
"edit_hint": "클릭하여 새 단축키 녹음",
|
|
2924
|
+
"reset_to_default": "기본값으로 재설정",
|
|
2925
|
+
"customized": "사용자 정의됨",
|
|
2926
|
+
"customized_short": "사용자 정의",
|
|
2927
|
+
"reset_conflict": "기본값이 다른 사용자 정의 단축키와 충돌합니다. 먼저 그것을 변경해 주세요.",
|
|
2928
|
+
"sync_failed": "시스템 메뉴를 업데이트할 수 없음",
|
|
2929
|
+
"sync_failed_short": "메뉴 동기화 실패",
|
|
2930
|
+
"unbound": "설정되지 않음",
|
|
2931
|
+
"reset_all": "모두 초기화",
|
|
2932
|
+
"reset_all_hint": "모든 단축키를 기본값으로 되돌리기",
|
|
2933
|
+
"reset_all_confirm": "사용자 정의된 {count}개의 단축키를 모두 기본값으로 되돌릴까요?",
|
|
2934
|
+
"reset_short": "기본값"
|
|
2935
|
+
},
|
|
2936
|
+
"edit_hint": "팁: 점선 테두리와 ✎ 아이콘이 있는 행은 키를 클릭해 다시 녹음할 수 있습니다. 🔒 표시의 단축키는 시스템 메뉴 관리이며 현재 버전에서는 사용자 정의할 수 없습니다.",
|
|
2937
|
+
"mcp": {
|
|
2938
|
+
"intro": "설치된 MCP 서버와 노출된 도구에 키보드 단축키를 바인딩합니다.",
|
|
2939
|
+
"empty": "먼저 「설정 → MCP」에서 MCP 서버를 설치하세요.",
|
|
2940
|
+
"add_tool": "MCP 도구 단축키 추가",
|
|
2941
|
+
"remove_tool": "이 MCP 도구 단축키 제거",
|
|
2942
|
+
"remove_tool_short": "제거",
|
|
2943
|
+
"remove_stale": "사용 불가 바인딩 제거",
|
|
2944
|
+
"remove_stale_short": "제거",
|
|
2945
|
+
"server_kind_short": "서버",
|
|
2946
|
+
"server_kind_hint": "MCP 서버 연결 상태를 전환합니다",
|
|
2947
|
+
"tool_kind_short": "도구",
|
|
2948
|
+
"tool_kind_hint": "AI 패널을 열고 이 도구를 사용하도록 어시스턴트에 요청합니다",
|
|
2949
|
+
"stale_short": "사용 불가",
|
|
2950
|
+
"stale_hint": "이 바인딩이 가리키는 MCP 서버 또는 도구가 없습니다",
|
|
2951
|
+
"server_gone": "MCP 서버가 더 이상 설치되어 있지 않습니다",
|
|
2952
|
+
"unavailable": "해당 MCP 도구를 사용할 수 없습니다",
|
|
2953
|
+
"toggled": {
|
|
2954
|
+
"on": "{name} 활성화됨",
|
|
2955
|
+
"off": "{name} 비활성화됨"
|
|
2956
|
+
},
|
|
2957
|
+
"dialog": {
|
|
2958
|
+
"title": "MCP 도구 단축키 추가",
|
|
2959
|
+
"server_label": "MCP 서버",
|
|
2960
|
+
"tool_label": "도구",
|
|
2961
|
+
"tool_placeholder": "도구 선택…",
|
|
2962
|
+
"no_tools_for_server": "이 서버에는 아직 도구가 없습니다. 먼저 MCP 설정에서 연결하세요.",
|
|
2963
|
+
"duplicate_error": "이 도구의 단축키가 이미 존재합니다.",
|
|
2964
|
+
"add": "추가",
|
|
2965
|
+
"cancel": "취소"
|
|
2966
|
+
}
|
|
2967
|
+
}
|
|
2968
|
+
},
|
|
2969
|
+
"sidebar": {
|
|
2970
|
+
"title": "Sidebar",
|
|
2971
|
+
"open_folder": "폴더 열기",
|
|
2972
|
+
"no_folder": "열린 폴더 없음",
|
|
2973
|
+
"create_kb": "지식 베이스 만들기",
|
|
2974
|
+
"empty_dir": "이 디렉터리에 파일이 없습니다",
|
|
2975
|
+
"kb_settings": "지식 베이스 관리",
|
|
2976
|
+
"tree_view": "트리 보기",
|
|
2977
|
+
"list_view": "목록 보기",
|
|
2978
|
+
"search": "파일 검색...",
|
|
2979
|
+
"context_menu": {
|
|
2980
|
+
"new_file": "새 파일",
|
|
2981
|
+
"new_folder": "새 폴더",
|
|
2982
|
+
"search_files": "검색",
|
|
2983
|
+
"refresh": "새로고침",
|
|
2984
|
+
"rename": "이름 변경",
|
|
2985
|
+
"duplicate": "사본 만들기",
|
|
2986
|
+
"delete": "삭제",
|
|
2987
|
+
"copy_path": "경로 복사",
|
|
2988
|
+
"reveal_in_finder": "Finder에서 보기",
|
|
2989
|
+
"reveal_in_explorer": "탐색기에서 보기",
|
|
2990
|
+
"history_versions": "히스토리 버전"
|
|
2991
|
+
},
|
|
2992
|
+
"history": {
|
|
2993
|
+
"title": "버전 기록",
|
|
2994
|
+
"empty": "저장된 버전 없음",
|
|
2995
|
+
"restore": "복원",
|
|
2996
|
+
"restore_confirm": "이 버전으로 복원하시겠습니까? 현재 MORAYA.md 내용이 대체됩니다."
|
|
2997
|
+
},
|
|
2998
|
+
"new_file_prompt": "파일 이름을 입력하세요",
|
|
2999
|
+
"new_folder_prompt": "폴더 이름을 입력하세요",
|
|
3000
|
+
"rename_prompt": "새 이름을 입력하세요",
|
|
3001
|
+
"reserved_dir_title": "예약된 이름",
|
|
3002
|
+
"reserved_dir_name": "\"images\"는 예약된 디렉토리 이름입니다. 다른 이름을 선택하세요.",
|
|
3003
|
+
"delete_confirm": "\"{name}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
|
3004
|
+
"views": "Sidebar views",
|
|
3005
|
+
"knowledge_bases": "Knowledge Bases",
|
|
3006
|
+
"explorer": "Files",
|
|
3007
|
+
"kb_list": "Knowledge base list",
|
|
3008
|
+
"tag_view": "Tags",
|
|
3009
|
+
"open": "Open sidebar",
|
|
3010
|
+
"close": "Close sidebar",
|
|
3011
|
+
"local_workspace": "Local"
|
|
3012
|
+
},
|
|
3013
|
+
"sso": {
|
|
3014
|
+
"__mt": true,
|
|
3015
|
+
"title": "Single Sign-On",
|
|
3016
|
+
"description": "Configure SSO to let team members authenticate via your identity provider.",
|
|
3017
|
+
"enable_sso": "Enable SSO",
|
|
3018
|
+
"require_sso": "Require SSO for all members",
|
|
3019
|
+
"oidc": "OIDC / OAuth 2.0",
|
|
3020
|
+
"saml": "SAML 2.0",
|
|
3021
|
+
"provider": "Identity Provider",
|
|
3022
|
+
"custom_provider": "Custom",
|
|
3023
|
+
"issuer": "Issuer URL",
|
|
3024
|
+
"client_id": "Client ID",
|
|
3025
|
+
"client_secret": "Client Secret",
|
|
3026
|
+
"scopes": "Scopes",
|
|
3027
|
+
"idp_metadata_url": "IdP Metadata URL",
|
|
3028
|
+
"sp_entity_id": "SP Entity ID",
|
|
3029
|
+
"sp_acs_url": "ACS URL",
|
|
3030
|
+
"signing_cert": "Signing Certificate",
|
|
3031
|
+
"save": "Save SSO Configuration",
|
|
3032
|
+
"saved_success": "SSO configuration saved."
|
|
3033
|
+
},
|
|
3034
|
+
"stale_dmg": {
|
|
3035
|
+
"title": "오래된 디스크 이미지 정리",
|
|
3036
|
+
"body": "오래된 Moraya 디스크 이미지가 아직 마운트되어 있습니다. 그대로 두면 \"다음으로 열기\" 메뉴에 여러 버전이 표시됩니다. 지금 꺼낼까요?",
|
|
3037
|
+
"eject_all": "모두 꺼내기",
|
|
3038
|
+
"skip": "나중에",
|
|
3039
|
+
"partial_failure": "일부 디스크 이미지를 꺼낼 수 없습니다:"
|
|
3040
|
+
},
|
|
3041
|
+
"statusbar": {
|
|
3042
|
+
"words": "단어 수",
|
|
3043
|
+
"characters": "문자 수",
|
|
3044
|
+
"format": "Markdown",
|
|
3045
|
+
"source_mode": "소스",
|
|
3046
|
+
"visual_mode": "비주얼",
|
|
3047
|
+
"split_mode": "분할",
|
|
3048
|
+
"publish_workflow": "AI 워크플로",
|
|
3049
|
+
"ai_tooltip": "AI"
|
|
3050
|
+
},
|
|
3051
|
+
"storage": {
|
|
3052
|
+
"__mt": true,
|
|
3053
|
+
"title": "Storage",
|
|
3054
|
+
"connected_providers": "Connected Providers",
|
|
3055
|
+
"connect_provider": "Connect Provider",
|
|
3056
|
+
"primary": "Primary",
|
|
3057
|
+
"set_primary": "Set as Primary",
|
|
3058
|
+
"remove": "Remove",
|
|
3059
|
+
"edit": "Edit",
|
|
3060
|
+
"verify": "Verify Connection",
|
|
3061
|
+
"verifying": "Verifying...",
|
|
3062
|
+
"verify_success": "Connection verified",
|
|
3063
|
+
"verify_failed": "Verification failed",
|
|
3064
|
+
"no_providers": "No storage providers connected.",
|
|
3065
|
+
"connect_prompt": "Connect your own cloud storage to keep full control of your data.",
|
|
3066
|
+
"picora_default": "Picora is your storage provider (Connect plan)",
|
|
3067
|
+
"upgrade_for_byoc": "Upgrade to Personal to connect your own storage.",
|
|
3068
|
+
"step_choose": "Choose Provider",
|
|
3069
|
+
"step_setup": "Setup Script",
|
|
3070
|
+
"step_credentials": "Enter Credentials",
|
|
3071
|
+
"step_verify": "Verify",
|
|
3072
|
+
"step_name": "Name & Save",
|
|
3073
|
+
"provider_label": "Provider",
|
|
3074
|
+
"bucket_label": "Bucket Name",
|
|
3075
|
+
"region_label": "Region",
|
|
3076
|
+
"access_key_label": "Access Key ID",
|
|
3077
|
+
"secret_key_label": "Secret Access Key",
|
|
3078
|
+
"role_arn_label": "Role ARN (for STS)",
|
|
3079
|
+
"account_id_label": "Account ID",
|
|
3080
|
+
"key_id_label": "Key ID",
|
|
3081
|
+
"application_key_label": "Application Key",
|
|
3082
|
+
"binding_label": "Display Name",
|
|
3083
|
+
"copy_script": "Copy Script",
|
|
3084
|
+
"copy_policy": "Copy Policy JSON",
|
|
3085
|
+
"copied": "Copied!",
|
|
3086
|
+
"back": "Back",
|
|
3087
|
+
"next": "Next",
|
|
3088
|
+
"save": "Save",
|
|
3089
|
+
"health_ok": "Healthy",
|
|
3090
|
+
"health_degraded": "Degraded",
|
|
3091
|
+
"health_failed": "Failed",
|
|
3092
|
+
"health_unknown": "Unknown",
|
|
3093
|
+
"access_denied": "Access denied.",
|
|
3094
|
+
"bucket_not_found": "Bucket not found.",
|
|
3095
|
+
"bucket_exists": "Bucket already exists.",
|
|
3096
|
+
"clock_skew": "System clock is out of sync. Please check your date/time settings.",
|
|
3097
|
+
"b2_no_sts_warning": "Backblaze B2 does not support STS. Credentials are stored in session only. Enable E2E encryption (v0.43) for better security.",
|
|
3098
|
+
"r2_token_info": "Create an API Token in Cloudflare Dashboard with R2 Read/Write permissions for this bucket."
|
|
3099
|
+
},
|
|
3100
|
+
"table": {
|
|
3101
|
+
"insert_row_above": "위에 행 삽입",
|
|
3102
|
+
"insert_row_below": "아래에 행 삽입",
|
|
3103
|
+
"delete_row": "행 삭제",
|
|
3104
|
+
"insert_col_left": "왼쪽에 열 삽입",
|
|
3105
|
+
"insert_col_right": "오른쪽에 열 삽입",
|
|
3106
|
+
"delete_col": "열 삭제",
|
|
3107
|
+
"align_left": "왼쪽 정렬",
|
|
3108
|
+
"align_center": "가운데 정렬",
|
|
3109
|
+
"align_right": "오른쪽 정렬",
|
|
3110
|
+
"copy_table": "표 복사",
|
|
3111
|
+
"format_table_source": "표 소스 포맷",
|
|
3112
|
+
"delete_table": "표 삭제",
|
|
3113
|
+
"copied": "표가 복사되었습니다",
|
|
3114
|
+
"formatted_copied": "포맷된 표가 복사되었습니다"
|
|
3115
|
+
},
|
|
3116
|
+
"tabs": {
|
|
3117
|
+
"external_change_title": "파일이 외부에서 변경됨",
|
|
3118
|
+
"external_change_msg": "\"{fileName}\"이(가) Moraya 외부에서 수정되었습니다.",
|
|
3119
|
+
"keep_local": "로컬 변경사항 유지",
|
|
3120
|
+
"load_from_disk": "디스크에서 로드",
|
|
3121
|
+
"unsaved_title": "저장되지 않은 변경사항",
|
|
3122
|
+
"unsaved_msg": "\"{fileName}\"에 저장되지 않은 변경사항이 있습니다.",
|
|
3123
|
+
"save": "저장",
|
|
3124
|
+
"discard": "삭제",
|
|
3125
|
+
"new_tab": "New Tab",
|
|
3126
|
+
"close": "Close Tab",
|
|
3127
|
+
"close_others": "Close Other Tabs",
|
|
3128
|
+
"close_to_right": "Close Tabs to the Right",
|
|
3129
|
+
"close_all": "Close All Tabs",
|
|
3130
|
+
"dirty_confirm": "This tab has unsaved changes. Discard and close?",
|
|
3131
|
+
"discard_close": "Discard & Close",
|
|
3132
|
+
"readonly_banner": "Another tab is editing this note. This tab is read-only.",
|
|
3133
|
+
"takeover": "Take Over",
|
|
3134
|
+
"open_count": "tabs open",
|
|
3135
|
+
"no_tabs": "No open tabs",
|
|
3136
|
+
"upgrade_tabs": "Upgrade to Personal to open multiple tabs.",
|
|
3137
|
+
"rename": "Rename",
|
|
3138
|
+
"rename_placeholder": "Document name",
|
|
3139
|
+
"dirty_dot": "Unsaved changes"
|
|
3140
|
+
},
|
|
3141
|
+
"team": {
|
|
3142
|
+
"__mt": true,
|
|
3143
|
+
"title": "Team Knowledge Bases",
|
|
3144
|
+
"create": "New Team KB",
|
|
3145
|
+
"no_kbs": "You don't have any team knowledge bases yet.",
|
|
3146
|
+
"create_first": "Create your first team KB",
|
|
3147
|
+
"members": "members",
|
|
3148
|
+
"open": "Open",
|
|
3149
|
+
"settings": "Settings",
|
|
3150
|
+
"encryption_kms": "Cloud KMS (AI Review enabled)",
|
|
3151
|
+
"encryption_e2e": "E2E Encryption (AI Review disabled)",
|
|
3152
|
+
"wizard_title": "Create Team Knowledge Base",
|
|
3153
|
+
"step_info": "Name",
|
|
3154
|
+
"step_provider": "Storage",
|
|
3155
|
+
"step_members": "Members",
|
|
3156
|
+
"step_encryption": "Encryption",
|
|
3157
|
+
"step_confirm": "Confirm",
|
|
3158
|
+
"kb_name_label": "Team KB Name",
|
|
3159
|
+
"kb_name_placeholder": "e.g. Engineering Docs",
|
|
3160
|
+
"provider_label": "Provider",
|
|
3161
|
+
"bucket_label": "Bucket",
|
|
3162
|
+
"prefix_label": "Prefix (optional)",
|
|
3163
|
+
"invite_emails_label": "Email addresses (comma-separated)",
|
|
3164
|
+
"invite_role_label": "Role",
|
|
3165
|
+
"mode_kms_name": "Cloud KMS",
|
|
3166
|
+
"mode_kms_desc": "AI Review and server-side features enabled.",
|
|
3167
|
+
"mode_e2e_name": "End-to-End",
|
|
3168
|
+
"mode_e2e_desc": "Maximum privacy. AI Review not available.",
|
|
3169
|
+
"confirm_summary": "Confirm & Create",
|
|
3170
|
+
"creating": "Creating…",
|
|
3171
|
+
"create_kb": "Create Team KB"
|
|
3172
|
+
},
|
|
3173
|
+
"templates": {
|
|
3174
|
+
"gallery": {
|
|
3175
|
+
"title": "AI 어시스턴트",
|
|
3176
|
+
"search": "템플릿 검색...",
|
|
3177
|
+
"back": "뒤로",
|
|
3178
|
+
"start": "시작"
|
|
3179
|
+
},
|
|
3180
|
+
"my_templates": {
|
|
3181
|
+
"name": "내 템플릿",
|
|
3182
|
+
"desc": "가져오거나 직접 만든 사용자 정의 템플릿"
|
|
3183
|
+
},
|
|
3184
|
+
"manage": {
|
|
3185
|
+
"title": "템플릿 관리",
|
|
3186
|
+
"import": "템플릿 가져오기",
|
|
3187
|
+
"export": "템플릿 내보내기",
|
|
3188
|
+
"manage": "템플릿 관리",
|
|
3189
|
+
"delete": "삭제",
|
|
3190
|
+
"delete_confirm": "확인하시겠습니까?",
|
|
3191
|
+
"import_success": "{count}개 템플릿 가져옴",
|
|
3192
|
+
"export_success": "템플릿이 성공적으로 내보내졌습니다",
|
|
3193
|
+
"no_custom_templates": "아직 사용자 정의 템플릿이 없습니다",
|
|
3194
|
+
"source_global": "전역",
|
|
3195
|
+
"source_kb": "지식베이스",
|
|
3196
|
+
"invalid_format": "잘못된 템플릿 형식",
|
|
3197
|
+
"select_templates": "내보낼 템플릿을 선택하세요"
|
|
3198
|
+
},
|
|
3199
|
+
"error": {
|
|
3200
|
+
"no_document": "먼저 내용을 작성해 주세요",
|
|
3201
|
+
"no_selection": "먼저 텍스트를 선택해 주세요",
|
|
3202
|
+
"no_content": "먼저 내용을 작성하거나 텍스트를 선택해 주세요"
|
|
3203
|
+
},
|
|
3204
|
+
"writing": {
|
|
3205
|
+
"name": "글쓰기",
|
|
3206
|
+
"desc": "AI 기반 글쓰기, 편집 및 요약",
|
|
3207
|
+
"free": {
|
|
3208
|
+
"name": "자유 작성",
|
|
3209
|
+
"desc": "주제를 입력하면 AI가 내용을 생성합니다",
|
|
3210
|
+
"hint": "글쓰기 주제 또는 지시사항을 입력하세요..."
|
|
3211
|
+
},
|
|
3212
|
+
"continue": {
|
|
3213
|
+
"name": "이어쓰기",
|
|
3214
|
+
"desc": "문서 끝에서 이어 작성합니다"
|
|
3215
|
+
},
|
|
3216
|
+
"outline": {
|
|
3217
|
+
"name": "개요 생성",
|
|
3218
|
+
"desc": "글 개요를 작성합니다",
|
|
3219
|
+
"hint": "글 주제를 입력하세요..."
|
|
3220
|
+
},
|
|
3221
|
+
"summarize": {
|
|
3222
|
+
"name": "요약",
|
|
3223
|
+
"desc": "선택한 텍스트 또는 전체 문서를 요약합니다"
|
|
3224
|
+
},
|
|
3225
|
+
"improve": {
|
|
3226
|
+
"name": "개선",
|
|
3227
|
+
"desc": "글쓰기 품질을 향상시킵니다"
|
|
3228
|
+
},
|
|
3229
|
+
"simplify": {
|
|
3230
|
+
"name": "간소화",
|
|
3231
|
+
"desc": "복잡한 텍스트를 간소화합니다"
|
|
3232
|
+
},
|
|
3233
|
+
"expand": {
|
|
3234
|
+
"name": "확장",
|
|
3235
|
+
"desc": "더 많은 세부 정보와 설명을 추가합니다"
|
|
3236
|
+
},
|
|
3237
|
+
"fix_grammar": {
|
|
3238
|
+
"name": "문법 수정",
|
|
3239
|
+
"desc": "문법 및 맞춤법 오류를 수정합니다"
|
|
3240
|
+
}
|
|
3241
|
+
},
|
|
3242
|
+
"translation": {
|
|
3243
|
+
"name": "번역",
|
|
3244
|
+
"desc": "다국어 번역 및 현지화",
|
|
3245
|
+
"auto": {
|
|
3246
|
+
"name": "스마트 번역",
|
|
3247
|
+
"desc": "언어를 자동 감지하여 번역합니다"
|
|
3248
|
+
},
|
|
3249
|
+
"to_target": {
|
|
3250
|
+
"name": "지정 언어 번역",
|
|
3251
|
+
"desc": "대상 언어를 선택하여 번역합니다"
|
|
3252
|
+
},
|
|
3253
|
+
"explain": {
|
|
3254
|
+
"name": "번역 및 설명",
|
|
3255
|
+
"desc": "단어별 설명과 함께 번역합니다"
|
|
3256
|
+
},
|
|
3257
|
+
"polish": {
|
|
3258
|
+
"name": "현지화",
|
|
3259
|
+
"desc": "번역을 더 자연스럽게 다듬습니다"
|
|
3260
|
+
},
|
|
3261
|
+
"compare": {
|
|
3262
|
+
"name": "다중 버전",
|
|
3263
|
+
"desc": "여러 번역 스타일을 제공합니다"
|
|
3264
|
+
},
|
|
3265
|
+
"target_lang": "대상 언어",
|
|
3266
|
+
"lang": {
|
|
3267
|
+
"en": "영어",
|
|
3268
|
+
"zh_cn": "중국어 간체",
|
|
3269
|
+
"zh_hant": "중국어 번체",
|
|
3270
|
+
"ar": "아랍어",
|
|
3271
|
+
"de": "독일어",
|
|
3272
|
+
"es": "스페인어",
|
|
3273
|
+
"fr": "프랑스어",
|
|
3274
|
+
"hi": "힌디어",
|
|
3275
|
+
"ja": "일본어",
|
|
3276
|
+
"ko": "한국어",
|
|
3277
|
+
"pt": "포르투갈어",
|
|
3278
|
+
"ru": "러시아어"
|
|
3279
|
+
}
|
|
3280
|
+
},
|
|
3281
|
+
"student": {
|
|
3282
|
+
"name": "학습 도우미",
|
|
3283
|
+
"desc": "학습, 노트 정리, 개념 이해",
|
|
3284
|
+
"explain": {
|
|
3285
|
+
"name": "개념 설명",
|
|
3286
|
+
"desc": "개념을 쉬운 말로 설명합니다",
|
|
3287
|
+
"hint": "설명할 개념을 입력하세요..."
|
|
3288
|
+
},
|
|
3289
|
+
"notes": {
|
|
3290
|
+
"name": "학습 노트",
|
|
3291
|
+
"desc": "내용을 체계적인 노트로 정리합니다"
|
|
3292
|
+
},
|
|
3293
|
+
"flashcard": {
|
|
3294
|
+
"name": "플래시카드",
|
|
3295
|
+
"desc": "내용에서 Q&A 플래시카드를 추출합니다"
|
|
3296
|
+
},
|
|
3297
|
+
"mindmap": {
|
|
3298
|
+
"name": "마인드맵",
|
|
3299
|
+
"desc": "Markdown 마인드맵을 생성합니다"
|
|
3300
|
+
},
|
|
3301
|
+
"essay_outline": {
|
|
3302
|
+
"name": "에세이 개요",
|
|
3303
|
+
"desc": "에세이 개요를 생성합니다",
|
|
3304
|
+
"hint": "에세이 주제를 입력하세요..."
|
|
3305
|
+
},
|
|
3306
|
+
"reading": {
|
|
3307
|
+
"name": "독해 분석",
|
|
3308
|
+
"desc": "텍스트 내용을 심층 분석합니다"
|
|
3309
|
+
},
|
|
3310
|
+
"formula": {
|
|
3311
|
+
"name": "공식 유도",
|
|
3312
|
+
"desc": "수학 공식 유도 과정을 보여줍니다",
|
|
3313
|
+
"hint": "공식 이름 또는 내용을 입력하세요..."
|
|
3314
|
+
},
|
|
3315
|
+
"compare": {
|
|
3316
|
+
"name": "개념 비교",
|
|
3317
|
+
"desc": "두 개념을 나란히 비교합니다",
|
|
3318
|
+
"hint": "두 개념을 입력하세요 (예: TCP vs UDP)..."
|
|
3319
|
+
}
|
|
3320
|
+
},
|
|
3321
|
+
"kids": {
|
|
3322
|
+
"name": "어린이 학습",
|
|
3323
|
+
"desc": "동화, 재미있는 학습, 인터랙티브 게임",
|
|
3324
|
+
"story": {
|
|
3325
|
+
"name": "어린이 동화",
|
|
3326
|
+
"desc": "키워드로 동화를 생성합니다",
|
|
3327
|
+
"hint": "동화 키워드를 입력하세요 (예: 토끼 숲 모험)..."
|
|
3328
|
+
},
|
|
3329
|
+
"poem": {
|
|
3330
|
+
"name": "동요",
|
|
3331
|
+
"desc": "주제에 대한 동요를 만듭니다",
|
|
3332
|
+
"hint": "주제를 입력하세요..."
|
|
3333
|
+
},
|
|
3334
|
+
"why": {
|
|
3335
|
+
"name": "왜? 왜? 왜?",
|
|
3336
|
+
"desc": "AI가 끝없는 '왜'라는 질문에 답합니다"
|
|
3337
|
+
},
|
|
3338
|
+
"alphabet": {
|
|
3339
|
+
"name": "알파벳 놀이",
|
|
3340
|
+
"desc": "인터랙티브 글자 학습"
|
|
3341
|
+
},
|
|
3342
|
+
"math_game": {
|
|
3343
|
+
"name": "수학 게임",
|
|
3344
|
+
"desc": "재미있는 인터랙티브 산수"
|
|
3345
|
+
},
|
|
3346
|
+
"riddle": {
|
|
3347
|
+
"name": "수수께끼",
|
|
3348
|
+
"desc": "AI가 아이들이 풀 수수께끼를 냅니다"
|
|
3349
|
+
},
|
|
3350
|
+
"draw_text": {
|
|
3351
|
+
"name": "그림 이야기",
|
|
3352
|
+
"desc": "장면을 묘사하면 AI가 이야기를 씁니다",
|
|
3353
|
+
"hint": "장면을 묘사하세요..."
|
|
3354
|
+
},
|
|
3355
|
+
"knowledge": {
|
|
3356
|
+
"name": "재미있는 상식",
|
|
3357
|
+
"desc": "자연, 과학, 동물 백과사전"
|
|
3358
|
+
}
|
|
3359
|
+
},
|
|
3360
|
+
"marketing": {
|
|
3361
|
+
"name": "마케팅",
|
|
3362
|
+
"desc": "소셜 미디어, 광고 및 SEO 카피라이팅",
|
|
3363
|
+
"xiaohongshu": {
|
|
3364
|
+
"name": "샤오홍슈 게시물",
|
|
3365
|
+
"desc": "라이프스타일 리뷰 스타일 게시물을 생성합니다",
|
|
3366
|
+
"hint": "제품 또는 주제를 입력하세요..."
|
|
3367
|
+
},
|
|
3368
|
+
"twitter": {
|
|
3369
|
+
"name": "Twitter/X 게시물",
|
|
3370
|
+
"desc": "트윗 스타일 콘텐츠를 생성합니다",
|
|
3371
|
+
"hint": "주제를 입력하세요..."
|
|
3372
|
+
},
|
|
3373
|
+
"slogan": {
|
|
3374
|
+
"name": "광고 슬로건",
|
|
3375
|
+
"desc": "인상적인 브랜드 슬로건을 생성합니다",
|
|
3376
|
+
"hint": "브랜드 또는 제품을 입력하세요..."
|
|
3377
|
+
},
|
|
3378
|
+
"email": {
|
|
3379
|
+
"name": "마케팅 이메일",
|
|
3380
|
+
"desc": "대상과 톤을 설정하여 이메일을 작성합니다",
|
|
3381
|
+
"hint": "이메일 내용을 설명하세요..."
|
|
3382
|
+
},
|
|
3383
|
+
"seo_article": {
|
|
3384
|
+
"name": "SEO 글",
|
|
3385
|
+
"desc": "SEO에 최적화된 콘텐츠를 생성합니다",
|
|
3386
|
+
"hint": "대상 키워드를 입력하세요..."
|
|
3387
|
+
},
|
|
3388
|
+
"product_desc": {
|
|
3389
|
+
"name": "제품 설명",
|
|
3390
|
+
"desc": "매력적인 제품 카피를 생성합니다",
|
|
3391
|
+
"hint": "제품 정보를 입력하세요..."
|
|
3392
|
+
},
|
|
3393
|
+
"tone": "톤",
|
|
3394
|
+
"tone.formal": "공식적",
|
|
3395
|
+
"tone.friendly": "친근한",
|
|
3396
|
+
"tone.urgent": "긴급한",
|
|
3397
|
+
"tone.humorous": "유머러스한"
|
|
3398
|
+
},
|
|
3399
|
+
"professional": {
|
|
3400
|
+
"name": "비즈니스",
|
|
3401
|
+
"desc": "이메일, 보고서, 회의록",
|
|
3402
|
+
"email": {
|
|
3403
|
+
"name": "비즈니스 이메일",
|
|
3404
|
+
"desc": "시나리오와 톤을 설정하여 이메일을 작성합니다",
|
|
3405
|
+
"hint": "이메일 내용을 설명하세요..."
|
|
3406
|
+
},
|
|
3407
|
+
"meeting": {
|
|
3408
|
+
"name": "회의록",
|
|
3409
|
+
"desc": "메모를 공식 회의록으로 정리합니다"
|
|
3410
|
+
},
|
|
3411
|
+
"report": {
|
|
3412
|
+
"name": "업무 보고서",
|
|
3413
|
+
"desc": "주간/월간/분기 보고서를 생성합니다",
|
|
3414
|
+
"hint": "보고서 핵심 사항을 입력하세요..."
|
|
3415
|
+
},
|
|
3416
|
+
"review": {
|
|
3417
|
+
"name": "코드 리뷰",
|
|
3418
|
+
"desc": "코드를 검토하고 개선 사항을 제안합니다"
|
|
3419
|
+
},
|
|
3420
|
+
"resume": {
|
|
3421
|
+
"name": "이력서 다듬기",
|
|
3422
|
+
"desc": "STAR 방법으로 이력서를 최적화합니다"
|
|
3423
|
+
},
|
|
3424
|
+
"prd": {
|
|
3425
|
+
"name": "PRD 문서",
|
|
3426
|
+
"desc": "제품 요구사항 문서를 생성합니다",
|
|
3427
|
+
"hint": "기능 설명을 입력하세요..."
|
|
3428
|
+
},
|
|
3429
|
+
"tone": "톤",
|
|
3430
|
+
"tone.concise": "간결한",
|
|
3431
|
+
"report_type": "보고서 유형",
|
|
3432
|
+
"report_type.weekly": "주간",
|
|
3433
|
+
"report_type.monthly": "월간",
|
|
3434
|
+
"report_type.quarterly": "분기"
|
|
3435
|
+
},
|
|
3436
|
+
"personal": {
|
|
3437
|
+
"name": "자기 계발",
|
|
3438
|
+
"desc": "일기, 목표, 의사결정",
|
|
3439
|
+
"journal": {
|
|
3440
|
+
"name": "일기 도우미",
|
|
3441
|
+
"desc": "가이드 일기 쓰기 및 성찰",
|
|
3442
|
+
"hint": "오늘 무슨 일이 있었나요?..."
|
|
3443
|
+
},
|
|
3444
|
+
"goal": {
|
|
3445
|
+
"name": "목표 분해",
|
|
3446
|
+
"desc": "목표를 실행 가능한 단계로 분해합니다",
|
|
3447
|
+
"hint": "목표를 입력하세요..."
|
|
3448
|
+
},
|
|
3449
|
+
"habit": {
|
|
3450
|
+
"name": "습관 형성",
|
|
3451
|
+
"desc": "습관 형성 계획을 만듭니다",
|
|
3452
|
+
"hint": "만들고 싶은 습관을 입력하세요..."
|
|
3453
|
+
},
|
|
3454
|
+
"decision": {
|
|
3455
|
+
"name": "의사결정 분석",
|
|
3456
|
+
"desc": "장단점 분석으로 의사결정을 돕습니다",
|
|
3457
|
+
"hint": "선택지를 설명하세요..."
|
|
3458
|
+
},
|
|
3459
|
+
"book_notes": {
|
|
3460
|
+
"name": "독서 노트",
|
|
3461
|
+
"desc": "내용을 독서 노트로 정리합니다"
|
|
3462
|
+
}
|
|
3463
|
+
},
|
|
3464
|
+
"games_cn": {
|
|
3465
|
+
"name": "중국어 게임",
|
|
3466
|
+
"desc": "시 게임, 성어 잇기, 수수께끼",
|
|
3467
|
+
"feihualing": {
|
|
3468
|
+
"name": "飞花令",
|
|
3469
|
+
"desc": "지정된 글자가 포함된 시를 번갈아 읊습니다"
|
|
3470
|
+
},
|
|
3471
|
+
"chengyu_chain": {
|
|
3472
|
+
"name": "成语接龙",
|
|
3473
|
+
"desc": "마지막/첫 글자로 성어를 이어갑니다"
|
|
3474
|
+
},
|
|
3475
|
+
"riddle": {
|
|
3476
|
+
"name": "猜谜语",
|
|
3477
|
+
"desc": "AI가 단서를 주면 답을 맞춥니다"
|
|
3478
|
+
},
|
|
3479
|
+
"lantern_riddle": {
|
|
3480
|
+
"name": "猜灯谜",
|
|
3481
|
+
"desc": "한자 기반 수수께끼 퍼즐"
|
|
3482
|
+
},
|
|
3483
|
+
"poetry_fill": {
|
|
3484
|
+
"name": "诗词填空",
|
|
3485
|
+
"desc": "시에서 빠진 단어를 채웁니다"
|
|
3486
|
+
},
|
|
3487
|
+
"story_chain": {
|
|
3488
|
+
"name": "故事接龙",
|
|
3489
|
+
"desc": "번갈아 이야기를 이어갑니다"
|
|
3490
|
+
},
|
|
3491
|
+
"character_game": {
|
|
3492
|
+
"name": "猜字游戏",
|
|
3493
|
+
"desc": "단서로 한자를 맞춥니다"
|
|
3494
|
+
},
|
|
3495
|
+
"brain_teaser": {
|
|
3496
|
+
"name": "脑筋急转弯",
|
|
3497
|
+
"desc": "재미있는 두뇌 퍼즐"
|
|
3498
|
+
},
|
|
3499
|
+
"couplet": {
|
|
3500
|
+
"name": "对联",
|
|
3501
|
+
"desc": "AI가 첫 줄을 주면 대구를 맞춥니다"
|
|
3502
|
+
},
|
|
3503
|
+
"word_explain": {
|
|
3504
|
+
"name": "你说我猜",
|
|
3505
|
+
"desc": "AI가 설명하면 단어를 맞춥니다"
|
|
3506
|
+
},
|
|
3507
|
+
"ancient_text": {
|
|
3508
|
+
"name": "文言文翻译",
|
|
3509
|
+
"desc": "고전 중국어를 현대 중국어로 번역합니다"
|
|
3510
|
+
},
|
|
3511
|
+
"homophone": {
|
|
3512
|
+
"name": "谐音梗",
|
|
3513
|
+
"desc": "동음이의어 말장난 챌린지"
|
|
3514
|
+
}
|
|
3515
|
+
},
|
|
3516
|
+
"games_en": {
|
|
3517
|
+
"name": "영어 게임",
|
|
3518
|
+
"desc": "Word Chain, Hangman, Trivia 등",
|
|
3519
|
+
"word_chain": {
|
|
3520
|
+
"name": "Word Chain",
|
|
3521
|
+
"desc": "마지막 글자로 다음 단어를 시작합니다"
|
|
3522
|
+
},
|
|
3523
|
+
"twenty_questions": {
|
|
3524
|
+
"name": "20 Questions",
|
|
3525
|
+
"desc": "20개의 예/아니오 질문으로 물건을 맞춥니다"
|
|
3526
|
+
},
|
|
3527
|
+
"hangman": {
|
|
3528
|
+
"name": "Hangman",
|
|
3529
|
+
"desc": "글자 하나씩 단어를 맞춥니다"
|
|
3530
|
+
},
|
|
3531
|
+
"story_builder": {
|
|
3532
|
+
"name": "Story Builder",
|
|
3533
|
+
"desc": "번갈아 이야기를 만들어갑니다"
|
|
3534
|
+
},
|
|
3535
|
+
"word_association": {
|
|
3536
|
+
"name": "Word Association",
|
|
3537
|
+
"desc": "자유 연상 단어 이어가기"
|
|
3538
|
+
},
|
|
3539
|
+
"riddles": {
|
|
3540
|
+
"name": "Riddles",
|
|
3541
|
+
"desc": "영어 수수께끼를 풀어봅니다"
|
|
3542
|
+
},
|
|
3543
|
+
"trivia": {
|
|
3544
|
+
"name": "Trivia Quiz",
|
|
3545
|
+
"desc": "일반 상식 퀴즈"
|
|
3546
|
+
},
|
|
3547
|
+
"rhyme_time": {
|
|
3548
|
+
"name": "Rhyme Time",
|
|
3549
|
+
"desc": "라임이 맞는 단어로 이야기를 만듭니다"
|
|
3550
|
+
},
|
|
3551
|
+
"acronym": {
|
|
3552
|
+
"name": "Acronym Game",
|
|
3553
|
+
"desc": "무작위 약어의 의미를 만들어냅니다"
|
|
3554
|
+
},
|
|
3555
|
+
"taboo": {
|
|
3556
|
+
"name": "Taboo",
|
|
3557
|
+
"desc": "금지된 단어를 쓰지 않고 설명합니다"
|
|
3558
|
+
},
|
|
3559
|
+
"sentence_builder": {
|
|
3560
|
+
"name": "Sentence Builder",
|
|
3561
|
+
"desc": "주어진 단어로 가장 긴 문장을 만듭니다"
|
|
3562
|
+
},
|
|
3563
|
+
"emoji_story": {
|
|
3564
|
+
"name": "Emoji Story",
|
|
3565
|
+
"desc": "이모지로 이야기를 전합니다"
|
|
3566
|
+
}
|
|
3567
|
+
},
|
|
3568
|
+
"quiz": {
|
|
3569
|
+
"name": "퀴즈 및 연습",
|
|
3570
|
+
"desc": "AI가 생성한 문제와 채점",
|
|
3571
|
+
"practice": {
|
|
3572
|
+
"name": "종합 퀴즈",
|
|
3573
|
+
"desc": "과목과 난이도를 선택하면 AI가 퀴즈를 출제합니다"
|
|
3574
|
+
},
|
|
3575
|
+
"direction": "과목",
|
|
3576
|
+
"dir": {
|
|
3577
|
+
"programming": "프로그래밍",
|
|
3578
|
+
"math": "수학",
|
|
3579
|
+
"english": "영어",
|
|
3580
|
+
"science": "과학",
|
|
3581
|
+
"history": "역사",
|
|
3582
|
+
"interview": "면접 준비",
|
|
3583
|
+
"custom": "사용자 지정 과목"
|
|
3584
|
+
},
|
|
3585
|
+
"difficulty": "난이도",
|
|
3586
|
+
"diff": {
|
|
3587
|
+
"easy": "쉬움",
|
|
3588
|
+
"medium": "보통",
|
|
3589
|
+
"hard": "어려움"
|
|
3590
|
+
}
|
|
3591
|
+
}
|
|
3592
|
+
},
|
|
3593
|
+
"theme": {
|
|
3594
|
+
"__mt": true,
|
|
3595
|
+
"title": "Appearance",
|
|
3596
|
+
"mode_title": "Color Mode",
|
|
3597
|
+
"mode_light": "Light",
|
|
3598
|
+
"mode_dark": "Dark",
|
|
3599
|
+
"mode_system": "System",
|
|
3600
|
+
"custom_title": "Custom Themes",
|
|
3601
|
+
"custom_new": "New Theme",
|
|
3602
|
+
"custom_export": "Export",
|
|
3603
|
+
"custom_import": "Import",
|
|
3604
|
+
"custom_delete": "Delete",
|
|
3605
|
+
"custom_activate": "Activate",
|
|
3606
|
+
"custom_deactivate": "Deactivate",
|
|
3607
|
+
"custom_edit": "Edit",
|
|
3608
|
+
"editor_title": "Theme Editor",
|
|
3609
|
+
"name_label": "Theme Name",
|
|
3610
|
+
"no_custom": "No custom themes yet. Create one below.",
|
|
3611
|
+
"groups_base": "Base Colors",
|
|
3612
|
+
"groups_editor": "Editor",
|
|
3613
|
+
"groups_ui": "UI Components",
|
|
3614
|
+
"groups_code": "Code Block",
|
|
3615
|
+
"saved": "Save",
|
|
3616
|
+
"import_error": "Invalid theme file. Please use a valid Moraya theme JSON."
|
|
3617
|
+
},
|
|
3618
|
+
"titlebar": {
|
|
3619
|
+
"unsaved": "저장되지 않음",
|
|
3620
|
+
"minimize": "최소화",
|
|
3621
|
+
"maximize": "최대화",
|
|
3622
|
+
"close": "닫기",
|
|
3623
|
+
"new_file": "새 파일",
|
|
3624
|
+
"open_file": "파일 열기..."
|
|
3625
|
+
},
|
|
3626
|
+
"transcription": {
|
|
3627
|
+
"title": "전사",
|
|
3628
|
+
"recording": "녹음 중",
|
|
3629
|
+
"connecting": "연결 중...",
|
|
3630
|
+
"paused": "일시 정지됨",
|
|
3631
|
+
"stopping": "중지 중...",
|
|
3632
|
+
"idle": "준비됨",
|
|
3633
|
+
"start": "시작",
|
|
3634
|
+
"stop": "중지",
|
|
3635
|
+
"pause": "일시 정지",
|
|
3636
|
+
"resume": "재개",
|
|
3637
|
+
"back": "대화로 돌아가기",
|
|
3638
|
+
"empty_idle": "시작을 클릭하여 녹음 및 전사를 시작하세요.",
|
|
3639
|
+
"empty_waiting": "음성 대기 중...",
|
|
3640
|
+
"summarize_with_ai": "AI로 요약",
|
|
3641
|
+
"save_as_doc": "문서로 저장",
|
|
3642
|
+
"summarize_prompt": "다음 전사 내용으로 회의 요약을 생성해 주세요. 주요 논의 사항, 결정 사항 및 액션 아이템을 식별하세요. Markdown 형식으로 작성해 주세요.",
|
|
3643
|
+
"no_speech_config": "음성 인식 서비스가 구성되지 않았습니다. 설정 → 음성에서 추가하세요.",
|
|
3644
|
+
"no_speech_config_hint": "설정 → 음성으로 이동하여 음성 인식 서비스(예: Deepgram)를 추가하세요.",
|
|
3645
|
+
"go_to_voice_settings": "음성 설정 열기"
|
|
3646
|
+
},
|
|
3647
|
+
"update": {
|
|
3648
|
+
"title": "버전 정보",
|
|
3649
|
+
"current_version": "현재 버전",
|
|
3650
|
+
"latest_version": "최신 버전",
|
|
3651
|
+
"checking": "업데이트 확인 중...",
|
|
3652
|
+
"up_to_date": "최신 버전을 사용하고 있습니다!",
|
|
3653
|
+
"check_failed": "업데이트 확인 실패",
|
|
3654
|
+
"release_notes": "새로운 기능",
|
|
3655
|
+
"no_asset": "사용 중인 플랫폼에 설치 프로그램이 없습니다. 수동으로 다운로드하세요.",
|
|
3656
|
+
"upgrade": "업그레이드",
|
|
3657
|
+
"retry": "재시도",
|
|
3658
|
+
"view_release": "릴리스 보기",
|
|
3659
|
+
"downloading": "다운로드 중...",
|
|
3660
|
+
"download_failed": "다운로드 실패",
|
|
3661
|
+
"install_launched": "설치 프로그램이 실행되었습니다. Moraya가 곧 종료됩니다.",
|
|
3662
|
+
"new_version_available": "새 버전이 출시되었습니다! 클릭하여 업그레이드하세요."
|
|
3663
|
+
},
|
|
3664
|
+
"voice": {
|
|
3665
|
+
"__mt": true,
|
|
3666
|
+
"title": "Voice Capture",
|
|
3667
|
+
"provider": "Provider",
|
|
3668
|
+
"language": "Language",
|
|
3669
|
+
"doubao": "Doubao (Realtime)",
|
|
3670
|
+
"start": "Record",
|
|
3671
|
+
"stop": "Stop",
|
|
3672
|
+
"processing": "Processing...",
|
|
3673
|
+
"transcript": "Transcript",
|
|
3674
|
+
"words": "words",
|
|
3675
|
+
"structurize": "AI Structurize",
|
|
3676
|
+
"view_history": "View History",
|
|
3677
|
+
"untitled": "Untitled",
|
|
3678
|
+
"key_points": "Key Points",
|
|
3679
|
+
"action_items": "Action Items",
|
|
3680
|
+
"save_note": "Save Note",
|
|
3681
|
+
"discard": "Discard",
|
|
3682
|
+
"quota_exceeded": "Monthly voice quota exceeded. Upgrade or wait until next month.",
|
|
3683
|
+
"quota_near": "You are near your monthly voice limit.",
|
|
3684
|
+
"history": {
|
|
3685
|
+
"title": "Voice History",
|
|
3686
|
+
"new_capture": "+ New Recording",
|
|
3687
|
+
"search_placeholder": "Search transcripts...",
|
|
3688
|
+
"no_results": "No transcripts match your search.",
|
|
3689
|
+
"empty": "No recordings yet. Start capturing your voice!",
|
|
3690
|
+
"reprocess": "Re-process",
|
|
3691
|
+
"delete": "Delete"
|
|
3692
|
+
}
|
|
3693
|
+
},
|
|
3694
|
+
"welcome": {
|
|
3695
|
+
"title": "Moraya에 오신 것을 환영합니다",
|
|
3696
|
+
"subtitle": "미니멀한 AI 지원 Markdown 편집기입니다.",
|
|
3697
|
+
"features_title": "기능",
|
|
3698
|
+
"feature_wysiwyg": "**위지위그** Markdown 편집",
|
|
3699
|
+
"feature_math": "수식 지원: $E = mc^2$",
|
|
3700
|
+
"feature_themes": "다크 & 라이트 테마",
|
|
3701
|
+
"feature_ai": "AI 기반 글쓰기 어시스턴트",
|
|
3702
|
+
"feature_mcp": "게시 및 동기화를 위한 MCP 프로토콜",
|
|
3703
|
+
"feature_lightweight": "경량 (~5MB 설치 프로그램)",
|
|
3704
|
+
"math_title": "수식 예제",
|
|
3705
|
+
"code_title": "코드 예제",
|
|
3706
|
+
"table_title": "표 예제",
|
|
3707
|
+
"table_feature": "기능",
|
|
3708
|
+
"table_status": "상태",
|
|
3709
|
+
"table_done": "완료",
|
|
3710
|
+
"start_writing": "여기에 아이디어를 작성해 보세요...",
|
|
3711
|
+
"tip": "**팁:** `Cmd+I`를 눌러 AI 어시스턴트 패널을 전환하세요.",
|
|
3712
|
+
"shortcuts_title": "키보드 단축키",
|
|
3713
|
+
"shortcut_save": "`Cmd+S` — 문서 저장",
|
|
3714
|
+
"shortcut_open": "`Cmd+O` — 파일 열기",
|
|
3715
|
+
"shortcut_new": "`Cmd+N` — 새 문서",
|
|
3716
|
+
"shortcut_toggle_mode": "`Cmd+/` — 비주얼/소스 모드 전환",
|
|
3717
|
+
"shortcut_split_mode": "`Cmd+Shift+/` — 분할 모드 전환",
|
|
3718
|
+
"shortcut_sidebar": "`Cmd+\\` — 사이드바 전환",
|
|
3719
|
+
"shortcut_settings": "`Cmd+,` — 설정 열기",
|
|
3720
|
+
"shortcut_ai": "`Cmd+Shift+I` — AI 패널 전환",
|
|
3721
|
+
"shortcut_export": "`Cmd+Shift+E` — HTML로 내보내기",
|
|
3722
|
+
"blockquote_title": "인용 예제",
|
|
3723
|
+
"blockquote_content": "글쓰기의 예술은 자신이 무엇을 믿는지 발견하는 예술이다. — 귀스타브 플로베르",
|
|
3724
|
+
"advanced_math_title": "고급 수식",
|
|
3725
|
+
"list_title": "중첩 목록 예제",
|
|
3726
|
+
"list_item1": "시작하기",
|
|
3727
|
+
"list_item1a": "애플리케이션 설치",
|
|
3728
|
+
"list_item1b": "환경 설정 구성",
|
|
3729
|
+
"list_item1c": "글쓰기 시작",
|
|
3730
|
+
"list_item2": "고급 기능",
|
|
3731
|
+
"list_item2a": "AI 기반 글쓰기 지원",
|
|
3732
|
+
"list_item2b": "MCP 프로토콜 통합",
|
|
3733
|
+
"list_item2c": "다양한 내보내기 형식",
|
|
3734
|
+
"list_item3": "사용자 지정",
|
|
3735
|
+
"list_item3a": "테마 및 외관",
|
|
3736
|
+
"list_item3b": "편집기 설정",
|
|
3737
|
+
"list_item3c": "키보드 단축키",
|
|
3738
|
+
"paragraph_title": "Moraya 소개",
|
|
3739
|
+
"paragraph1": "Moraya는 Rust와 Tauri로 제작된 현대적이고 경량의 Markdown 편집기입니다. 텍스트 편집기의 단순함과 위지위그 인터페이스의 강력함을 결합하여 두 가지 장점을 모두 제공합니다.",
|
|
3740
|
+
"paragraph2": "\"Moraya\"라는 이름은 \"mora\" (라틴어로 \"한 순간\")와 \"ya\" (중국어로 \"우아함\")를 결합한 것으로, 글쓰기의 우아한 순간을 상징합니다.",
|
|
3741
|
+
"paragraph3": "기술 문서, 블로그 게시물, 학술 논문, 개인 메모 등 무엇을 작성하든 Moraya는 가장 중요한 것, 즉 콘텐츠에 집중할 수 있는 방해 없는 환경을 제공합니다.",
|
|
3742
|
+
"hr_title": "수평선",
|
|
3743
|
+
"hr_description": "수평선을 사용하여 문서의 다른 섹션을 구분할 수 있습니다:"
|
|
3744
|
+
},
|
|
3745
|
+
"workflow": {
|
|
3746
|
+
"title": "AI 워크플로",
|
|
3747
|
+
"seo_step": "SEO 최적화",
|
|
3748
|
+
"image_gen_step": "AI 이미지",
|
|
3749
|
+
"publish_step": "게시",
|
|
3750
|
+
"publish_desc": "대상 플랫폼에 푸시",
|
|
3751
|
+
"optional_above": "위의 단계는 선택 사항입니다",
|
|
3752
|
+
"select_targets": "게시 대상 선택",
|
|
3753
|
+
"confirm_publish": "게시",
|
|
3754
|
+
"publishing": "게시 중...",
|
|
3755
|
+
"publish_success": "게시 성공!",
|
|
3756
|
+
"publish_failed": "게시 실패",
|
|
3757
|
+
"mcp_entry": "AI MCP",
|
|
3758
|
+
"mcp_server_count": "서비스 연결됨",
|
|
3759
|
+
"mcp_tool_count": "도구",
|
|
3760
|
+
"list": {
|
|
3761
|
+
"title": "Workflows",
|
|
3762
|
+
"new_workflow": "New Workflow",
|
|
3763
|
+
"empty_state": "Automate your notes with AI workflows",
|
|
3764
|
+
"no_workflows": "No workflows yet",
|
|
3765
|
+
"run_now": "Run Now",
|
|
3766
|
+
"last_run": "Last run",
|
|
3767
|
+
"never_run": "Never run",
|
|
3768
|
+
"enable": "Enable",
|
|
3769
|
+
"disable": "Disable",
|
|
3770
|
+
"delete": "Delete",
|
|
3771
|
+
"confirm_delete": "Delete this workflow?",
|
|
3772
|
+
"locked_custom": "Custom workflows require Personal plan or above"
|
|
3773
|
+
},
|
|
3774
|
+
"trigger": {
|
|
3775
|
+
"cron": "Scheduled",
|
|
3776
|
+
"manual": "Manual",
|
|
3777
|
+
"note_event": "Note Event",
|
|
3778
|
+
"webhook": "Webhook"
|
|
3779
|
+
},
|
|
3780
|
+
"status": {
|
|
3781
|
+
"running": "Running",
|
|
3782
|
+
"completed": "Completed",
|
|
3783
|
+
"failed": "Failed",
|
|
3784
|
+
"paused": "Paused",
|
|
3785
|
+
"cancelled": "Cancelled",
|
|
3786
|
+
"enabled": "Enabled",
|
|
3787
|
+
"disabled": "Disabled"
|
|
3788
|
+
},
|
|
3789
|
+
"edit": {
|
|
3790
|
+
"title_new": "New Workflow",
|
|
3791
|
+
"title_edit": "Edit Workflow",
|
|
3792
|
+
"save": "Save",
|
|
3793
|
+
"run": "Run",
|
|
3794
|
+
"cancel": "Cancel",
|
|
3795
|
+
"yaml_label": "Workflow YAML",
|
|
3796
|
+
"yaml_placeholder": "Enter workflow YAML...",
|
|
3797
|
+
"nodes_label": "Nodes",
|
|
3798
|
+
"valid": "Valid",
|
|
3799
|
+
"invalid": "Invalid",
|
|
3800
|
+
"engine_client": "Client Engine",
|
|
3801
|
+
"engine_server": "Server Engine (KMS required)",
|
|
3802
|
+
"unsaved_changes": "You have unsaved changes"
|
|
3803
|
+
},
|
|
3804
|
+
"history": {
|
|
3805
|
+
"title": "Execution History",
|
|
3806
|
+
"no_runs": "No runs yet",
|
|
3807
|
+
"trigger": "Trigger",
|
|
3808
|
+
"started": "Started",
|
|
3809
|
+
"duration": "Duration",
|
|
3810
|
+
"status": "Status",
|
|
3811
|
+
"workflow": "Workflow",
|
|
3812
|
+
"node_results": "Node Results",
|
|
3813
|
+
"node_id": "Node",
|
|
3814
|
+
"error_detail": "Error"
|
|
3815
|
+
},
|
|
3816
|
+
"market": {
|
|
3817
|
+
"title": "Workflow Templates",
|
|
3818
|
+
"templates": "Built-in Templates",
|
|
3819
|
+
"use_template": "Use Template",
|
|
3820
|
+
"export": "Export Workflow",
|
|
3821
|
+
"export_select": "Select workflow to export",
|
|
3822
|
+
"import": "Import Workflow",
|
|
3823
|
+
"import_placeholder": "Paste workflow YAML here...",
|
|
3824
|
+
"import_btn": "Import",
|
|
3825
|
+
"import_success": "Workflow imported successfully",
|
|
3826
|
+
"import_error": "Invalid workflow YAML",
|
|
3827
|
+
"search_placeholder": "Search templates..."
|
|
3828
|
+
},
|
|
3829
|
+
"templates": {
|
|
3830
|
+
"daily_summary": {
|
|
3831
|
+
"name": "Daily Summary",
|
|
3832
|
+
"description": "Automatically summarize your notes every evening"
|
|
3833
|
+
},
|
|
3834
|
+
"note_translation": {
|
|
3835
|
+
"name": "Note Translation",
|
|
3836
|
+
"description": "Translate notes to another language on demand"
|
|
3837
|
+
},
|
|
3838
|
+
"auto_tagging": {
|
|
3839
|
+
"name": "Auto Tagging",
|
|
3840
|
+
"description": "Automatically tag newly created notes with AI"
|
|
3841
|
+
},
|
|
3842
|
+
"weekly_review": {
|
|
3843
|
+
"name": "Weekly Review",
|
|
3844
|
+
"description": "Generate a weekly reflection every Sunday evening"
|
|
3845
|
+
},
|
|
3846
|
+
"knowledge_graph": {
|
|
3847
|
+
"name": "Knowledge Graph",
|
|
3848
|
+
"description": "Extract entities and relationships from all notes"
|
|
3849
|
+
}
|
|
3850
|
+
},
|
|
3851
|
+
"nodes": {
|
|
3852
|
+
"ai_call": "AI Call",
|
|
3853
|
+
"rag_search": "RAG Search",
|
|
3854
|
+
"transform": "Transform",
|
|
3855
|
+
"if": "Condition",
|
|
3856
|
+
"notes_write": "Write Note",
|
|
3857
|
+
"notify": "Notify",
|
|
3858
|
+
"tool_call": "Tool Call"
|
|
3859
|
+
},
|
|
3860
|
+
"quota": {
|
|
3861
|
+
"exceeded": "Workflow quota exceeded",
|
|
3862
|
+
"daily_limit": "Daily run limit reached",
|
|
3863
|
+
"ai_quota": "AI call quota exceeded"
|
|
3864
|
+
},
|
|
3865
|
+
"safety": {
|
|
3866
|
+
"write_permission_title": "Allow Workflow to Write Notes?",
|
|
3867
|
+
"write_permission_body": "Workflow \"{{ name }}\" wants to create or modify notes.",
|
|
3868
|
+
"allow_once": "Allow Once",
|
|
3869
|
+
"allow_always": "Always Allow",
|
|
3870
|
+
"deny": "Deny"
|
|
3871
|
+
}
|
|
3872
|
+
}
|
|
3873
|
+
}
|