@moraya/core 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +215 -41
  2. package/dist/ai/drivers/claude.d.ts +6 -0
  3. package/dist/ai/drivers/claude.js +229 -0
  4. package/dist/ai/drivers/claude.js.map +1 -0
  5. package/dist/ai/drivers/gemini.d.ts +6 -0
  6. package/dist/ai/drivers/gemini.js +212 -0
  7. package/dist/ai/drivers/gemini.js.map +1 -0
  8. package/dist/ai/drivers/index.d.ts +14 -0
  9. package/dist/ai/drivers/index.js +617 -0
  10. package/dist/ai/drivers/index.js.map +1 -0
  11. package/dist/ai/drivers/ollama.d.ts +8 -0
  12. package/dist/ai/drivers/ollama.js +158 -0
  13. package/dist/ai/drivers/ollama.js.map +1 -0
  14. package/dist/ai/drivers/openai.d.ts +7 -0
  15. package/dist/ai/drivers/openai.js +225 -0
  16. package/dist/ai/drivers/openai.js.map +1 -0
  17. package/dist/ai/drivers/tool-bridge.d.ts +37 -0
  18. package/dist/ai/drivers/tool-bridge.js +138 -0
  19. package/dist/ai/drivers/tool-bridge.js.map +1 -0
  20. package/dist/ai/drivers/types.d.ts +2 -0
  21. package/dist/ai/drivers/types.js +1 -0
  22. package/dist/ai/drivers/types.js.map +1 -0
  23. package/dist/ai/drivers/util.d.ts +13 -0
  24. package/dist/ai/drivers/util.js +40 -0
  25. package/dist/ai/drivers/util.js.map +1 -0
  26. package/dist/ai/image.d.ts +37 -0
  27. package/dist/ai/image.js +36 -0
  28. package/dist/ai/image.js.map +1 -0
  29. package/dist/ai/index.d.ts +37 -0
  30. package/dist/ai/index.js +826 -0
  31. package/dist/ai/index.js.map +1 -0
  32. package/dist/ai/types.d.ts +92 -0
  33. package/dist/ai/types.js +1 -0
  34. package/dist/ai/types.js.map +1 -0
  35. package/dist/ai/voice.d.ts +42 -0
  36. package/dist/ai/voice.js +34 -0
  37. package/dist/ai/voice.js.map +1 -0
  38. package/dist/chat-markdown/index.d.ts +82 -0
  39. package/dist/chat-markdown/index.js +165 -0
  40. package/dist/chat-markdown/index.js.map +1 -0
  41. package/dist/i18n/locales/ar.json +806 -732
  42. package/dist/i18n/locales/de.json +912 -838
  43. package/dist/i18n/locales/en.json +34 -5
  44. package/dist/i18n/locales/es.json +952 -876
  45. package/dist/i18n/locales/fr.json +1784 -1708
  46. package/dist/i18n/locales/hi.json +1808 -1734
  47. package/dist/i18n/locales/ja.json +839 -765
  48. package/dist/i18n/locales/ko.json +1783 -1709
  49. package/dist/i18n/locales/pt.json +894 -820
  50. package/dist/i18n/locales/ru.json +812 -738
  51. package/dist/i18n/locales/zh-CN.json +34 -5
  52. package/dist/i18n/locales/zh-Hant.json +1039 -965
  53. package/dist/types-CwM77g7u.d.ts +88 -0
  54. package/package.json +26 -2
@@ -1,60 +1,58 @@
1
1
  {
2
2
  "admin": {
3
- "__mt": true,
4
- "title": "Team Admin",
5
- "tab_members": "Members",
6
- "tab_kbs": "Knowledge Bases",
7
- "tab_usage": "Usage",
8
- "members": "Members",
9
- "knowledge_bases": "Knowledge Bases",
10
- "invite_member": "Invite Member",
11
- "remove_member": "Remove",
12
- "create_kb": "Create KB",
13
- "no_members": "No members yet.",
14
- "no_kbs": "No knowledge bases yet.",
15
- "col_name": "Name",
16
- "col_email": "Email",
17
- "col_role": "Role",
18
- "col_joined": "Joined",
19
- "e2e": "E2E",
3
+ "title": "團隊管理",
4
+ "tab_members": "成員",
5
+ "tab_kbs": "知識庫",
6
+ "tab_usage": "用量",
7
+ "members": "成員",
8
+ "knowledge_bases": "知識庫",
9
+ "invite_member": "邀請成員",
10
+ "remove_member": "移除",
11
+ "create_kb": "建立知識庫",
12
+ "no_members": "暫無成員。",
13
+ "no_kbs": "暫無知識庫。",
14
+ "col_name": "姓名",
15
+ "col_email": "郵箱",
16
+ "col_role": "角色",
17
+ "col_joined": "加入時間",
18
+ "e2e": "端對端加密",
20
19
  "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"
20
+ "usage_summary": "用量概覽",
21
+ "storage": "儲存",
22
+ "notes": "筆記",
23
+ "ai_queries": "AI 查詢",
24
+ "active_members": "活躍成員",
25
+ "this_month": "本月"
27
26
  },
28
27
  "agent": {
29
- "__mt": true,
30
- "title": "AI Agent",
31
- "subtitle": "Let AI handle multi-step tasks across your knowledge base",
32
- "query_placeholder": "Describe a task for the agent to complete...",
33
- "run": "Run",
34
- "pause": "Pause",
35
- "resume": "Resume",
36
- "cancel": "Cancel",
37
- "new_task": "New Task",
38
- "final_answer": "Final Answer",
39
- "upgrade_required": "AI Agent is available on Personal and above plans.",
28
+ "title": "AI 智慧體",
29
+ "subtitle": "AI 自動完成跨知識庫的多步任務",
30
+ "query_placeholder": "描述您希望智慧體完成的任務...",
31
+ "run": "執行",
32
+ "pause": "暫停",
33
+ "resume": "繼續",
34
+ "cancel": "取消",
35
+ "new_task": "新任務",
36
+ "final_answer": "最終答案",
37
+ "upgrade_required": "AI 智慧體功能需要個人版或更高套餐。",
40
38
  "mode": {
41
- "react": "ReAct (Adaptive)",
42
- "plan_execute": "Plan & Execute"
39
+ "react": "ReAct(自適應)",
40
+ "plan_execute": "計劃執行"
43
41
  },
44
42
  "history": {
45
- "title": "Agent History",
46
- "search_placeholder": "Search tasks...",
47
- "no_results": "No tasks match your search.",
48
- "empty": "No agent tasks yet. Start your first task!",
49
- "steps": "steps"
43
+ "title": "智慧體歷史",
44
+ "search_placeholder": "搜尋任務...",
45
+ "no_results": "未找到匹配的任務。",
46
+ "empty": "暫無任務記錄,開始您的第一個任務吧!",
47
+ "steps": ""
50
48
  },
51
49
  "market": {
52
- "title": "Agent Templates",
53
- "subtitle": "Browse ready-to-use agent templates",
54
- "search_placeholder": "Search templates...",
55
- "no_results": "No templates match your search.",
56
- "all_tags": "All",
57
- "use": "Use Template"
50
+ "title": "智慧體模板",
51
+ "subtitle": "瀏覽開箱即用的智慧體模板",
52
+ "search_placeholder": "搜尋模板...",
53
+ "no_results": "未找到匹配的模板。",
54
+ "all_tags": "全部",
55
+ "use": "使用模板"
58
56
  }
59
57
  },
60
58
  "ai": {
@@ -101,7 +99,8 @@
101
99
  "testing": "測試中...",
102
100
  "connected": "已連線!",
103
101
  "failed": "失敗",
104
- "test_failed": "測試連線失敗"
102
+ "test_failed": "測試連線失敗",
103
+ "endpoint_id_placeholder": "輸入推理接入點 ID"
105
104
  },
106
105
  "providers": {
107
106
  "claude": "Anthropic Claude",
@@ -191,51 +190,99 @@
191
190
  },
192
191
  "sections": {
193
192
  "image_ai": "圖像 AI",
194
- "image_aihint": "AI 圖像生成模型配置。"
193
+ "image_aihint": "AI 圖像生成模型配置。",
194
+ "session_ai": "會話 AI",
195
+ "realtime_voice_ai": "端到端語音 AI",
196
+ "realtime_voice_aihint": "實時語音對話配置(支援多服務商)。",
197
+ "session_aihint": "文字對話模型配置。"
195
198
  },
196
199
  "generating": "產生中…",
197
- "not_configured": "尚未設定 AI 服務"
200
+ "not_configured": "尚未設定 AI 服務",
201
+ "realtime": {
202
+ "add_model": "+ 新增語音模型",
203
+ "no_models": "未配置端到端語音模型",
204
+ "missing_config": "暫無可用端到端語音模型,請先到 設定 -> Chat 完成配置。",
205
+ "providers": {
206
+ "tongyi-bailing": "阿里通義百聆",
207
+ "openai-realtime": "OpenAI Realtime",
208
+ "gemini-live": "Gemini Live",
209
+ "stepfun-realtime": "階躍星辰 Realtime",
210
+ "amazon-nova-sonic": "Amazon Nova Sonic",
211
+ "doubao-realtime": "豆包 Realtime",
212
+ "qwen-realtime": "通義千問 Realtime"
213
+ },
214
+ "config": {
215
+ "region": "區域",
216
+ "doubao_secret_key": "App Key(X-Api-App-Key)",
217
+ "secret_access_key": "Secret Access Key",
218
+ "doubao_access_key": "Access Token(X-Api-Access-Key)",
219
+ "missing_credential": "請先填寫 API Key 或必需憑證。",
220
+ "access_key_id": "Access Key ID",
221
+ "session_token": "Session Token",
222
+ "optional": "可選",
223
+ "secret_placeholder": "輸入金鑰",
224
+ "doubao_app_id": "App ID(X-Api-App-ID)",
225
+ "voice": "音色"
226
+ },
227
+ "realtime_model_group": "端到端對話模型",
228
+ "no_models_hint": "新增實時語音模型後,輸入區可使用波浪按鈕發起語音對話。",
229
+ "chat_model_group": "對話模型",
230
+ "speech_model_group": "語音轉寫",
231
+ "start_voice": "開始語音對話",
232
+ "image_model_group": "AIGC 生圖",
233
+ "stop_voice": "停止語音對話",
234
+ "live": "實時"
235
+ },
236
+ "model_short": {
237
+ "image": "生圖",
238
+ "speech": "語音",
239
+ "chat": "對話",
240
+ "realtime": "實時",
241
+ "none": "未配置任何模型"
242
+ },
243
+ "voice": {
244
+ "record": "語音錄入",
245
+ "cancel": "取消語音錄入",
246
+ "commit": "填充到輸入框"
247
+ }
198
248
  },
199
249
  "ai_budget": {
200
- "__mt": true,
201
- "title": "AI Budget",
202
- "description": "Set monthly and per-call spending limits for AI requests routed through Moraya.",
203
- "monthly_spend": "Monthly Spend",
204
- "monthly_limit": "Monthly Limit",
205
- "per_call_limit": "Per-Call Limit",
206
- "hard_stop": "Hard Stop",
207
- "hard_stop_hint": "Block all AI calls once the monthly limit is reached.",
208
- "zero_unlimited": "0 = unlimited",
209
- "limit_reached": "Monthly budget limit reached. AI calls are blocked.",
210
- "near_limit": "You have used {pct}% of your monthly budget.",
211
- "saved": "Settings saved.",
212
- "save": "Save",
213
- "reset": "Reset Month",
214
- "how_it_works": "How It Works",
215
- "info1": "The router tracks estimated and actual costs per API call.",
216
- "info2": "Hard stop blocks new calls; soft limit shows warnings only.",
217
- "info3": "Monthly counters reset on the 1st of each month automatically."
250
+ "title": "AI 用量預算",
251
+ "description": "為透過 Moraya 路由的 AI 請求設定每月和每次呼叫的費用上限。",
252
+ "monthly_spend": "本月已消費",
253
+ "monthly_limit": "月度上限",
254
+ "per_call_limit": "單次呼叫上限",
255
+ "hard_stop": "硬性截止",
256
+ "hard_stop_hint": "達到月度上限後遮蔽所有 AI 呼叫。",
257
+ "zero_unlimited": "0 = 不限制",
258
+ "limit_reached": "已達到月度預算上限,AI 呼叫已被遮蔽。",
259
+ "near_limit": "您已使用月度預算的 {pct}%。",
260
+ "saved": "設定已儲存。",
261
+ "save": "儲存",
262
+ "reset": "重置本月",
263
+ "how_it_works": "工作原理",
264
+ "info1": "路由器會跟蹤每次 API 呼叫的預估和實際費用。",
265
+ "info2": "硬性截止將阻止新的呼叫;軟性上限僅顯示警告。",
266
+ "info3": "每月計數器將在每月 1 日自動重置。"
218
267
  },
219
268
  "ai_history": {
220
- "__mt": true,
221
- "title": "AI Call History",
222
- "total_calls": "Total Calls",
223
- "month_cost": "This Month",
224
- "success_rate": "Success Rate",
225
- "tab_list": "Calls",
226
- "tab_provider": "By Provider",
227
- "tab_daily": "By Day",
228
- "no_records": "No call records yet.",
229
- "failed": "Failed",
230
- "provider": "Provider",
231
- "calls": "Calls",
232
- "cost": "Cost",
233
- "share": "Share"
269
+ "title": "AI 呼叫歷史",
270
+ "total_calls": "總呼叫次數",
271
+ "month_cost": "本月消費",
272
+ "success_rate": "成功率",
273
+ "tab_list": "呼叫列表",
274
+ "tab_provider": "按服務商",
275
+ "tab_daily": "按日統計",
276
+ "no_records": "暫無呼叫記錄。",
277
+ "failed": "失敗",
278
+ "provider": "服務商",
279
+ "calls": "次呼叫",
280
+ "cost": "費用",
281
+ "share": "佔比"
234
282
  },
235
283
  "app": {
236
- "__mt": true,
237
284
  "name": "Moraya Web",
238
- "tagline": "Your AI, your data, your cloud."
285
+ "tagline": "你的 AI、你的資料、你的雲。"
239
286
  },
240
287
  "audit": {
241
288
  "report_title": "Document Audit Report: {filename}",
@@ -279,75 +326,74 @@
279
326
  "loading": "Loading audit log…"
280
327
  },
281
328
  "auth": {
282
- "__mt": true,
283
- "login": "Sign in with Picora",
284
- "logout": "Sign out",
285
- "logging_in": "Signing in...",
286
- "login_title": "Welcome to Moraya Web",
287
- "login_subtitle": "Sign in with your Picora account to access your knowledge base.",
288
- "continue_offline": "Continue offline (no sync)",
289
- "connect_picora": "Connect Picora to sync",
290
- "connected_to_picora": "Connected to Picora",
291
- "disconnect": "Disconnect",
292
- "local_only_notice": "You are working locally. Notes are stored on this device only."
329
+ "login": "用 Picora 賬號登入",
330
+ "logout": "退出登入",
331
+ "logging_in": "登入中...",
332
+ "login_title": "歡迎使用 Moraya Web",
333
+ "login_subtitle": "使用 Picora 賬號登入,訪問你的知識庫。",
334
+ "continue_offline": "離線使用(不同步)",
335
+ "connect_picora": "連線 Picora 啟用同步",
336
+ "connected_to_picora": "已連線 Picora",
337
+ "disconnect": "斷開連線",
338
+ "local_only_notice": "當前為本地模式,筆記僅儲存在此裝置。"
293
339
  },
294
340
  "billing": {
295
- "__mt": true,
296
- "title": "Billing",
297
- "current_plan": "Current Plan",
298
- "upgrade_title": "Upgrade Your Plan",
299
- "upgrade_subtitle": "Get more AI calls, unlimited storage, and premium features.",
300
- "downgrade_title": "Downgrade Plan",
301
- "downgrade_subtitle": "You can choose to downgrade effective immediately or at the end of your billing period.",
302
- "cancel_title": "Cancel Subscription",
303
- "cancel_subtitle": "We're sorry to see you go. You can cancel effective immediately or at the end of your billing period.",
341
+ "title": "訂閱與計費",
342
+ "current_plan": "當前套餐",
343
+ "upgrade_title": "升級套餐",
344
+ "upgrade_subtitle": "獲得更多 AI 呼叫次數、無限儲存空間和高階功能。",
345
+ "downgrade_title": "降級套餐",
346
+ "downgrade_subtitle": "你可以選擇立即生效或在當前計費週期結束後生效。",
347
+ "cancel_title": "取消訂閱",
348
+ "cancel_subtitle": "很遺憾你想離開。你可以立即取消或在當前計費週期結束後取消。",
304
349
  "plan_personal": "Personal",
305
350
  "plan_team": "Team",
306
351
  "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"
352
+ "plan_connect": "Connect(免費)",
353
+ "monthly": "按月",
354
+ "yearly": "按年",
355
+ "yearly_savings": "節省 2 個月",
356
+ "per_seat": "/席位",
357
+ "pay_with_stripe": "銀行卡支付(Stripe",
358
+ "pay_with_alipay": "支付寶支付",
359
+ "seats_label": "席位數量",
360
+ "seats_hint": "最少 1 個席位",
361
+ "effective_immediate": "立即生效",
362
+ "effective_period_end": "在當前計費週期結束後生效",
363
+ "cancel_confirm": "我瞭解我的訂閱將終止",
364
+ "downgrade_confirm": "我瞭解可能無法訪問某些功能",
365
+ "confirm_cancel": "取消訂閱",
366
+ "confirm_downgrade": "確認降級",
367
+ "refund_title": "申請退款",
368
+ "refund_14day": "作為 14 天內的首次訂閱使用者,您有資格申請自動退款。",
369
+ "refund_request": "申請退款",
370
+ "refund_pending": "退款申請已提交,我們的團隊將稽核。",
371
+ "back_to_billing": "返回計費",
372
+ "loading": "載入中……",
373
+ "error": "出錯了,請重試。",
374
+ "checkout_redirect": "正在跳轉至結賬頁面……",
375
+ "alipay_scan": "使用支付寶掃碼完成付款",
376
+ "devices_title": "管理裝置",
377
+ "devices_subtitle": "已登入到你賬戶的裝置。",
378
+ "device_current": "當前裝置",
379
+ "device_revoke": "退出登入",
380
+ "device_revoke_confirm": "從此裝置退出登入?",
381
+ "device_last_active": "上次活躍",
382
+ "devices_limit_reached": "你已達到當前套餐的裝置數量上限。",
383
+ "usage_ai_calls": "AI 呼叫次數",
384
+ "usage_kbs": "知識庫",
385
+ "usage_devices": "裝置",
386
+ "usage_of": "{used} / {limit}",
387
+ "upgrade_prompt_ai": "本月已使用 {used}/{limit} AI 呼叫。",
388
+ "upgrade_prompt_kb": "已達到知識庫數量上限({limit})。",
389
+ "upgrade_now": "立即升級",
390
+ "plan_features_personal": "無限知識庫、每月 2000 AI 呼叫、自帶 API 金鑰、端對端加密、自託管儲存",
391
+ "plan_features_team": "包含 Personal 所有功能、團隊協作、每月 5000 AI 呼叫、雲 KMS",
392
+ "currency_usd": "美元($)",
393
+ "currency_cny": "人民幣(¥)",
394
+ "currency_eur": "歐元(€)",
395
+ "change_currency": "更改貨幣",
396
+ "upgrade": "升級"
351
397
  },
352
398
  "cloud_picker": {
353
399
  "title_image": "插入雲端圖片",
@@ -396,18 +442,17 @@
396
442
  "no_results": "未找到結果"
397
443
  },
398
444
  "commands": {
399
- "__mt": true,
400
- "palette_title": "Command Palette",
401
- "placeholder": "Search commands...",
402
- "no_results": "No commands found",
403
- "type_to_search": "Type to search commands",
404
- "go_home": "Go to Home",
405
- "open_settings": "Open Settings",
406
- "open_workflows": "Open Workflows",
407
- "toggle_sidebar": "Toggle Sidebar",
408
- "sidebar_kb": "Sidebar: Knowledge Bases",
409
- "sidebar_explorer": "Sidebar: Files",
410
- "sidebar_outline": "Sidebar: Outline"
445
+ "palette_title": "命令面板",
446
+ "placeholder": "搜尋命令...",
447
+ "no_results": "未找到命令",
448
+ "type_to_search": "輸入以搜尋命令",
449
+ "go_home": "返回主頁",
450
+ "open_settings": "開啟設定",
451
+ "open_workflows": "開啟工作流",
452
+ "toggle_sidebar": "切換側邊欄",
453
+ "sidebar_kb": "側邊欄:知識庫",
454
+ "sidebar_explorer": "側邊欄:檔案",
455
+ "sidebar_outline": "側邊欄:大綱"
411
456
  },
412
457
  "common": {
413
458
  "save": "儲存",
@@ -433,92 +478,90 @@
433
478
  "new": "新增"
434
479
  },
435
480
  "compose": {
436
- "__mt": true,
437
- "title": "Compose article",
438
- "start_over": "Start over",
439
- "stepper_label": "Compose stages",
481
+ "title": "創作文章",
482
+ "start_over": "重新開始",
483
+ "stepper_label": "創作步驟",
440
484
  "step": {
441
- "topic": "Topic",
442
- "article": "Article",
443
- "cover": "Cover",
444
- "review": "Review"
485
+ "topic": "選題",
486
+ "article": "正文",
487
+ "cover": "配圖",
488
+ "review": "完成"
445
489
  },
446
490
  "topic": {
447
- "title": "What's the article about?",
448
- "hint": "Describe the topic, audience, key points — the more specific, the better.",
449
- "placeholder": "e.g. A deep dive on why Rust's async model handles backpressure better than Go's…",
450
- "next": "Next: write article →"
491
+ "title": "寫什麼文章?",
492
+ "hint": "描述話題、目標讀者、要點 —— 越具體越好。",
493
+ "placeholder": "例:深入分析為什麼 Rust 非同步模型在反壓處理上比 Go 更優...",
494
+ "next": "下一步:生成正文 →"
451
495
  },
452
496
  "tone": {
453
- "title": "Tone",
454
- "general": "General",
455
- "marketing": "Marketing",
456
- "technical": "Technical",
457
- "story": "Story"
497
+ "title": "語氣",
498
+ "general": "通用",
499
+ "marketing": "營銷",
500
+ "technical": "技術",
501
+ "story": "故事"
458
502
  },
459
503
  "length": {
460
- "title": "Length",
461
- "short": "Short",
462
- "medium": "Medium",
463
- "long": "Long"
504
+ "title": "長度",
505
+ "short": "",
506
+ "medium": "",
507
+ "long": ""
464
508
  },
465
509
  "article": {
466
- "title": "Write the article",
467
- "ready": "Ready to generate. Tap below to stream the article.",
468
- "generate": "Generate article",
469
- "generating": "Streaming from the model…",
470
- "cancel": "Stop",
471
- "regenerate": "Regenerate",
472
- "next": "Next: cover image →",
473
- "no_provider": "No AI provider configured. Set one up to generate articles.",
474
- "configure": "Configure AI provider"
510
+ "title": "生成正文",
511
+ "ready": "準備就緒。點選下方開始流式生成。",
512
+ "generate": "生成正文",
513
+ "generating": "正在流式生成...",
514
+ "cancel": "停止",
515
+ "regenerate": "重新生成",
516
+ "next": "下一步:生成配圖 →",
517
+ "no_provider": "尚未配置 AI 服務。請先配置一個用於生成正文。",
518
+ "configure": "配置 AI 服務"
475
519
  },
476
520
  "cover": {
477
- "title": "Cover image",
478
- "prompt_hint": "This prompt was auto-derived from your article. Edit if you want a specific look.",
479
- "prompt_placeholder": "Cover illustration for: ...",
480
- "generate": "Generate cover",
481
- "generating": "Generating…",
482
- "next": "Next: review →",
483
- "preview_alt": "Cover image preview",
484
- "no_provider": "No image generation provider configured. Set one up to make cover images.",
485
- "configure": "Configure image-gen provider",
486
- "style": "Style"
521
+ "title": "封面配圖",
522
+ "prompt_hint": "下面的提示詞由文章自動生成。可以編輯以追求特定風格。",
523
+ "prompt_placeholder": "為...生成封面插畫",
524
+ "generate": "生成配圖",
525
+ "generating": "正在生成...",
526
+ "next": "下一步:完成 →",
527
+ "preview_alt": "封面預覽",
528
+ "no_provider": "尚未配置影象生成服務。請先配置一個用於生成封面。",
529
+ "configure": "配置影象服務",
530
+ "style": "風格"
487
531
  },
488
532
  "review": {
489
- "title": "Review & publish",
490
- "publish_hint": "Insert into a note, or set up an MCP publish target to send this article to WeChat / RSS / custom platforms.",
491
- "insert": "Insert into note",
492
- "configure_publish": "Configure publish target",
493
- "uploading": "Uploading cover…",
494
- "cover_upload_failed": "Cover upload failed — inserting without it.",
495
- "insert_failed": "Insert failed: {err}"
533
+ "title": "完成與釋出",
534
+ "publish_hint": "插入筆記,或配置 MCP 釋出目標,把文章發到公眾號 / RSS / 自定平臺。",
535
+ "insert": "插入筆記",
536
+ "configure_publish": "配置釋出目標",
537
+ "uploading": "正在上傳封面...",
538
+ "cover_upload_failed": "封面上傳失敗,將不帶封面插入。",
539
+ "insert_failed": "插入失敗:{err}"
496
540
  },
497
541
  "publish": {
498
- "send": "Send to…",
499
- "opening": "Preparing…",
500
- "picker_title": "Where to publish?",
501
- "empty": "No publish targets configured yet.",
502
- "configure": "Configure publish targets",
503
- "success": "Published to {target}",
504
- "failed": "{target} failed: {err}"
542
+ "send": "傳送至...",
543
+ "opening": "準備中...",
544
+ "picker_title": "釋出到哪裡?",
545
+ "empty": "尚未配置任何釋出目標。",
546
+ "configure": "配置釋出目標",
547
+ "success": "已釋出到 {target}",
548
+ "failed": "{target} 釋出失敗:{err}"
505
549
  },
506
550
  "drafts": {
507
- "title": "Drafts",
508
- "new": "New draft",
509
- "new_sub": "Archive current and start fresh",
510
- "active": "Active",
511
- "untitled": "Untitled draft",
512
- "delete": "Delete draft"
551
+ "title": "草稿",
552
+ "new": "新建草稿",
553
+ "new_sub": "歸檔當前並新開一稿",
554
+ "active": "進行中",
555
+ "untitled": "未命名草稿",
556
+ "delete": "刪除草稿"
513
557
  }
514
558
  },
515
559
  "conflict": {
516
- "__mt": true,
517
- "title": "Conflict Detected",
518
- "description": "This note was edited on another device.",
519
- "keep_server": "Keep server version",
520
- "keep_local": "Keep my version",
521
- "merge": "Merge manually"
560
+ "title": "檢測到衝突",
561
+ "description": "該筆記在其他裝置上被修改了。",
562
+ "keep_server": "保留伺服器版本",
563
+ "keep_local": "保留本地版本",
564
+ "merge": "手動合併"
522
565
  },
523
566
  "context_menu": {
524
567
  "cut": "剪下",
@@ -569,124 +612,122 @@
569
612
  "new_note": "New note"
570
613
  },
571
614
  "enterprise": {
572
- "__mt": true,
573
615
  "hsm": {
574
- "title": "Hardware Security Module (HSM)",
575
- "subtitle": "Connect your HSM provider for FIPS 140-2 Level 3+ key operations",
576
- "upgrade_required": "HSM integration requires the Enterprise plan.",
616
+ "title": "硬體安全模組(HSM",
617
+ "subtitle": "連線您的 HSM 提供商,進行 FIPS 140-2 3級及以上金鑰操作",
618
+ "upgrade_required": "HSM 整合需要企業版計劃。",
577
619
  "providers": {
578
620
  "aws": "AWS CloudHSM",
579
- "aliyun": "Aliyun HSM",
580
- "pkcs11": "PKCS#11 (Generic)"
621
+ "aliyun": "阿里雲 HSM",
622
+ "pkcs11": "PKCS#11(通用)"
581
623
  },
582
624
  "aws": {
583
- "cluster_id": "Cluster ID",
584
- "region": "AWS Region"
625
+ "cluster_id": "叢集 ID",
626
+ "region": "AWS 地域"
585
627
  },
586
628
  "aliyun": {
587
- "instance_id": "Instance ID",
588
- "region": "Region"
629
+ "instance_id": "例項 ID",
630
+ "region": "地域"
589
631
  },
590
632
  "pkcs11": {
591
- "lib_path": "Library Path (.so / .dll / .dylib)",
633
+ "lib_path": "庫檔案路徑(.so / .dll / .dylib",
592
634
  "slot": "Slot ID",
593
- "supported_mechanisms": "Supported Mechanisms"
635
+ "supported_mechanisms": "支援的機制"
594
636
  }
595
637
  },
596
638
  "orgs": {
597
- "title": "Multi-Organization Management",
598
- "subtitle": "Manage seat allocation and cross-org knowledge sharing",
599
- "upgrade_required": "Multi-org management requires the Enterprise plan.",
600
- "seat_allocation": "Seat Allocation",
601
- "total_seats": "Total Seats",
602
- "allocated": "Allocated",
603
- "unallocated": "Unallocated",
604
- "org_list": "Organizations",
605
- "members": "Members",
606
- "cross_org_sharing": "Cross-Org Sharing",
607
- "shares_to": "shares KBs to",
639
+ "title": "多組織管理",
640
+ "subtitle": "管理席位分配與跨組織知識庫共享",
641
+ "upgrade_required": "多組織管理需要企業版計劃。",
642
+ "seat_allocation": "席位分配",
643
+ "total_seats": "總席位",
644
+ "allocated": "已分配",
645
+ "unallocated": "未分配",
646
+ "org_list": "組織列表",
647
+ "members": "成員",
648
+ "cross_org_sharing": "跨組織共享",
649
+ "shares_to": "共享知識庫至",
608
650
  "kb_ids_placeholder": "kb-1, kb-2, ...",
609
- "request_share": "Request Share"
651
+ "request_share": "申請共享"
610
652
  },
611
653
  "compliance": {
612
- "title": "Compliance & Archiving",
613
- "subtitle": "GDPR, HIPAA, SOC2, ISO 27001 compliance exports and WORM archiving",
614
- "upgrade_required": "Compliance archiving requires the Enterprise plan.",
654
+ "title": "合規與歸檔",
655
+ "subtitle": "GDPRHIPAASOC2ISO 27001 合規匯出及 WORM 歸檔",
656
+ "upgrade_required": "合規歸檔功能需要企業版計劃。",
615
657
  "tabs": {
616
- "retention": "Retention",
617
- "worm": "WORM",
618
- "export": "Export"
658
+ "retention": "資料留存",
659
+ "worm": "WORM 歸檔",
660
+ "export": "合規匯出"
619
661
  },
620
662
  "retention": {
621
- "title": "7-Year Retention",
622
- "hint": "Records are retained for 7 years and cannot be deleted during this period.",
623
- "days_left": "days left",
624
- "years": "years"
663
+ "title": "7 年資料留存",
664
+ "hint": "記錄將被保留 7 年,期間不可刪除。",
665
+ "days_left": "天后到期",
666
+ "years": ""
625
667
  },
626
668
  "worm": {
627
- "title": "WORM Records",
628
- "description": "Write-Once-Read-Many records are immutable once created.",
629
- "immutable_label": "Immutable",
630
- "immutable_desc": "Records cannot be modified or deleted after creation.",
631
- "retention_years": "Retention Period"
669
+ "title": "WORM 記錄",
670
+ "description": "一次寫入多次讀取,建立後不可更改。",
671
+ "immutable_label": "不可變",
672
+ "immutable_desc": "記錄建立後不可修改或刪除。",
673
+ "retention_years": "留存週期"
632
674
  },
633
675
  "export": {
634
- "title": "Compliance Export",
635
- "standard": "Standard",
636
- "format": "Format",
637
- "generate": "Generate Export",
638
- "applicable_events": "Applicable audit events"
676
+ "title": "合規匯出",
677
+ "standard": "合規標準",
678
+ "format": "匯出格式",
679
+ "generate": "生成匯出",
680
+ "applicable_events": "適用審計事件"
639
681
  }
640
682
  },
641
683
  "custom_domain": {
642
- "title": "Custom Domain",
643
- "subtitle": "Use your own domain name for the Moraya workspace.",
644
- "upgrade_required": "Custom domain requires the Enterprise plan.",
645
- "hostname": "Your Domain",
646
- "cname_target": "CNAME Target",
647
- "dns_record": "DNS Record to Add",
648
- "dns_hint": "Add this CNAME record to your DNS provider and wait for propagation (up to 48h).",
649
- "save": "Save & Verify",
650
- "verifying_hint": "Verification in progress. DNS propagation may take up to 48 hours."
684
+ "title": "自定義域名",
685
+ "subtitle": " Moraya 工作區使用您自己的域名。",
686
+ "upgrade_required": "自定義域名需要企業版計劃。",
687
+ "hostname": "您的域名",
688
+ "cname_target": "CNAME 目標",
689
+ "dns_record": "需新增的 DNS 記錄",
690
+ "dns_hint": "將此 CNAME 記錄新增到您的 DNS 提供商,等待生效(最長 48 小時)。",
691
+ "save": "儲存並驗證",
692
+ "verifying_hint": "驗證進行中,DNS 生效最長需要 48 小時。"
651
693
  },
652
694
  "custom_ai": {
653
- "title": "Custom AI Endpoint",
654
- "subtitle": "Connect your own OpenAI-compatible LLM endpoint.",
655
- "upgrade_required": "Custom AI endpoints require the Enterprise plan.",
656
- "add_provider": "Add Provider",
657
- "provider_name": "Provider Name",
695
+ "title": "自定義 AI 端點",
696
+ "subtitle": "連線您自己的 OpenAI 相容 LLM 端點。",
697
+ "upgrade_required": "自定義 AI 端點需要企業版計劃。",
698
+ "add_provider": "新增提供商",
699
+ "provider_name": "提供商名稱",
658
700
  "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"
701
+ "api_key_ref": "API Key 引用(金鑰鏈 ID",
702
+ "models_csv": "模型(英文逗號分隔)",
703
+ "add": "新增提供商",
704
+ "saved_providers": "已儲存的提供商",
705
+ "context_window": "上下文視窗",
706
+ "models": "個模型",
707
+ "openai_compatible": "OpenAI 相容",
708
+ "custom_format": "自定義格式"
667
709
  },
668
710
  "data_residency": {
669
- "title": "Data Residency",
670
- "subtitle": "Control where your organization's data is stored and processed.",
671
- "upgrade_required": "Data residency control requires the Enterprise plan.",
672
- "primary_region": "Primary Region",
673
- "allowed_regions": "Allowed Regions",
674
- "restrict_cross_region": "Restrict cross-region data transfers",
675
- "filter_by_compliance": "Filter by Compliance Standard",
676
- "all": "All",
677
- "requirements": "Legal Requirements",
678
- "save_policy": "Save Policy",
679
- "policy_saved": "Policy saved"
711
+ "title": "資料駐留",
712
+ "subtitle": "控制組織資料的儲存和處理位置。",
713
+ "upgrade_required": "資料駐留控制需要企業版計劃。",
714
+ "primary_region": "主要地域",
715
+ "allowed_regions": "允許的地域",
716
+ "restrict_cross_region": "限制跨地域資料傳輸",
717
+ "filter_by_compliance": "按合規標準篩選",
718
+ "all": "全部",
719
+ "requirements": "法律要求",
720
+ "save_policy": "儲存策略",
721
+ "policy_saved": "策略已儲存"
680
722
  }
681
723
  },
682
724
  "entitlement": {
683
- "__mt": true,
684
725
  "connect": "Connect",
685
726
  "personal": "Personal",
686
727
  "team": "Team",
687
728
  "enterprise": "Enterprise",
688
- "current_plan": "Current plan",
689
- "upgrade": "Upgrade"
729
+ "current_plan": "當前套餐",
730
+ "upgrade": "升級"
690
731
  },
691
732
  "errors": {
692
733
  "ai_not_configured": "AI 未設定。",
@@ -727,21 +768,20 @@
727
768
  }
728
769
  },
729
770
  "explorer": {
730
- "__mt": true,
731
- "title": "Files",
732
- "filter_placeholder": "Filter notes...",
733
- "empty": "No notes yet",
734
- "no_results": "No matching notes",
735
- "new_note": "New note",
736
- "new_folder": "New folder",
737
- "rename": "Rename",
738
- "delete": "Delete",
739
- "favorite": "Add to favorites",
740
- "unfavorite": "Remove from favorites",
741
- "context_menu": "File options",
742
- "tags": "Tags",
743
- "no_tags": "No tags found",
744
- "untagged": "Untagged"
771
+ "title": "檔案",
772
+ "filter_placeholder": "篩選筆記...",
773
+ "empty": "暫無筆記",
774
+ "no_results": "無匹配筆記",
775
+ "new_note": "新建筆記",
776
+ "new_folder": "新建資料夾",
777
+ "rename": "重新命名",
778
+ "delete": "刪除",
779
+ "favorite": "新增到收藏",
780
+ "unfavorite": "取消收藏",
781
+ "context_menu": "檔案操作",
782
+ "tags": "標籤",
783
+ "no_tags": "未找到標籤",
784
+ "untagged": "未標記"
745
785
  },
746
786
  "export": {
747
787
  "export_as": "匯出為 {format}",
@@ -775,38 +815,37 @@
775
815
  }
776
816
  },
777
817
  "fulltext_search": {
778
- "__mt": true,
779
- "title": "Hybrid Search",
780
- "placeholder": "Search notes, memories, workflows...",
781
- "clear": "Clear",
782
- "filters": "Filters",
783
- "filter_time": "Time",
784
- "filter_source": "Source",
785
- "filter_tags": "Tags",
786
- "time_all": "All time",
787
- "time_today": "Today",
788
- "time_7d": "Last 7 days",
789
- "time_30d": "Last 30 days",
790
- "time_90d": "Last 90 days",
791
- "source_all": "All sources",
792
- "source_note": "Notes",
793
- "source_memory": "Memory",
794
- "source_workflow": "Workflows",
795
- "cross_kb_hint": "Upgrade for cross-KB search",
796
- "tab_results": "Results",
797
- "tab_history": "History",
798
- "tab_saved": "Saved",
799
- "save_search": "Save search",
800
- "save_name_prompt": "Name this saved search",
801
- "searching": "Searching...",
802
- "no_results": "No results found",
803
- "start_typing": "Type to search",
804
- "history_empty": "No search history",
805
- "saved_empty": "No saved searches",
806
- "clear_history": "Clear history",
807
- "hint_navigate": "Navigate",
808
- "hint_open": "Open",
809
- "hint_close": "Close"
818
+ "title": "混合搜尋",
819
+ "placeholder": "搜尋筆記、記憶、工作流...",
820
+ "clear": "清除",
821
+ "filters": "過濾器",
822
+ "filter_time": "時間",
823
+ "filter_source": "來源",
824
+ "filter_tags": "標籤",
825
+ "time_all": "全部時間",
826
+ "time_today": "今天",
827
+ "time_7d": "最近 7 天",
828
+ "time_30d": "最近 30 ",
829
+ "time_90d": "最近 90 ",
830
+ "source_all": "全部來源",
831
+ "source_note": "筆記",
832
+ "source_memory": "記憶",
833
+ "source_workflow": "工作流",
834
+ "cross_kb_hint": "升級套餐以跨知識庫搜尋",
835
+ "tab_results": "結果",
836
+ "tab_history": "歷史",
837
+ "tab_saved": "已儲存",
838
+ "save_search": "儲存搜尋",
839
+ "save_name_prompt": "為此搜尋命名",
840
+ "searching": "搜尋中...",
841
+ "no_results": "未找到結果",
842
+ "start_typing": "輸入以開始搜尋",
843
+ "history_empty": "暫無搜尋歷史",
844
+ "saved_empty": "暫無已儲存的搜尋",
845
+ "clear_history": "清除歷史",
846
+ "hint_navigate": "導航",
847
+ "hint_open": "開啟",
848
+ "hint_close": "關閉"
810
849
  },
811
850
  "git": {
812
851
  "bind_title": "關聯 Git 儲存庫",
@@ -891,16 +930,15 @@
891
930
  "merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first."
892
931
  },
893
932
  "image_ctx": {
894
- "__mt": true,
895
- "copy_url": "Copy URL",
896
- "replace": "Replace Image",
897
- "edit_alt": "Edit Alt Text",
898
- "resize": "Resize",
899
- "delete": "Delete Image",
900
- "alt_label": "Alt Text",
901
- "alt_placeholder": "Describe the image...",
902
- "alt_hint": "Improves accessibility and SEO",
903
- "save_alt": "Save"
933
+ "copy_url": "複製連結",
934
+ "replace": "替換圖片",
935
+ "edit_alt": "編輯替代文字",
936
+ "resize": "調整大小",
937
+ "delete": "刪除圖片",
938
+ "alt_label": "替代文字",
939
+ "alt_placeholder": "描述圖片內容...",
940
+ "alt_hint": "改善無障礙體驗和 SEO",
941
+ "save_alt": "儲存"
904
942
  },
905
943
  "image_dialog": {
906
944
  "title": "插入圖片",
@@ -1492,65 +1530,63 @@
1492
1530
  }
1493
1531
  },
1494
1532
  "media": {
1495
- "__mt": true,
1496
- "upload_title": "Media Uploads",
1497
- "uploading": "Uploading",
1498
- "upload_done": "Uploaded",
1499
- "upload_error": "Upload failed",
1500
- "compressed_from": "Compressed",
1501
- "compress_auto": "Auto-compress images > 1MB",
1502
- "size_limit_exceeded": "File exceeds size limit for your plan",
1503
- "mime_not_allowed": "File type not supported",
1504
- "quota_warn": "This note has over 10MB of media",
1505
- "quota_hard": "Media quota exceeded (100MB per note)",
1506
- "quota_title": "Media Usage",
1507
- "paste_title": "Paste Media"
1533
+ "upload_title": "媒體上傳",
1534
+ "uploading": "上傳中",
1535
+ "upload_done": "上傳完成",
1536
+ "upload_error": "上傳失敗",
1537
+ "compressed_from": "已壓縮",
1538
+ "compress_auto": "自動壓縮 > 1MB 的圖片",
1539
+ "size_limit_exceeded": "檔案超過當前套餐大小限制",
1540
+ "mime_not_allowed": "不支援該檔案型別",
1541
+ "quota_warn": "此筆記媒體總量已超過 10MB",
1542
+ "quota_hard": "媒體配額已超出(每篇筆記 100MB)",
1543
+ "quota_title": "媒體用量",
1544
+ "paste_title": "貼上媒體"
1508
1545
  },
1509
1546
  "memory": {
1510
- "__mt": true,
1511
- "title": "Long-Term Memory",
1512
- "upgrade_required": "Long-term memory requires Personal plan or above.",
1513
- "health_title": "Memory Health",
1514
- "settings_title": "Memory Settings",
1515
- "half_life_label": "Memory half-life",
1516
- "half_life_never": "Never (no decay)",
1517
- "days": "days",
1518
- "export_import": "Export / Import",
1519
- "memories_title": "Memories",
1520
- "search_placeholder": "Search memories...",
1521
- "filter_all": "All types",
1522
- "kind_preference": "Preference",
1523
- "kind_project": "Project",
1524
- "kind_fact": "Fact",
1525
- "no_memories": "No memories yet. Use /memorize in chat to add one.",
1526
- "edit": "Edit",
1527
- "delete": "Delete",
1528
- "enable": "Enable",
1529
- "disable": "Disable",
1530
- "save": "Save",
1531
- "cancel": "Cancel",
1532
- "weight": "Weight",
1533
- "danger_zone": "Danger Zone",
1534
- "reset_all": "Reset all memories",
1535
- "reset_confirm_instruction": "Type RESET to confirm deleting all memories. This cannot be undone.",
1536
- "confirm_reset": "Delete all memories",
1537
- "export_title": "Export Memories",
1538
- "export_hint": "Download all your memories as a JSON file for backup or migration.",
1539
- "export_btn": "Export memories",
1540
- "export_invalid_format": "Invalid memory export format.",
1541
- "import_title": "Import Memories",
1542
- "import_hint": "Import memories from a previously exported JSON file.",
1543
- "choose_file": "Choose file (.json)",
1544
- "import_placeholder": "Or paste JSON here...",
1545
- "import_btn": "Import",
1546
- "import_success": "Memories imported successfully.",
1547
- "memorize_ack": "Memory saved.",
1548
- "forget_ack": "Memory forgotten.",
1549
- "forget_not_found": "No matching memories found.",
1550
- "private_mode_on": "Private mode on — this conversation will not be extracted.",
1551
- "extract_queued": "{n} memory/memories pending your review.",
1552
- "conflict_detected": "Conflict detected with existing memory.",
1553
- "upgrade_memory": "Upgrade to Personal to unlock long-term memory."
1547
+ "title": "長期記憶",
1548
+ "upgrade_required": "長期記憶功能需要 Personal 及以上套餐。",
1549
+ "health_title": "記憶健康檢查",
1550
+ "settings_title": "記憶設定",
1551
+ "half_life_label": "記憶半衰期",
1552
+ "half_life_never": "永不衰減",
1553
+ "days": "",
1554
+ "export_import": "匯出 / 匯入",
1555
+ "memories_title": "我的記憶",
1556
+ "search_placeholder": "搜尋記憶...",
1557
+ "filter_all": "全部型別",
1558
+ "kind_preference": "偏好",
1559
+ "kind_project": "專案",
1560
+ "kind_fact": "事實",
1561
+ "no_memories": "暫無記憶。在對話中使用 /memorize 新增一條。",
1562
+ "edit": "編輯",
1563
+ "delete": "刪除",
1564
+ "enable": "啟用",
1565
+ "disable": "禁用",
1566
+ "save": "儲存",
1567
+ "cancel": "取消",
1568
+ "weight": "權重",
1569
+ "danger_zone": "危險操作",
1570
+ "reset_all": "清空所有記憶",
1571
+ "reset_confirm_instruction": "輸入 RESET 確認刪除所有記憶,此操作不可撤銷。",
1572
+ "confirm_reset": "刪除所有記憶",
1573
+ "export_title": "匯出記憶",
1574
+ "export_hint": "將所有記憶匯出為 JSON 檔案,用於備份或遷移。",
1575
+ "export_btn": "匯出記憶",
1576
+ "export_invalid_format": "無效的記憶匯出格式。",
1577
+ "import_title": "匯入記憶",
1578
+ "import_hint": "從之前匯出的 JSON 檔案匯入記憶。",
1579
+ "choose_file": "選擇檔案(.json)",
1580
+ "import_placeholder": "或在此處貼上 JSON...",
1581
+ "import_btn": "匯入",
1582
+ "import_success": "記憶匯入成功。",
1583
+ "memorize_ack": "記憶已儲存。",
1584
+ "forget_ack": "記憶已遺忘。",
1585
+ "forget_not_found": "未找到匹配的記憶。",
1586
+ "private_mode_on": "私密模式已開啟——本次對話不會被抽取記憶。",
1587
+ "extract_queued": "{n} 條記憶待稽核。",
1588
+ "conflict_detected": "與現有記憶存在衝突。",
1589
+ "upgrade_memory": "升級到 Personal 套餐以解鎖長期記憶功能。"
1554
1590
  },
1555
1591
  "menu": {
1556
1592
  "file": "檔案",
@@ -1623,362 +1659,371 @@
1623
1659
  "empty": "空圖表"
1624
1660
  },
1625
1661
  "mfa": {
1626
- "__mt": true,
1627
- "title": "Multi-Factor Authentication",
1628
- "description": "Configure MFA requirements for team members.",
1629
- "policy": "MFA Policy",
1630
- "allowed_types": "Allowed MFA Methods",
1631
- "grace_period": "Grace Period",
1632
- "grace_period_hint": "Hours new members have to enroll in MFA after joining.",
1633
- "hours": "hours",
1634
- "required_banner": "MFA is required. All members must enroll before accessing team resources.",
1635
- "save": "Save MFA Settings",
1636
- "saved_success": "MFA settings saved."
1662
+ "title": "多因素認證",
1663
+ "description": "配置團隊成員的 MFA 要求。",
1664
+ "policy": "MFA 策略",
1665
+ "allowed_types": "允許的 MFA 方式",
1666
+ "grace_period": "寬限期",
1667
+ "grace_period_hint": "新成員加入後需在此時間內完成 MFA 註冊(小時)。",
1668
+ "hours": "小時",
1669
+ "required_banner": "MFA 為必選項,所有成員在訪問團隊資源前必須註冊。",
1670
+ "save": "儲存 MFA 設定",
1671
+ "saved_success": "MFA 設定已儲存。"
1637
1672
  },
1638
1673
  "migration": {
1639
- "__mt": true,
1640
- "title": "KB Migration",
1641
- "subtitle": "Move your knowledge base to a different storage provider",
1642
- "new_migration": "New Migration",
1643
- "wizard_title": "New Migration Wizard",
1674
+ "title": "KB 遷移",
1675
+ "subtitle": "將知識庫遷移到其他儲存提供商",
1676
+ "new_migration": "新建遷移",
1677
+ "wizard_title": "新建遷移向導",
1644
1678
  "kb_id": "KB ID",
1645
- "kb_name": "KB Name",
1646
- "provider": "Provider",
1647
- "bucket": "Bucket",
1648
- "prefix": "Prefix",
1649
- "source": "Source",
1650
- "target": "Target",
1651
- "encryption_mode": "Encryption Mode",
1652
- "dry_run_label": "Dry run (simulate only, no files copied)",
1653
- "dry_run_badge": "Dry Run",
1654
- "dry_run_start": "Start Dry Run",
1655
- "start_migration": "Start Migration",
1656
- "cancel": "Cancel",
1657
- "files": "files",
1658
- "errors": "Errors",
1659
- "started": "Started",
1660
- "rollback_deadline": "Rollback deadline",
1661
- "rollback": "Rollback",
1662
- "download_log": "Download Log",
1663
- "history_title": "Migration History",
1664
- "history_empty": "No migrations yet",
1665
- "loading": "Loading...",
1666
- "confirm_delete": "Delete this migration session?"
1679
+ "kb_name": "KB 名稱",
1680
+ "provider": "提供商",
1681
+ "bucket": "儲存桶",
1682
+ "prefix": "字首",
1683
+ "source": "來源",
1684
+ "target": "目標",
1685
+ "encryption_mode": "加密模式",
1686
+ "dry_run_label": "模擬執行(僅預估,不復制檔案)",
1687
+ "dry_run_badge": "模擬執行",
1688
+ "dry_run_start": "開始模擬",
1689
+ "start_migration": "開始遷移",
1690
+ "cancel": "取消",
1691
+ "files": "個檔案",
1692
+ "errors": "錯誤",
1693
+ "started": "開始時間",
1694
+ "rollback_deadline": "回滾截止日期",
1695
+ "rollback": "回滾",
1696
+ "download_log": "下載日誌",
1697
+ "history_title": "遷移歷史",
1698
+ "history_empty": "暫無遷移記錄",
1699
+ "loading": "載入中...",
1700
+ "confirm_delete": "刪除此遷移會話?"
1667
1701
  },
1668
1702
  "mobile": {
1669
- "__mt": true,
1670
1703
  "tab": {
1671
- "nav_label": "Primary navigation",
1672
- "edit": "Edit",
1704
+ "nav_label": "主導航",
1705
+ "edit": "編輯",
1673
1706
  "ai": "AI",
1674
- "files": "Knowledge Base",
1675
- "settings": "Settings"
1707
+ "files": "知識庫",
1708
+ "settings": "設定"
1676
1709
  },
1677
1710
  "appbar": {
1678
- "menu": "Open sidebar",
1679
- "more": "More actions",
1680
- "toggle_ai_pane": "Toggle AI pane",
1681
- "untitled": "Untitled"
1711
+ "menu": "開啟側邊欄",
1712
+ "more": "更多操作",
1713
+ "toggle_ai_pane": "切換 AI 窗格",
1714
+ "untitled": "未命名"
1682
1715
  },
1683
1716
  "overflow": {
1684
- "mode_label": "Mode",
1685
- "mode_visual": "Visual",
1686
- "mode_source": "Source",
1687
- "search": "Find & Replace",
1688
- "outline": "Outline",
1689
- "export": "Export",
1690
- "share": "Share"
1717
+ "mode_label": "模式",
1718
+ "mode_visual": "視覺化",
1719
+ "mode_source": "原始碼",
1720
+ "search": "查詢替換",
1721
+ "outline": "大綱",
1722
+ "export": "匯出",
1723
+ "share": "分享"
1691
1724
  },
1692
1725
  "format": {
1693
- "bold": "Bold",
1694
- "italic": "Italic",
1695
- "heading": "Heading",
1696
- "list": "List",
1697
- "code": "Code",
1698
- "link": "Link",
1699
- "link_prompt": "Enter URL",
1700
- "image": "Image"
1726
+ "bold": "加粗",
1727
+ "italic": "斜體",
1728
+ "heading": "標題",
1729
+ "list": "列表",
1730
+ "code": "程式碼",
1731
+ "link": "連結",
1732
+ "link_prompt": "輸入連結",
1733
+ "image": "圖片"
1701
1734
  },
1702
1735
  "ai": {
1703
1736
  "title": "AI",
1704
- "placeholder": "Ask anything or describe what you want to write…",
1705
- "send": "Send",
1706
- "voice": "Voice",
1707
- "model": "Model",
1708
- "empty_state": "Your AI conversations will appear here.",
1709
- "thinking": "Thinking…",
1710
- "clear": "Clear conversation",
1711
- "clear_confirm": "Clear all messages?",
1712
- "stub_response": "Hi! I'm a placeholder response. The real AI provider will be wired up in v0.68.",
1713
- "not_configured_title": "AI is not configured yet",
1714
- "not_configured_text": "Add an API key or pick a local model in Settings → AI to start chatting.",
1715
- "not_configured": "AI is not configured. Open Settings to set up an AI model?",
1716
- "configure_now": "Set up",
1717
- "stop": "Stop",
1718
- "error_prefix": "Error",
1719
- "pick_model": "Switch AI model",
1720
- "no_providers": "No AI providers configured yet. Tap “Set up” to add one.",
1721
- "conversations": "Conversations",
1722
- "new_chat": "New chat",
1723
- "no_conversations": "No conversations yet. Tap “New chat” to start.",
1724
- "no_matches": "No conversations match your search.",
1725
- "search_placeholder": "Search conversations…",
1726
- "attach_image": "Attach image",
1727
- "remove_attachment": "Remove attachment",
1728
- "attached_image": "Attached image",
1729
- "compressing": "Compressing…",
1730
- "copy": "Copy",
1731
- "sync_syncing": "Syncing with Picora…",
1732
- "sync_idle": "Synced with Picora",
1733
- "sync_offline": "Offline (will retry)",
1734
- "sync_error": "Sync error — check connection",
1735
- "sync_disabled": "Sync disabled",
1736
- "mention_title": "Mention a note",
1737
- "mention_search": "Search your notes…",
1738
- "no_notes": "No notes yet — open one from the Files tab.",
1739
- "insert_action": "Insert",
1740
- "insert_title": "Insert into note",
1741
- "insert_append": "Append to current note",
1742
- "insert_append_sub": "Add this AI reply to the doc you have open in the Edit tab.",
1743
- "insert_new": "Create new note",
1744
- "insert_new_sub": "Make a new doc from this AI reply and open it.",
1745
- "insert_no_active": "No document is open in the Edit tab.",
1746
- "insert_failed": "Could not write the note — check storage permissions.",
1747
- "insert_append_ok": "Appended to current note.",
1748
- "insert_new_ok": "New note created.",
1749
- "export": "Export / Share",
1750
- "export_failed": "Could not export this conversation.",
1751
- "export_ok": "Conversation exported.",
1752
- "rag_used": "Referenced {n} past message(s)",
1753
- "rag_on_title": "History RAG enabled — past conversations may be used as context",
1754
- "citations_title": "{n} reference(s)",
1755
- "citations_empty": "No citations attached to this message.",
1756
- "params_title": "Generation parameters",
1757
- "params_hint": "Override AI generation settings for this conversation only. Leave blank to use the provider default.",
1758
- "params_save": "Save",
1759
- "params_reset": "Reset to defaults",
1760
- "param_temperature": "Temperature",
1761
- "param_temperature_sub": "0 = deterministic · 1 = balanced · 2 = creative",
1762
- "param_max_tokens": "Max output tokens",
1763
- "param_max_tokens_sub": "Hard cap on the model's reply length",
1737
+ "placeholder": "提問或描述你想寫什麼…",
1738
+ "send": "傳送",
1739
+ "voice": "語音",
1740
+ "model": "模型",
1741
+ "empty_state": "你的 AI 對話會顯示在這裡。",
1742
+ "thinking": "思考中…",
1743
+ "clear": "清空對話",
1744
+ "clear_confirm": "清空所有訊息?",
1745
+ "cleared": "已清空對話",
1746
+ "clear_undone": "訊息已恢復",
1747
+ "stub_response": "你好!我是佔位回覆。真實的 AI 提供商將在 v0.68 接入。",
1748
+ "not_configured_title": "尚未配置 AI",
1749
+ "not_configured_text": "在「設定 → AI」裡新增 API Key 或選擇一個本地模型即可開始對話。",
1750
+ "not_configured": "尚未配置 AI 模型,前往設定進行配置?",
1751
+ "configure_now": "去設定",
1752
+ "stop": "停止",
1753
+ "error_prefix": "錯誤",
1754
+ "pick_model": "切換 AI 模型",
1755
+ "no_providers": "尚未配置 AI 模型,點選「去設定」新增一個。",
1756
+ "conversations": "對話",
1757
+ "new_chat": "新建對話",
1758
+ "no_conversations": "暫無對話。點選「新建對話」開始。",
1759
+ "no_matches": "沒有匹配的對話。",
1760
+ "search_placeholder": "搜尋對話…",
1761
+ "attach_image": "新增圖片",
1762
+ "remove_attachment": "移除附件",
1763
+ "attached_image": "附件圖片",
1764
+ "compressing": "壓縮中…",
1765
+ "copy": "複製",
1766
+ "sync_syncing": "同步至 Picora 中…",
1767
+ "sync_idle": "已同步至 Picora",
1768
+ "sync_offline": "離線(稍後重試)",
1769
+ "sync_error": "同步出錯——請檢查網路",
1770
+ "sync_disabled": "同步已關閉",
1771
+ "mention_title": "提及筆記",
1772
+ "mention_search": "搜尋你的筆記…",
1773
+ "no_notes": "暫無筆記——請先在「檔案」Tab 開啟一篇。",
1774
+ "insert_action": "插入",
1775
+ "insert_title": "插入到筆記",
1776
+ "insert_append": "追加到當前筆記",
1777
+ "insert_append_sub": "把這條 AI 回覆加到「編輯」Tab 當前開啟的文件末尾。",
1778
+ "insert_new": "新建筆記",
1779
+ "insert_new_sub": "用這條 AI 回覆建立一篇新文件並開啟。",
1780
+ "insert_no_active": "「編輯」Tab 沒有開啟的文件。",
1781
+ "insert_failed": "寫入失敗——請檢查儲存許可權。",
1782
+ "insert_append_ok": "已追加到當前筆記。",
1783
+ "insert_new_ok": "新筆記已建立。",
1784
+ "export": "匯出 / 分享",
1785
+ "export_failed": "匯出失敗。",
1786
+ "export_ok": "對話已匯出。",
1787
+ "rag_used": "引用了 {n} 條過往訊息",
1788
+ "rag_on_title": "歷史 RAG 已啟用——過往對話可能被作為上下文",
1789
+ "citations_title": "{n} 條引用",
1790
+ "citations_empty": "該訊息沒有附帶引用。",
1791
+ "params_title": "生成引數",
1792
+ "params_hint": "僅對當前對話覆蓋 AI 生成設定。留空使用服務商預設值。",
1793
+ "params_save": "儲存",
1794
+ "params_reset": "重置為預設",
1795
+ "param_temperature": "溫度(Temperature)",
1796
+ "param_temperature_sub": "0 = 確定性 · 1 = 平衡 · 2 = 創意",
1797
+ "param_max_tokens": "最大輸出 token",
1798
+ "param_max_tokens_sub": "模型回覆長度上限",
1764
1799
  "param_top_p": "Top-P",
1765
- "param_top_p_sub": "Nucleus sampling threshold (01)",
1766
- "param_stop": "Stop sequences",
1767
- "param_stop_sub": "Model halts when about to emit any of these. Comma-separated; use \\n for newline.",
1800
+ "param_top_p_sub": "Nucleus sampling 閾值(0-1",
1801
+ "param_stop": "停止序列(Stop Sequences)",
1802
+ "param_stop_sub": "模型生成到任一字串時立即停止。逗號分隔;用 \\n 表示換行。",
1768
1803
  "param_stop_placeholder": "\\n\\n###, END",
1769
- "presets_label": "Presets",
1770
- "preset_save_as": "Save current as preset",
1771
- "preset_save_prompt": "Name this preset:",
1772
- "preset_delete_confirm": "Delete preset \"{name}\"?",
1773
- "preset_delete_aria": "Delete preset",
1774
- "preset_picker_title": "Pick a preset",
1775
- "preset_picker_hint": "Switch tone for this conversation. For fine-tuning, use the ⚙ gear.",
1776
- "preset_picker_custom_note": "Currently using custom values — open ⚙ to view or save them as a preset.",
1777
- "preset_custom_label": "Custom",
1778
- "retry_title": "Retry this reply",
1779
- "retry_action": "Retry",
1780
- "retry_as_is": "Retry with current params",
1781
- "retry_with_preset": "Or try a different preset",
1782
- "retry_done": "Reply regenerating",
1783
- "retry_undone": "Original reply restored",
1784
- "undo": "Undo",
1804
+ "presets_label": "預設",
1805
+ "preset_save_as": "把當前值儲存為預設",
1806
+ "preset_save_prompt": "命名這個預設:",
1807
+ "preset_delete_confirm": "刪除預設「{name}」?",
1808
+ "preset_delete_aria": "刪除預設",
1809
+ "preset_deleted": "已刪除預設「{name}」",
1810
+ "preset_restored": "預設已恢復",
1811
+ "preset_picker_title": "選擇預設",
1812
+ "preset_picker_hint": "切換當前對話的語氣;要精細調參請用 ⚙ 齒輪按鈕。",
1813
+ "preset_picker_custom_note": "當前是自定義值——可以在 裡檢視或另存為預設。",
1814
+ "preset_custom_label": "自定義",
1815
+ "retry_title": "重新生成這條回覆",
1816
+ "retry_action": "重試",
1817
+ "retry_as_is": "用當前引數重試",
1818
+ "retry_with_preset": "或換個預設試試",
1819
+ "retry_done": "正在重新生成",
1820
+ "retry_undone": "已恢復原回覆",
1821
+ "undo": "撤銷",
1785
1822
  "presets": {
1786
1823
  "default": {
1787
- "label": "Default"
1824
+ "label": "預設"
1788
1825
  },
1789
1826
  "precise": {
1790
- "label": "Precise"
1827
+ "label": "嚴謹"
1791
1828
  },
1792
1829
  "balanced": {
1793
- "label": "Balanced"
1830
+ "label": "平衡"
1794
1831
  },
1795
1832
  "creative": {
1796
- "label": "Creative"
1833
+ "label": "發散"
1797
1834
  }
1798
1835
  },
1799
- "default": "Default",
1800
- "quick_actions_header": "Start with",
1801
- "workflows_header": "Workflows",
1802
- "wf_steps": "steps",
1836
+ "default": "預設",
1837
+ "quick_actions_header": "快速開始",
1838
+ "workflows_header": "工作流",
1839
+ "wf_steps": "",
1803
1840
  "wf": {
1804
1841
  "summarize-then-translate": {
1805
- "name": "SummarizeTranslate",
1806
- "desc": "TL;DR the input, then translate the summary."
1842
+ "name": "總結翻譯",
1843
+ "desc": "TL;DR 輸入內容,再翻譯摘要。"
1807
1844
  },
1808
1845
  "translate-then-polish": {
1809
- "name": "TranslatePolish",
1810
- "desc": "Translate input, then smooth the translation."
1846
+ "name": "翻譯潤色",
1847
+ "desc": "先翻譯輸入內容,再潤色譯文。"
1811
1848
  },
1812
1849
  "step": {
1813
- "summarize": "Summarizing",
1814
- "translate": "Translating",
1815
- "polish": "Polishing",
1816
- "tone": "Tone",
1817
- "length": "Length",
1818
- "article": "Writing article",
1819
- "cover": "Cover image",
1820
- "target_lang": "Target language",
1821
- "dictate": "Dictation",
1822
- "structurize": "Structuring"
1850
+ "summarize": "總結中",
1851
+ "translate": "翻譯中",
1852
+ "polish": "潤色中",
1853
+ "tone": "語氣",
1854
+ "length": "長度",
1855
+ "article": "生成正文",
1856
+ "cover": "封面配圖",
1857
+ "target_lang": "目標語言",
1858
+ "dictate": "口述",
1859
+ "structurize": "結構化"
1823
1860
  },
1824
1861
  "write-article": {
1825
- "name": "Write article + cover",
1826
- "desc": "Topictone/lengtharticle → AI cover",
1827
- "ask_tone": "What tone should the article take?",
1828
- "ask_length": "How long should it be?",
1829
- "cover_hint": "Generating a cover image…"
1862
+ "name": "寫文章+配圖",
1863
+ "desc": "主題語氣/長度正文 → AI 配圖",
1864
+ "ask_tone": "文章用什麼語氣?",
1865
+ "ask_length": "需要多長?",
1866
+ "cover_hint": "正在生成封面…"
1830
1867
  },
1831
1868
  "translate": {
1832
- "name": "Translate",
1833
- "desc": "Translate text into a target language",
1834
- "ask_lang": "Translate into which language?"
1869
+ "name": "翻譯",
1870
+ "desc": "把文字翻譯成目標語言",
1871
+ "ask_lang": "翻譯成哪種語言?"
1835
1872
  },
1836
1873
  "voice-transcribe": {
1837
- "name": "Voice → note",
1838
- "desc": "Dictate, then structure into a note",
1839
- "hint": "Tap done when you finish speaking."
1874
+ "name": "語音轉筆記",
1875
+ "desc": "口述,轉寫並結構化成筆記",
1876
+ "hint": "說完後點完成。"
1840
1877
  },
1841
1878
  "tone": {
1842
- "general": "General",
1843
- "marketing": "Marketing",
1844
- "technical": "Technical",
1845
- "story": "Story"
1879
+ "general": "通用",
1880
+ "marketing": "營銷",
1881
+ "technical": "技術",
1882
+ "story": "故事"
1846
1883
  },
1847
1884
  "length": {
1848
- "short": "Short (~500)",
1849
- "medium": "Medium (~1500)",
1850
- "long": "Long (~3000)"
1885
+ "short": " (~500)",
1886
+ "medium": " (~1500)",
1887
+ "long": " (~3000)"
1851
1888
  },
1852
1889
  "lang": {
1853
- "en": "English",
1854
- "zh": "Chinese",
1855
- "ja": "Japanese",
1856
- "ko": "Korean"
1890
+ "en": "英語",
1891
+ "zh": "中文",
1892
+ "ja": "日語",
1893
+ "ko": "韓語"
1857
1894
  },
1858
- "cancel": "Cancel",
1859
- "listening": "Listening…",
1860
- "stt_done": "Done",
1861
- "generating_cover": "Generating cover…",
1862
- "cover_failed": "Cover generation failed",
1863
- "skip_cover": "Skip cover",
1864
- "regenerate": "Regenerate",
1865
- "insert_with_cover": "Insert article + cover",
1866
- "no_image_provider": "No image provider — set one up in Settings Image generation."
1895
+ "cancel": "取消",
1896
+ "listening": "正在聆聽…",
1897
+ "stt_done": "完成",
1898
+ "generating_cover": "正在生成封面…",
1899
+ "cover_failed": "封面生成失敗",
1900
+ "skip_cover": "跳過配圖",
1901
+ "regenerate": "重新生成",
1902
+ "insert_with_cover": "插入文章+配圖",
1903
+ "no_image_provider": "未配置影象生成,請到 設定影象生成 新增。"
1867
1904
  },
1868
1905
  "tpl": {
1869
1906
  "screenshot-to-md": {
1870
- "name": "Image → Markdown",
1871
- "desc": "Convert a screenshot, photo, or chart to clean Markdown.",
1872
- "input": "Add a caption or leave empty — the model uses your image."
1907
+ "name": "圖片→Markdown",
1908
+ "desc": "把截圖、照片、圖表轉成乾淨的 Markdown",
1909
+ "input": "可選加說明文字——模型會以你的圖片為主。"
1873
1910
  },
1874
1911
  "summarize-current": {
1875
- "name": "Summarize note",
1876
- "desc": "TL;DR + key terms of the doc open in the Edit tab.",
1877
- "input": "Optional focus: “key claims only”, “as bullet list”…"
1912
+ "name": "總結當前筆記",
1913
+ "desc": "TL;DR + 關鍵詞,針對編輯器裡開啟的文件。",
1914
+ "input": "可選聚焦:「只要核心觀點」「列表形式」…"
1878
1915
  },
1879
1916
  "continue-writing": {
1880
- "name": "Continue writing",
1881
- "desc": "Pick up where you left off in the current doc.",
1882
- "input": "Optional steering: tone, length, next section…"
1917
+ "name": "續寫",
1918
+ "desc": "在當前文件基礎上接著寫。",
1919
+ "input": "可選指引:語氣、長度、下一節…"
1883
1920
  },
1884
1921
  "translate-zh-en": {
1885
- "name": "Translate ZH ↔ EN",
1886
- "desc": "Auto-detects source language. Preserves Markdown.",
1887
- "input": "Paste the text to translate."
1922
+ "name": "中英互譯",
1923
+ "desc": "自動識別源語言,保留 Markdown 格式。",
1924
+ "input": "貼上需要翻譯的文字。"
1888
1925
  }
1889
1926
  },
1890
- "rename": "Rename",
1891
- "rename_prompt": "New title",
1892
- "delete_confirm": "Delete “{title}”? This cannot be undone.",
1893
- "conv_deleted": "Deleted “{title}",
1894
- "conv_restored": "Conversation restored",
1895
- "usage_tooltip": "Prompt tokensCompletion tokens ↓",
1896
- "budget_warn_confirm": "You are nearing your monthly AI budget. Send anyway?",
1897
- "budget_over_confirm": "You are OVER your monthly AI budget. Send anyway?",
1898
- "bulk_import": "Import all",
1899
- "bulk_export": "Export all",
1900
- "import_ok": "Imported {n} conversation(s).",
1901
- "import_empty": "No conversations in that file.",
1902
- "import_failed": "Import failed: {err}",
1903
- "compose": "Compose article",
1904
- "commands_title": "Commands",
1905
- "more_actions": "More actions",
1906
- "commands_empty": "No matching commands.",
1907
- "voice_dictate": "Voice input",
1908
- "voice_stop": "Stop",
1909
- "voice_read_aloud": "Read aloud",
1910
- "voice_local_badge": "On-device",
1911
- "voice_permission_denied": "Microphone or speech permission denied. Enable it in Settings to use voice.",
1912
- "voice_start_failed": "Could not start voice input.",
1913
- "voice_speak_failed": "Could not read this message aloud."
1927
+ "rename": "重新命名",
1928
+ "rename_prompt": "新標題",
1929
+ "delete_confirm": "刪除「{title}」?此操作不可撤銷。",
1930
+ "conv_deleted": "已刪除「{title}",
1931
+ "conv_restored": "對話已恢復",
1932
+ "usage_tooltip": "輸入 token輸出 token ↓",
1933
+ "budget_warn_confirm": "當月 AI 預算即將用完,仍要傳送?",
1934
+ "budget_over_confirm": "當月 AI 預算已用完,仍要傳送?",
1935
+ "bulk_import": "匯入全部",
1936
+ "bulk_export": "匯出全部",
1937
+ "import_ok": "已匯入 {n} 個對話。",
1938
+ "import_empty": "檔案中沒有對話。",
1939
+ "import_failed": "匯入失敗:{err}",
1940
+ "compose": "創作文章",
1941
+ "commands_title": "快捷指令",
1942
+ "more_actions": "更多操作",
1943
+ "commands_empty": "沒有匹配的指令。",
1944
+ "voice_dictate": "語音輸入",
1945
+ "voice_stop": "停止",
1946
+ "voice_read_aloud": "朗讀",
1947
+ "voice_local_badge": "裝置端",
1948
+ "voice_permission_denied": "麥克風或語音識別許可權被拒絕。請在系統設定中開啟後再使用語音。",
1949
+ "voice_start_failed": "無法啟動語音輸入。",
1950
+ "voice_speak_failed": "無法朗讀這條訊息。",
1951
+ "delete": "刪除"
1914
1952
  },
1915
1953
  "files": {
1916
- "title": "Knowledge Base",
1917
- "kb": "Knowledge Bases",
1918
- "tree": "All Notes",
1919
- "recent": "Recent",
1920
- "favorites": "Favorites",
1921
- "open_local": "Open from device",
1922
- "open_local_failed": "Could not open this file. Make sure it's a text or Markdown file.",
1923
- "new": "New document",
1924
- "no_recent": "No recently opened documents.",
1925
- "no_favorites": "No favorites yet. Star a document from the editor to add it here.",
1926
- "empty": "No notes yet. Tap “New document” or “Open from device” to start.",
1927
- "loading": "Loading…",
1928
- "new_kb": "New knowledge base",
1929
- "kb_name_placeholder": "Knowledge base name",
1930
- "create": "Create",
1931
- "cancel": "Cancel",
1932
- "kb_create_failed": "Could not create the knowledge base."
1954
+ "title": "知識庫",
1955
+ "kb": "知識庫",
1956
+ "tree": "全部筆記",
1957
+ "recent": "最近",
1958
+ "favorites": "收藏",
1959
+ "open_local": "從手機開啟",
1960
+ "open_local_failed": "無法開啟該檔案。請確認是文字或 Markdown 檔案。",
1961
+ "new": "新建文件",
1962
+ "no_recent": "暫無最近開啟的文件。",
1963
+ "no_favorites": "還沒有收藏。在編輯器裡給文件加星即可新增到這裡。",
1964
+ "empty": "暫無筆記。點選「新建文件」或「從手機開啟」開始。",
1965
+ "loading": "載入中…",
1966
+ "new_kb": "新建知識庫",
1967
+ "kb_name_placeholder": "知識庫名稱",
1968
+ "create": "建立",
1969
+ "cancel": "取消",
1970
+ "kb_create_failed": "無法建立知識庫。"
1933
1971
  },
1934
1972
  "media": {
1935
- "title": "Cloud images",
1936
- "search": "Search images",
1937
- "loading": "Loading…",
1938
- "empty": "No cloud images yet.",
1939
- "insert": "Insert cloud image"
1973
+ "title": "雲端圖片",
1974
+ "search": "搜尋圖片",
1975
+ "loading": "載入中…",
1976
+ "empty": "暫無雲端圖片。",
1977
+ "insert": "插入雲端圖片"
1940
1978
  }
1941
1979
  },
1942
1980
  "notifications": {
1943
- "__mt": true,
1944
- "title": "Push Notifications",
1945
- "subtitle": "Receive alerts when your AI tasks finish or collaborators @ you.",
1946
- "unsupported": "This browser does not support push notifications.",
1947
- "permission_status": "Permission",
1948
- "permission_denied": "Notification permission denied.",
1949
- "denied_hint": "Open your browser settings to re-enable notifications.",
1950
- "enable": "Enable",
1951
- "disable": "Disable",
1952
- "no_token": "Failed to obtain a device token.",
1953
- "device_registered": "This device is registered:",
1954
- "registered_devices": "Registered devices",
1955
- "no_devices": "No devices registered yet.",
1956
- "revoke": "Revoke",
1957
- "revoke_confirm": "Revoke this device? It will stop receiving push notifications immediately.",
1981
+ "title": "推送通知",
1982
+ "subtitle": " AI 任務完成或協作者 @ 你時,會推送提醒到你的裝置。",
1983
+ "unsupported": "當前瀏覽器不支援推送通知。",
1984
+ "permission_status": "許可權",
1985
+ "permission_denied": "已拒絕通知許可權。",
1986
+ "denied_hint": "請到瀏覽器設定中重新開啟通知許可權。",
1987
+ "enable": "啟用",
1988
+ "disable": "停用",
1989
+ "no_token": "未能獲取到裝置 token。",
1990
+ "device_registered": "本裝置已註冊:",
1991
+ "registered_devices": "已註冊的裝置",
1992
+ "no_devices": "暫無已註冊的裝置。",
1993
+ "revoke": "撤銷",
1994
+ "revoke_confirm": "撤銷該裝置?該裝置將立即停止接收推送通知。",
1958
1995
  "platform": {
1959
1996
  "web": "Web",
1960
1997
  "ios": "iOS",
1961
1998
  "android": "Android",
1962
- "desktop": "Desktop",
1963
- "unknown": "Unknown"
1964
- },
1965
- "registered_at": "Registered {date}",
1966
- "last_seen": "Last seen {date}",
1967
- "error_register": "Could not register this device.",
1968
- "error_list": "Could not load device list."
1999
+ "desktop": "桌面端",
2000
+ "unknown": "未知"
2001
+ },
2002
+ "registered_at": "註冊於 {date}",
2003
+ "last_seen": "最近活躍 {date}",
2004
+ "error_register": "無法註冊該裝置。",
2005
+ "error_list": "無法載入裝置列表。",
2006
+ "recent": "最近通知"
2007
+ },
2008
+ "ocr": {
2009
+ "engine_unavailable": "本裝置不支援文字識別",
2010
+ "capture_short": "拍照",
2011
+ "capture_button": "拍照識別文字",
2012
+ "failed": "識別失敗",
2013
+ "empty_result": "未檢測到文字",
2014
+ "recognizing": "正在識別…"
1969
2015
  },
1970
2016
  "offline": {
1971
- "__mt": true,
1972
- "cache_enabled": "Offline cache enabled",
1973
- "cache_disabled": "Offline cache disabled",
1974
- "cache_size": "{size} cached",
1975
- "cache_note_count": "{count} notes cached",
1976
- "cache_expired": "Cache expired",
1977
- "note_cached": "Note cached for offline",
1978
- "note_evicted": "Note evicted from cache",
1979
- "offline_banner": "You are offline. Showing cached content.",
1980
- "cache_settings": "Offline Cache Settings",
1981
- "max_notes": "Max cached notes"
2017
+ "cache_enabled": "離線快取已啟用",
2018
+ "cache_disabled": "離線快取已關閉",
2019
+ "cache_size": "已快取 {size}",
2020
+ "cache_note_count": "已快取 {count} 篇筆記",
2021
+ "cache_expired": "快取已過期",
2022
+ "note_cached": "筆記已快取(可離線訪問)",
2023
+ "note_evicted": "筆記已從快取移除",
2024
+ "offline_banner": "當前離線,正在顯示快取內容",
2025
+ "cache_settings": "離線快取設定",
2026
+ "max_notes": "最大快取筆記數"
1982
2027
  },
1983
2028
  "outline": {
1984
2029
  "empty": "No headings found",
@@ -1987,27 +2032,25 @@
1987
2032
  "collapse": "Collapse"
1988
2033
  },
1989
2034
  "perf": {
1990
- "__mt": true,
1991
- "memory_warning": "High memory usage detected ({percent}%)",
1992
- "memory_critical": "Critical memory usage ({percent}%)",
1993
- "memory_trend_growing": "Memory growing",
1994
- "memory_trend_stable": "Memory stable",
1995
- "memory_trend_shrinking": "Memory shrinking",
1996
- "vitals_score": "Performance score: {score}",
1997
- "vitals_good": "Good",
1998
- "vitals_needs_improvement": "Needs improvement",
1999
- "vitals_poor": "Poor"
2035
+ "memory_warning": "記憶體使用率偏高({percent}%)",
2036
+ "memory_critical": "記憶體使用率嚴重偏高({percent}%)",
2037
+ "memory_trend_growing": "記憶體持續增長",
2038
+ "memory_trend_stable": "記憶體穩定",
2039
+ "memory_trend_shrinking": "記憶體正在釋放",
2040
+ "vitals_score": "效能評分:{score}",
2041
+ "vitals_good": "良好",
2042
+ "vitals_needs_improvement": "有待改善",
2043
+ "vitals_poor": "較差"
2000
2044
  },
2001
2045
  "permissions": {
2002
- "__mt": true,
2003
- "paste_title": "Allow Clipboard Access?",
2004
- "paste_desc": "Moraya wants to read image data from your clipboard. This is used only when you paste an image.",
2005
- "allow_once": "Allow Once",
2006
- "allow_always": "Always Allow",
2007
- "deny": "Deny",
2008
- "granted": "Clipboard access granted",
2009
- "denied": "Clipboard access denied",
2010
- "revoke": "Revoke Permission"
2046
+ "paste_title": "允許訪問剪貼簿?",
2047
+ "paste_desc": "Moraya 需要讀取剪貼簿中的圖片資料。僅在您貼上圖片時使用。",
2048
+ "allow_once": "僅允許一次",
2049
+ "allow_always": "始終允許",
2050
+ "deny": "拒絕",
2051
+ "granted": "剪貼簿許可權已授予",
2052
+ "denied": "剪貼簿許可權已拒絕",
2053
+ "revoke": "撤銷許可權"
2011
2054
  },
2012
2055
  "plugin_action": {
2013
2056
  "title": "執行插件",
@@ -2152,43 +2195,40 @@
2152
2195
  "seo_no_provider": "未配置 AI 服務提供商,請在設定中配置。"
2153
2196
  },
2154
2197
  "pwa": {
2155
- "__mt": true,
2156
- "install_prompt": "Install Moraya Web for a better experience.",
2157
- "install": "Install",
2158
- "dismiss": "Not now",
2159
- "update_available": "A new version is available.",
2160
- "refresh": "Refresh"
2198
+ "install_prompt": "安裝 Moraya Web 以獲得更好體驗。",
2199
+ "install": "安裝",
2200
+ "dismiss": "暫不",
2201
+ "update_available": "有新版本可用。",
2202
+ "refresh": "重新整理"
2161
2203
  },
2162
2204
  "quickopen": {
2163
- "__mt": true,
2164
- "title": "Quick Open",
2165
- "placeholder": "Search notes...",
2166
- "no_results": "No notes found",
2167
- "hint_enter": " Open",
2168
- "hint_cmd_enter": "⌘↵ Open in new tab"
2205
+ "title": "快速開啟",
2206
+ "placeholder": "搜尋筆記...",
2207
+ "no_results": "未找到筆記",
2208
+ "hint_enter": " 開啟",
2209
+ "hint_cmd_enter": "⌘↵ 在新標籤頁開啟"
2169
2210
  },
2170
2211
  "rag": {
2171
- "__mt": true,
2172
- "title": "AI Knowledge Search (RAG)",
2173
- "mode_label": "Search Mode",
2174
- "mode_disabled": "Disabled",
2175
- "mode_client": "Client-side (E2E compatible)",
2176
- "mode_server": "Server-side (faster, KMS required)",
2177
- "index_status": "Index Status",
2178
- "indexed_notes": "Indexed notes",
2179
- "rebuild_index": "Rebuild Full Index",
2180
- "pause_rebuild": "Pause",
2181
- "rebuilding": "Rebuilding index...",
2182
- "search_settings": "Search Settings",
2183
- "top_k_label": "Results (top-K)",
2184
- "threshold_label": "Min. similarity",
2185
- "sources_label": "Sources",
2186
- "sources_count": "{n} note excerpts",
2187
- "jump_to_source": "Jump to note →",
2188
- "no_sources": "No sources",
2189
- "server_mode_warning": "Server mode lets Moraya temporarily decrypt your notes for indexing. Requires Cloud KMS.",
2190
- "model_version": "Model version",
2191
- "upgrade_for_cross_kb": "Upgrade to Personal to search across all your knowledge bases."
2212
+ "title": "AI 知識搜尋(RAG)",
2213
+ "mode_label": "搜尋模式",
2214
+ "mode_disabled": "禁用",
2215
+ "mode_client": "客戶端(相容端對端加密)",
2216
+ "mode_server": "服務端(更快,需要雲 KMS)",
2217
+ "index_status": "索引狀態",
2218
+ "indexed_notes": "已索引筆記",
2219
+ "rebuild_index": "重建完整索引",
2220
+ "pause_rebuild": "暫停",
2221
+ "rebuilding": "正在重建索引……",
2222
+ "search_settings": "搜尋設定",
2223
+ "top_k_label": "結果數量(top-K)",
2224
+ "threshold_label": "最低相似度",
2225
+ "sources_label": "來源",
2226
+ "sources_count": "{n} 篇筆記片段",
2227
+ "jump_to_source": "跳轉到筆記 ",
2228
+ "no_sources": "無來源",
2229
+ "server_mode_warning": "服務端模式允許 Moraya 臨時解密你的筆記以建立索引,需要雲 KMS。",
2230
+ "model_version": "模型版本",
2231
+ "upgrade_for_cross_kb": "升級到 Personal 套餐以跨所有知識庫搜尋。"
2192
2232
  },
2193
2233
  "review": {
2194
2234
  "panel_title": "審閱",
@@ -2278,64 +2318,73 @@
2278
2318
  "invalid_regex": "Invalid regular expression"
2279
2319
  },
2280
2320
  "security": {
2281
- "__mt": true,
2282
- "title": "Security",
2283
- "encryption_mode_label": "Encryption Mode",
2284
- "mode_none": "None",
2285
- "mode_e2e": "E2E Client Encryption",
2286
- "mode_kms": "Cloud KMS",
2287
- "setup_title": "Set Up E2E Encryption",
2288
- "setup_subtitle": "Your notes will be encrypted before leaving your device. Moraya cannot read your notes.",
2289
- "passphrase_label": "Passphrase",
2290
- "passphrase_confirm_label": "Confirm Passphrase",
2291
- "passphrase_strength_weak": "Too weak",
2292
- "passphrase_strength_fair": "Fair",
2293
- "passphrase_strength_strong": "Strong",
2294
- "passphrase_strength_very_strong": "Very strong",
2295
- "passphrase_min_length": "Minimum 12 characters",
2296
- "passphrase_mismatch": "Passphrases do not match",
2297
- "passphrase_too_weak": "Passphrase is too weak. Use a longer, more complex phrase.",
2298
- "warning_no_recovery": "⚠️ If you forget your passphrase and lose your recovery code, your data cannot be recovered. Moraya has no backup.",
2299
- "recovery_code_title": "Your Recovery Code",
2300
- "recovery_code_subtitle": "Write down these 12 words. You will need them if you forget your passphrase.",
2301
- "recovery_confirm_instruction": "Enter word #{n} to confirm you wrote it down:",
2302
- "recovery_confirm_correct": "Correct! Enter word #{n}:",
2303
- "recovery_confirm_wrong": "Wrong word. Try again.",
2304
- "recovery_complete": "Recovery code confirmed.",
2305
- "i_have_written_down": "I have written down my recovery code",
2306
- "unlock_title": "Unlock Your Notes",
2307
- "unlock_subtitle": "Enter your passphrase to decrypt your notes.",
2308
- "unlock_button": "Unlock",
2309
- "unlock_failed": "Wrong passphrase. Please try again.",
2310
- "unlock_remember_device": "Remember this device for 7 days",
2311
- "migrate_title": "Upgrade to Cloud KMS",
2312
- "migrate_subtitle": "Your notes will be re-encrypted using your cloud KMS. Moraya can use your KMS to assist with AI features.",
2313
- "migrate_warning": "This is a one-way migration. You cannot revert to E2E mode without exporting and re-importing all data.",
2314
- "migrate_confirm": "I understand and want to proceed",
2315
- "migrate_progress": "Migrating {completed}/{total} notes...",
2316
- "migrate_done": "Migration complete!",
2317
- "migrate_failed": "Migration failed. Your original data is unchanged.",
2318
- "kms_provider_label": "KMS Provider",
2321
+ "title": "安全設定",
2322
+ "encryption_mode_label": "加密模式",
2323
+ "mode_none": "",
2324
+ "mode_e2e": "端對端客戶端加密",
2325
+ "mode_kms": " KMS",
2326
+ "setup_title": "設定端對端加密",
2327
+ "setup_subtitle": "你的筆記在離開裝置前會被加密。Moraya 無法讀取你的筆記。",
2328
+ "passphrase_label": "口令",
2329
+ "passphrase_confirm_label": "確認口令",
2330
+ "passphrase_strength_weak": "太弱",
2331
+ "passphrase_strength_fair": "一般",
2332
+ "passphrase_strength_strong": "",
2333
+ "passphrase_strength_very_strong": "非常強",
2334
+ "passphrase_min_length": "最少 12 個字元",
2335
+ "passphrase_mismatch": "兩次口令不一致",
2336
+ "passphrase_too_weak": "口令太弱,請使用更長更復雜的短語。",
2337
+ "warning_no_recovery": "⚠️ 如果你忘記口令且丟失恢復碼,你的資料將無法恢復。Moraya 沒有備份。",
2338
+ "recovery_code_title": "你的恢復碼",
2339
+ "recovery_code_subtitle": "請寫下這 12 個單詞。如果忘記口令,你將需要它們。",
2340
+ "recovery_confirm_instruction": "請輸入第 #{n} 個單詞以確認你已記下:",
2341
+ "recovery_confirm_correct": "正確!請輸入第 #{n} 個單詞:",
2342
+ "recovery_confirm_wrong": "單詞錯誤,請重試。",
2343
+ "recovery_complete": "恢復碼已確認。",
2344
+ "i_have_written_down": "我已記下恢復碼",
2345
+ "unlock_title": "解鎖你的筆記",
2346
+ "unlock_subtitle": "輸入口令以解密你的筆記。",
2347
+ "unlock_button": "解鎖",
2348
+ "unlock_failed": "口令錯誤,請重試。",
2349
+ "unlock_remember_device": "在此裝置記住 7 ",
2350
+ "migrate_title": "升級到雲 KMS",
2351
+ "migrate_subtitle": "你的筆記將使用你的雲 KMS 重新加密。Moraya 可以藉助你的 KMS 來支援 AI 功能。",
2352
+ "migrate_warning": "這是單向遷移,不能回退到 E2E 模式(除非匯出並重新匯入所有資料)。",
2353
+ "migrate_confirm": "我瞭解並想繼續",
2354
+ "migrate_progress": "正在遷移 {completed}/{total} 篇筆記...",
2355
+ "migrate_done": "遷移完成!",
2356
+ "migrate_failed": "遷移失敗,你的原始資料未受影響。",
2357
+ "kms_provider_label": "KMS 提供商",
2319
2358
  "kms_key_arn_label": "Key ARN / Key ID",
2320
- "kms_role_arn_label": "Role ARN (for AssumeRole)",
2321
- "kms_verify": "Verify KMS Connection",
2322
- "kms_verified": "KMS connection verified",
2323
- "kms_verify_failed": "KMS connection failed",
2324
- "back": "Back",
2325
- "next": "Next",
2326
- "save": "Save",
2327
- "cancel": "Cancel",
2328
- "setup_complete": "E2E encryption enabled",
2329
- "deriving_key": "Deriving encryption key...",
2330
- "encrypting": "Encrypting notes...",
2331
- "current_mode": "Current mode: {mode}",
2332
- "last_unlock": "Last unlocked: {time}",
2333
- "use_recovery_code": "Use recovery code instead",
2334
- "recovery_unlock_title": "Recover Access",
2335
- "recovery_unlock_subtitle": "Enter your 12-word recovery code to regain access.",
2336
- "recovery_code_input": "Recovery Code (12 words, space-separated)",
2337
- "recovery_unlock_button": "Recover",
2338
- "set_new_passphrase": "Set New Passphrase"
2359
+ "kms_role_arn_label": "Role ARN(AssumeRole 用)",
2360
+ "kms_verify": "驗證 KMS 連線",
2361
+ "kms_verified": "KMS 連線已驗證",
2362
+ "kms_verify_failed": "KMS 連線失敗",
2363
+ "back": "返回",
2364
+ "next": "下一步",
2365
+ "save": "儲存",
2366
+ "cancel": "取消",
2367
+ "setup_complete": "已啟用端對端加密",
2368
+ "deriving_key": "正在派生加密金鑰……",
2369
+ "encrypting": "正在加密筆記……",
2370
+ "current_mode": "當前模式:{mode}",
2371
+ "last_unlock": "上次解鎖:{time}",
2372
+ "use_recovery_code": "使用恢復碼代替",
2373
+ "recovery_unlock_title": "恢復訪問",
2374
+ "recovery_unlock_subtitle": "輸入你的 12 個單詞恢復碼以重新獲得訪問許可權。",
2375
+ "recovery_code_input": "恢復碼(12 個單詞,用空格分隔)",
2376
+ "recovery_unlock_button": "恢復",
2377
+ "set_new_passphrase": "設定新口令",
2378
+ "unlock_with_passkey": "通行金鑰解鎖",
2379
+ "unlock_with_iris": "虹膜識別解鎖",
2380
+ "use_passphrase_fallback": "改用密碼",
2381
+ "biometric_unlock_subtitle": "驗證身份以訪問資料",
2382
+ "unlock_with_touch_id": "使用 Touch ID 解鎖",
2383
+ "unlock_with_biometric": "生物識別解鎖",
2384
+ "unlock_with_fingerprint": "指紋解鎖",
2385
+ "unlock_with_face_id": "使用 Face ID 解鎖",
2386
+ "biometric_failed": "身份驗證失敗",
2387
+ "biometric_unlock_title": "解鎖 Moraya"
2339
2388
  },
2340
2389
  "seo": {
2341
2390
  "title": "SEO 優化",
@@ -2355,21 +2404,20 @@
2355
2404
  "step_description": "產生標題/摘要/標籤"
2356
2405
  },
2357
2406
  "sessions": {
2358
- "__mt": true,
2359
- "title": "Active Sessions",
2360
- "active_sessions": "Active Sessions",
2361
- "anomaly_alerts": "Security Alerts",
2362
- "current": "Current",
2363
- "last_active": "Last active",
2364
- "revoke": "Revoke",
2365
- "revoking": "Revoking…",
2366
- "confirm_revoke": "Revoke this session?",
2367
- "yes": "Yes",
2368
- "no": "Cancel",
2369
- "dismiss": "Dismiss",
2370
- "just_now": "Just now",
2371
- "hours_ago": "h ago",
2372
- "days_ago": "d ago"
2407
+ "title": "活躍會話",
2408
+ "active_sessions": "活躍會話",
2409
+ "anomaly_alerts": "安全警告",
2410
+ "current": "當前裝置",
2411
+ "last_active": "最後活躍",
2412
+ "revoke": "撤銷",
2413
+ "revoking": "撤銷中…",
2414
+ "confirm_revoke": "確認撤銷此會話?",
2415
+ "yes": "確認",
2416
+ "no": "取消",
2417
+ "dismiss": "忽略",
2418
+ "just_now": "剛剛",
2419
+ "hours_ago": "小時前",
2420
+ "days_ago": "天前"
2373
2421
  },
2374
2422
  "settings": {
2375
2423
  "title": "Settings",
@@ -3007,25 +3055,24 @@
3007
3055
  "local_workspace": "Local"
3008
3056
  },
3009
3057
  "sso": {
3010
- "__mt": true,
3011
- "title": "Single Sign-On",
3012
- "description": "Configure SSO to let team members authenticate via your identity provider.",
3013
- "enable_sso": "Enable SSO",
3014
- "require_sso": "Require SSO for all members",
3058
+ "title": "單點登入",
3059
+ "description": "配置 SSO,讓團隊成員透過您的身份提供商進行認證。",
3060
+ "enable_sso": "啟用 SSO",
3061
+ "require_sso": "要求所有成員使用 SSO",
3015
3062
  "oidc": "OIDC / OAuth 2.0",
3016
3063
  "saml": "SAML 2.0",
3017
- "provider": "Identity Provider",
3018
- "custom_provider": "Custom",
3064
+ "provider": "身份提供商",
3065
+ "custom_provider": "自定義",
3019
3066
  "issuer": "Issuer URL",
3020
3067
  "client_id": "Client ID",
3021
3068
  "client_secret": "Client Secret",
3022
- "scopes": "Scopes",
3023
- "idp_metadata_url": "IdP Metadata URL",
3024
- "sp_entity_id": "SP Entity ID",
3069
+ "scopes": "許可權範圍",
3070
+ "idp_metadata_url": "IdP 後設資料 URL",
3071
+ "sp_entity_id": "SP 實體 ID",
3025
3072
  "sp_acs_url": "ACS URL",
3026
- "signing_cert": "Signing Certificate",
3027
- "save": "Save SSO Configuration",
3028
- "saved_success": "SSO configuration saved."
3073
+ "signing_cert": "簽名證書",
3074
+ "save": "儲存 SSO 配置",
3075
+ "saved_success": "SSO 配置已儲存。"
3029
3076
  },
3030
3077
  "stale_dmg": {
3031
3078
  "title": "清理舊版磁碟映像",
@@ -3045,53 +3092,52 @@
3045
3092
  "ai_tooltip": "AI"
3046
3093
  },
3047
3094
  "storage": {
3048
- "__mt": true,
3049
- "title": "Storage",
3050
- "connected_providers": "Connected Providers",
3051
- "connect_provider": "Connect Provider",
3052
- "primary": "Primary",
3053
- "set_primary": "Set as Primary",
3054
- "remove": "Remove",
3055
- "edit": "Edit",
3056
- "verify": "Verify Connection",
3057
- "verifying": "Verifying...",
3058
- "verify_success": "Connection verified",
3059
- "verify_failed": "Verification failed",
3060
- "no_providers": "No storage providers connected.",
3061
- "connect_prompt": "Connect your own cloud storage to keep full control of your data.",
3062
- "picora_default": "Picora is your storage provider (Connect plan)",
3063
- "upgrade_for_byoc": "Upgrade to Personal to connect your own storage.",
3064
- "step_choose": "Choose Provider",
3065
- "step_setup": "Setup Script",
3066
- "step_credentials": "Enter Credentials",
3067
- "step_verify": "Verify",
3068
- "step_name": "Name & Save",
3069
- "provider_label": "Provider",
3070
- "bucket_label": "Bucket Name",
3071
- "region_label": "Region",
3095
+ "title": "儲存",
3096
+ "connected_providers": "已連線的儲存",
3097
+ "connect_provider": "新增儲存",
3098
+ "primary": "主儲存",
3099
+ "set_primary": "設為主儲存",
3100
+ "remove": "移除",
3101
+ "edit": "編輯",
3102
+ "verify": "驗證連線",
3103
+ "verifying": "驗證中...",
3104
+ "verify_success": "連線驗證成功",
3105
+ "verify_failed": "驗證失敗",
3106
+ "no_providers": "尚未連線任何儲存。",
3107
+ "connect_prompt": "連線您自己的雲端儲存,完全掌控您的資料。",
3108
+ "picora_default": "Picora 是您的儲存(Connect 套餐)",
3109
+ "upgrade_for_byoc": "升級到 Personal 套餐以連線自有儲存。",
3110
+ "step_choose": "選擇服務商",
3111
+ "step_setup": "一鍵指令碼",
3112
+ "step_credentials": "填入憑證",
3113
+ "step_verify": "驗證連線",
3114
+ "step_name": "命名儲存",
3115
+ "provider_label": "服務商",
3116
+ "bucket_label": "儲存桶名稱",
3117
+ "region_label": "地域",
3072
3118
  "access_key_label": "Access Key ID",
3073
3119
  "secret_key_label": "Secret Access Key",
3074
- "role_arn_label": "Role ARN (for STS)",
3075
- "account_id_label": "Account ID",
3120
+ "role_arn_label": "角色 ARNSTS",
3121
+ "account_id_label": "賬戶 ID",
3076
3122
  "key_id_label": "Key ID",
3077
3123
  "application_key_label": "Application Key",
3078
- "binding_label": "Display Name",
3079
- "copy_script": "Copy Script",
3080
- "copy_policy": "Copy Policy JSON",
3081
- "copied": "Copied!",
3082
- "back": "Back",
3083
- "next": "Next",
3084
- "save": "Save",
3085
- "health_ok": "Healthy",
3086
- "health_degraded": "Degraded",
3087
- "health_failed": "Failed",
3088
- "health_unknown": "Unknown",
3089
- "access_denied": "Access denied.",
3090
- "bucket_not_found": "Bucket not found.",
3091
- "bucket_exists": "Bucket already exists.",
3092
- "clock_skew": "System clock is out of sync. Please check your date/time settings.",
3093
- "b2_no_sts_warning": "Backblaze B2 does not support STS. Credentials are stored in session only. Enable E2E encryption (v0.43) for better security.",
3094
- "r2_token_info": "Create an API Token in Cloudflare Dashboard with R2 Read/Write permissions for this bucket."
3124
+ "binding_label": "顯示名稱",
3125
+ "copy_script": "複製指令碼",
3126
+ "copy_policy": "複製 Policy JSON",
3127
+ "copied": "已複製!",
3128
+ "back": "上一步",
3129
+ "next": "下一步",
3130
+ "save": "儲存",
3131
+ "health_ok": "正常",
3132
+ "health_degraded": "降級",
3133
+ "health_failed": "故障",
3134
+ "health_unknown": "未知",
3135
+ "access_denied": "許可權不足。",
3136
+ "bucket_not_found": "儲存桶不存在。",
3137
+ "bucket_exists": "儲存桶已存在。",
3138
+ "clock_skew": "系統時間偏差過大,請檢查日期/時間設定。",
3139
+ "b2_no_sts_warning": "Backblaze B2 不支援 STS,憑證僅存於會話中。建議在 v0.43 啟用 E2E 加密後使用。",
3140
+ "r2_token_info": " Cloudflare Dashboard 建立 API Token,選擇此儲存桶的 R2 讀寫許可權。"
3095
3141
  },
3096
3142
  "table": {
3097
3143
  "insert_row_above": "在上方插入列",
@@ -3135,36 +3181,35 @@
3135
3181
  "dirty_dot": "Unsaved changes"
3136
3182
  },
3137
3183
  "team": {
3138
- "__mt": true,
3139
- "title": "Team Knowledge Bases",
3140
- "create": "New Team KB",
3141
- "no_kbs": "You don't have any team knowledge bases yet.",
3142
- "create_first": "Create your first team KB",
3143
- "members": "members",
3144
- "open": "Open",
3145
- "settings": "Settings",
3146
- "encryption_kms": "Cloud KMS (AI Review enabled)",
3147
- "encryption_e2e": "E2E Encryption (AI Review disabled)",
3148
- "wizard_title": "Create Team Knowledge Base",
3149
- "step_info": "Name",
3150
- "step_provider": "Storage",
3151
- "step_members": "Members",
3152
- "step_encryption": "Encryption",
3153
- "step_confirm": "Confirm",
3154
- "kb_name_label": "Team KB Name",
3155
- "kb_name_placeholder": "e.g. Engineering Docs",
3156
- "provider_label": "Provider",
3184
+ "title": "團隊知識庫",
3185
+ "create": "新建團隊 KB",
3186
+ "no_kbs": "您還沒有任何團隊知識庫。",
3187
+ "create_first": "建立您的第一個團隊 KB",
3188
+ "members": "名成員",
3189
+ "open": "開啟",
3190
+ "settings": "設定",
3191
+ "encryption_kms": "雲 KMS(支援 AI 審稿)",
3192
+ "encryption_e2e": "端到端加密(AI 審稿不可用)",
3193
+ "wizard_title": "建立團隊知識庫",
3194
+ "step_info": "基本資訊",
3195
+ "step_provider": "儲存",
3196
+ "step_members": "成員",
3197
+ "step_encryption": "加密",
3198
+ "step_confirm": "確認",
3199
+ "kb_name_label": "團隊 KB 名稱",
3200
+ "kb_name_placeholder": "例如:工程文件",
3201
+ "provider_label": "儲存提供商",
3157
3202
  "bucket_label": "Bucket",
3158
- "prefix_label": "Prefix (optional)",
3159
- "invite_emails_label": "Email addresses (comma-separated)",
3160
- "invite_role_label": "Role",
3161
- "mode_kms_name": "Cloud KMS",
3162
- "mode_kms_desc": "AI Review and server-side features enabled.",
3163
- "mode_e2e_name": "End-to-End",
3164
- "mode_e2e_desc": "Maximum privacy. AI Review not available.",
3165
- "confirm_summary": "Confirm & Create",
3166
- "creating": "Creating…",
3167
- "create_kb": "Create Team KB"
3203
+ "prefix_label": "字首(可選)",
3204
+ "invite_emails_label": "郵箱地址(多個用逗號分隔)",
3205
+ "invite_role_label": "角色",
3206
+ "mode_kms_name": " KMS",
3207
+ "mode_kms_desc": "支援 AI 審稿和服務端功能。",
3208
+ "mode_e2e_name": "端到端加密",
3209
+ "mode_e2e_desc": "最高隱私保護,AI 審稿不可用。",
3210
+ "confirm_summary": "確認並建立",
3211
+ "creating": "建立中…",
3212
+ "create_kb": "建立團隊 KB"
3168
3213
  },
3169
3214
  "templates": {
3170
3215
  "gallery": {
@@ -3587,29 +3632,28 @@
3587
3632
  }
3588
3633
  },
3589
3634
  "theme": {
3590
- "__mt": true,
3591
- "title": "Appearance",
3592
- "mode_title": "Color Mode",
3593
- "mode_light": "Light",
3594
- "mode_dark": "Dark",
3595
- "mode_system": "System",
3596
- "custom_title": "Custom Themes",
3597
- "custom_new": "New Theme",
3598
- "custom_export": "Export",
3599
- "custom_import": "Import",
3600
- "custom_delete": "Delete",
3601
- "custom_activate": "Activate",
3602
- "custom_deactivate": "Deactivate",
3603
- "custom_edit": "Edit",
3604
- "editor_title": "Theme Editor",
3605
- "name_label": "Theme Name",
3606
- "no_custom": "No custom themes yet. Create one below.",
3607
- "groups_base": "Base Colors",
3608
- "groups_editor": "Editor",
3609
- "groups_ui": "UI Components",
3610
- "groups_code": "Code Block",
3611
- "saved": "Save",
3612
- "import_error": "Invalid theme file. Please use a valid Moraya theme JSON."
3635
+ "title": "外觀",
3636
+ "mode_title": "顏色模式",
3637
+ "mode_light": "淺色",
3638
+ "mode_dark": "深色",
3639
+ "mode_system": "跟隨系統",
3640
+ "custom_title": "自定義主題",
3641
+ "custom_new": "新建主題",
3642
+ "custom_export": "匯出",
3643
+ "custom_import": "匯入",
3644
+ "custom_delete": "刪除",
3645
+ "custom_activate": "啟用",
3646
+ "custom_deactivate": "停用",
3647
+ "custom_edit": "編輯",
3648
+ "editor_title": "主題編輯器",
3649
+ "name_label": "主題名稱",
3650
+ "no_custom": "暫無自定義主題,請在下方建立。",
3651
+ "groups_base": "基礎顏色",
3652
+ "groups_editor": "編輯器",
3653
+ "groups_ui": "介面元件",
3654
+ "groups_code": "程式碼塊",
3655
+ "saved": "儲存",
3656
+ "import_error": "主題檔案無效,請使用合法的 Moraya 主題 JSON 檔案。"
3613
3657
  },
3614
3658
  "titlebar": {
3615
3659
  "unsaved": "未儲存",
@@ -3638,7 +3682,34 @@
3638
3682
  "summarize_prompt": "請根據以下轉錄內容產生會議摘要,標註關鍵討論點、決策和行動項,以 Markdown 格式輸出。",
3639
3683
  "no_speech_config": "未設定語音辨識服務,請前往 設定 → 語音 新增。",
3640
3684
  "no_speech_config_hint": "請前往 設定 → 語音 Tab 新增語音辨識服務(如 Deepgram)。",
3641
- "go_to_voice_settings": "開啟語音設定"
3685
+ "go_to_voice_settings": "開啟語音設定",
3686
+ "system_source_native_hint": "已啟用 macOS 原生系統音訊採集。系統聲源模式不再需要螢幕共享彈窗。",
3687
+ "interview_system_share_hint": "面試模式會使用當前聲源設定;僅當選擇系統聲源時,開始錄音會請求螢幕共享許可權。",
3688
+ "summarize_interview": "生成面試總結",
3689
+ "mode_transcription": "轉錄",
3690
+ "interview_answer_pending": "正在分析最新語境...",
3691
+ "source_mixed": "混合",
3692
+ "source_mic": "麥克風",
3693
+ "system_source_native_permission_denied": "macOS 拒絕了原生系統音訊採集許可權。請前往 系統設定 → 隱私與安全性 允許本應用後重試。",
3694
+ "interview_answer_failed": "生成面試回答失敗。",
3695
+ "system_source_permission_denied": "系統聲源許可權被拒絕,請在共享彈窗中允許並勾選共享音訊後重試。",
3696
+ "system_source_no_audio_track_hint": "未捕獲到系統音訊。請在共享彈窗中勾選“共享音訊”,建議選擇“整個螢幕”後重試;若當前平臺無音訊共享選項,請改用麥克風或混合聲源。",
3697
+ "system_source_native_mixed_hint": "已啟用 macOS 原生系統音訊採集。混合聲源會在應用內將原生系統聲源與麥克風輸入混合。",
3698
+ "system_source_restart_hint": "系統/混合聲源切換後已停止錄音,請點選“開始錄音”重新授權並繼續。",
3699
+ "interview_no_aiconfig": "未配置會話 AI 模型,請前往 設定 → AI 新增。",
3700
+ "mute_mic": "靜音麥克風",
3701
+ "source_system": "系統聲源",
3702
+ "interview_summarize_prompt": "請總結以下面試轉錄內容,提煉關鍵問題、回答要點與最佳化建議,並以 Markdown 格式輸出。",
3703
+ "interview_empty_answer": "AI 返回了空回答。",
3704
+ "mode_label": "模式",
3705
+ "interview_native_system_hint": "面試模式會使用當前聲源設定。在 macOS 上,系統聲源和混合聲源會走原生系統音訊採集,不再依賴螢幕共享彈窗。",
3706
+ "system_source_unsupported_hint": "當前環境的共享彈窗不提供系統音訊軌道,已自動回退到麥克風。若需系統聲源,請使用原生系統音訊採集方案。",
3707
+ "system_source_runtime_incompatible": "當前 macOS 執行時與原生系統音訊採集不完全相容。請升級 macOS,或暫時切換到麥克風聲源。",
3708
+ "system_source_click_start_hint": "系統聲源需要透過“開始錄音”按鈕觸發授權,請再次點選開始錄音。",
3709
+ "mode_interview": "面試",
3710
+ "unmute_mic": "取消麥克風靜音",
3711
+ "source_label": "聲源",
3712
+ "to_document_append": "轉為文件(追加)"
3642
3713
  },
3643
3714
  "update": {
3644
3715
  "title": "版本資訊",
@@ -3658,34 +3729,37 @@
3658
3729
  "new_version_available": "有新版本可用!點選升級。"
3659
3730
  },
3660
3731
  "voice": {
3661
- "__mt": true,
3662
- "title": "Voice Capture",
3663
- "provider": "Provider",
3664
- "language": "Language",
3665
- "doubao": "Doubao (Realtime)",
3666
- "start": "Record",
3667
- "stop": "Stop",
3668
- "processing": "Processing...",
3669
- "transcript": "Transcript",
3670
- "words": "words",
3671
- "structurize": "AI Structurize",
3672
- "view_history": "View History",
3673
- "untitled": "Untitled",
3674
- "key_points": "Key Points",
3675
- "action_items": "Action Items",
3676
- "save_note": "Save Note",
3677
- "discard": "Discard",
3678
- "quota_exceeded": "Monthly voice quota exceeded. Upgrade or wait until next month.",
3679
- "quota_near": "You are near your monthly voice limit.",
3732
+ "title": "語音捕獲",
3733
+ "provider": "轉寫服務商",
3734
+ "language": "識別語言",
3735
+ "doubao": "豆包實時對話",
3736
+ "start": "開始錄音",
3737
+ "stop": "停止",
3738
+ "processing": "處理中...",
3739
+ "transcript": "轉寫文字",
3740
+ "words": "",
3741
+ "structurize": "AI 結構化",
3742
+ "view_history": "檢視歷史",
3743
+ "untitled": "未命名",
3744
+ "key_points": "核心要點",
3745
+ "action_items": "待辦事項",
3746
+ "save_note": "儲存筆記",
3747
+ "discard": "丟棄",
3748
+ "quota_exceeded": "本月語音配額已用盡,請升級或等待下月重置。",
3749
+ "quota_near": "您已接近本月語音配額上限。",
3680
3750
  "history": {
3681
- "title": "Voice History",
3682
- "new_capture": "+ New Recording",
3683
- "search_placeholder": "Search transcripts...",
3684
- "no_results": "No transcripts match your search.",
3685
- "empty": "No recordings yet. Start capturing your voice!",
3686
- "reprocess": "Re-process",
3687
- "delete": "Delete"
3688
- }
3751
+ "title": "錄音歷史",
3752
+ "new_capture": "+ 新錄音",
3753
+ "search_placeholder": "搜尋轉寫文字...",
3754
+ "no_results": "未找到匹配的轉寫記錄。",
3755
+ "empty": "暫無錄音記錄,開始您的第一次錄音吧!",
3756
+ "reprocess": "重新處理",
3757
+ "delete": "刪除"
3758
+ },
3759
+ "permission_denied": "麥克風許可權被拒絕",
3760
+ "cancel": "滑動取消",
3761
+ "release_to_send": "鬆開傳送",
3762
+ "hold_to_record": "按住錄音"
3689
3763
  },
3690
3764
  "welcome": {
3691
3765
  "title": "歡迎使用 Moraya",