@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.
@@ -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": "最大 Token 數",
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": "智譜 GLM",
116
+ "minimax": "MiniMax",
117
+ "doubao": "豆包(字節跳動)"
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": "通義千問(阿里雲)",
147
+ "provider_doubao": "豆包(字節跳動)"
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": "複製連結",
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": "目前知識庫下沒有檔案。較早上傳的檔案可能未關聯至此知識庫。",
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 金鑰,安全儲存於系統金鑰圈。",
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": "儲存庫位址",
1013
+ "github_repo_url_placeholder": "https://github.com/user/images",
1014
+ "github_branch": "分支",
1015
+ "github_dir": "圖片目錄",
1016
+ "github_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": "例如:我的部落格圖床",
1031
+ "settings_empty": "未設定圖床",
1032
+ "settings_hint": "新增圖床服務以啟用圖片自動上傳。",
1033
+ "default": "預設",
1034
+ "set_default": "設為預設",
1035
+ "gitlab": "GitLab 儲存庫",
1036
+ "git_custom": "自訂 Git(Gitea/Forgejo)",
1037
+ "qiniu": "七牛雲 Kodo",
1038
+ "aliyun_oss": "阿里雲 OSS",
1039
+ "tencent_cos": "騰訊雲 COS",
1040
+ "aws_s3": "AWS S3",
1041
+ "google_gcs": "Google Cloud Storage",
1042
+ "group_api": "API 圖床",
1043
+ "group_git": "程式碼託管",
1044
+ "group_oss": "物件儲存",
1045
+ "gitlab_repo_url": "儲存庫 URL",
1046
+ "gitlab_branch": "分支",
1047
+ "gitlab_dir": "圖片目錄",
1048
+ "gitlab_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": "輸入 Token",
1055
+ "oss_access_key": "Access Key",
1056
+ "oss_access_key_placeholder": "輸入 AccessKey ID",
1057
+ "oss_secret_key": "Secret Key",
1058
+ "oss_secret_key_placeholder": "輸入 SecretKey",
1059
+ "oss_bucket": "Bucket 名稱",
1060
+ "oss_bucket_placeholder": "例如 my-images-bucket",
1061
+ "oss_region": "地域 Region",
1062
+ "oss_region_placeholder": "例如 cn-east-1、us-east-1",
1063
+ "select_region": "選擇地域",
1064
+ "oss_endpoint": "自訂 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": "七牛雲需要設定 CDN 加速網域才能產生可存取的圖片連結。",
1072
+ "picora": "Picora",
1073
+ "picora_one_click": "一鍵匯入",
1074
+ "picora_import_title": "從 Picora 匯入圖床",
1075
+ "picora_import_hint": "在 Picora 控制台任一 API Key 旁點擊「匯入到 Moraya」即可,也可以在下方手動填寫 API Key。",
1076
+ "picora_open_console": "開啟 Picora 控制台",
1077
+ "picora_manual_entry": "已有 API Key —— 手動填寫",
1078
+ "picora_verifying": "正在向 Picora 驗證…",
1079
+ "picora_verify_failed": "驗證失敗,請檢查 API Key 後重試。",
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": "圖片回鏈網域",
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": "Token 預覽",
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": "已存入系統鑰匙圈 · 輸入新 key 可覆蓋",
1096
+ "picora_key_migrated_toast": "已將 {count} 個 Picora API key 遷移到系統鑰匙圈。"
1097
+ },
1098
+ "image_menu": {
1099
+ "resize": "調整大小",
1100
+ "upload": "上傳到圖床",
1101
+ "edit_alt": "編輯描述",
1102
+ "copy_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": "Embedding 服務商",
1120
+ "model": "Embedding 模型",
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 對話服務商不支援 Embedding,請在上方選擇一個 Embedding 服務商。",
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 同步",
1154
+ "settings": "☁ 已綁定 · 設定"
1155
+ },
1156
+ "bind_dialog": {
1157
+ "title": "綁定 Picora 同步 — {name}",
1158
+ "step": "步驟 {current} / {total}",
1159
+ "step1_title": "選擇 Picora 帳號",
1160
+ "step2_title": "關聯或建立雲端 KB",
1161
+ "step3_title": "同步策略",
1162
+ "step4_title": "預覽首次同步(dry-run)",
1163
+ "no_picora": "未找到 Picora 帳號,請先在「設定 → 圖床」中新增。",
1164
+ "loading_kbs": "正在載入雲端 KB…",
1165
+ "create_new": "在雲端建立 KB",
1166
+ "link_existing": "關聯至已有雲端 KB",
1167
+ "kb_name": "名稱",
1168
+ "kb_slug": "Slug(URL 友好識別碼)",
1169
+ "select_kb": "選擇雲端 KB…",
1170
+ "back": "← 上一步",
1171
+ "next": "下一步 →",
1172
+ "start_sync": "開始同步 ✓",
1173
+ "binding": "綁定中…",
1174
+ "previewing": "正在掃描本機檔案…",
1175
+ "will_upload": "↑ 上傳至雲端({n} 項)",
1176
+ "will_download": "↓ 下載至本機({n} 項)",
1177
+ "will_delete": "⊘ 刪除({n} 項)",
1178
+ "skipped": "⚠ 跳過 — 超出大小限制({n} 項)",
1179
+ "first_bind_hint": "未偵測到衝突,所有本機檔案將上傳。",
1180
+ "confirm_label": "我瞭解,本機將作為初始權威來源",
1181
+ "link_existing_instead": "改為關聯已存在的 KB"
1182
+ },
1183
+ "strategy": {
1184
+ "mode": "觸發方式",
1185
+ "mode_manual": "僅手動",
1186
+ "mode_on_save": "存檔即同步(3 秒延遲)",
1187
+ "mode_interval": "定時同步",
1188
+ "mode_startup": "啟動與關閉時",
1189
+ "interval60": "每 1 分鐘",
1190
+ "interval300": "每 5 分鐘",
1191
+ "interval900": "每 15 分鐘",
1192
+ "interval1800": "每 30 分鐘",
1193
+ "scope": "同步範圍",
1194
+ "scope_md_only": "僅 Markdown 檔案(.md / .markdown)",
1195
+ "scope_md_rules": "Markdown + 規則檔案(MORAYA.md / CLAUDE.md / .mdx)",
1196
+ "scope_all": "所有文字檔案(含隱藏目錄)",
1197
+ "conflict": "衝突處理",
1198
+ "conflict_prompt": "提示我(建議)",
1199
+ "conflict_local": "優先保留本機",
1200
+ "conflict_remote": "優先拉取雲端"
1201
+ },
1202
+ "settings": {
1203
+ "global_switch": "本機啟用 KB 自動同步",
1204
+ "global_switch_hint": "關閉後所有定時同步暫停,「立即同步」按鈕仍可用。",
1205
+ "last_sync": "上次同步",
1206
+ "never": "從未",
1207
+ "unbound": "未綁定 Picora",
1208
+ "sync_now": "立即同步",
1209
+ "syncing": "同步中…",
1210
+ "edit_strategy": "編輯策略",
1211
+ "unbind": "解綁",
1212
+ "unbind_title": "解綁 Picora 同步",
1213
+ "unbind_confirm": "解除「{name}」的 Picora 同步綁定?雲端資料將保留。",
1214
+ "view_conflicts": "衝突",
1215
+ "bind": "綁定至 Picora",
1216
+ "no_kbs": "尚未新增任何知識庫。"
1217
+ },
1218
+ "conflict": {
1219
+ "title": "衝突解決 — {name}({n} 項)",
1220
+ "no_conflicts": "無衝突待解決。",
1221
+ "local": "本機版本",
1222
+ "remote": "雲端版本",
1223
+ "no_preview": "(無預覽)",
1224
+ "keep_local": "保留本機(覆蓋雲端)",
1225
+ "keep_remote": "拉取雲端(覆蓋本機)",
1226
+ "keep_both": "保留雙份(雲端檔案另存為 .conflict.md)",
1227
+ "skip": "跳過",
1228
+ "apply_one": "套用此項",
1229
+ "apply_all": "套用全部所選({n})"
1230
+ },
1231
+ "statusbar": {
1232
+ "tooltip": "KB 同步狀態 — 點擊查看詳情",
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": "全部知識庫",
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": "未知知識庫"
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 建立了服務「{name}」,包含 {count} 個工具",
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": "環境變數 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": "Windows 檔案搜尋(Everything)"
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\nMCP 伺服器將以目前使用者權限執行,可以存取本機檔案和網路。\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": "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": "儲存庫位址",
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": "個人存取權杖",
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": "日期 + Slug",
2125
+ "preset_date_filename": "日期 + 檔案名稱",
2126
+ "preset_year_month": "年/月/Slug 目錄",
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": "Feed 檔案路徑",
2132
+ "rss_feed_path_placeholder": "feed.xml",
2133
+ "rss_site_url": "網站 URL",
2134
+ "rss_site_url_placeholder": "https://myblog.com",
2135
+ "rss_feed_title": "Feed 標題",
2136
+ "rss_feed_title_placeholder": "我的部落格",
2137
+ "rss_feed_description": "Feed 描述",
2138
+ "rss_feed_description_placeholder": "關於...",
2139
+ "rss_language": "語言",
2140
+ "rss_author_name": "作者",
2141
+ "rss_author_name_placeholder": "張三",
2142
+ "rss_max_items": "Feed 最大條目數",
2143
+ "rss_include_full_content": "在 Feed 中包含完整文章內容",
2144
+ "rss_feed_endpoint": "RSS Feed 介面",
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 服務提供商,請在設定中配置。"
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": "Meta 描述",
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": "圖片模型",
2386
+ "mcp": "MCP",
2387
+ "image": "圖床",
2388
+ "publish": "發佈",
2389
+ "voice": "語音模型",
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
+ "language": {
2405
+ "label": "語言",
2406
+ "system": "跟隨系統"
2407
+ },
2408
+ "theme": {
2409
+ "label": "主題",
2410
+ "system": "跟隨系統",
2411
+ "light": "淺色",
2412
+ "dark": "深色"
2413
+ },
2414
+ "appearance": {
2415
+ "theme_section": "主題",
2416
+ "dark_mode_section": "深色模式",
2417
+ "font_section": "字型",
2418
+ "separate_dark_theme": "在深色模式下使用獨立的主題",
2419
+ "dark_theme": "深色模式主題",
2420
+ "dark_mode_label": "外觀模式"
2421
+ },
2422
+ "font_size": {
2423
+ "label": "字型大小"
2424
+ },
2425
+ "auto_save": {
2426
+ "label": "自動儲存",
2427
+ "interval": "自動儲存間隔"
2428
+ },
2429
+ "remember_last_folder": "記住上次開啟的資料夾",
2430
+ "show_cloud_insert_entries": "顯示雲端插入選單項目",
2431
+ "show_cloud_insert_entries_desc": "在格式選單和右鍵選單中新增「插入雲端圖片/音訊/影片」選項。",
2432
+ "rules_history_count": "MORAYA.md 歷史版本數量",
2433
+ "rules_history_count_hint": "每個規則檔案保留的歷史版本數量(預設:10)",
2434
+ "editor": {
2435
+ "line_width": "編輯器行寬",
2436
+ "tab_size": "定位字元大小",
2437
+ "show_line_numbers": "原始碼模式顯示行號"
2438
+ },
2439
+ "tab_desc": {
2440
+ "image": "設定圖床雲端儲存服務。",
2441
+ "publish": "設定文章發布目標,將 Markdown 文件一鍵發布到 GitHub Pages、生成 RSS 訂閱源或推送至自訂 API。",
2442
+ "export": "設定 PDF 匯出 — 紙張大小、頁邊距、字型與內容開關。"
2443
+ },
2444
+ "version": "Moraya v{version}",
2445
+ "permissions": {
2446
+ "mcp_title": "MCP 權限",
2447
+ "ai_title": "AI 設定",
2448
+ "ai_max_tokens": "最大輸出 Token 數",
2449
+ "ai_max_tokens_hint": "AI 單次回應可產生的最大 Token 數量。較大的值允許更長的回覆和工具呼叫,但會消耗更多額度。",
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 可選(使用存取金鑰代替)",
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 位址",
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": "AppData(預設)",
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 帳號。連接後可使用雲端資源插入與知識庫同步。",
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": "僅清除本機設定,不會刪除雲端任何資源。",
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": "手動新增 API Key",
2568
+ "or": "或",
2569
+ "register": "還沒有 Picora 帳號?立即註冊"
2570
+ },
2571
+ "quota": {
2572
+ "images": "圖片",
2573
+ "docs": "文件",
2574
+ "audio": "音訊",
2575
+ "videos": "影片",
2576
+ "kbs": "知識庫"
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": "鍵盤快捷鍵",
2835
+ "intro": "Moraya 的全部鍵盤快捷鍵。標有 🔒 的由系統選單管理,將在後續版本支援自訂。",
2836
+ "ai_chat_behavior": {
2837
+ "title": "AI 對話 — 換行鍵行為",
2838
+ "intro": "選擇 AI 對話輸入框中換行鍵的傳送/換行方式。",
2839
+ "sends_action": "傳送訊息",
2840
+ "newline_action": "換行",
2841
+ "mod_enter_send": {
2842
+ "label": "Cmd/Ctrl + 回車 傳送"
2843
+ },
2844
+ "enter_send": {
2845
+ "label": "Enter 直接傳送"
2846
+ },
2847
+ "default_badge": "預設"
2848
+ },
2849
+ "categories": {
2850
+ "file": "檔案",
2851
+ "edit": "編輯",
2852
+ "paragraph": "段落",
2853
+ "format": "格式",
2854
+ "view": "檢視",
2855
+ "ai_chat": "AI 對話",
2856
+ "workflow": "工作流程",
2857
+ "mcp": "MCP"
2858
+ },
2859
+ "actions": {
2860
+ "file": {
2861
+ "new": "新增文件",
2862
+ "new_window": "新增視窗",
2863
+ "open": "開啟檔案",
2864
+ "save": "儲存",
2865
+ "save_as": "另存新檔",
2866
+ "export_html": "匯出 HTML",
2867
+ "export_pdf": "匯出 PDF",
2868
+ "export_image": "匯出圖片",
2869
+ "export_doc": "匯出 Word"
2870
+ },
2871
+ "edit": {
2872
+ "undo": "復原",
2873
+ "redo": "重做",
2874
+ "find": "尋找",
2875
+ "replace": "取代"
2876
+ },
2877
+ "paragraph": {
2878
+ "h1": "標題 1",
2879
+ "h2": "標題 2",
2880
+ "h3": "標題 3",
2881
+ "h4": "標題 4",
2882
+ "h5": "標題 5",
2883
+ "h6": "標題 6",
2884
+ "code_block": "程式碼區塊",
2885
+ "quote": "引文"
2886
+ },
2887
+ "format": {
2888
+ "bold": "粗體",
2889
+ "italic": "斜體",
2890
+ "strike": "刪除線",
2891
+ "code": "行內程式碼",
2892
+ "link": "連結",
2893
+ "insert_image": "插入圖片"
2894
+ },
2895
+ "view": {
2896
+ "toggle_mode": "切換視覺化/原始碼模式",
2897
+ "toggle_split": "切換分割模式",
2898
+ "toggle_sidebar": "切換側邊欄",
2899
+ "toggle_aipanel": "切換 AI 面板",
2900
+ "toggle_outline": "切換大綱",
2901
+ "open_settings": "開啟設定",
2902
+ "zoom_in": "放大",
2903
+ "zoom_out": "縮小",
2904
+ "zoom_reset": "重設縮放"
2905
+ },
2906
+ "workflow": {
2907
+ "quick_open": "快速開啟",
2908
+ "command_palette": "命令面板"
2909
+ },
2910
+ "ai_chat": {
2911
+ "send": "傳送 AI 訊息",
2912
+ "newline": "插入換行"
2913
+ }
2914
+ },
2915
+ "locked_hint": "由系統選單管理,暫不支援於此處自訂",
2916
+ "locked_footnote": "🔒 表示該快捷鍵由系統原生選單提供,本版本暫不支援於此處修改。",
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 磁碟映像仍處於掛載狀態。如果不退出,「打開方式」選單裡會看到多個不同版本的 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
+ "ja": "日語",
3271
+ "ko": "韓語",
3272
+ "fr": "法語",
3273
+ "de": "德語",
3274
+ "es": "西班牙語",
3275
+ "ar": "阿拉伯語",
3276
+ "hi": "印地語",
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": "用 emoji 表達讓對方猜"
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": "產生會議摘要",
3641
+ "save_as_doc": "儲存為文件",
3642
+ "summarize_prompt": "請根據以下轉錄內容產生會議摘要,標註關鍵討論點、決策和行動項,以 Markdown 格式輸出。",
3643
+ "no_speech_config": "未設定語音辨識服務,請前往 設定 → 語音 新增。",
3644
+ "no_speech_config_hint": "請前往 設定 → 語音 Tab 新增語音辨識服務(如 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\"(片刻)與中文 \"雅\"(優雅)的組合,寓意\"墨雅\"——優雅的書寫片刻。",
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
+ }