"use strict";

// ── Internationalization ──
// String pool extracted from src/menu.js so settings panel can also depend on it.
// `createTranslator(getLang)` returns a `t(key)` function bound to a lang source.
// `getLang` is a callback (not a static value) so language switches at runtime
// take effect without re-creating the translator.
const i18n = {
  en: {
    size: "Size",
    small: "Small (S)",
    medium: "Medium (M)",
    large: "Large (L)",
    sendToDisplay: "Send to Display",
    bringPetToPrimaryDisplay: "Bring Pet to Primary Display",
    displayLabel: "Display {n}",
    displayLabelPrimary: "Display {n} (Primary)",
    displayResolution: "{w}×{h}",
    miniMode: "Mini Mode",
    exitMiniMode: "Exit Mini Mode",
    sleep: "Sleep (Do Not Disturb)",
    wake: "Wake Clawd",
    startOnLogin: "Start on Login",
    startWithClaude: "Start with Claude Code",
    codexHookHealthNudgeTitle: "Codex approval hook needs attention",
    codexHookHealthNudgeBody: "Codex won't show approval prompts until its hook is fixed. Open Clawd Settings → Agents.",
    showInMenuBar: "Show in Menu Bar",
    showInDock: "Show in Dock",
    language: "Language",
    checkForUpdates: "Check for Updates",
    checkForUpdatesPending: "Update available · v{version}",
    autoUpdateCheck: "Automatically check for updates",
    autoUpdateCheckDescription: "Quietly checks GitHub every 12 hours. Only notifies you when a new version is available.",
    aboutUpdateAvailableHint: "Update available: v{version}",
    checkingForUpdates: "Checking for Updates…",
    updateAvailable: "Update Available",
    updateAvailableMsg: "v{version} is available. Download and install now?",
    updateAvailableMacMsg: "v{version} is available. Open the download page?",
    updateNotAvailable: "You're Up to Date",
    updateNotAvailableMsg: "Clawd v{version} is the latest version.",
    updateDownloading: "Downloading Update…",
    updateReady: "Update Ready",
    updateReadyMsg: "v{version} has been downloaded. Restart now to update?",
    updateError: "Update Error",
    updateErrorMsg: "Failed to check for updates. Please try again later.",
    updateDirtyMsg: "Local files have been modified. Please commit or stash your changes before updating.",
    nativeArm64Available: "Native ARM64 Build Available",
    nativeArm64AvailableMsg: "Clawd v{version} has a native Windows ARM64 installer. Install it for better performance and battery life?",
    nativeArm64DownloadOpened: "Opened the ARM64 installer download in your browser.",
    updateNow: "Update Now",
    updating: "Updating…",
    gitUpdateRestarting: "Update complete. Restarting Clawd now...",
    macUpdateOpened: "Opened the latest download page in your browser.",
    restartNow: "Restart Now",
    restartLater: "Later",
    download: "Download",
    dismiss: "Dismiss",
    bubbleFollow: "Bubble Follow Pet",
    hideBubbles: "Hide Bubbles",
    menuAutoApproveAll: "Auto-approve all requests",
    autoApproveAllConfirmTitle: "Turn on auto-approve all requests?",
    autoApproveAllConfirmDetail: "Every permission request from every agent will be approved automatically, including running shell commands and deleting files. Clawd will not ask you first. Only enable this if you fully trust what your agents are doing.",
    autoApproveAllConfirmEnable: "Enable auto-approve all",
    autoApproveAllConfirmCancel: "Cancel",
    openDashboard: "Open Dashboard",
    dashboardWindowTitle: "Sessions",
    dashboardCount: "{n} active",
    dashboardEmpty: "No active sessions",
    dashboardEmptyHint: "Claude Code, Codex, and other agent sessions will appear here.",
    dashboardJumpTerminal: "Jump to Terminal",
    dashboardOpenCodexSession: "Open Codex Session",
    dashboardHideSessionTitle: "Hide from Clawd. This does not close the terminal.",
    dashboardMarkRead: "Mark read",
    dashboardMarkReadTitle: "Acknowledge this remote session and let it age normally.",
    dashboardLastEventPrefix: "Last",
    dashboardContextUsage: "Context",
    dashboardContextUsageUnknownLimit: "Context: {used}",
    dashboardQuotaSectionAntigravity: "Antigravity",
    dashboardQuotaGroupGemini: "Gemini",
    dashboardQuotaGroupThirdParty: "Claude/GPT",
    dashboardQuotaSectionClaudeCode: "Claude Code",
    dashboardQuotaFiveHour: "5h",
    dashboardQuotaWeekly: "Weekly",
    dashboardQuotaResetIn: "Resets in {time}",
    dashboardQuotaResetOn: "Resets {date}",
    dashboardQuotaResetHoursMinutes: "{h}h {m}m",
    dashboardQuotaResetMinutes: "{m}m",
    dashboardHeadless: "Headless",
    dashboardNoPath: "No path",
    dashboardUnknownAgent: "Unknown",
    sessionLocal: "Local",
    sessionWorking: "Working",
    sessionThinking: "Thinking",
    sessionJuggling: "Juggling",
    sessionSweeping: "Compacting",
    sessionNotification: "Waiting",
    sessionWorktree: "Worktree",
    sessionIdle: "Idle",
    sessionSleeping: "Sleeping",
    sessionJustNow: "just now",
    sessionMinAgo: "{n}m ago",
    sessionHrAgo: "{n}h ago",
    sessionHudElapsedSec: "{n}s ago",
    sessionHudElapsedMinSec: "{m}m {s}s ago",
    sessionHudContextUsageTooltip: "Context: {used} / {limit} tokens ({percent}%)",
    sessionHudContextUsageTooltipUnknownLimit: "Context: {used} tokens",
    sessionHudActive: "{n} active",
    sessionHudOtherActive: "{n} other active",
    sessionHudLast: "last",
    // Status badges shown in the Sessions dashboard (derived via deriveSessionBadge)
    sessionBadgeRunning: "Running",
    sessionBadgeDone: "Done",
    sessionBadgeInterrupted: "Interrupted",
    sessionBadgeIdle: "Idle",
    // Human-readable labels for hook events (stored by recentEvents, derived at render time)
    eventLabelSessionStart: "Session started",
    eventLabelSessionEnd: "Session ended",
    eventLabelUserPromptSubmit: "Prompt submitted",
    eventLabelPreToolUse: "Tool started",
    eventLabelPostToolUse: "Tool finished",
    eventLabelPostToolUseFailure: "Tool failed",
    eventLabelAfterAgent: "Agent turn ended",
    eventLabelStop: "Response complete",
    eventLabelStopFailure: "Response failed",
    eventLabelApiError: "API error",
    eventLabelSubagentStart: "Subagent started",
    eventLabelSubagentStop: "Subagent finished",
    eventLabelPreCompress: "Context compression pending",
    eventLabelPreCompact: "Context compacting",
    eventLabelPostCompact: "Context compacted",
    eventLabelNotification: "Notification",
    eventLabelElicitation: "Question asked",
    eventLabelWorktreeCreate: "Worktree created",
    eventLabelStaleCleanup: "Session cleaned up",
    soundEffects: "Sound Effects",
    showPet: "Show Pet",
    hidePet: "Hide Pet",
    theme: "Theme",
    openThemeDir: "Open Theme Folder…",
    settings: "Settings…",
    toggleShortcut: "Toggle Shortcut: {shortcut}",
    settingsTabShortcuts: "Shortcuts",
    shortcutsTitle: "Shortcuts",
    shortcutsSubtitle: "Change Clawd shortcuts. Conflicts are checked when you save.",
    shortcutLabelTogglePet: "Toggle pet visibility",
    shortcutLabelPermissionAllow: "Permission: Allow",
    shortcutLabelPermissionDeny: "Permission: Deny",
    shortcutLabelBubbleNextOption: "Next approval option",
    shortcutLabelBubblePrevOption: "Previous approval option",
    shortcutLabelBubbleToggleOption: "Toggle selected option",
    shortcutLabelBubbleSubmit: "Submit approval choice",
    shortcutLabelPetReveal: "Bring Clawd forward",
    shortcutLabelOpenDashboard: "Open session dashboard",
    shortcutBuiltinKeyTooltip: "This shortcut is built in and cannot be changed.",
    tutorialWindowTitle: "Welcome to Clawd on Desk",
    tutorialWelcomeTitle: "Welcome to Clawd on Desk",
    tutorialWelcomeBody: "Clawd follows the AI tools you choose, then reacts on your desktop when they work, wait for approval, or finish.",
    tutorialWelcomeLangLabel: "Language",
    tutorialGetStarted: "Get started",
    tutorialBack: "Back",
    tutorialContinue: "Continue",
    tutorialSkip: "Skip setup",
    tutorialFinish: "Finish",
    tutorialWorking: "Working…",
    tutorialAgentsTitle: "Let Clawd follow your AI tools",
    tutorialAgentsSub: "This only changes Clawd's connection. It won't install or remove the tools themselves.",
    tutorialAgentsEmpty: "No AI tools were found yet. You can connect them anytime in Settings → Agents.",
    tutorialAgentsOpenSettings: "Open Settings to manage agents",
    tutorialAgentsActiveLabel: "Already on",
    tutorialAgentsActiveDesc: "Clawd is set up to listen to these tools.",
    tutorialAgentsInstallLabel: "Recommended to enable",
    tutorialAgentsInstallDesc: "Clawd found these tools on this computer. Select the ones it should follow.",
    tutorialAgentsCleanupLabel: "Recommended cleanup",
    tutorialAgentsCleanupDesc: "These Clawd connections still exist, but the tools were not found. Disconnect the ones you no longer use.",
    tutorialAgentsActiveTag: "On",
    tutorialAgentsInstallTag: "Found",
    tutorialAgentsCleanupTag: "Tool not found",
    tutorialAgentsInstallRowDesc: "Found on this computer. Let Clawd follow its activity.",
    tutorialAgentsCleanupRowDesc: "A Clawd connection exists, but the tool was not found.",
    tutorialAgentsActiveRowDesc: "Clawd can listen when this tool sends activity.",
    tutorialAgentsInstallAction: "Enable selected",
    tutorialAgentsCleanupAction: "Disconnect selected",
    tutorialAgentsInstallingSelected: "Enabling…",
    tutorialAgentsDisconnectingSelected: "Disconnecting…",
    tutorialAgentsSelectNone: "Select at least one item first.",
    tutorialAgentsInstallDone: "Done. Clawd is listening to the selected tools.",
    tutorialAgentsCleanupDone: "Done. The selected Clawd connections were disconnected.",
    tutorialAgentsActionFailed: "Could not update every selected item: {message}",
    tutorialShortcutsTitle: "Set your shortcuts",
    tutorialShortcutsSub: "Change the shortcuts you will actually use. Built-in keys are listed below for reference.",
    tutorialShortcutsEditableTitle: "Can change now",
    tutorialShortcutsEditableDesc: "Pick the shortcuts you want. Clawd checks conflicts when you save.",
    tutorialShortcutsFixedTitle: "Built in",
    tutorialShortcutsFixedDesc: "These keys and gestures work as-is, so there is nothing to configure.",
    tutorialShortcutRecordingHelp: "Press a new shortcut. Esc cancels.",
    tutorialShortcutChecking: "Checking…",
    tutorialShortcutClickPet: "Click pet",
    tutorialShortcutsHint: "You can always click the bubble with the mouse too. Shortcuts are just there when you want to stay in the keyboard.",
    tutorialFeaturesTitle: "Useful things to try later",
    tutorialFeaturesSub: "Nothing here is required for setup. These are handy once Clawd is running.",
    tutorialFeatureDrag: "Drop a project folder",
    tutorialFeatureDragDesc: "Drop a folder on Clawd to open a terminal in that directory.",
    tutorialFeatureDragPlatform: "Windows / Linux",
    tutorialFeatureDashboard: "Session dashboard",
    tutorialFeatureDashboardDesc: "See live sessions, aliases, and recent activity in one place.",
    tutorialFeatureAuto: "Auto-approve requests",
    tutorialFeatureAutoDesc: "Enable only when you fully trust the agent; every request is allowed automatically.",
    tutorialFeatureThemes: "Themes and mini mode",
    tutorialFeatureThemesDesc: "Switch character themes, or tuck Clawd against a screen edge.",
    tutorialFeatureMobile: "Phone / Telegram approval",
    tutorialFeatureMobileDesc: "Handle permission requests from your phone when you are away.",
    tutorialDoneTitle: "You're all set",
    tutorialDoneBody: "Start a connected AI tool and Clawd will react on your desktop. You can reopen this guide from Settings → General.",
    tutorialDoneOpenSettings: "Open Settings",
    shortcutRecordButton: "Change",
    shortcutRecordingHint: "Press keys (Esc)",
    shortcutClearButton: "Clear",
    shortcutResetButton: "Reset",
    shortcutResetAllButton: "Reset All",
    shortcutUnassigned: "— unassigned —",
    shortcutToastSaved: "Saved.",
    shortcutErrorConflict: "Conflict with {other}. Try another key.",
    shortcutErrorSystemConflict: "Already in use by system or another app.",
    shortcutErrorRegistrationFailed: "Saved, but currently not active due to system conflict. Rebind or try again later.",
    shortcutErrorReserved: "That shortcut is reserved. Try another key.",
    shortcutErrorInvalid: "That shortcut is not valid.",
    shortcutErrorNeedsModifier: "Use at least one modifier key.",
    newSession: "New Claude Session",
    newSessionSelectFolder: "Select Folder...",
    newSessionHomeDir: "Home Directory",
    newSessionNormal: "Normal Mode",
    newSessionDangerous: "Dangerous Mode (--dangerously-skip-permissions)",
    newSessionContinue: "Continue Last Session (-c)",
    newSessionResume: "Resume Session (--resume)",
    resumeSessionTitle: "Resume Session",
    resumeSessionHint: "Enter Session ID",
    modeNormal: "Normal",
    modeDangerous: "Dangerous",
    dangerousConfirmTitle: "Confirm Dangerous Mode",
    dangerousConfirmMessage: "Dangerous mode skips ALL permission checks. Only use in sandboxed environments.",
    confirm: "Confirm",
    cancel: "Cancel",
    selectFolder: "Select Project Folder",
    launchFailed: "Failed to launch Claude Code. No supported terminal was found.",
    quit: "Quit",
    approvalDetailAgent: "Agent",
    approvalDetailTool: "Tool",
    approvalDetailFolder: "Folder",
    approvalDetailSummary: "Summary",
    approvalSummaryFallbackDetail: "Details: {detail}",
    approvalSummaryUnavailable: "No description available — check the Clawd bubble on your desktop before deciding.",
    directSendEmptyText: "Send text as a reply to a Clawd completion notification.",
    directSendUnmapped: "Reply to a Clawd completion notification to choose the session.",
    directSendSessionNotLive: "That session is no longer live on this computer.",
    directSendPermissionPending: "That session appears to be waiting for a permission decision, so I did not focus it for direct send.",
    directSendNotFocusable: "That session cannot be focused as a local terminal on this computer.",
    directSendFocusUnconfirmed: "I could not confirm that terminal was foregrounded. Direct Send stayed in focus-only fallback; no text was pasted.",
    directSendAckSent: "Sent to terminal for session {session}.",
    directSendAckPastedRestored: "Pasted text into session {session}; press Enter locally to send it. Your previous clipboard text was restored.",
    directSendAckPastedManual: "Pasted text into session {session}; press Enter locally to send it. The text is still on this computer's clipboard for manual retry.",
    directSendAckCopied: "Copied text to this computer's clipboard for session {session}. Paste and send it locally when ready.",
    directSendAckFailed: "Direct Send failed after focus confirmation. No text was pasted.",
    directSendAckFocusOnlyDogfood: "Focused session {session} on your computer. Direct Send is in focus-only dogfood mode; no text was pasted.",
    directSendAckFocusOnly: "Focused session {session} on your computer. Direct Send did not send text.",
    approvalRequestsTitle: "{agent} requests {tool}",
    approvalUnknownTool: "Unknown",
    approvalSuggestionAutoEdits: "Auto edits",
    approvalSuggestionPlanMode: "Plan mode",
    approvalSuggestionModePrefix: "Mode: {mode}",
    approvalSuggestionAlwaysDenyTool: "Always deny {tool}",
    approvalSuggestionAlwaysAllowTool: "Always {tool}",
    approvalSuggestionAlwaysDeny: "Always deny",
    approvalSuggestionAlwaysAllow: "Always allow",
    telegramApprovalButtonAllowOnce: "Allow once",
    telegramApprovalButtonDeny: "Deny",
    telegramApprovalStatusResolvedElsewhere: "✅ Resolved outside Telegram",
    telegramApprovalStatusTimedOut: "⏳ Timed out",
    telegramApprovalStatusSessionEnded: "⏹️ Session ended",
    telegramApprovalStatusAllowed: "✅ Allowed",
    telegramApprovalStatusDenied: "❌ Denied",
    telegramApprovalStatusApplied: "✅ Applied",
    telegramApprovalToastAllowed: "Allowed",
    telegramApprovalToastDenied: "Denied",
    telegramApprovalToastApplied: "Applied",
    telegramApprovalToastUnavailable: "Unavailable",
    telegramApprovalToastAck: "OK",
    telegramApprovalToastExpired: "Expired",
    telegramApprovalToastNotAllowed: "Not allowed",
    telegramTestMessage: "Clawd: test native Telegram bot. Tap to confirm.",
    telegramTestConfirmButton: "Confirm",
    telegramSettingsTestTitle: "Clawd Telegram approval test",
    telegramSettingsTestDetail: "This is a settings test message. It is not attached to any agent permission request.",
    telegramApprovalDisabledMessage: "Telegram approval is disabled",
    telegramApprovalMissingTokenMessage: "Telegram bot token is not configured",
    telegramApprovalIncompleteConfigMessage: "Telegram approval config is incomplete",
    telegramApprovalNativeInactiveMessage: "Native Telegram approval is not active",
    telegramApprovalNativeTestingMessage: "Native Telegram approval test is already in progress",
    telegramApprovalSidecarNotRunningMessage: "Telegram approval sidecar is not running",
    telegramApprovalNoButtonResponseMessage: "Telegram test did not receive a button response",
    telegramElicitationProgress: "Question {current}/{total}",
    telegramElicitationOtherButton: "Other",
    telegramElicitationCancelOtherButton: "Cancel",
    telegramElicitationBackButton: "◀ Back",
    telegramElicitationConfirmButton: "Confirm selection",
    telegramElicitationTerminalButton: "Go to terminal",
    telegramElicitationOtherPrompt: "Reply to this message with your answer.",
    telegramElicitationSubmittedStatus: "✅ Submitted",
    telegramElicitationTerminalStatus: "🖥️ Continuing in terminal",
    telegramElicitationToastAnswered: "Answered",
    telegramElicitationToastExpired: "Expired",
    telegramElicitationToastNotAllowed: "Not allowed",
    telegramElicitationToastUnavailable: "Unavailable",
    telegramElicitationToastPickAtLeastOne: "Pick at least one",
    telegramElicitationToastTerminal: "Continuing in terminal",
  },
  zh: {
    size: "大小",
    small: "小 (S)",
    medium: "中 (M)",
    large: "大 (L)",
    sendToDisplay: "发送到显示器",
    bringPetToPrimaryDisplay: "把宠物拉回主屏",
    displayLabel: "显示器 {n}",
    displayLabelPrimary: "显示器 {n}（主屏）",
    displayResolution: "{w}×{h}",
    miniMode: "极简模式",
    exitMiniMode: "退出极简模式",
    sleep: "休眠（免打扰）",
    wake: "唤醒 Clawd",
    startOnLogin: "开机自启",
    startWithClaude: "随 Claude Code 启动",
    codexHookHealthNudgeTitle: "Codex 审批 hook 需要注意",
    codexHookHealthNudgeBody: "在修复前 Codex 不会弹出审批提示。打开 Clawd 设置 → Agents。",
    showInMenuBar: "在菜单栏显示",
    showInDock: "在 Dock 显示",
    language: "语言",
    checkForUpdates: "检查更新",
    checkForUpdatesPending: "有新版本 · v{version}",
    autoUpdateCheck: "自动检查更新",
    autoUpdateCheckDescription: "每 12 小时静默向 GitHub 查一次，发现新版本才通知你。",
    aboutUpdateAvailableHint: "有新版本: v{version}",
    checkingForUpdates: "正在检查更新…",
    updateAvailable: "发现新版本",
    updateAvailableMsg: "v{version} 已发布，是否下载并安装？",
    updateAvailableMacMsg: "v{version} 已发布，是否打开下载页面？",
    updateNotAvailable: "已是最新版本",
    updateNotAvailableMsg: "Clawd v{version} 已是最新版本。",
    updateDownloading: "正在下载更新…",
    updateReady: "更新就绪",
    updateReadyMsg: "v{version} 已下载完成，是否立即重启以完成更新？",
    updateError: "更新失败",
    updateErrorMsg: "检查更新失败，请稍后再试。",
    updateDirtyMsg: "本地文件有未提交的修改，请先 commit 或 stash 后再更新。",
    nativeArm64Available: "发现原生 ARM64 版本",
    nativeArm64AvailableMsg: "Clawd v{version} 提供原生 Windows ARM64 安装包。是否安装以获得更好的性能和续航？",
    nativeArm64DownloadOpened: "已在浏览器中打开 ARM64 安装包下载。",
    updateNow: "立即更新",
    updating: "正在更新…",
    gitUpdateRestarting: "更新已完成，Clawd 即将重新启动。",
    macUpdateOpened: "已在浏览器中打开最新下载页面。",
    restartNow: "立即重启",
    restartLater: "稍后",
    download: "下载",
    dismiss: "关闭",
    bubbleFollow: "气泡跟随宠物",
    hideBubbles: "隐藏气泡",
    menuAutoApproveAll: "自动放行所有请求",
    autoApproveAllConfirmTitle: "开启自动放行所有请求？",
    autoApproveAllConfirmDetail: "所有 agent 的每一个权限请求都会被自动通过，包括执行 shell 命令和删除文件。Clawd 不会再先问你。只有在你完全信任 agent 的行为时才开启。",
    autoApproveAllConfirmEnable: "开启自动放行",
    autoApproveAllConfirmCancel: "取消",
    openDashboard: "打开 Dashboard",
    dashboardWindowTitle: "会话",
    dashboardCount: "{n} 个活跃",
    dashboardEmpty: "无活跃会话",
    dashboardEmptyHint: "Claude Code、Codex 和其他 agent 会话会显示在这里。",
    dashboardJumpTerminal: "跳转终端",
    dashboardOpenCodexSession: "打开 Codex 会话",
    dashboardHideSessionTitle: "从 Clawd 隐藏，不会关闭终端。",
    dashboardMarkRead: "标记已读",
    dashboardMarkReadTitle: "确认这个远程会话，之后按正常空闲规则清理。",
    dashboardLastEventPrefix: "最近",
    dashboardContextUsage: "上下文",
    dashboardContextUsageUnknownLimit: "上下文: {used}",
    dashboardQuotaSectionAntigravity: "Antigravity",
    dashboardQuotaGroupGemini: "Gemini",
    dashboardQuotaGroupThirdParty: "Claude/GPT",
    dashboardQuotaSectionClaudeCode: "Claude Code",
    dashboardQuotaFiveHour: "5小时",
    dashboardQuotaWeekly: "每周",
    dashboardQuotaResetIn: "{time}后重置",
    dashboardQuotaResetOn: "{date}重置",
    dashboardQuotaResetHoursMinutes: "{h} 小时 {m} 分",
    dashboardQuotaResetMinutes: "{m} 分",
    dashboardHeadless: "后台",
    dashboardNoPath: "无路径",
    dashboardUnknownAgent: "未知",
    sessionLocal: "本机",
    sessionWorking: "工作中",
    sessionThinking: "思考中",
    sessionJuggling: "多任务",
    sessionSweeping: "压缩中",
    sessionNotification: "等待中",
    sessionWorktree: "创建分支",
    sessionIdle: "空闲",
    sessionSleeping: "睡眠",
    sessionJustNow: "刚刚",
    sessionMinAgo: "{n}分钟前",
    sessionHrAgo: "{n}小时前",
    sessionHudElapsedSec: "{n} 秒前",
    sessionHudElapsedMinSec: "{m} 分 {s} 秒前",
    sessionHudContextUsageTooltip: "上下文: {used} / {limit} tokens ({percent}%)",
    sessionHudContextUsageTooltipUnknownLimit: "上下文: {used} tokens",
    sessionHudActive: "{n} 个活跃",
    sessionHudOtherActive: "其他 {n} 个活跃",
    sessionHudLast: "最近",
    sessionBadgeRunning: "运行中",
    sessionBadgeDone: "已完成",
    sessionBadgeInterrupted: "中断",
    sessionBadgeIdle: "空闲",
    eventLabelSessionStart: "会话开始",
    eventLabelSessionEnd: "会话结束",
    eventLabelUserPromptSubmit: "已提交",
    eventLabelPreToolUse: "工具开始",
    eventLabelPostToolUse: "工具完成",
    eventLabelPostToolUseFailure: "工具失败",
    eventLabelAfterAgent: "本轮结束",
    eventLabelStop: "回复完成",
    eventLabelStopFailure: "回复失败",
    eventLabelApiError: "API 错误",
    eventLabelSubagentStart: "子任务开始",
    eventLabelSubagentStop: "子任务完成",
    eventLabelPreCompress: "即将压缩上下文",
    eventLabelPreCompact: "上下文压缩中",
    eventLabelPostCompact: "上下文已压缩",
    eventLabelNotification: "通知",
    eventLabelElicitation: "需要回答",
    eventLabelWorktreeCreate: "创建 worktree",
    eventLabelStaleCleanup: "会话已清理",
    soundEffects: "音效",
    showPet: "显示桌宠",
    hidePet: "隐藏桌宠",
    theme: "主题",
    openThemeDir: "打开主题文件夹…",
    settings: "设置…",
    toggleShortcut: "切换快捷键: {shortcut}",
    settingsTabShortcuts: "快捷键",
    shortcutsTitle: "快捷键",
    shortcutsSubtitle: "修改 Clawd 快捷键。保存时会检查冲突。",
    shortcutLabelTogglePet: "显示/隐藏桌宠",
    shortcutLabelPermissionAllow: "权限：允许",
    shortcutLabelPermissionDeny: "权限：拒绝",
    shortcutLabelBubbleNextOption: "下一个审批选项",
    shortcutLabelBubblePrevOption: "上一个审批选项",
    shortcutLabelBubbleToggleOption: "切换当前选项",
    shortcutLabelBubbleSubmit: "提交审批选择",
    shortcutLabelPetReveal: "把 Clawd 叫到前面",
    shortcutLabelOpenDashboard: "打开会话面板",
    shortcutBuiltinKeyTooltip: "这是内置快捷键，不能修改。",
    tutorialWindowTitle: "欢迎使用 Clawd on Desk",
    tutorialWelcomeTitle: "欢迎使用 Clawd on Desk",
    tutorialWelcomeBody: "Clawd 会跟随你选择的 AI 工具，在它们工作、等待审批或完成时显示对应动作。",
    tutorialWelcomeLangLabel: "语言设定",
    tutorialGetStarted: "开始",
    tutorialBack: "上一步",
    tutorialContinue: "继续",
    tutorialSkip: "跳过设置",
    tutorialFinish: "完成",
    tutorialWorking: "处理中…",
    tutorialAgentsTitle: "让 Clawd 跟随你的 AI 工具",
    tutorialAgentsSub: "这里只会修改 Clawd 的连接，不会安装或删除这些工具本身。",
    tutorialAgentsEmpty: "暂未找到 AI 工具。你随时可以在「设置 → Agent」中连接。",
    tutorialAgentsOpenSettings: "打开设置管理 agent",
    tutorialAgentsActiveLabel: "已开启",
    tutorialAgentsActiveDesc: "Clawd 已设置为监听这些工具。",
    tutorialAgentsInstallLabel: "推荐开启",
    tutorialAgentsInstallDesc: "Clawd 在这台电脑上找到了这些工具。勾选你希望它跟随的工具。",
    tutorialAgentsCleanupLabel: "建议清理",
    tutorialAgentsCleanupDesc: "这些 Clawd 连接还在，但没有找到对应工具。不再使用的话可以断开。",
    tutorialAgentsActiveTag: "已开启",
    tutorialAgentsInstallTag: "已找到",
    tutorialAgentsCleanupTag: "未找到工具",
    tutorialAgentsInstallRowDesc: "已在这台电脑上找到。开启后，Clawd 会跟随它的活动。",
    tutorialAgentsCleanupRowDesc: "Clawd 连接还在，但没有找到这个工具。",
    tutorialAgentsActiveRowDesc: "这个工具有活动时，Clawd 可以跟随显示。",
    tutorialAgentsInstallAction: "开启所选",
    tutorialAgentsCleanupAction: "断开所选连接",
    tutorialAgentsInstallingSelected: "开启中…",
    tutorialAgentsDisconnectingSelected: "断开中…",
    tutorialAgentsSelectNone: "请先勾选至少一项。",
    tutorialAgentsInstallDone: "完成。Clawd 会跟随所选工具。",
    tutorialAgentsCleanupDone: "完成。已断开所选 Clawd 连接。",
    tutorialAgentsActionFailed: "部分项目没有更新成功：{message}",
    tutorialShortcutsTitle: "设置快捷键",
    tutorialShortcutsSub: "先设置真正会用到的快捷键；固定操作放在下面，只作为说明。",
    tutorialShortcutsEditableTitle: "可更改",
    tutorialShortcutsEditableDesc: "直接在这里修改。保存时，Clawd 会检查是否冲突。",
    tutorialShortcutsFixedTitle: "固定快捷键",
    tutorialShortcutsFixedDesc: "这些按键和手势内置可用，不需要设置。",
    tutorialShortcutRecordingHelp: "按下新的组合键，Esc 取消。",
    tutorialShortcutChecking: "检查中…",
    tutorialShortcutClickPet: "点击桌宠",
    tutorialShortcutsHint: "你也可以直接用鼠标点气泡；快捷键只是为了不离开键盘。",
    tutorialFeaturesTitle: "之后可以试试",
    tutorialFeaturesSub: "这些都不是必做设置。等 Clawd 跑起来后，再慢慢探索就好。",
    tutorialFeatureDrag: "拖入项目文件夹",
    tutorialFeatureDragDesc: "把文件夹拖到 Clawd 上，直接在该目录打开终端。",
    tutorialFeatureDragPlatform: "Windows / Linux",
    tutorialFeatureDashboard: "会话面板",
    tutorialFeatureDashboardDesc: "集中查看正在运行的会话、别名和最近状态。",
    tutorialFeatureAuto: "自动放行请求",
    tutorialFeatureAutoDesc: "只在完全信任 agent 时开启；它会自动放行每个请求。",
    tutorialFeatureThemes: "主题与迷你模式",
    tutorialFeatureThemesDesc: "切换角色主题，或把 Clawd 收到屏幕边缘。",
    tutorialFeatureMobile: "手机 / Telegram 审批",
    tutorialFeatureMobileDesc: "离开电脑时，也可以在手机上处理权限请求。",
    tutorialDoneTitle: "全部就绪",
    tutorialDoneBody: "启动已连接的 AI 工具，Clawd 就会在桌面上跟随显示。之后可在「设置 → 通用」重新打开本指南。",
    tutorialDoneOpenSettings: "打开设置",
    shortcutRecordButton: "修改",
    shortcutRecordingHint: "按下组合键（Esc）",
    shortcutClearButton: "清空",
    shortcutResetButton: "恢复默认",
    shortcutResetAllButton: "全部恢复默认",
    shortcutUnassigned: "— 未绑定 —",
    shortcutToastSaved: "已保存。",
    shortcutErrorConflict: "与 {other} 冲突，请换一个组合键。",
    shortcutErrorSystemConflict: "该组合键已被系统或其他应用占用。",
    shortcutErrorRegistrationFailed: "已保存，但当前因系统冲突未生效。请重新绑定或稍后再试。",
    shortcutErrorReserved: "这个快捷键是保留组合，请换一个。",
    shortcutErrorInvalid: "这个快捷键无效。",
    shortcutErrorNeedsModifier: "请至少包含一个修饰键。",
    newSession: "新建 Claude 会话",
    newSessionSelectFolder: "选择文件夹...",
    newSessionHomeDir: "用户主目录",
    newSessionNormal: "普通模式",
    newSessionDangerous: "危险模式 (--dangerously-skip-permissions)",
    newSessionContinue: "继续上次对话 (-c)",
    newSessionResume: "恢复指定会话 (--resume)",
    resumeSessionTitle: "恢复指定会话",
    resumeSessionHint: "请输入 Session ID",
    modeNormal: "普通",
    modeDangerous: "危险",
    dangerousConfirmTitle: "确认危险模式",
    dangerousConfirmMessage: "危险模式会跳过所有权限检查，仅建议在沙盒环境中使用。确定继续吗？",
    confirm: "确认",
    cancel: "取消",
    selectFolder: "选择项目文件夹",
    launchFailed: "启动 Claude Code 失败，未找到可用的终端。",
    quit: "退出",
    approvalDetailAgent: "助手",
    approvalDetailTool: "工具",
    approvalDetailFolder: "文件夹",
    approvalDetailSummary: "摘要",
    approvalSummaryFallbackDetail: "详情：{detail}",
    approvalSummaryUnavailable: "工具未提供描述——决定前请先看一下桌面上的 Clawd 气泡。",
    directSendEmptyText: "请回复一条 Clawd 完成通知来发送文字。",
    directSendUnmapped: "请回复一条 Clawd 完成通知来选择会话。",
    directSendSessionNotLive: "那个会话在这台电脑上已经不在运行了。",
    directSendPermissionPending: "那个会话似乎正在等待一个权限决定，所以没有帮你聚焦终端发送。",
    directSendNotFocusable: "那个会话在这台电脑上无法被当作本地终端聚焦。",
    directSendFocusUnconfirmed: "没能确认那个终端窗口被切到了前台，Direct Send 停在了仅聚焦模式，没有粘贴文字。",
    directSendAckSent: "已发送到会话 {session} 的终端。",
    directSendAckPastedRestored: "已把文字粘贴到会话 {session}，请在本地按回车发送。你之前的剪贴板内容已恢复。",
    directSendAckPastedManual: "已把文字粘贴到会话 {session}，请在本地按回车发送。这段文字还留在这台电脑的剪贴板里，可以手动重试。",
    directSendAckCopied: "已把文字复制到这台电脑的剪贴板，对应会话 {session}。请在本地粘贴并发送。",
    directSendAckFailed: "确认聚焦后 Direct Send 仍然失败，没有粘贴任何文字。",
    directSendAckFocusOnlyDogfood: "已把会话 {session} 聚焦到前台。Direct Send 目前是仅聚焦的内测模式，没有发送文字。",
    directSendAckFocusOnly: "已把会话 {session} 聚焦到前台。Direct Send 没有发送文字。",
    approvalRequestsTitle: "{agent} 请求使用 {tool}",
    approvalUnknownTool: "未知",
    approvalSuggestionAutoEdits: "自动编辑",
    approvalSuggestionPlanMode: "规划模式",
    approvalSuggestionModePrefix: "模式: {mode}",
    approvalSuggestionAlwaysDenyTool: "始终拒绝 {tool}",
    approvalSuggestionAlwaysAllowTool: "始终允许 {tool}",
    approvalSuggestionAlwaysDeny: "始终拒绝",
    approvalSuggestionAlwaysAllow: "始终允许",
    telegramApprovalButtonAllowOnce: "允许一次",
    telegramApprovalButtonDeny: "拒绝",
    telegramApprovalStatusResolvedElsewhere: "✅ 已在其他渠道处理",
    telegramApprovalStatusTimedOut: "⏳ 已超时",
    telegramApprovalStatusSessionEnded: "⏹️ 会话已结束",
    telegramApprovalStatusAllowed: "✅ 已允许",
    telegramApprovalStatusDenied: "❌ 已拒绝",
    telegramApprovalStatusApplied: "✅ 已应用",
    telegramApprovalToastAllowed: "已允许",
    telegramApprovalToastDenied: "已拒绝",
    telegramApprovalToastApplied: "已应用",
    telegramApprovalToastUnavailable: "已失效",
    telegramApprovalToastAck: "好的",
    telegramApprovalToastExpired: "已过期",
    telegramApprovalToastNotAllowed: "无权操作",
    telegramTestMessage: "Clawd：测试 Telegram 机器人连接，点击确认。",
    telegramTestConfirmButton: "确认",
    telegramSettingsTestTitle: "Clawd Telegram 审批测试",
    telegramSettingsTestDetail: "这是一条设置里发出的测试消息，不关联任何 agent 的权限请求。",
    telegramApprovalDisabledMessage: "Telegram 审批已关闭",
    telegramApprovalMissingTokenMessage: "尚未配置 Telegram bot token",
    telegramApprovalIncompleteConfigMessage: "Telegram 审批配置不完整",
    telegramApprovalNativeInactiveMessage: "原生 Telegram 审批未启用",
    telegramApprovalNativeTestingMessage: "原生 Telegram 审批测试正在进行中",
    telegramApprovalSidecarNotRunningMessage: "Telegram 审批 sidecar 未在运行",
    telegramApprovalNoButtonResponseMessage: "Telegram 测试没有收到按钮响应",
    telegramElicitationProgress: "第 {current}/{total} 题",
    telegramElicitationOtherButton: "其他",
    telegramElicitationCancelOtherButton: "取消",
    telegramElicitationBackButton: "◀ 上一题",
    telegramElicitationConfirmButton: "确认选择",
    telegramElicitationTerminalButton: "去终端处理",
    telegramElicitationOtherPrompt: "请回复这条消息输入你的答案。",
    telegramElicitationSubmittedStatus: "✅ 已提交",
    telegramElicitationTerminalStatus: "🖥️ 继续在终端处理",
    telegramElicitationToastAnswered: "已回答",
    telegramElicitationToastExpired: "已过期",
    telegramElicitationToastNotAllowed: "无权限",
    telegramElicitationToastUnavailable: "选项不可用",
    telegramElicitationToastPickAtLeastOne: "请至少选一个",
    telegramElicitationToastTerminal: "继续在终端处理",
  },
  "zh-TW": {
    size: "大小",
    small: "小 (S)",
    medium: "中 (M)",
    large: "大 (L)",
    sendToDisplay: "傳送到螢幕",
    bringPetToPrimaryDisplay: "把桌寵移回主螢幕",
    displayLabel: "螢幕 {n}",
    displayLabelPrimary: "螢幕 {n}（主螢幕）",
    displayResolution: "{w}×{h}",
    miniMode: "迷你模式",
    exitMiniMode: "退出迷你模式",
    sleep: "休眠（勿擾）",
    wake: "喚醒 Clawd",
    startOnLogin: "登入時啟動",
    startWithClaude: "隨 Claude Code 啟動",
    codexHookHealthNudgeTitle: "Codex 審批 hook 需要注意",
    codexHookHealthNudgeBody: "在修復前 Codex 不會跳出審批提示。開啟 Clawd 設定 → Agents。",
    showInMenuBar: "在選單列顯示",
    showInDock: "在 Dock 顯示",
    language: "語言",
    checkForUpdates: "檢查更新",
    checkForUpdatesPending: "有新版本 · v{version}",
    autoUpdateCheck: "自動檢查更新",
    autoUpdateCheckDescription: "每 12 小時靜默向 GitHub 查一次，發現新版本才會通知您。",
    aboutUpdateAvailableHint: "有新版本: v{version}",
    checkingForUpdates: "正在檢查更新……",
    updateAvailable: "找到新版本",
    updateAvailableMsg: "v{version} 已發布，是否下載並安裝？",
    updateAvailableMacMsg: "v{version} 已發布，是否開啟下載頁面？",
    updateNotAvailable: "已是最新版本",
    updateNotAvailableMsg: "Clawd v{version} 已是最新版本。",
    updateDownloading: "正在下載更新……",
    updateReady: "更新已就緒",
    updateReadyMsg: "v{version} 已下載完成，是否立即重新啟動以完成更新？",
    updateError: "更新失敗",
    updateErrorMsg: "檢查更新失敗，請稍後再試。",
    updateDirtyMsg: "本機檔案有尚未提交的修改，請先提交或貯存後再更新。",
    nativeArm64Available: "發現原生 ARM64 版本",
    nativeArm64AvailableMsg:
      "Clawd v{version} 提供原生 Windows ARM64 安裝檔。是否安裝以獲得更好的效能和電池續航？",
    nativeArm64DownloadOpened: "已在瀏覽器中開啟 ARM64 安裝檔下載頁面。",
    updateNow: "立即更新",
    updating: "正在更新……",
    gitUpdateRestarting: "更新已完成，Clawd 即將重新啟動。",
    macUpdateOpened: "已在瀏覽器中開啟最新版下載頁面。",
    restartNow: "立即重新啟動",
    restartLater: "稍後",
    download: "下載",
    dismiss: "關閉",
    bubbleFollow: "對話框隨著桌寵移動",
    hideBubbles: "隱藏對話框",
    menuAutoApproveAll: "自動放行所有請求",
    autoApproveAllConfirmTitle: "開啟自動放行所有請求？",
    autoApproveAllConfirmDetail: "所有 agent 的每一個權限請求都會被自動允許，包括執行 shell 命令和刪除檔案。Clawd 不會再先問你。只有在你完全信任 agent 的行為時才開啟。",
    autoApproveAllConfirmEnable: "開啟自動放行",
    autoApproveAllConfirmCancel: "取消",
    openDashboard: "開啟 Dashboard",
    dashboardWindowTitle: "工作階段",
    dashboardCount: "{n} 個進行中",
    dashboardEmpty: "沒有進行中的工作階段",
    dashboardEmptyHint:
      "Claude Code、Codex 及其他 agent 工作階段會顯示在這裡。",
    dashboardJumpTerminal: "跳至終端機",
    dashboardOpenCodexSession: "開啟 Codex 工作階段",
    dashboardHideSessionTitle: "從 Clawd 隱藏，不會關閉終端機。",
    dashboardMarkRead: "標記已讀",
    dashboardMarkReadTitle: "確認這個遠端工作階段，之後依照正常閒置規則清理。",
    dashboardLastEventPrefix: "最近",
    dashboardContextUsage: "上下文",
    dashboardContextUsageUnknownLimit: "上下文: {used}",
    dashboardQuotaSectionAntigravity: "Antigravity",
    dashboardQuotaGroupGemini: "Gemini",
    dashboardQuotaGroupThirdParty: "Claude/GPT",
    dashboardQuotaSectionClaudeCode: "Claude Code",
    dashboardQuotaFiveHour: "5小時",
    dashboardQuotaWeekly: "每週",
    dashboardQuotaResetIn: "{time}後重置",
    dashboardQuotaResetOn: "{date}重置",
    dashboardQuotaResetHoursMinutes: "{h} 小時 {m} 分",
    dashboardQuotaResetMinutes: "{m} 分",
    dashboardHeadless: "背景",
    dashboardNoPath: "無路徑",
    dashboardUnknownAgent: "未知",
    sessionLocal: "本機",
    sessionWorking: "工作中",
    sessionThinking: "思考中",
    sessionJuggling: "多工",
    sessionSweeping: "壓縮中",
    sessionNotification: "等待中",
    sessionWorktree: "建立分支",
    sessionIdle: "閒置",
    sessionSleeping: "睡眠中",
    sessionJustNow: "剛剛",
    sessionMinAgo: "{n} 分鐘前",
    sessionHrAgo: "{n} 小時前",
    sessionHudElapsedSec: "{n} 秒前",
    sessionHudElapsedMinSec: "{m} 分 {s} 秒前",
    sessionHudContextUsageTooltip: "上下文: {used} / {limit} tokens ({percent}%)",
    sessionHudContextUsageTooltipUnknownLimit: "上下文: {used} tokens",
    sessionHudActive: "{n} 個進行中",
    sessionHudOtherActive: "另有 {n} 個進行中",
    sessionHudLast: "最近",
    sessionBadgeRunning: "執行中",
    sessionBadgeDone: "已完成",
    sessionBadgeInterrupted: "已中斷",
    sessionBadgeIdle: "閒置",
    eventLabelSessionStart: "工作階段開始",
    eventLabelSessionEnd: "工作階段結束",
    eventLabelUserPromptSubmit: "已提交",
    eventLabelPreToolUse: "工具開始",
    eventLabelPostToolUse: "工具完成",
    eventLabelPostToolUseFailure: "工具失敗",
    eventLabelAfterAgent: "本輪結束",
    eventLabelStop: "回覆完成",
    eventLabelStopFailure: "回覆失敗",
    eventLabelApiError: "API 錯誤",
    eventLabelSubagentStart: "子任務開始",
    eventLabelSubagentStop: "子任務完成",
    eventLabelPreCompress: "即將壓縮上下文",
    eventLabelPreCompact: "上下文壓縮中",
    eventLabelPostCompact: "上下文已壓縮",
    eventLabelNotification: "通知",
    eventLabelElicitation: "需要回應",
    eventLabelWorktreeCreate: "建立 worktree",
    eventLabelStaleCleanup: "工作階段已清理",
    soundEffects: "音效",
    showPet: "顯示桌寵",
    hidePet: "隱藏桌寵",
    theme: "主題",
    openThemeDir: "開啟主題資料夾…",
    settings: "設定…",
    toggleShortcut: "切換快速鍵: {shortcut}",
    settingsTabShortcuts: "快速鍵",
    shortcutsTitle: "快速鍵",
    shortcutsSubtitle: "修改 Clawd 快速鍵。儲存時會檢查衝突。",
    shortcutLabelTogglePet: "顯示/隱藏桌寵",
    shortcutLabelPermissionAllow: "權限：允許",
    shortcutLabelPermissionDeny: "權限：拒絕",
    shortcutLabelBubbleNextOption: "下一個審批選項",
    shortcutLabelBubblePrevOption: "上一個審批選項",
    shortcutLabelBubbleToggleOption: "切換目前選項",
    shortcutLabelBubbleSubmit: "送出審批選擇",
    shortcutLabelPetReveal: "把 Clawd 叫到前面",
    shortcutLabelOpenDashboard: "開啟工作階段面板",
    shortcutBuiltinKeyTooltip: "這是內建快速鍵，無法修改。",
    tutorialWindowTitle: "歡迎使用 Clawd on Desk",
    tutorialWelcomeTitle: "歡迎使用 Clawd on Desk",
    tutorialWelcomeBody: "Clawd 會跟隨你選擇的 AI 工具，在它們工作、等待審批或完成時顯示對應動作。",
    tutorialWelcomeLangLabel: "語言設定",
    tutorialGetStarted: "開始",
    tutorialBack: "上一步",
    tutorialContinue: "繼續",
    tutorialSkip: "略過設定",
    tutorialFinish: "完成",
    tutorialWorking: "處理中…",
    tutorialAgentsTitle: "讓 Clawd 跟隨你的 AI 工具",
    tutorialAgentsSub: "這只會修改 Clawd 的連接，不會安裝或刪除這些工具本身。",
    tutorialAgentsEmpty: "尚未找到 AI 工具。你隨時可以在「設定 → Agent」中連接。",
    tutorialAgentsOpenSettings: "開啟設定管理 agent",
    tutorialAgentsActiveLabel: "已開啟",
    tutorialAgentsActiveDesc: "Clawd 已設定為監聽這些工具。",
    tutorialAgentsInstallLabel: "建議開啟",
    tutorialAgentsInstallDesc: "Clawd 在這台裝置上找到了這些工具。勾選你希望它跟隨的工具。",
    tutorialAgentsCleanupLabel: "建議清理",
    tutorialAgentsCleanupDesc: "這些 Clawd 連接還在，但找不到對應工具。不再使用的話可以斷開。",
    tutorialAgentsActiveTag: "已開啟",
    tutorialAgentsInstallTag: "已找到",
    tutorialAgentsCleanupTag: "找不到工具",
    tutorialAgentsInstallRowDesc: "已在這台裝置上找到。開啟後，Clawd 會跟隨它的活動。",
    tutorialAgentsCleanupRowDesc: "Clawd 連接還在，但找不到這個工具。",
    tutorialAgentsActiveRowDesc: "這個工具有活動時，Clawd 可以跟隨顯示。",
    tutorialAgentsInstallAction: "開啟所選",
    tutorialAgentsCleanupAction: "斷開所選連接",
    tutorialAgentsInstallingSelected: "開啟中…",
    tutorialAgentsDisconnectingSelected: "斷開中…",
    tutorialAgentsSelectNone: "請先勾選至少一項。",
    tutorialAgentsInstallDone: "完成。Clawd 會跟隨所選工具。",
    tutorialAgentsCleanupDone: "完成。已斷開所選 Clawd 連接。",
    tutorialAgentsActionFailed: "部分項目未更新成功：{message}",
    tutorialShortcutsTitle: "設定快速鍵",
    tutorialShortcutsSub: "先設定真正會用到的快速鍵；固定操作放在下面，只作為說明。",
    tutorialShortcutsEditableTitle: "可更改",
    tutorialShortcutsEditableDesc: "直接在這裡修改。儲存時，Clawd 會檢查是否衝突。",
    tutorialShortcutsFixedTitle: "固定快速鍵",
    tutorialShortcutsFixedDesc: "這些按鍵和手勢內建可用，不需要設定。",
    tutorialShortcutRecordingHelp: "按下新的組合鍵，Esc 取消。",
    tutorialShortcutChecking: "檢查中…",
    tutorialShortcutClickPet: "點擊桌寵",
    tutorialShortcutsHint: "你也可以直接用滑鼠點氣泡；快速鍵只是為了不離開鍵盤。",
    tutorialFeaturesTitle: "之後可以試試",
    tutorialFeaturesSub: "這些都不是必做設定。等 Clawd 跑起來後，再慢慢探索就好。",
    tutorialFeatureDrag: "拖入專案資料夾",
    tutorialFeatureDragDesc: "把資料夾拖到 Clawd 上，直接在該目錄開啟終端機。",
    tutorialFeatureDragPlatform: "Windows / Linux",
    tutorialFeatureDashboard: "工作階段面板",
    tutorialFeatureDashboardDesc: "集中查看正在執行的工作階段、別名和最近狀態。",
    tutorialFeatureAuto: "自動放行請求",
    tutorialFeatureAutoDesc: "只在完全信任 agent 時開啟；它會自動放行每個請求。",
    tutorialFeatureThemes: "主題與迷你模式",
    tutorialFeatureThemesDesc: "切換角色主題，或把 Clawd 收到螢幕邊緣。",
    tutorialFeatureMobile: "手機 / Telegram 審批",
    tutorialFeatureMobileDesc: "離開電腦時，也可以在手機上處理權限請求。",
    tutorialDoneTitle: "全部就緒",
    tutorialDoneBody: "啟動已連接的 AI 工具，Clawd 就會在桌面上跟隨顯示。之後可在「設定 → 一般」重新開啟本指南。",
    tutorialDoneOpenSettings: "開啟設定",
    shortcutRecordButton: "修改",
    shortcutRecordingHint: "按下組合鍵（Esc）",
    shortcutClearButton: "清除",
    shortcutResetButton: "還原預設值",
    shortcutResetAllButton: "全部還原預設值",
    shortcutUnassigned: "— 未綁定 —",
    shortcutToastSaved: "已儲存。",
    shortcutErrorConflict: "與 {other} 衝突，請改用其他組合鍵。",
    shortcutErrorSystemConflict: "此組合鍵已被系統或其他應用程式占用。",
    shortcutErrorRegistrationFailed:
      "已儲存，但目前因系統衝突未生效。請重新綁定或稍後再試。",
    shortcutErrorReserved: "這個快速鍵是保留組合，請改用其他鍵。",
    shortcutErrorInvalid: "這個快速鍵無效。",
    shortcutErrorNeedsModifier: "請至少包含一個修飾鍵。",
    newSession: "新建 Claude 工作階段",
    newSessionSelectFolder: "選擇資料夾...",
    newSessionHomeDir: "使用者主目錄",
    newSessionNormal: "普通模式",
    newSessionDangerous: "危險模式 (--dangerously-skip-permissions)",
    newSessionContinue: "繼續上次對話 (-c)",
    newSessionResume: "恢復指定工作階段 (--resume)",
    resumeSessionTitle: "恢復指定工作階段",
    resumeSessionHint: "請輸入 Session ID",
    modeNormal: "普通",
    modeDangerous: "危險",
    dangerousConfirmTitle: "確認危險模式",
    dangerousConfirmMessage: "危險模式會跳過所有權限檢查，僅建議在沙盒環境中使用。確定繼續嗎？",
    confirm: "確認",
    cancel: "取消",
    selectFolder: "選擇專案資料夾",
    launchFailed: "啟動 Claude Code 失敗，找不到可用的終端機。",
    quit: "結束",
    approvalDetailAgent: "助手",
    approvalDetailTool: "工具",
    approvalDetailFolder: "資料夾",
    approvalDetailSummary: "摘要",
    approvalSummaryFallbackDetail: "詳情：{detail}",
    approvalSummaryUnavailable: "工具未提供描述——決定前請先看一下桌面上的 Clawd 泡泡。",
    directSendEmptyText: "請回覆一則 Clawd 完成通知來傳送文字。",
    directSendUnmapped: "請回覆一則 Clawd 完成通知來選擇工作階段。",
    directSendSessionNotLive: "那個工作階段在這台電腦上已經沒在執行了。",
    directSendPermissionPending: "那個工作階段似乎正在等待權限決定，所以沒有幫你聚焦終端機傳送。",
    directSendNotFocusable: "那個工作階段在這台電腦上無法被當作本機終端機聚焦。",
    directSendFocusUnconfirmed: "沒能確認那個終端機視窗被切到前景，Direct Send 停在僅聚焦模式，沒有貼上文字。",
    directSendAckSent: "已傳送到工作階段 {session} 的終端機。",
    directSendAckPastedRestored: "已將文字貼到工作階段 {session}，請在本機按 Enter 傳送。你先前的剪貼簿內容已還原。",
    directSendAckPastedManual: "已將文字貼到工作階段 {session}，請在本機按 Enter 傳送。這段文字仍留在這台電腦的剪貼簿裡，可以手動重試。",
    directSendAckCopied: "已將文字複製到這台電腦的剪貼簿，對應工作階段 {session}。請在本機貼上並傳送。",
    directSendAckFailed: "確認聚焦後 Direct Send 仍然失敗，沒有貼上任何文字。",
    directSendAckFocusOnlyDogfood: "已將工作階段 {session} 聚焦到前景。Direct Send 目前是僅聚焦的內測模式，沒有傳送文字。",
    directSendAckFocusOnly: "已將工作階段 {session} 聚焦到前景。Direct Send 沒有傳送文字。",
    approvalRequestsTitle: "{agent} 請求使用 {tool}",
    approvalUnknownTool: "未知",
    approvalSuggestionAutoEdits: "自動編輯",
    approvalSuggestionPlanMode: "規劃模式",
    approvalSuggestionModePrefix: "模式: {mode}",
    approvalSuggestionAlwaysDenyTool: "永遠拒絕 {tool}",
    approvalSuggestionAlwaysAllowTool: "永遠允許 {tool}",
    approvalSuggestionAlwaysDeny: "永遠拒絕",
    approvalSuggestionAlwaysAllow: "永遠允許",
    telegramApprovalButtonAllowOnce: "允許一次",
    telegramApprovalButtonDeny: "拒絕",
    telegramApprovalStatusResolvedElsewhere: "✅ 已在其他管道處理",
    telegramApprovalStatusTimedOut: "⏳ 已逾時",
    telegramApprovalStatusSessionEnded: "⏹️ 工作階段已結束",
    telegramApprovalStatusAllowed: "✅ 已允許",
    telegramApprovalStatusDenied: "❌ 已拒絕",
    telegramApprovalStatusApplied: "✅ 已套用",
    telegramApprovalToastAllowed: "已允許",
    telegramApprovalToastDenied: "已拒絕",
    telegramApprovalToastApplied: "已套用",
    telegramApprovalToastUnavailable: "已失效",
    telegramApprovalToastAck: "好的",
    telegramApprovalToastExpired: "已過期",
    telegramApprovalToastNotAllowed: "無權操作",
    telegramTestMessage: "Clawd：測試 Telegram 機器人連線，點擊確認。",
    telegramTestConfirmButton: "確認",
    telegramSettingsTestTitle: "Clawd Telegram 審批測試",
    telegramSettingsTestDetail: "這是一條設定裡發出的測試訊息，不關聯任何 agent 的權限請求。",
    telegramApprovalDisabledMessage: "Telegram 審批已關閉",
    telegramApprovalMissingTokenMessage: "尚未設定 Telegram bot token",
    telegramApprovalIncompleteConfigMessage: "Telegram 審批設定不完整",
    telegramApprovalNativeInactiveMessage: "原生 Telegram 審批未啟用",
    telegramApprovalNativeTestingMessage: "原生 Telegram 審批測試正在進行中",
    telegramApprovalSidecarNotRunningMessage: "Telegram 審批 sidecar 未在執行",
    telegramApprovalNoButtonResponseMessage: "Telegram 測試沒有收到按鈕回應",
    telegramElicitationProgress: "第 {current}/{total} 題",
    telegramElicitationOtherButton: "其他",
    telegramElicitationCancelOtherButton: "取消",
    telegramElicitationBackButton: "◀ 上一題",
    telegramElicitationConfirmButton: "確認選擇",
    telegramElicitationTerminalButton: "去終端機處理",
    telegramElicitationOtherPrompt: "請回覆這則訊息輸入你的答案。",
    telegramElicitationSubmittedStatus: "✅ 已提交",
    telegramElicitationTerminalStatus: "🖥️ 繼續在終端機處理",
    telegramElicitationToastAnswered: "已回答",
    telegramElicitationToastExpired: "已過期",
    telegramElicitationToastNotAllowed: "無權限",
    telegramElicitationToastUnavailable: "選項無法使用",
    telegramElicitationToastPickAtLeastOne: "請至少選一個",
    telegramElicitationToastTerminal: "繼續在終端機處理",
  },
  ko: {
    size: "크기",
    small: "작은 (S)",
    medium: "보통 (M)",
    large: "큰 (L)",
    sendToDisplay: "디스플레이로 보내기",
    bringPetToPrimaryDisplay: "펫을 주 모니터로 가져오기",
    displayLabel: "디스플레이 {n}",
    displayLabelPrimary: "디스플레이 {n} (주 모니터)",
    displayResolution: "{w}×{h}",
    miniMode: "미니 모드",
    exitMiniMode: "미니 모드 종료",
    sleep: "잠자기 (방해 금지)",
    wake: "Clawd 깨우기",
    startOnLogin: "로그인 시 자동 시작",
    startWithClaude: "Claude Code와 함께 시작",
    codexHookHealthNudgeTitle: "Codex 승인 훅에 주의가 필요합니다",
    codexHookHealthNudgeBody: "훅을 고치기 전까지 Codex는 승인 프롬프트를 표시하지 않습니다. Clawd 설정 → Agents를 여세요.",
    showInMenuBar: "메뉴바에 표시",
    showInDock: "Dock에 표시",
    language: "언어",
    checkForUpdates: "업데이트 확인",
    checkForUpdatesPending: "새 버전 · v{version}",
    autoUpdateCheck: "업데이트 자동 확인",
    autoUpdateCheckDescription: "12시간마다 GitHub를 조용히 확인하고, 새 버전이 있을 때만 알려드립니다.",
    aboutUpdateAvailableHint: "새 버전 있음: v{version}",
    checkingForUpdates: "업데이트 확인 중…",
    updateAvailable: "새 버전 발견",
    updateAvailableMsg: "v{version}이(가) 출시되었습니다. 지금 다운로드하고 설치할까요?",
    updateAvailableMacMsg: "v{version}이(가) 출시되었습니다. 다운로드 페이지를 열까요?",
    updateNotAvailable: "최신 버전입니다",
    updateNotAvailableMsg: "Clawd v{version}은(는) 최신 버전입니다.",
    updateDownloading: "업데이트 다운로드 중…",
    updateReady: "업데이트 준비 완료",
    updateReadyMsg: "v{version} 다운로드가 완료되었습니다. 지금 재시작하여 업데이트할까요?",
    updateError: "업데이트 오류",
    updateErrorMsg: "업데이트 확인에 실패했습니다. 나중에 다시 시도해 주세요.",
    updateDirtyMsg: "로컬 파일이 수정되었습니다. 업데이트 전에 변경 사항을 commit 또는 stash 해 주세요.",
    nativeArm64Available: "네이티브 ARM64 빌드 사용 가능",
    nativeArm64AvailableMsg: "Clawd v{version}에는 네이티브 Windows ARM64 설치 파일이 있습니다. 더 나은 성능과 배터리 사용 시간을 위해 설치할까요?",
    nativeArm64DownloadOpened: "브라우저에서 ARM64 설치 파일 다운로드를 열었습니다.",
    updateNow: "지금 업데이트",
    updating: "업데이트 중…",
    gitUpdateRestarting: "업데이트 완료. Clawd를 재시작합니다...",
    macUpdateOpened: "브라우저에서 최신 다운로드 페이지를 열었습니다.",
    restartNow: "지금 재시작",
    restartLater: "나중에",
    download: "다운로드",
    dismiss: "닫기",
    bubbleFollow: "펫에 말풍선 붙이기",
    hideBubbles: "말풍선 숨기기",
    menuAutoApproveAll: "모든 요청 자동 승인",
    autoApproveAllConfirmTitle: "모든 요청 자동 승인을 켤까요?",
    autoApproveAllConfirmDetail: "셸 명령 실행과 파일 삭제를 포함해 모든 에이전트의 모든 권한 요청이 자동으로 승인됩니다. Clawd가 먼저 묻지 않습니다. 에이전트의 동작을 완전히 신뢰할 때만 켜세요.",
    autoApproveAllConfirmEnable: "자동 승인 켜기",
    autoApproveAllConfirmCancel: "취소",
    openDashboard: "Dashboard 열기",
    dashboardWindowTitle: "세션",
    dashboardCount: "활성 {n}개",
    dashboardEmpty: "활성 세션 없음",
    dashboardEmptyHint: "Claude Code, Codex 및 다른 에이전트 세션이 여기에 표시됩니다.",
    dashboardJumpTerminal: "터미널로 이동",
    dashboardOpenCodexSession: "Codex 세션 열기",
    dashboardHideSessionTitle: "Clawd에서 숨깁니다. 터미널은 닫지 않습니다.",
    dashboardMarkRead: "읽음 표시",
    dashboardMarkReadTitle: "이 원격 세션을 확인하고 이후에는 일반 유휴 규칙으로 정리합니다.",
    dashboardLastEventPrefix: "최근",
    dashboardContextUsage: "컨텍스트",
    dashboardContextUsageUnknownLimit: "컨텍스트: {used}",
    dashboardQuotaSectionAntigravity: "Antigravity",
    dashboardQuotaGroupGemini: "Gemini",
    dashboardQuotaGroupThirdParty: "Claude/GPT",
    dashboardQuotaSectionClaudeCode: "Claude Code",
    dashboardQuotaFiveHour: "5시간",
    dashboardQuotaWeekly: "주간",
    dashboardQuotaResetIn: "{time} 후 초기화",
    dashboardQuotaResetOn: "{date}에 초기화",
    dashboardQuotaResetHoursMinutes: "{h}시간 {m}분",
    dashboardQuotaResetMinutes: "{m}분",
    dashboardHeadless: "백그라운드",
    dashboardNoPath: "경로 없음",
    dashboardUnknownAgent: "알 수 없음",
    sessionLocal: "로컬",
    sessionWorking: "작업 중",
    sessionThinking: "생각 중",
    sessionJuggling: "저글링",
    sessionSweeping: "압축 중",
    sessionNotification: "대기 중",
    sessionWorktree: "워크트리",
    sessionIdle: "대기",
    sessionSleeping: "수면",
    sessionJustNow: "방금",
    sessionMinAgo: "{n}분 전",
    sessionHrAgo: "{n}시간 전",
    sessionHudElapsedSec: "{n}초 전",
    sessionHudElapsedMinSec: "{m}분 {s}초 전",
    sessionHudContextUsageTooltip: "컨텍스트: {used} / {limit} tokens ({percent}%)",
    sessionHudContextUsageTooltipUnknownLimit: "컨텍스트: {used} tokens",
    sessionHudActive: "활성 {n}개",
    sessionHudOtherActive: "기타 활성 {n}개",
    sessionHudLast: "최근",
    sessionBadgeRunning: "실행 중",
    sessionBadgeDone: "완료",
    sessionBadgeInterrupted: "중단됨",
    sessionBadgeIdle: "대기",
    eventLabelSessionStart: "세션 시작",
    eventLabelSessionEnd: "세션 종료",
    eventLabelUserPromptSubmit: "프롬프트 전송",
    eventLabelPreToolUse: "도구 시작",
    eventLabelPostToolUse: "도구 완료",
    eventLabelPostToolUseFailure: "도구 실패",
    eventLabelAfterAgent: "이번 턴 종료",
    eventLabelStop: "응답 완료",
    eventLabelStopFailure: "응답 실패",
    eventLabelApiError: "API 오류",
    eventLabelSubagentStart: "하위 에이전트 시작",
    eventLabelSubagentStop: "하위 에이전트 완료",
    eventLabelPreCompress: "컨텍스트 압축 예정",
    eventLabelPreCompact: "컨텍스트 압축 중",
    eventLabelPostCompact: "컨텍스트 압축 완료",
    eventLabelNotification: "알림",
    eventLabelElicitation: "질문 있음",
    eventLabelWorktreeCreate: "Worktree 생성",
    eventLabelStaleCleanup: "세션 정리됨",
    soundEffects: "효과음",
    showPet: "펫 보이기",
    hidePet: "펫 숨기기",
    theme: "테마",
    openThemeDir: "테마 폴더 열기…",
    settings: "설정…",
    toggleShortcut: "전환 단축키: {shortcut}",
    settingsTabShortcuts: "단축키",
    shortcutsTitle: "단축키",
    shortcutsSubtitle: "Clawd 단축키를 변경합니다. 저장할 때 충돌을 확인합니다.",
    shortcutLabelTogglePet: "펫 표시 전환",
    shortcutLabelPermissionAllow: "권한: 허용",
    shortcutLabelPermissionDeny: "권한: 거부",
    shortcutLabelBubbleNextOption: "다음 승인 옵션",
    shortcutLabelBubblePrevOption: "이전 승인 옵션",
    shortcutLabelBubbleToggleOption: "선택 옵션 전환",
    shortcutLabelBubbleSubmit: "승인 선택 제출",
    shortcutLabelPetReveal: "Clawd 앞으로 가져오기",
    shortcutLabelOpenDashboard: "세션 대시보드 열기",
    shortcutBuiltinKeyTooltip: "이 단축키는 내장되어 있어 변경할 수 없습니다.",
    tutorialWindowTitle: "Clawd on Desk에 오신 것을 환영합니다",
    tutorialWelcomeTitle: "Clawd on Desk에 오신 것을 환영합니다",
    tutorialWelcomeBody: "Clawd는 선택한 AI 도구를 따라가며, 작업 중이거나 승인 대기 중이거나 완료되면 데스크톱에서 반응합니다.",
    tutorialWelcomeLangLabel: "언어 설정",
    tutorialGetStarted: "시작하기",
    tutorialBack: "뒤로",
    tutorialContinue: "계속",
    tutorialSkip: "설정 건너뛰기",
    tutorialFinish: "완료",
    tutorialWorking: "처리 중…",
    tutorialAgentsTitle: "Clawd가 따라갈 AI 도구 선택",
    tutorialAgentsSub: "여기서는 Clawd 연결만 변경합니다. 도구 자체를 설치하거나 삭제하지 않아요.",
    tutorialAgentsEmpty: "아직 AI 도구를 찾지 못했습니다. 언제든지 설정 → 에이전트에서 연결할 수 있어요.",
    tutorialAgentsOpenSettings: "설정을 열어 에이전트 관리",
    tutorialAgentsActiveLabel: "이미 켜짐",
    tutorialAgentsActiveDesc: "Clawd가 이 도구들을 감지하도록 설정되어 있습니다.",
    tutorialAgentsInstallLabel: "켜기 추천",
    tutorialAgentsInstallDesc: "Clawd가 이 컴퓨터에서 도구를 찾았습니다. 따라갈 도구를 선택하세요.",
    tutorialAgentsCleanupLabel: "정리 추천",
    tutorialAgentsCleanupDesc: "Clawd 연결은 남아 있지만 해당 도구를 찾지 못했습니다. 더 쓰지 않는 연결은 끊으세요.",
    tutorialAgentsActiveTag: "켜짐",
    tutorialAgentsInstallTag: "찾음",
    tutorialAgentsCleanupTag: "도구 없음",
    tutorialAgentsInstallRowDesc: "이 컴퓨터에서 찾았습니다. 켜면 Clawd가 활동을 따라갑니다.",
    tutorialAgentsCleanupRowDesc: "Clawd 연결은 있지만 이 도구를 찾지 못했습니다.",
    tutorialAgentsActiveRowDesc: "이 도구가 활동을 보내면 Clawd가 따라갈 수 있습니다.",
    tutorialAgentsInstallAction: "선택 항목 켜기",
    tutorialAgentsCleanupAction: "선택 연결 끊기",
    tutorialAgentsInstallingSelected: "켜는 중…",
    tutorialAgentsDisconnectingSelected: "끊는 중…",
    tutorialAgentsSelectNone: "먼저 하나 이상 선택하세요.",
    tutorialAgentsInstallDone: "완료. Clawd가 선택한 도구를 따라갑니다.",
    tutorialAgentsCleanupDone: "완료. 선택한 Clawd 연결을 끊었습니다.",
    tutorialAgentsActionFailed: "일부 항목을 업데이트하지 못했습니다: {message}",
    tutorialShortcutsTitle: "단축키 설정",
    tutorialShortcutsSub: "자주 쓸 단축키를 먼저 정하세요. 내장 키는 아래에 참고용으로 표시됩니다.",
    tutorialShortcutsEditableTitle: "변경 가능",
    tutorialShortcutsEditableDesc: "여기서 바로 변경하세요. 저장할 때 Clawd가 충돌을 확인합니다.",
    tutorialShortcutsFixedTitle: "내장 단축키",
    tutorialShortcutsFixedDesc: "이 키와 동작은 그대로 작동하므로 설정할 필요가 없습니다.",
    tutorialShortcutRecordingHelp: "새 단축키를 누르세요. Esc로 취소합니다.",
    tutorialShortcutChecking: "확인 중…",
    tutorialShortcutClickPet: "펫 클릭",
    tutorialShortcutsHint: "마우스로 버블을 클릭해도 됩니다. 단축키는 키보드 흐름을 유지하고 싶을 때 쓰세요.",
    tutorialFeaturesTitle: "나중에 써볼 만한 기능",
    tutorialFeaturesSub: "설정에 꼭 필요한 것은 아닙니다. Clawd가 실행된 뒤 천천히 살펴보세요.",
    tutorialFeatureDrag: "프로젝트 폴더 놓기",
    tutorialFeatureDragDesc: "폴더를 Clawd 위에 놓으면 해당 위치에서 터미널이 열립니다.",
    tutorialFeatureDragPlatform: "Windows / Linux",
    tutorialFeatureDashboard: "세션 대시보드",
    tutorialFeatureDashboardDesc: "실행 중인 세션, 별칭, 최근 상태를 한곳에서 확인합니다.",
    tutorialFeatureAuto: "요청 자동 승인",
    tutorialFeatureAutoDesc: "에이전트를 완전히 신뢰할 때만 켜세요. 모든 요청을 자동으로 승인합니다.",
    tutorialFeatureThemes: "테마와 미니 모드",
    tutorialFeatureThemesDesc: "캐릭터 테마를 바꾸거나 Clawd를 화면 가장자리에 붙여 둘 수 있습니다.",
    tutorialFeatureMobile: "휴대폰 / Telegram 승인",
    tutorialFeatureMobileDesc: "자리를 비웠을 때도 휴대폰에서 권한 요청을 처리할 수 있습니다.",
    tutorialDoneTitle: "준비 완료",
    tutorialDoneBody: "연결된 AI 도구를 시작하면 Clawd가 데스크톱에서 반응합니다. 나중에 설정 → 일반에서 이 가이드를 다시 열 수 있어요.",
    tutorialDoneOpenSettings: "설정 열기",
    shortcutRecordButton: "변경",
    shortcutRecordingHint: "키 조합 (Esc)",
    shortcutClearButton: "해제",
    shortcutResetButton: "기본값 복원",
    shortcutResetAllButton: "모두 기본값 복원",
    shortcutUnassigned: "— 미지정 —",
    shortcutToastSaved: "저장됨.",
    shortcutErrorConflict: "{other} 와(과) 충돌합니다. 다른 키를 사용해 주세요.",
    shortcutErrorSystemConflict: "시스템 또는 다른 앱이 이미 사용 중입니다.",
    shortcutErrorRegistrationFailed: "저장되었지만 현재는 시스템 충돌로 활성화되지 않았습니다. 다시 바인딩하거나 나중에 다시 시도해 주세요.",
    shortcutErrorReserved: "예약된 단축키입니다. 다른 키를 사용해 주세요.",
    shortcutErrorInvalid: "유효하지 않은 단축키입니다.",
    shortcutErrorNeedsModifier: "수정 키를 하나 이상 포함해 주세요.",
    newSession: "새 Claude 세션",
    newSessionSelectFolder: "폴더 선택...",
    newSessionHomeDir: "홈 디렉터리",
    newSessionNormal: "일반 모드",
    newSessionDangerous: "위험 모드 (--dangerously-skip-permissions)",
    newSessionContinue: "이전 세션 계속 (-c)",
    newSessionResume: "지정 세션 복원 (--resume)",
    resumeSessionTitle: "세션 복원",
    resumeSessionHint: "Session ID를 입력하세요",
    modeNormal: "일반",
    modeDangerous: "위험",
    dangerousConfirmTitle: "위험 모드 확인",
    dangerousConfirmMessage: "위험 모드는 모든 권한 검사를 건너뜁니다. 샌드박스 환경에서만 사용하세요.",
    confirm: "확인",
    cancel: "취소",
    selectFolder: "프로젝트 폴더 선택",
    launchFailed: "Claude Code 실행에 실패했습니다. 지원되는 터미널을 찾을 수 없습니다.",
    quit: "종료",
    approvalDetailAgent: "에이전트",
    approvalDetailTool: "도구",
    approvalDetailFolder: "폴더",
    approvalDetailSummary: "요약",
    approvalSummaryFallbackDetail: "세부 정보: {detail}",
    approvalSummaryUnavailable: "도구가 설명을 제공하지 않았습니다 — 결정하기 전에 데스크톱의 Clawd 말풍선을 확인하세요.",
    directSendEmptyText: "Clawd 완료 알림에 답장하는 형태로 텍스트를 보내주세요.",
    directSendUnmapped: "세션을 선택하려면 Clawd 완료 알림에 답장하세요.",
    directSendSessionNotLive: "그 세션은 이 컴퓨터에서 더 이상 실행 중이 아닙니다.",
    directSendPermissionPending: "그 세션은 권한 결정을 기다리고 있는 것 같아서 direct send를 위해 포커스하지 않았습니다.",
    directSendNotFocusable: "그 세션은 이 컴퓨터에서 로컬 터미널로 포커스할 수 없습니다.",
    directSendFocusUnconfirmed: "터미널이 전면에 있는지 확인하지 못했습니다. Direct Send는 포커스 전용 모드로 머물렀고, 텍스트는 붙여넣지 않았습니다.",
    directSendAckSent: "세션 {session}의 터미널로 전송했습니다.",
    directSendAckPastedRestored: "세션 {session}에 텍스트를 붙여넣었습니다. 로컬에서 Enter를 눌러 전송하세요. 이전 클립보드 내용은 복원되었습니다.",
    directSendAckPastedManual: "세션 {session}에 텍스트를 붙여넣었습니다. 로컬에서 Enter를 눌러 전송하세요. 이 텍스트는 이 컴퓨터의 클립보드에 남아 있어 수동으로 재시도할 수 있습니다.",
    directSendAckCopied: "이 컴퓨터의 클립보드에 텍스트를 복사했습니다 (세션 {session}). 로컬에서 붙여넣고 전송하세요.",
    directSendAckFailed: "포커스를 확인한 뒤에도 Direct Send가 실패했습니다. 텍스트는 붙여넣지 않았습니다.",
    directSendAckFocusOnlyDogfood: "세션 {session}을(를) 이 컴퓨터에서 포커스했습니다. Direct Send는 현재 포커스 전용 도그푸드 모드라 텍스트를 보내지 않았습니다.",
    directSendAckFocusOnly: "세션 {session}을(를) 이 컴퓨터에서 포커스했습니다. Direct Send가 텍스트를 보내지 않았습니다.",
    approvalRequestsTitle: "{agent}이(가) {tool} 사용을 요청합니다",
    approvalUnknownTool: "알 수 없음",
    approvalSuggestionAutoEdits: "자동 편집",
    approvalSuggestionPlanMode: "계획 모드",
    approvalSuggestionModePrefix: "모드: {mode}",
    approvalSuggestionAlwaysDenyTool: "{tool} 항상 거부",
    approvalSuggestionAlwaysAllowTool: "{tool} 항상 허용",
    approvalSuggestionAlwaysDeny: "항상 거부",
    approvalSuggestionAlwaysAllow: "항상 허용",
    telegramApprovalButtonAllowOnce: "한 번 허용",
    telegramApprovalButtonDeny: "거부",
    telegramApprovalStatusResolvedElsewhere: "✅ 다른 곳에서 처리됨",
    telegramApprovalStatusTimedOut: "⏳ 시간 초과",
    telegramApprovalStatusSessionEnded: "⏹️ 세션 종료됨",
    telegramApprovalStatusAllowed: "✅ 허용됨",
    telegramApprovalStatusDenied: "❌ 거부됨",
    telegramApprovalStatusApplied: "✅ 적용됨",
    telegramApprovalToastAllowed: "허용됨",
    telegramApprovalToastDenied: "거부됨",
    telegramApprovalToastApplied: "적용됨",
    telegramApprovalToastUnavailable: "사용할 수 없음",
    telegramApprovalToastAck: "확인",
    telegramApprovalToastExpired: "만료됨",
    telegramApprovalToastNotAllowed: "권한 없음",
    telegramTestMessage: "Clawd: 네이티브 Telegram 봇 테스트. 눌러서 확인하세요.",
    telegramTestConfirmButton: "확인",
    telegramSettingsTestTitle: "Clawd Telegram 승인 테스트",
    telegramSettingsTestDetail: "이것은 설정에서 보낸 테스트 메시지입니다. 어떤 에이전트의 권한 요청과도 연결되어 있지 않습니다.",
    telegramApprovalDisabledMessage: "Telegram 승인이 비활성화되어 있습니다",
    telegramApprovalMissingTokenMessage: "Telegram bot token이 설정되지 않았습니다",
    telegramApprovalIncompleteConfigMessage: "Telegram 승인 설정이 불완전합니다",
    telegramApprovalNativeInactiveMessage: "네이티브 Telegram 승인이 활성화되어 있지 않습니다",
    telegramApprovalNativeTestingMessage: "네이티브 Telegram 승인 테스트가 이미 진행 중입니다",
    telegramApprovalSidecarNotRunningMessage: "Telegram 승인 sidecar가 실행되고 있지 않습니다",
    telegramApprovalNoButtonResponseMessage: "Telegram 테스트에서 버튼 응답을 받지 못했습니다",
    telegramElicitationProgress: "질문 {current}/{total}",
    telegramElicitationOtherButton: "기타",
    telegramElicitationCancelOtherButton: "취소",
    telegramElicitationBackButton: "◀ 이전 질문",
    telegramElicitationConfirmButton: "선택 확인",
    telegramElicitationTerminalButton: "터미널에서 처리",
    telegramElicitationOtherPrompt: "이 메시지에 답장하여 답변을 입력하세요.",
    telegramElicitationSubmittedStatus: "✅ 제출됨",
    telegramElicitationTerminalStatus: "🖥️ 터미널에서 계속 진행",
    telegramElicitationToastAnswered: "답변함",
    telegramElicitationToastExpired: "만료됨",
    telegramElicitationToastNotAllowed: "권한 없음",
    telegramElicitationToastUnavailable: "사용할 수 없음",
    telegramElicitationToastPickAtLeastOne: "하나 이상 선택하세요",
    telegramElicitationToastTerminal: "터미널에서 계속 진행",
  },
  ja: {
    size: "サイズ",
    small: "小 (S)",
    medium: "中 (M)",
    large: "大 (L)",
    sendToDisplay: "ディスプレイへ送る",
    bringPetToPrimaryDisplay: "ペットをメインディスプレイへ移動",
    displayLabel: "ディスプレイ {n}",
    displayLabelPrimary: "ディスプレイ {n} (メイン)",
    displayResolution: "{w}×{h}",
    miniMode: "ミニモード",
    exitMiniMode: "ミニモードを終了",
    sleep: "スリープ (おやすみモード)",
    wake: "Clawd を起こす",
    startOnLogin: "ログイン時に自動起動",
    startWithClaude: "Claude Code と同時に起動",
    codexHookHealthNudgeTitle: "Codex 承認フックの確認が必要です",
    codexHookHealthNudgeBody: "フックを修正するまで Codex は承認プロンプトを表示しません。Clawd 設定 → Agents を開いてください。",
    showInMenuBar: "メニューバーに表示",
    showInDock: "Dock に表示",
    language: "言語",
    checkForUpdates: "アップデートを確認",
    checkForUpdatesPending: "新しいバージョン · v{version}",
    autoUpdateCheck: "アップデートを自動で確認",
    autoUpdateCheckDescription: "12 時間ごとに GitHub を静かに確認し、新しいバージョンがある時だけ通知します。",
    aboutUpdateAvailableHint: "新しいバージョンがあります: v{version}",
    checkingForUpdates: "アップデートを確認中…",
    updateAvailable: "新しいバージョンがあります",
    updateAvailableMsg: "v{version} が公開されました。今すぐダウンロードしてインストールしますか？",
    updateAvailableMacMsg: "v{version} が公開されました。ダウンロードページを開きますか？",
    updateNotAvailable: "最新バージョンです",
    updateNotAvailableMsg: "Clawd v{version} は最新バージョンです。",
    updateDownloading: "アップデートをダウンロード中…",
    updateReady: "アップデートの準備が完了しました",
    updateReadyMsg: "v{version} のダウンロードが完了しました。今すぐ再起動してアップデートしますか？",
    updateError: "アップデートエラー",
    updateErrorMsg: "アップデートの確認に失敗しました。あとでもう一度お試しください。",
    updateDirtyMsg: "ローカルファイルが変更されています。アップデート前に commit または stash してください。",
    nativeArm64Available: "ネイティブ ARM64 ビルドが利用可能",
    nativeArm64AvailableMsg: "Clawd v{version} にはネイティブの Windows ARM64 インストーラーがあります。パフォーマンスとバッテリー寿命のためにインストールしますか？",
    nativeArm64DownloadOpened: "ブラウザで ARM64 インストーラーのダウンロードを開きました。",
    updateNow: "今すぐアップデート",
    updating: "アップデート中…",
    gitUpdateRestarting: "アップデート完了。Clawd を再起動します...",
    macUpdateOpened: "ブラウザで最新版のダウンロードページを開きました。",
    restartNow: "今すぐ再起動",
    restartLater: "あとで",
    download: "ダウンロード",
    dismiss: "閉じる",
    bubbleFollow: "吹き出しをペットに追従",
    hideBubbles: "吹き出しを非表示",
    menuAutoApproveAll: "すべてのリクエストを自動承認",
    autoApproveAllConfirmTitle: "すべてのリクエストの自動承認を有効にしますか？",
    autoApproveAllConfirmDetail: "シェルコマンドの実行やファイルの削除を含め、すべてのエージェントのすべての権限リクエストが自動的に承認されます。Clawd は事前に確認しません。エージェントの動作を完全に信頼できる場合のみ有効にしてください。",
    autoApproveAllConfirmEnable: "自動承認を有効化",
    autoApproveAllConfirmCancel: "キャンセル",
    openDashboard: "ダッシュボードを開く",
    dashboardWindowTitle: "セッション",
    dashboardCount: "{n} 件アクティブ",
    dashboardEmpty: "アクティブなセッションはありません",
    dashboardEmptyHint: "Claude Code、Codex、その他エージェントのセッションがここに表示されます。",
    dashboardJumpTerminal: "ターミナルへジャンプ",
    dashboardOpenCodexSession: "Codex セッションを開く",
    dashboardHideSessionTitle: "Clawd から非表示にします。ターミナルは閉じません。",
    dashboardMarkRead: "既読にする",
    dashboardMarkReadTitle: "このリモートセッションを確認し、以降は通常のアイドルルールで整理します。",
    dashboardLastEventPrefix: "最終",
    dashboardContextUsage: "コンテキスト",
    dashboardContextUsageUnknownLimit: "コンテキスト: {used}",
    dashboardQuotaSectionAntigravity: "Antigravity",
    dashboardQuotaGroupGemini: "Gemini",
    dashboardQuotaGroupThirdParty: "Claude/GPT",
    dashboardQuotaSectionClaudeCode: "Claude Code",
    dashboardQuotaFiveHour: "5時間",
    dashboardQuotaWeekly: "週間",
    dashboardQuotaResetIn: "{time}後にリセット",
    dashboardQuotaResetOn: "{date}にリセット",
    dashboardQuotaResetHoursMinutes: "{h}時間{m}分",
    dashboardQuotaResetMinutes: "{m}分",
    dashboardHeadless: "バックグラウンド",
    dashboardNoPath: "パスなし",
    dashboardUnknownAgent: "不明",
    sessionLocal: "ローカル",
    sessionWorking: "作業中",
    sessionThinking: "思考中",
    sessionJuggling: "並列処理中",
    sessionSweeping: "圧縮中",
    sessionNotification: "許可待ち",
    sessionWorktree: "WT作成",
    sessionIdle: "待機中",
    sessionSleeping: "睡眠中",
    sessionJustNow: "たった今",
    sessionMinAgo: "{n}分前",
    sessionHrAgo: "{n}時間前",
    sessionHudElapsedSec: "{n}秒前",
    sessionHudElapsedMinSec: "{m}分 {s}秒前",
    sessionHudContextUsageTooltip: "コンテキスト: {used} / {limit} tokens ({percent}%)",
    sessionHudContextUsageTooltipUnknownLimit: "コンテキスト: {used} tokens",
    sessionHudActive: "{n} 件アクティブ",
    sessionHudOtherActive: "他 {n} 件アクティブ",
    sessionHudLast: "最終",
    sessionBadgeRunning: "実行中",
    sessionBadgeDone: "完了",
    sessionBadgeInterrupted: "中断",
    sessionBadgeIdle: "待機",
    eventLabelSessionStart: "セッション開始",
    eventLabelSessionEnd: "セッション終了",
    eventLabelUserPromptSubmit: "プロンプト送信",
    eventLabelPreToolUse: "ツール開始",
    eventLabelPostToolUse: "ツール完了",
    eventLabelPostToolUseFailure: "ツール失敗",
    eventLabelAfterAgent: "このターンを終了",
    eventLabelStop: "応答完了",
    eventLabelStopFailure: "応答失敗",
    eventLabelApiError: "API エラー",
    eventLabelSubagentStart: "サブエージェント開始",
    eventLabelSubagentStop: "サブエージェント完了",
    eventLabelPreCompress: "コンテキスト圧縮の準備",
    eventLabelPreCompact: "コンテキスト圧縮中",
    eventLabelPostCompact: "コンテキスト圧縮完了",
    eventLabelNotification: "通知",
    eventLabelElicitation: "質問あり",
    eventLabelWorktreeCreate: "Worktree 作成",
    eventLabelStaleCleanup: "セッションをクリーンアップしました",
    soundEffects: "効果音",
    showPet: "ペットを表示",
    hidePet: "ペットを非表示",
    theme: "テーマ",
    openThemeDir: "テーマフォルダを開く…",
    settings: "設定…",
    toggleShortcut: "切替ショートカット: {shortcut}",
    settingsTabShortcuts: "ショートカット",
    shortcutsTitle: "ショートカット",
    shortcutsSubtitle: "Clawd のショートカットを変更します。保存時に競合を確認します。",
    shortcutLabelTogglePet: "ペット表示の切替",
    shortcutLabelPermissionAllow: "権限: 許可",
    shortcutLabelPermissionDeny: "権限: 拒否",
    shortcutLabelBubbleNextOption: "次の承認オプション",
    shortcutLabelBubblePrevOption: "前の承認オプション",
    shortcutLabelBubbleToggleOption: "選択中オプションの切替",
    shortcutLabelBubbleSubmit: "承認選択を送信",
    shortcutLabelPetReveal: "Clawd を前面に出す",
    shortcutLabelOpenDashboard: "セッションダッシュボードを開く",
    shortcutBuiltinKeyTooltip: "このショートカットは組み込みのため変更できません。",
    tutorialWindowTitle: "Clawd on Desk へようこそ",
    tutorialWelcomeTitle: "Clawd on Desk へようこそ",
    tutorialWelcomeBody: "Clawd は選んだ AI ツールを追いかけ、作業中・承認待ち・完了に合わせてデスクトップで反応します。",
    tutorialWelcomeLangLabel: "言語設定",
    tutorialGetStarted: "はじめる",
    tutorialBack: "戻る",
    tutorialContinue: "続ける",
    tutorialSkip: "設定をスキップ",
    tutorialFinish: "完了",
    tutorialWorking: "処理中…",
    tutorialAgentsTitle: "Clawd が追いかける AI ツールを選択",
    tutorialAgentsSub: "ここで変わるのは Clawd の接続だけです。ツール本体をインストールしたり削除したりはしません。",
    tutorialAgentsEmpty: "まだ AI ツールが見つかりません。いつでも「設定 → エージェント」から接続できます。",
    tutorialAgentsOpenSettings: "設定を開いてエージェントを管理",
    tutorialAgentsActiveLabel: "有効化済み",
    tutorialAgentsActiveDesc: "Clawd はこれらのツールを監視するよう設定されています。",
    tutorialAgentsInstallLabel: "有効化をおすすめ",
    tutorialAgentsInstallDesc: "Clawd がこのコンピューターでこれらのツールを見つけました。追いかけたいものを選んでください。",
    tutorialAgentsCleanupLabel: "整理をおすすめ",
    tutorialAgentsCleanupDesc: "Clawd の接続は残っていますが、対応するツールが見つかりません。もう使わないものは切断できます。",
    tutorialAgentsActiveTag: "有効",
    tutorialAgentsInstallTag: "見つかりました",
    tutorialAgentsCleanupTag: "ツールなし",
    tutorialAgentsInstallRowDesc: "このコンピューターで見つかりました。有効にすると Clawd が活動を追いかけます。",
    tutorialAgentsCleanupRowDesc: "Clawd の接続はありますが、このツールは見つかりませんでした。",
    tutorialAgentsActiveRowDesc: "このツールが活動を送ると、Clawd が反応できます。",
    tutorialAgentsInstallAction: "選択項目を有効化",
    tutorialAgentsCleanupAction: "選択した接続を切断",
    tutorialAgentsInstallingSelected: "有効化中…",
    tutorialAgentsDisconnectingSelected: "切断中…",
    tutorialAgentsSelectNone: "まず 1 件以上選択してください。",
    tutorialAgentsInstallDone: "完了しました。Clawd は選択したツールを追いかけます。",
    tutorialAgentsCleanupDone: "完了しました。選択した Clawd 接続を切断しました。",
    tutorialAgentsActionFailed: "一部の項目を更新できませんでした: {message}",
    tutorialShortcutsTitle: "ショートカットを設定",
    tutorialShortcutsSub: "よく使うショートカットを先に決めます。組み込みキーは下に参考として表示します。",
    tutorialShortcutsEditableTitle: "変更できます",
    tutorialShortcutsEditableDesc: "ここで直接変更できます。保存時に Clawd が競合を確認します。",
    tutorialShortcutsFixedTitle: "組み込みショートカット",
    tutorialShortcutsFixedDesc: "これらのキーと操作はそのまま動くため、設定は不要です。",
    tutorialShortcutRecordingHelp: "新しいショートカットを押してください。Esc でキャンセルします。",
    tutorialShortcutChecking: "確認中…",
    tutorialShortcutClickPet: "ペットをクリック",
    tutorialShortcutsHint: "もちろんマウスでバブルをクリックしても大丈夫です。ショートカットはキーボードの流れを保ちたいとき用です。",
    tutorialFeaturesTitle: "あとで試せる便利機能",
    tutorialFeaturesSub: "ここは必須設定ではありません。Clawd が動き始めてから、ゆっくり試せます。",
    tutorialFeatureDrag: "プロジェクトフォルダをドロップ",
    tutorialFeatureDragDesc: "フォルダを Clawd にドロップすると、その場所でターミナルが開きます。",
    tutorialFeatureDragPlatform: "Windows / Linux",
    tutorialFeatureDashboard: "セッションダッシュボード",
    tutorialFeatureDashboardDesc: "実行中のセッション、別名、最近の状態をまとめて確認できます。",
    tutorialFeatureAuto: "リクエストを自動承認",
    tutorialFeatureAutoDesc: "エージェントを完全に信頼できるときだけ有効にしてください。すべてのリクエストを自動で承認します。",
    tutorialFeatureThemes: "テーマとミニモード",
    tutorialFeatureThemesDesc: "キャラクターテーマを切り替えたり、Clawd を画面の端にしまえます。",
    tutorialFeatureMobile: "スマホ / Telegram 承認",
    tutorialFeatureMobileDesc: "席を離れていても、スマホから権限リクエストを処理できます。",
    tutorialDoneTitle: "準備完了",
    tutorialDoneBody: "接続済みの AI ツールを起動すると、Clawd がデスクトップで反応します。あとで「設定 → 一般」からこのガイドをもう一度開けます。",
    tutorialDoneOpenSettings: "設定を開く",
    shortcutRecordButton: "変更",
    shortcutRecordingHint: "キーを押してください (Esc)",
    shortcutClearButton: "クリア",
    shortcutResetButton: "デフォルトに戻す",
    shortcutResetAllButton: "すべてデフォルトに戻す",
    shortcutUnassigned: "— 未割り当て —",
    shortcutToastSaved: "保存しました。",
    shortcutErrorConflict: "{other} と競合しています。別のキーを試してください。",
    shortcutErrorSystemConflict: "システムまたは他のアプリで既に使用されています。",
    shortcutErrorRegistrationFailed: "保存しましたが、システム競合により現在は無効です。再バインドするか後で再試行してください。",
    shortcutErrorReserved: "このショートカットは予約されています。別のキーを試してください。",
    shortcutErrorInvalid: "このショートカットは無効です。",
    shortcutErrorNeedsModifier: "修飾キーを 1 つ以上含めてください。",
    newSession: "新規 Claude セッション",
    newSessionSelectFolder: "フォルダを選択...",
    newSessionHomeDir: "ホームディレクトリ",
    newSessionNormal: "通常モード",
    newSessionDangerous: "危険モード (--dangerously-skip-permissions)",
    newSessionContinue: "前回のセッションを続ける (-c)",
    newSessionResume: "指定セッションを再開 (--resume)",
    resumeSessionTitle: "セッションを再開",
    resumeSessionHint: "Session ID を入力してください",
    modeNormal: "通常",
    modeDangerous: "危険",
    dangerousConfirmTitle: "危険モードの確認",
    dangerousConfirmMessage: "危険モードはすべての権限チェックをスキップします。サンドボックス環境でのみ使用してください。",
    confirm: "確認",
    cancel: "キャンセル",
    selectFolder: "プロジェクトフォルダを選択",
    launchFailed: "Claude Code の起動に失敗しました。利用可能なターミナルが見つかりません。",
    quit: "終了",
    approvalDetailAgent: "エージェント",
    approvalDetailTool: "ツール",
    approvalDetailFolder: "フォルダ",
    approvalDetailSummary: "概要",
    approvalSummaryFallbackDetail: "詳細：{detail}",
    approvalSummaryUnavailable: "ツールから説明が提供されていません — 判断する前にデスクトップの Clawd の吹き出しを確認してください。",
    directSendEmptyText: "Clawd の完了通知に返信する形でテキストを送ってください。",
    directSendUnmapped: "セッションを選ぶには Clawd の完了通知に返信してください。",
    directSendSessionNotLive: "そのセッションはこのコンピューターでもう実行されていません。",
    directSendPermissionPending: "そのセッションは権限の判断待ちのようなので、direct send のためにフォーカスしませんでした。",
    directSendNotFocusable: "そのセッションはこのコンピューターでローカルターミナルとしてフォーカスできません。",
    directSendFocusUnconfirmed: "ターミナルが前面にあることを確認できませんでした。Direct Send はフォーカスのみのモードにとどまり、テキストは貼り付けていません。",
    directSendAckSent: "セッション {session} のターミナルに送信しました。",
    directSendAckPastedRestored: "セッション {session} にテキストを貼り付けました。ローカルで Enter を押して送信してください。以前のクリップボードの内容は復元されています。",
    directSendAckPastedManual: "セッション {session} にテキストを貼り付けました。ローカルで Enter を押して送信してください。このテキストはこのコンピューターのクリップボードに残っているので、手動で再試行できます。",
    directSendAckCopied: "このコンピューターのクリップボードにテキストをコピーしました（セッション {session}）。ローカルで貼り付けて送信してください。",
    directSendAckFailed: "フォーカスを確認した後も Direct Send は失敗しました。テキストは貼り付けていません。",
    directSendAckFocusOnlyDogfood: "セッション {session} をこのコンピューターでフォーカスしました。Direct Send は現在フォーカスのみのドッグフードモードのため、テキストは送信していません。",
    directSendAckFocusOnly: "セッション {session} をこのコンピューターでフォーカスしました。Direct Send はテキストを送信しませんでした。",
    approvalRequestsTitle: "{agent} が {tool} の使用を要求しています",
    approvalUnknownTool: "不明",
    approvalSuggestionAutoEdits: "自動編集",
    approvalSuggestionPlanMode: "プランモード",
    approvalSuggestionModePrefix: "モード: {mode}",
    approvalSuggestionAlwaysDenyTool: "{tool} を常に拒否",
    approvalSuggestionAlwaysAllowTool: "{tool} を常に許可",
    approvalSuggestionAlwaysDeny: "常に拒否",
    approvalSuggestionAlwaysAllow: "常に許可",
    telegramApprovalButtonAllowOnce: "今回だけ許可",
    telegramApprovalButtonDeny: "拒否",
    telegramApprovalStatusResolvedElsewhere: "✅ 他の場所で処理済み",
    telegramApprovalStatusTimedOut: "⏳ タイムアウトしました",
    telegramApprovalStatusSessionEnded: "⏹️ セッションが終了しました",
    telegramApprovalStatusAllowed: "✅ 許可しました",
    telegramApprovalStatusDenied: "❌ 拒否しました",
    telegramApprovalStatusApplied: "✅ 適用しました",
    telegramApprovalToastAllowed: "許可しました",
    telegramApprovalToastDenied: "拒否しました",
    telegramApprovalToastApplied: "適用しました",
    telegramApprovalToastUnavailable: "利用できません",
    telegramApprovalToastAck: "OK",
    telegramApprovalToastExpired: "期限切れ",
    telegramApprovalToastNotAllowed: "権限がありません",
    telegramTestMessage: "Clawd: ネイティブ Telegram ボットのテストです。タップして確認してください。",
    telegramTestConfirmButton: "確認",
    telegramSettingsTestTitle: "Clawd Telegram 承認テスト",
    telegramSettingsTestDetail: "これは設定画面から送信されたテストメッセージです。どの agent の権限リクエストにも紐づいていません。",
    telegramApprovalDisabledMessage: "Telegram 承認は無効になっています",
    telegramApprovalMissingTokenMessage: "Telegram bot token が設定されていません",
    telegramApprovalIncompleteConfigMessage: "Telegram 承認の設定が不完全です",
    telegramApprovalNativeInactiveMessage: "ネイティブ Telegram 承認は有効になっていません",
    telegramApprovalNativeTestingMessage: "ネイティブ Telegram 承認テストはすでに進行中です",
    telegramApprovalSidecarNotRunningMessage: "Telegram 承認 sidecar が実行されていません",
    telegramApprovalNoButtonResponseMessage: "Telegram テストでボタンの応答がありませんでした",
    telegramElicitationProgress: "質問 {current}/{total}",
    telegramElicitationOtherButton: "その他",
    telegramElicitationCancelOtherButton: "キャンセル",
    telegramElicitationBackButton: "◀ 前の質問",
    telegramElicitationConfirmButton: "選択を確定",
    telegramElicitationTerminalButton: "ターミナルで対応",
    telegramElicitationOtherPrompt: "このメッセージに返信して回答を入力してください。",
    telegramElicitationSubmittedStatus: "✅ 送信済み",
    telegramElicitationTerminalStatus: "🖥️ ターミナルで続行",
    telegramElicitationToastAnswered: "回答しました",
    telegramElicitationToastExpired: "期限切れ",
    telegramElicitationToastNotAllowed: "許可されていません",
    telegramElicitationToastUnavailable: "利用できません",
    telegramElicitationToastPickAtLeastOne: "1つ以上選択してください",
    telegramElicitationToastTerminal: "ターミナルで続行",
  },
};

const SUPPORTED_LANGS = Object.freeze(["en", "zh", "zh-TW", "ko", "ja"]);

function createTranslator(getLang) {
  if (typeof getLang !== "function") {
    throw new TypeError("createTranslator(getLang): getLang must be a function");
  }
  return function t(key) {
    const lang = getLang();
    const dict = i18n[lang] || i18n.en;
    return dict[key] || key;
  };
}

module.exports = {
  i18n,
  SUPPORTED_LANGS,
  createTranslator,
};
