package i18n

// ChineseTraditional is the zh-Hant catalogue. Keep the %s placeholders in the same order
// as English unless a phrase genuinely demands re-ordering — call sites pass
// arguments positionally and won't reshuffle.
var ChineseTraditional = Messages{
	WelcomeTitleFmt: "歡迎使用 %s",
	NoConfigYet:     "還沒有設定 — 現在來設定一下吧。",

	InitHint: "專案記憶（AGENTS.md）在會話內由模型生成：執行 `reasonix`，然後 `/init` —— 模型會分析程式碼庫並寫入。設定請用 `reasonix setup`。",

	ChatTip:                "對話上下文將跨輪保留。輸入 'exit' 或按 Ctrl-D 退出。",
	TurnCancelled:          "已取消 — 回到提示符",
	InterruptedRecovery:    "本輪已中斷。部分輸出會永久保留供查看；只有完整工具呼叫及結果和有界恢復摘要會進入模型下一輪。繼續或回復前請先檢查目前工作區。",
	FinalReadinessRecovery: "剩餘任務或收尾檢查已暫停。執行 /continue-checks 可保留已完成證據並繼續剩餘工作。",
	ReadinessContinuing:    "Reasonix 正在自動完成剩餘任務或檢查。",
	RecoveryPaused:         "已暫停自動重試。Reasonix 已停止重複嘗試，並保留已完成的工作。傳送「繼續」即可開始新一輪，也可以補充要求來調整方向。",
	CompletionUncertain:    "完成狀態未確認。目前結果與已完成工作均已保留。傳送「繼續」可接著完成，也可以補充說明需要調整的內容。",
	ReceiptVerified:        "沒有未經驗證的部分",
	ReceiptGapsHeader:      "未驗證:",
	ReceiptRisksHeader:     "已申報的風險:",
	ReceiptMore:            "另有 %d 項",
	ReceiptGapKinds: map[string]string{
		"unbacked_claim":      "聲稱過但帳本不支持",
		"unproven_criterion":  "驗收項沒有證據",
		"missing_check":       "預期的檢查從未通過",
		"failed_verification": "驗證失敗",
		"stale_verification":  "驗證早於最後一次改動",
		"unverified_change":   "改動了但沒有任何驗證",
		"unreviewed_change":   "改動後再沒看過",
		"declared_unverified": "自己申報未驗證",
	},
	NoSessionToResume: "沒有可恢復的會話 — 用 `reasonix` 開一個新的",
	ResumeRequiresTTY: "--resume 需要互動式終端；用 --continue 直接恢復最近一次",
	PickSessionLabel:  "恢復哪個會話？",

	ResumeBusy:             "請先完成或取消當前這一輪再恢復會話",
	ResumeBadIndexFmt:      "請選擇 1–%d 的會話（用 /resume 檢視列表）",
	ResumeAlreadyActive:    "已在該會話中",
	ResumedTitle:           "已恢復會話",
	ResumePickTitle:        "選擇要恢復的會話",
	ResumePickHint:         "↑/↓ 移動 · Enter 恢復 · Esc 取消",
	ResumeRecoveryBadgeFmt: "[衝突副本 · 父會話 %s]",

	ChatThinking:                           "思考中…",
	ChatThoughtForFmt:                      "思考了 %d 秒",
	ChatStatusThinkingFmt:                  "%s 思考中… (%d 秒 · Esc 取消)",
	TurnPhaseWorking:                       "工作中",
	TurnPhaseChecking:                      "檢查中",
	TurnPhaseVerifying:                     "驗證中",
	TurnPhaseReviewing:                     "複審中",
	CompletionSummaryBlocked:               "本輪任務受阻，請查看變更詳情。",
	CompletionSummaryNeedsAttention:        "本輪仍有驗證或複審缺口。",
	ChatToolWorkingFmt:                     "%s 執行中 · %d 秒",
	ChatSubagentPhaseQueued:                "排隊中",
	ChatSubagentPhaseRunning:               "執行中",
	ChatSubagentPhaseReasoning:             "思考中",
	ChatSubagentPhaseResponding:            "生成中",
	ChatSubagentPhaseTool:                  "使用工具",
	ChatSubagentPhaseRetrying:              "重試中",
	ChatSubagentPhaseCompleted:             "已完成",
	ChatSubagentPhaseFailed:                "失敗",
	ChatSubagentPhaseCancelled:             "已取消",
	ChatSubagentProgressFmt:                "%s · %d 秒 · %d 秒前",
	ChatSubagentProgressDoneFmt:            "%s · %d 秒",
	ChatSubagentPreviewLabel:               "▎",
	ChatStatusRetryingFmt:                  "%s 正在重試 (%d/%d)… (Esc 取消)",
	ChatStatusCancellingFmt:                "%s 正在停止… (%d 秒 · Ctrl+C 退出)",
	ChatStatusIdle:                         "就緒",
	ChatStatusYoloIdle:                     "已跳過核准",
	ChatStatusCycleHint:                    "Shift+Tab 循環詢問/自動/計畫 · Ctrl+Y YOLO",
	ChatStatusCycleHintCompact:             "Shift+Tab 詢問/自動/計畫 · Ctrl+Y YOLO",
	ChatTurnReceiptLabel:                   "本輪",
	RateBandPeak:                           "高峰",
	RateBandOffPeak:                        "低峰",
	RateBandMixed:                          "混合費率",
	ChatStatusModelLabel:                   "模型",
	ChatStatusEffortLabel:                  "強度",
	ChatStatusCacheLabel:                   "快取",
	ChatStatusContextLabel:                 "上下文",
	ChatStatusCompactLabel:                 "壓縮",
	ChatStatusJobsLabel:                    "任務",
	ChatStatusBalanceLabel:                 "餘額",
	ChatStatusCostLabel:                    "費用",
	ChatStatusCacheNowFmt:                  "本次命中 %s",
	ChatStatusCacheAvgFmt:                  "平均 %s",
	ChatStatusPlanApproval:                 "1 開始執行 · 2 修改計畫 · 3 暫不執行並退出 · n/Esc 繼續規劃 · PgUp/PgDn/Ctrl+Home/End 捲動",
	PlanApprovalPrompt:                     "計畫已生成（見上方）— 請選擇下一步操作",
	PlanApprovalChoices:                    "1. 開始執行\n2. 修改計畫（繼續規劃）\n3. 暫不執行，退出計畫模式\n選擇 [1/2/3]（y 開始執行；n/Esc 繼續規劃）",
	ChatStatusToolApproval:                 "1 本次允許 · 2 本會話允許此範圍 · 提供時 3/4 為前綴或儲存 · n/Esc 拒絕 · Ctrl-C 取消本輪",
	AskTypeSomething:                       "自己輸入",
	AskTypingHint:                          "輸入後按 Enter 確認",
	AskChatInstead:                         "先不選擇，直接回覆",
	ChatStatusQuestion:                     "↑/↓ 選 · 數字快選 · 空格多選 · Enter 確認 · ←/→ 切換問題 · Esc 取消",
	StatusResumePicker:                     "↑/↓ 移動 · Enter 恢復 · Esc 取消",
	AskSubmitTitle:                         "提交答案",
	AskUnanswered:                          "(未答)",
	AskSubmitHint:                          "Enter 提交 · ← 返回修改",
	ElicitURLHint:                          "o 開啟連結 · Enter 接受 · d 拒絕 · Esc 取消",
	ElicitConfirmOnly:                      "Enter 確認;d 拒絕;Esc 取消。",
	ElicitUnanswered:                       "(未填寫)",
	ElicitSubmit:                           "提交",
	ElicitSubmitHint:                       "Enter 編輯欄位 · tab 下一項 · 提交列:Enter 接受、d 拒絕、Esc 取消",
	ToolApprovalPromptFmt:                  "需要你的許可\n\n將呼叫工具 %s%s。\n%s\n%s",
	ToolApprovalChoices:                    "1. 本次允許\n2. 本會話允許 %s\n3. 總是允許 %s（儲存到設定）\n4. 拒絕\n選擇 [1/2/3/4]（相容 y/a/p/n）",
	BashPrefixChoices:                      "1. 本次允許\n2. 本會話允許 %s\n3. 總是允許 %s（儲存到設定）\n4. 拒絕\n選擇 [1/2/3/4]（相容 y/a/p/n）",
	PlanModeReadOnlyCommandChoices:         "1. 本次信任\n2. 本會話信任此前綴\n3. 總是在計劃模式信任此前綴（儲存到設定）\n4. 拒絕\n選擇 [1/2/3/4]（相容 y/a/p/n）",
	FreshHumanApprovalChoices:              "1. 本次允許\n2. 拒絕\n選擇 [1/2]（相容 y/n）",
	RecoveryApprovalChoices:                "1. 繼續一次\n2. 換個方案",
	RecoveryPlanChangeChoices:              "1. 採用新計畫並繼續\n2. 不採用，讓 Auto 調整",
	RecoveryPlanDecisionPrompt:             "執行計畫需要你的決定",
	RecoveryPlanBeforeFmt:                  "原計畫：%s",
	RecoveryPlanAfterFmt:                   "新計畫：%s",
	RecoveryTaskGrantChoices:               "1. 繼續一次\n2. 繼續，並在本任務內允許同類操作\n3. 換個方案",
	SandboxEscapeApprovalChoices:           "1. 允許一次\n2. 本會話使用真實環境\n3. 拒絕\n選擇 [1/2/3]（相容 y/a/n）",
	ApprovalNeededFmt:                      "需要核准：%s",
	ApprovalNeededWithSubjectFmt:           "需要核准：%s %s",
	ToolApprovalSourceFmt:                  "來源: %s",
	ToolApprovalBuiltIn:                    "內建工具",
	ToolApprovalImageUse:                   "將讀取提供的圖片用於圖像理解。",
	ApprovalToolLabelBash:                  "bash",
	ApprovalToolLabelEditFile:              "編輯檔案",
	ApprovalToolLabelWriteFile:             "寫入檔案",
	ApprovalToolLabelMultiEdit:             "批次編輯",
	ApprovalToolLabelMoveFile:              "移動檔案",
	ApprovalToolLabelWebFetch:              "讀取網頁",
	ApprovalToolLabelRunSkill:              "執行技能",
	ApprovalToolLabelRemember:              "儲存記憶",
	ApprovalToolLabelForget:                "刪除記憶",
	ApprovalToolLabelSandboxEscape:         "bash 沙箱降級核准",
	ApprovalToolLabelPlanModeReadOnly:      "計劃模式唯讀命令",
	MemoryApprovalSaveUpdate:               "儲存/更新記憶",
	MemoryApprovalBodyLabel:                "正文",
	MemoryApprovalArchiveFmt:               "封存記憶 %q",
	PlanModeBashTrustSubjectFmt:            "在計劃模式中信任 %q 為唯讀命令前綴\n命令：%s",
	PlanModeBashTrustReason:                "這條 bash 命令不在 Reasonix 內建唯讀集合中。只有在確認這個精確前綴用於計劃和研究時是唯讀的，才應核准。自動/YOLO 核准不能回答這個信任提示。",
	PlanModeBashTrustDeclined:              "使用者拒絕將這條 bash 命令信任為計劃模式唯讀命令；不要重試它，請繼續使用其他已信任的唯讀工具，或詢問使用者希望如何繼續。",
	SandboxEscapeSubjectFallback:           "僅本次不進沙箱執行 shell 命令",
	SandboxEscapeSubjectPrefix:             "僅本次不進沙箱執行：",
	SandboxEscapeWrapReason:                "Windows 不提供這條命令所需的 OS 級 Bash 沙箱。是否僅本次不受限執行？這只會對此命令繞過 OS 隔離。",
	SandboxEscapeRuntimeReason:             "OS 沙箱無法啟動這條命令。是否僅本次不受限執行？這只會對此命令繞過 OS 隔離。",
	SandboxEscapeDeclined:                  "使用者拒絕在沒有 OS 沙箱的情況下執行這條命令；不要不進沙箱重試，請詢問使用者希望如何繼續。",
	ApprovalToolLabelConfigWrite:           "Reasonix 設定寫入核准",
	ConfigWriteSubjectPrefix:               "寫入 Reasonix 設定：",
	ConfigWriteReason:                      "這次寫入的目標是工作區之外的 Reasonix 託管設定檔。它可以改變後續工作階段的模型供應商、沙箱規則、權限和 MCP 伺服器，因此需要你的明確核准。",
	ConfigWriteDeclined:                    "使用者拒絕了這次 Reasonix 設定寫入；不要重試，請詢問使用者希望如何繼續。",
	ConfigWriteApprovalChoices:             "1. 允許一次\n2. 本工作階段允許\n3. 拒絕\n選擇 [1/2/3]（相容 y/a/n）",
	WriteAccessApprovalChoices:             "1. 僅本次允許\n2. 本工作階段允許這些目錄\n3. 加入專案允許目錄（寫入 reasonix.toml）\n4. 拒絕\n選擇 [1/2/3/4]（相容 y/a/p/n）",
	WriteAccessHomeWarning:                 "這將授權寫入整個使用者家目錄。Reasonix 工作階段與執行時狀態檔案仍受保護。",
	WriteAccessMergedPermissionHint:        "此選擇也會授權目前匹配的工具操作。",
	WriteAccessProjectHint:                 "加入專案會把 [sandbox].allow_write（以及需要時的權限規則）寫入目前工作區的 reasonix.toml。",
	PermissionSavedFmt:                     "授權已儲存到 %s：%s",
	PermissionAlreadyAllowedFmt:            "授權已由 %s 中的規則覆蓋：%s",
	PermissionSaveFailedFmt:                "儲存授權 %s 失敗：%v",
	PlanModeReadOnlyCommandTrustSavedFmt:   "計劃模式唯讀命令信任已儲存到 %s：%s",
	PlanModeReadOnlyCommandTrustAlreadyFmt: "計劃模式唯讀命令信任已儲存在 %s：%s",
	PlanModeReadOnlyCommandTrustFailedFmt:  "儲存計劃模式唯讀命令信任 %s 失敗：%v",
	DiffFoldedFmt:                          "… 還有 %d 行",

	OutputStyleNone:           "沒有可用的輸出風格",
	ThemeHeader:               "主題：",
	ThemeHint:                 "使用 /theme <auto|light|dark|style> 切換",
	ThemeChangedFmt:           "已切換主題為 %s / %s",
	ThemeUnknownFmt:           "未知主題 %q",
	LanguageHeader:            "語言：",
	LanguageHint:              "使用 /language <auto|en|zh|zh-TW> 切換",
	LanguageChangedFmt:        "語言已設為 %s（目前解析為：%s）",
	CurrencyHeader:            "費用展示幣種：",
	CurrencyHint:              "使用 /currency <auto|CNY|USD> 切換",
	CurrencyChangedFmt:        "費用展示幣種已設為 %s（目前解析為：%s）",
	RuntimeRefreshBusy:        "請先完成或取消目前工作，並停止背景任務後再修改此設定",
	RuntimeRefreshUnavailable: "本會話不支援重新整理執行階段",

	CompactionWorking: "正在壓縮對話…",
	CompactionTitle:   "上下文已壓縮",
	CompactionUnit:    "條訊息",
	CompactionAuto:    "自動",
	CompactionManual:  "手動",

	ExtFormFieldsHint:         "欄位將透過逐項提問收集",
	ExtRunActionFmt:           "執行 %s",
	SlashCompactFailed:        "壓縮失敗",
	SlashNewDone:              "已開啟新會話 — 之前的對話已存檔",
	SlashNewFailed:            "新建會話失敗",
	SlashUnknown:              "未知命令",
	SlashUnknownSentAsMessage: "已作為普通訊息發送",
	SlashTodoCleared:          "已清除任務清單",

	SkillPickerAvailableFmt:      "%d 個可用",
	SkillPickerMatchingFmt:       "%d 個匹配 · 共 %d 個",
	SkillPickerHint:              "↑↓ 移動 · Space 開關 · Enter 儲存 · / 搜尋 · s 來源 · r 重新掃描 · Esc 取消",
	SkillPickerDetailHint:        "↑↓ 移動 · Enter 選擇 · Space 開關 · Esc 返回",
	SkillPickerSearchEmpty:       "沒有匹配的 skill",
	SkillPickerSearchPlaceholder: "搜尋 skills...",
	SkillPickerSourceTitle:       "來源",
	SkillPickerSourceActiveFmt:   "%d 個有效",
	SkillPickerSourceHint:        "↑↓ 移動 · Enter 檢視技能 · d 診斷 · s skills · r 重新掃描 · Esc 關閉",
	SkillPickerDiagHidden:        "d 展開診斷",
	SkillPickerDiagShown:         "d 收起診斷",
	SkillPickerBuiltinSource:     "內建",
	SkillPickerRescanned:         "已重新掃描 skills",
	SkillPickerNoDescription:     "（無描述）",
	SkillPickerScopeProject:      "專案",
	SkillPickerScopeCustom:       "自訂",
	SkillPickerScopeGlobal:       "全域",
	SkillPickerScopeBuiltin:      "內建",
	SkillPickerSubagent:          "子代理",
	SkillPickerAvailableLabel:    "可用",
	SkillPickerDisabledLabel:     "關閉",
	SkillPickerNoChanges:         "Skills 對話框已關閉：沒有變更",
	SkillPickerSourceSkillsHint:  "↑↓ 移動 · Space 開關 · Enter 詳情 · Esc 返回來源",
	SkillPickerSourceSkillsEmpty: "這個來源下沒有 skill",
	SkillPickerActionToggle:      "切換啟用狀態",
	SkillPickerActionDelete:      "刪除 skill",
	SkillPickerDeleteTitleFmt:    "刪除 skill /%s？",
	SkillPickerDeleteConfirm:     "刪除",
	SkillPickerDeleteCancel:      "取消",
	SkillPickerDeleteHint:        "Enter 確認 · y 刪除 · n/Esc 取消",
	SkillPickerDeletedFmt:        "已刪除 skill %s",
	SkillPickerMoreAboveFmt:      "↑ 上方還有 %d 個",
	SkillPickerMoreBelowFmt:      "↓ 下方還有 %d 個",
	SkillPickerTokenFmt:          "~%d tok",
	SkillPickerDetailMetaFmt:     "範圍: %s  執行方式: %s",
	SkillPickerSkillsUnit:        "個 skill",
	SkillPickerLinesUnit:         "行",
	SkillPickerStatusLabel:       "技能選擇器",
	SkillPickerStatusOK:          "有效",
	SkillPickerStatusMissing:     "缺失",
	SkillPickerStatusNotDir:      "非目錄",
	SkillPickerStatusUnreadable:  "無權限",
	SlashPromptEmpty:             "該 MCP prompt 沒有返回可傳送的內容",
	SlashMCPNone:                 "沒有設定 MCP 伺服器 — 在 reasonix.toml 加一個 [[plugins]] 條目",
	CtrlCQuitHint:                "再按一次 Ctrl+C 退出",
	CompHintSlash:                "↑/↓ 移動 · Tab/Enter 選中 · Esc 關閉",
	CompHintFile:                 "↑/↓ 移動 · Tab/Enter 進入資料夾或選中檔案 · Esc 關閉",
	MouseCopiedHint:              "已複製到剪貼簿",
	ClipboardCopyOSC52Hint:       "已透過 OSC 52 請求複製 — 可能需要終端授權",
	ClipboardCopyFallbackHint:    "系統剪貼簿無法使用 — 已改用 OSC 52",
	ClipboardTextPasteRemoteHint: "SSH 下滑鼠貼上無法讀取本機剪貼簿或 PRIMARY 選取區 — 請使用終端貼上快捷鍵或 /mouse",
	ClipboardTextPasteFailedFmt:  "貼上文字失敗：%v",
	ClipboardImagePastingHint:    "正在貼上圖片…",
	ClipboardImagePasteFailedFmt: "貼上圖片失敗：%v",
	MouseCaptureOnHint:           "滑鼠接管已開啟 — 應用內拖拽選取/捲軸/滾輪生效",
	MouseCaptureOffHint:          "滑鼠接管已關閉 — 由終端原生處理選取與右鍵選單",
	MouseCaptureTag:              "終端原生滑鼠",

	ShellExecEmpty:      "用法：!<命令>  （例如 !ls -la）",
	ShellExecFailedFmt:  "Shell 命令執行失敗：%v",
	ShellExecTimeoutFmt: "Shell 命令逾時（>%s）",
	ShellModeHint:       "Enter 執行 Shell · Esc 取消 · 點擊輸出展開",

	CmdNew:              "清空上下文並儲存歷史",
	CmdCls:              "清除畫面（保留 LLM 上下文）",
	CmdCompact:          "壓縮上下文",
	CmdContinueChecks:   "繼續已暫停的任務收尾檢查",
	CmdContext:          "檢視上下文視窗、閾值與上次維護結果",
	CmdRewind:           "回滾到更早的一輪",
	CmdTree:             "檢視對話分支樹",
	CmdBranch:           "建立對話分支",
	CmdSwitchBranch:     "切換對話分支",
	CmdResume:           "恢復已儲存的會話",
	CmdModel:            "切換模型",
	CmdStatus:           "顯示工作階段狀態",
	CmdWorkMode:         "已棄用：自適應標準執行",
	CmdDocs:             "搜尋與目前版本匹配的內建文件",
	CmdMemory:           "檢視指令、記憶與復原狀態",
	CmdMigrate:          "重試舊資料遷移",
	CmdRemember:         "儲存一條記憶",
	CmdForget:           "刪除一條已存記憶",
	CmdMcp:              "MCP 伺服器",
	CmdRemote:           "遠端 SSH 主機",
	CmdHooks:            "管理 hooks",
	CmdPlugins:          "管理插件包",
	CmdPasteImage:       "貼上剪貼簿圖片",
	CmdOutputStyle:      "列出輸出風格",
	CmdTheme:            "切換 CLI 主題",
	CmdLanguage:         "切換 CLI 語言",
	CmdCurrency:         "切換費用展示幣種",
	CmdSkill:            "管理 skills",
	CmdVerbose:          "切換 thinking 原文顯示",
	CmdReloadCmd:        "重載自定義命令",
	CmdReload:           "重載 agent 執行階段（工具、技能、命令、鉤子、模型供應商），保留目前會話",
	CmdSandbox:          "檢視沙箱狀態",
	CmdEffort:           "設定推理強度",
	CmdMouse:            "切換滑鼠接管（關閉後由終端原生處理選取/右鍵）",
	CmdReasonLang:       "設定可見思考語言",
	CmdHelp:             "檢視命令列表",
	CmdWeb:              "在 Web UI 中繼續目前工作階段",
	CmdTodo:             "清除任務清單",
	CmdQuit:             "退出會話",
	CmdCopy:             "選擇回覆複製到剪貼簿",
	CmdExport:           "將會話匯出為 Markdown",
	SlashCopyDone:       "已複製到剪貼簿",
	SlashCopyEmpty:      "沒有可複製的助手回覆",
	SlashCopyListHeader: "選擇要複製的回覆：",
	SlashExportDoneFmt:  "會話已匯出到 %s",
	SlashExportEmpty:    "沒有可匯出的訊息",
	ArgSkillShow:        "檢視 skill 內容",
	ArgSkillNew:         "新建一個 skill",
	ArgSkillPaths:       "顯示發現路徑",
	ArgMcpAdd:           "連線一個伺服器",
	ArgMcpRemove:        "斷開一個伺服器",
	ArgMcpConnected:     "已連線",
	ArgHooksList:        "列出生效的 hooks",
	ArgModelCurrent:     "當前",
	ArgEffortAuto:       "使用模型預設值",
	ArgEffortLow:        "較輕推理",
	ArgEffortMedium:     "均衡推理",
	ArgEffortHigh:       "較深推理",
	ArgEffortXHigh:      "超高推理",
	ArgEffortMax:        "最高推理",
	ArgThemeCurrent:     "當前",
	ArgLanguageAuto:     "從 REASONIX_LANG / 系統 locale 自動偵測",
	ArgLanguageEn:       "English",
	ArgLanguageZh:       "中文",

	ListModelsHeaderFmt: "模型（當前：%s）",
	ListModelsHint:      "用底部的模型切換器，或輸入 /model <provider/model>",
	ListMemoryNone:      "暫無記憶 — 用 “/remember <內容>” 新增，或執行 /init 生成 AGENTS.md",
	ListSkillsHeaderFmt: "skills（%d 個）",
	ListSkillsNone:      "暫無 skill — 呼叫內建的（如 /init），或用 install_skill 建立一個",
	ListHooksHeaderFmt:  "hooks（生效 %d 個）",
	ListHooksNone:       "無生效 hooks — 在 .reasonix/settings.json（專案）或 <Reasonix home>/settings.json（全域）設定",
	ListMcpHeader:       "MCP 伺服器",
	ListMcpNone:         "未連線 MCP 伺服器 — 在 reasonix.toml（[[plugins]]）或專案 .mcp.json 中新增",

	MemoryEditHint:               "可直接編輯記憶文件，或輸入 “/remember 內容” 快速記錄；文件變動會在下次會話生效",
	ForgetUsage:                  "用法：/forget <name> — name 是 /memory 中顯示的條目標識",
	ForgetDoneFmt:                "已刪除記憶：%s",
	QuickRememberEmpty:           "沒有要記錄的內容",
	QuickRememberDoneFmt:         "已記住 → %s",
	ModelSwitchUnavailable:       "本會話不支援切換模型",
	ModelSwitchBusy:              "請先完成或取消目前工作，並停止背景任務後再切換模型",
	ModelAlreadyOnFmt:            "已經在使用 %s",
	ModelSwitchingFmt:            "正在切換到 %s…",
	ModelSwitchedFmt:             "已切換到 %s（會保留當前對話，但提示詞快取會重新計算）",
	ModelListHeader:              "模型（/model <provider/model> 切換）",
	RuntimeSwitchPending:         "請等待目前執行階段切換完成",
	RuntimeReloadQueued:          "已加入重載佇列——目前工作完成後執行",
	RuntimeReloaded:              "執行階段已重載",
	RuntimeReloadedGenerationFmt: "執行階段已重載（構建代號 %d）",
	WorkModeUsage:                "用法：/preset <standard|delivery>",
	WorkModeDeprecatedNotice:     "執行模式已改為會話級質量底線：/preset standard（默認）或 /preset delivery。輕量已併入標準檔；自適應策略本就會輕跑輕任務。",
	QualityFloorApplied:          "質量底線已設置：後續輪次將使用交付級完成門檻。",
	RewindNone:                   "暫無可回滾的內容",
	RewindCodeConversation:       "程式碼 + 對話",
	RewindConversationOnly:       "僅對話",
	RewindCodeOnly:               "僅程式碼",
	RewindFork:                   "分叉",
	RewindSummarizeFrom:          "壓縮此處之後（保留歷史）",
	RewindSummarizeUpto:          "壓縮此處之前（保留歷史）",
	RewindPickTitle:              "⟲ 回滾 — 選擇一輪",
	RewindPickHint:               "↑/↓ 移動 · Enter 選擇 · Esc 關閉",
	RewindRestoreTitleFmt:        "⟲ 恢復到第 %d 輪 ",
	RewindApplyHint:              "↑/↓ · Enter 套用 · Esc 返回",
	RewindCoverageTitle:          "⚠ 檔案覆蓋不完整",
	RewindCoverageWarningFmt:     "偵測到 %d 個覆蓋缺口，部分檔案修改可能無法恢復。",
	RewindConfirmHint:            "Enter/y 確認 · Esc 返回",
	RewindUnavailableFmt:         "無法回滾：%s",
	RewindEmpty:                  "(空)",

	EnterAPIKeysHeader:       "輸入 API key（Enter 跳過、稍後再設）：",
	WroteFileFmt:             "已寫入 %s",
	SetupComplete:            "設定完成。",
	SetupCancelled:           "設定已取消。",
	TryHintFmt:               "試試: %s",
	NextHint:                 "下一步：設定 API key（執行 `reasonix setup` 或 export DEEPSEEK_API_KEY=...），然後執行 `reasonix run \"你的任務\"`。",
	ConfirmReconfigureFmt:    "%s 已存在。重新設定並覆蓋？",
	NotOverwritingFmt:        "%s 已存在，不覆蓋",
	SetupManagerTitle:        "供應商設定",
	SetupAddOpenAI:           "新增 OpenAI 相容供應商",
	SetupAddAnthropic:        "新增 Anthropic 相容供應商",
	SetupProviderExistsFmt:   "供應商 %q 已存在。請進入現有供應商管理來編輯模型或設定。",
	SetupSaveExit:            "儲存並離開",
	SetupSaveExitDesc:        "寫入目前暫存的修改",
	SetupCancel:              "取消",
	SetupCancelDesc:          "放棄全部暫存修改",
	SetupModelsUnit:          "個模型",
	SetupKeySet:              "已設定 Key",
	SetupKeyMissing:          "缺少 Key",
	SetupDefaultBadge:        "預設",
	SetupProviderActionsFmt:  "管理 %s",
	SetupEditProvider:        "編輯供應商",
	SetupUpdateKey:           "更新 API Key",
	SetupTestRefresh:         "測試連線 / 重新整理模型列表",
	SetupSetDefault:          "設定預設模型",
	SetupRemoveProvider:      "刪除供應商",
	SetupBack:                "返回",
	SetupPromptModels:        "模型列表（用逗號分隔）",
	SetupSharedKeyWarningFmt: "%s 已被 %s（%s）使用。確認共用這項憑據？",
	SetupPromptAPIKeyFmt:     "輸入 %s 的新值",
	SetupSelectDefaultModel:  "選擇預設模型",
	SetupConfirmRemoveFmt:    "確認刪除供應商 %s？",
	SetupSummaryTitle:        "待儲存修改：",
	SetupSummaryAddedFmt:     "新增：%s",
	SetupSummaryEditedFmt:    "編輯：%s",
	SetupSummaryRemovedFmt:   "刪除：%s",
	SetupSummaryDefaultFmt:   "預設模型：%s",
	SetupSummaryKeysFmt:      "更新 API Key：%d 項",
	SetupSummaryNoChanges:    "沒有修改",
	SetupConfirmSave:         "儲存這些修改？",
	SetupConcurrentChangeFmt: "setup 開啟期間設定已被修改（%s）。本次暫存修改未寫入，請重新執行 setup 檢查最新設定。",

	// model fetching
	FetchingModelsFmt:          "正在取得 %s 的模型列表...",
	FetchModelsSuccessFmt:      "發現 %d 個 %s 模型",
	FetchModelsFailedFmt:       "取得 %s 模型失敗: %v",
	FetchModelsUsingPresetsFmt: "無法線上取得 %s 的模型，使用預設列表",
	SelectModelsLabel:          "選擇要啟用的 %s 模型",
	CustomFetchEmpty:           "/models 返回為空，回退到手動輸入",
	AnthropicFetchEmpty:        "/models 返回為空 — Anthropic 相容服務通常不提供此端點，回退到手動輸入",
	APIKeyAlreadySetFmt:        "復用已設定的 %s",
	APIKeyResetPromptFmt:       "重新輸入 %s？",
	InvalidAPIKeyEnvFmt:        "%q 不是有效的 API Key 變數名稱。只能使用字母、數字和底線（例如 MY_PROVIDER_API_KEY）；請勿在此填寫模型名稱。",
	RepairedAPIKeyEnvFmt:       "provider %s：已將無效的 API Key 變數名稱 %q 修復為 %q",

	// custom provider
	CustomProviderDesc:   "新增第三方 OpenAI 相容模型",
	CustomAddMethodLabel: "新增第三方 OpenAI 相容模型 - 選擇新增方式",
	CustomMethodManual:   "手動輸入模型名稱",
	CustomMethodURL:      "從 URL 取得模型列表",
	CustomPromptModel:    "請輸入模型名稱",
	CustomPromptBaseURL:  "請輸入 Base URL",
	CustomPromptKeyEnv:   "API Key 變數名稱（直接按 Enter 使用預設值，不是模型名稱）",
	CustomPromptAPIKey:   "請輸入 API Key",
	CustomPromptWindow:   "上下文視窗(tokens,填得比模型真實視窗小會導致過早壓縮)",
	CustomAddedFmt:       "已新增自訂模型: %s",

	// Anthropic 相容 provider
	AnthropicProviderDesc:          "新增第三方 Anthropic 相容模型",
	AnthropicAddMethodLabel:        "新增第三方 Anthropic 相容模型 - 選擇新增方式",
	AnthropicMethodManual:          "手動輸入模型名稱",
	AnthropicMethodURL:             "從 URL 取得模型列表",
	AnthropicPromptModel:           "請輸入模型名稱",
	AnthropicPromptBaseURL:         "請輸入 Base URL",
	AnthropicPromptKeyEnv:          "API Key 變數名稱（直接按 Enter 使用預設值，不是模型名稱）",
	AnthropicPromptAPIKey:          "請輸入 API Key",
	AnthropicAddedFmt:              "已新增 Anthropic 相容模型: %s",
	AnthropicFetchingModelsFmt:     "正在取得 %s 的模型列表...",
	AnthropicFetchModelsSuccessFmt: "發現 %d 個 %s 模型",
	AnthropicFetchModelsFailedFmt:  "取得 %s 模型失敗: %v",
	AnthropicSelectModelsLabel:     "選擇要啟用的 %s 模型",

	RemoteConnectingFmt:       "正在連線 %s…",
	RemoteConnectedFmt:        "已連線到 %s",
	RemoteReconnectingFmt:     "正在重新連線 %s（第 %d 次）…",
	RemoteDegradedFmt:         "已連線到 %s，但部分連接埠轉送未建立",
	RemoteDisconnected:        "已中斷（遠端 serve 仍在執行）",
	RemoteServeReadyFmt:       "遠端 serve 就緒：%s",
	RemoteHostKeyPromptFmt:    "未知的主機金鑰 %s\n  類型：%s\n  指紋：%s",
	RemotePassphrasePromptFmt: "%s 的金鑰通關密語：",
	RemotePasswordPromptFmt:   "%s 的登入密碼：",
	RemoteBootstrapStepFmt:    "遠端 serve：%s %s",
	RemoteNoHostsHint:         "尚未設定遠端主機；用 `reasonix remote add <名稱> [user@]host` 新增",

	UnknownCommandFmt:         "未知命令 %q",
	UsageRunHint:              "用法：reasonix -p [--model NAME] <task>",
	ErrorPrefix:               "錯誤：",
	ReconfigureOnUnknownModel: "設定的模型已不可用 —— 重新執行引導設定。",
	WriteConfigErr:            "寫入設定失敗：",
	WriteEnvErr:               "寫入 .env 失敗：",

	ProviderErrBadRequest:          "請求格式錯誤 (HTTP 400)：請求體被拒絕，通常是程式缺陷。若持續出現請回報。",
	ProviderErrContextOverflowFmt:  "請求超出共用上下文視窗：prompt %d + 輸出 %d = %d tokens，視窗只有 %d。請壓縮、用更小的輸出上限重試、分叉或回溯後再發送。",
	ProviderErrAuth:                "認證失敗 (HTTP 401)：未讀到 API key（缺失或未設定）。請在 .env 中設定金鑰，或執行 `reasonix setup`。",
	ProviderErrModelFormatMismatch: "模型/API 格式不相容：服務端不支援目前模型使用所選 provider 線路。這不是 API key 失效；請選擇支援該模型的 provider 線路。",
	ProviderErrOpenCodeGoGrokRoute: "OpenCode Go 的 `grok-4.5` 請使用 OpenCode Go Responses 預設。",
	ProviderErrInsufficientBalance: "餘額不足 (HTTP 402)：帳戶餘額不足，請前往儲值後重試。",
	ProviderErrUnprocessable:       "參數錯誤 (HTTP 422)：某個請求參數被拒絕，通常是程式缺陷。若持續出現請回報。",
	ProviderErrInputSensitive:      "輸入被 MiniMax 內容審查拒絕（錯誤碼 1026）。審查對象可能包含對話歷史和工具結果；請調整相關內容，或建立新對話只保留必要上下文。原樣重試通常無效。",
	ProviderErrOutputSensitive:     "MiniMax 產生的內容被內容審查拒絕（錯誤碼 1027）。請調整請求內容後重試；若持續出現，可改用其他服務商。",
	ProviderErrRateLimited:         "請求速率達到上限 (HTTP 429)：請求過於頻繁 (TPM/RPM)。已退避重試，請放慢速率或稍後再試。",
	ProviderErrServer:              "伺服器故障 (HTTP 500)：服務端內部錯誤。已退避重試；若持續失敗請稍後再試。",
	ProviderErrServerBusy:          "伺服器繁忙 (HTTP 503)：服務端負載過高。已退避重試，請稍後再試。",

	SelectOneHint:  "(↑/↓ · Enter · q 取消)",
	SelectManyHint: "(↑/↓ · Space · Enter · q)",

	ReportNoPending:           "沒有待處理的 CLI 當機報告。",
	ReportHeaderFmt:           "CLI 當機報告 %s",
	ReportCapturedFmt:         "擷取時間：%s",
	ReportPreviewOnlyFmt:      "目前僅預覽。執行 `reasonix report send %s` 可傳送這份報告。",
	ReportSendPrompt:          "將這份已脫敏報告傳送到 crash.reasonix.io？",
	ReportKept:                "報告已保留在本機。",
	ReportDeletedFmt:          "已刪除 CLI 當機報告 %s。",
	ReportSentFmt:             "已傳送 CLI 當機報告 %s。",
	ReportConfigFailedFmt:     "無法載入網路設定：%v",
	ReportUploadFailedFmt:     "報告上傳失敗；本機報告已保留：%v",
	ReportSentDeleteFailedFmt: "報告已傳送，但無法刪除本機副本：%v",
	ReportUsageBody: `用法：
  reasonix report                 預覽最新本機報告並確認是否傳送
  reasonix report list            列出本機 CLI 當機報告
  reasonix report show [ID]       預覽報告（省略 ID 時使用最新一份）
  reasonix report send [ID]       傳送已審閱報告，成功後刪除本機副本
  reasonix report delete [ID]     不傳送，直接刪除本機報告`,

	CLITelemetryConsentNotice:           "Reasonix 可以向 crash.reasonix.io 傳送匿名、完全不含內容的 CLI 使用統計：隨機安裝 ID、版本、作業系統和固定品質分桶。絕不會傳送 prompt、回答、程式碼、路徑、模型或工具內容、環境變數。之後可執行 `reasonix config telemetry off` 關閉。",
	CLITelemetryConsentPrompt:           "允許傳送匿名 CLI 使用統計嗎？",
	CLITelemetryConsentInvalid:          "請輸入 y 或 n。",
	CLITelemetryConsentSaveFailedFmt:    "由於無法儲存偏好設定，CLI 使用統計仍維持關閉：%v",
	CLITelemetryConsentCleanupFailedFmt: "CLI 使用統計已關閉，但無法刪除待傳送統計：%v",

	UsageBody: `reasonix — 由設定和插件驅動的 coding agent（多模型）

用法：
  reasonix [--model NAME] [-c|--continue] [-r|--resume [QUERY]] [--permission-mode MODE] [--effort LEVEL] [--add-dir PATH]   互動式會話
  reasonix -p|--print [--model NAME] [--output-format text|json|stream-json] [--allowed-tools RULES] [--add-dir PATH] <task>
  reasonix run [--model NAME] [--max-steps N] [-c|--continue] [--resume PATH] [--copy] [--output-format FORMAT] <task>
  reasonix run --events-jsonl [--model NAME] <task>      輸出脫敏結構化事件 JSONL
  reasonix review [--base BRANCH] [--commit SHA] [--model NAME]  AI 程式碼審查（基於本機 diff）
  reasonix web [--model NAME] [--addr HOST:PORT] [--no-open]  啟動本機 Web UI 並用預設瀏覽器開啟
  reasonix serve [--model NAME] [--addr HOST:PORT] [--auth none|token|password] [--token STR] [--password STR] [--hash-password]  透過 HTTP+SSE 提供服務（支援可選認證）
  reasonix acp [--model NAME]                           透過 stdio 提供 Agent Client Protocol（也可用：reasonix --acp）
  reasonix setup [path]                                 互動式設定精靈；生成 reasonix.toml（及 .env）
  reasonix config reasoning-language [auto|zh|en]        設定可見思考語言
  reasonix config compact-ratio [--local] [30..85]       設定自動壓縮閾值
  reasonix config telemetry [auto|on|off]                設定不含內容的 CLI 使用統計
  reasonix report [list|show|send|delete] [ID]           審閱並明確傳送本機 CLI 當機報告
  reasonix mcp <add|remove|list|import>                 管理 reasonix.toml 裡的 MCP 伺服器
  reasonix subagent <list|create|edit|delete|try|run>   管理和執行隔離子智慧體 profile
  reasonix init                                         查看如何產生專案記憶（AGENTS.md）
  reasonix doctor [--json]                              輸出脫敏的本機診斷資訊
  reasonix doctor session <branch-id> [--zip] [--out PATH]  匯出會話衝突診斷 zip
  reasonix session list --json [--dir PATH]             為機器客戶列出脫敏會話
  reasonix session show|status <machine-session-id> --json [--dir PATH]  查詢單一脫敏會話
  reasonix session recovery [<machine-session-id>] --json [--dir PATH]  查詢脫敏復原狀態
  reasonix hook list|status --json [--dir PATH]         檢視脫敏 Hook 狀態
  reasonix task list|show|status|events|stop|cancel|monitor|tmux --json [--dir PATH]
                                                         檢視或控制脫敏 Task
  reasonix bot start|doctor|weixin-login                多管道 IM bot 閘道
  reasonix upgrade [--check] [--force]                   更新到最新正式版（別名：reasonix update）
  reasonix completion bash|zsh|fish                     列印 shell 補全腳本到 stdout
  reasonix version [--verbose|--json]                   列印版本（單行）或建置元資訊
  reasonix --version | -v                               單行版本（腳本安全）
  reasonix help

範例：
  reasonix
  reasonix --continue
  reasonix --resume provider-config
  reasonix web
  reasonix run "把 main.go 裡的 TODO 實現掉"
  reasonix run --model mimo-pro "給這個函式補單元測試"
  reasonix -p "總結這個倉庫" --output-format json
  reasonix subagent run review "審查目前變更"
  echo "解釋這段程式碼" | reasonix run

設定：
  優先順序：flag > ./reasonix.toml > <Reasonix home>/config.toml > 內建預設值
  金鑰透過 api_key_env 從環境變數注入（如 DEEPSEEK_API_KEY）。
  執行 'reasonix setup' 生成設定；詳見 docs/SPEC.md。
`,
	RenameUsage:                "用法：/rename <新名稱>  或  /rename <序號> <新名稱>",
	RenameNoSession:            "當前沒有活躍會話可重新命名",
	RenameDoneFmt:              "會話已重新命名為 %q",
	DiffFoldEnabledFmt:         "diff 已摺疊至 %d 行（/diff-fold 展開）",
	DiffFoldDisabled:           "diff 已展開 — 顯示全部行（/diff-fold 摺疊）",
	SlashClearPrompt:           "清空當前上下文且不儲存？",
	SlashClearDone:             "已清空當前上下文",
	SlashClearFailed:           "清空當前上下文失敗",
	SlashClsDone:               "已清除畫面（LLM 上下文保留）",
	CmdClear:                   "丟棄當前上下文",
	CmdRename:                  "重新命名會話",
	CmdGoal:                    "設定或清除當前目標",
	CmdDiffFold:                "切換 diff 摺疊/展開",
	ListMemorySaved:            "儲存的記憶",
	ListMemoryArchived:         "歸檔的記憶",
	GoalEmpty:                  "目標：無 — 用 /goal <目標> 設定",
	GoalCurrentFmt:             "目標：%s",
	GoalSetFmt:                 "目標已設定 → %s",
	GoalCleared:                "目標已清除",
	GoalNotRunning:             "沒有執行中的目標可暫停",
	GoalNotPaused:              "沒有已暫停或被阻擋的目標可恢復",
	GoalPaused:                 "目標已暫停 — /goal resume 可繼續",
	GoalPausedReason:           "使用者手動暫停",
	GoalPausedFmt:              "目標已暫停（%s）— 使用 /goal resume 繼續",
	GoalRuntimeFmt:             "執行狀態：輪次 %d · 請求 %d · token %d · 工作時間 %s",
	GoalRuntimeLastReason:      "最近原因",
	ProviderErrAuthRejected:    "認證失敗 (HTTP 401)：服務端拒絕了你的 API key。可能是 key 錯誤或已過期，也可能是服務端出現瞬時鑑權/額度問題——已退避重試仍失敗。請稍後再試，或檢查 .env 中的金鑰 / 執行 `reasonix setup`。",
	SelectMoreAboveFmt:         "  ↑ 上方還有 %d 個",
	SelectMoreBelowFmt:         "  ↓ 下方還有 %d 個",
	SelectSearchHint:           "/ 搜尋 · 輸入關鍵詞過濾 · Esc 取消搜尋",
	CmdProvider:                "切換供應商",
	ProviderListHeader:         "供應商（/provider <名稱> 切換）",
	ProviderAlreadyOnFmt:       "已經在使用供應商 %s",
	ProviderUnknownFmt:         "未知供應商 %q",
	ProviderPickLabel:          "選擇 %s 的一個模型",
	ProviderNoModelsFmt:        "供應商 %s 沒有已配置的模型",
	UpgradeChecking:            "正在檢查更新…",
	UpgradeChannelDeprecated:   "發布渠道已停用；將使用最新正式版。",
	UpgradeDevBuild:            "開發版本無法自更新",
	UpgradeFetchFailed:         "檢查更新失敗：%v",
	UpgradeInvalidVersion:      "遠端版本不是有效的 semver",
	UpgradeAlreadyLatest:       "已是最新版本。",
	UpgradeForcing:             "強制重新安裝當前版本…",
	UpgradeAvailableFmt:        "當前：%s → 最新：%s",
	UpgradeNoAssetFmt:          "未找到 %s 的安裝包",
	UpgradeDownloadingFmt:      "正在下載 %s（%s）…",
	UpgradeDownloadFailed:      "下載失敗：%v",
	UpgradeVerifying:           "正在校驗 SHA256…",
	UpgradeChecksumFailed:      "無法獲取校驗檔案：%v",
	UpgradeChecksumMismatchFmt: "SHA256 不匹配：得到 %s，期望 %s",
	UpgradeChecksumNotFoundFmt: "SHA256SUMS 中未找到 %s",
	UpgradeExtractFailed:       "解壓二進位制檔案失敗：%v",
	UpgradeApplying:            "正在替換二進位制檔案…",
	UpgradeApplyFailed:         "應用更新失敗：%v",
	UpgradeSuccessFmt:          "已更新 %s → %s",
}
