export const en = {
  palette: {
    searchPlaceholder: "Search commands…",
    empty: "No matches",
    footMove: "move",
    footRun: "run",
    footClose: "close",
    newChat: "New chat",
    newChatHint: "Drop the current conversation and start fresh",
    newTab: "New tab",
    newTabHint: "Open another workspace tab",
    closeTab: "Close tab",
    closeTabHint: "Close the current tab",
    abort: "Stop current turn",
    abortHint: "Interrupt the model mid-generation",
    copyLast: "Copy last reply",
    copyLastHint: "Copy the latest assistant reply",
    exportMd: "Export conversation as Markdown",
    exportMdHint: "Copy the whole conversation to the clipboard",
    clearChat: "Clear screen",
    clearChatHint: "Clear the UI only — subprocess stays alive",
    focusComposer: "Focus composer",
    pickWorkspace: "Switch workspace…",
    pickWorkspaceHint: "Pick another working directory",
    settings: "Settings",
    settingsHint: "Model, budget, theme…",
    about: "About Carbon Code",
    groupNav: "Navigate",
    groupAction: "Action",
    groupWorkspace: "Workspace",
    groupSettings: "Settings",
    countSuffix: "items",
  },
  about: {
    sidebarLabel: "About",
    tagline: "DeepSeek-native coding agent",
    version: "Version",
    repo: "Repository",
    checkUpdates: "Check for updates",
    checking: "Checking…",
    upToDate: "Up to date ({version})",
    updateAvailable: "Update available: {version}",
    openReleases: "View releases",
    checkFailed: "Check failed: {message}",
    checkNoRelease: "No releases yet",
    close: "Close",
  },
  workdir: {
    title: "Switch workspace",
    searchPlaceholder: "Search recent paths…",
    empty: "No recent workspaces",
    browse: "Browse local…",
  },
  sidebar: {
    newChat: "New chat",
    searchCommands: "Search commands…",
    recent: "Recent",
    noSessions: "No sessions yet",
    wallet: "wallet",
    footHint: "cache-first agent",
  },
  toast: {
    copied: "Copied",
    copiedMd: "Conversation copied as Markdown",
    newSession: "Started a new session",
    cleared: "UI cleared",
    aboutLine: "Carbon Code v{version} · cache-first DeepSeek agent",
  },
  composer: {
    busy: "carboncode is thinking…",
    idle: "Ask something",
    send: "send",
    newline: "newline",
    commands: "commands",
    placeholder: "Ask the agent / describe a task…",
    queueCount: "queued {n}",
    queue: "queue",
    interrupt: "stop",
    mentionFiles: "mention files",
    commandPalette: "command palette",
    insertFile: "Insert file (@ mention)",
    insertImage: "Insert image (@ mention)",
    switchPreset: "Switch model preset",
    slashHeader: "Commands — control agent, model, and session",
    atHeader: "Mentions — files in the workspace",
    noMatches: "No matches",
    select: "select",
    confirm: "confirm",
    close: "close",
    imageFilterName: "Images",
    commandsLabel: "commands",
    mentionLabel: "mention",
    workspaceRoot: "workspace root",
  },
  dragDrop: {
    overlay: "Drop to attach as @-mention",
  },
  settings: {
    title: "Settings",
    close: "close",
    language: "Language",
    languageHint: "UI only — agent prompts are unaffected.",
    langEn: "English",
    langZhCn: "简体中文",
    langEnDesc: "English UI",
    langZhCnDesc: "中文界面",
    costCurrency: "Cost currency",
    costCurrencyHint:
      "Display only. Internal cost is computed in USD-equiv per token, converted at fixed 7.2 FX.",
    cnyDesc: "matches DeepSeek dashboard",
    usdDesc: "matches per-token reference rates",
    theme: "Theme",
    themeHint: "Local to this device, not synced with TUI.",
    themeDark: "dark",
    themeLight: "light",
    themeDarkDesc: "default · low-light",
    themeLightDesc: "high-contrast · daytime",
    fontScale: "Font scale",
    fontScaleHint: "Scales the whole UI; pick larger for high-DPI screens.",
    fontScaleSmall: "small",
    fontScaleMedium: "medium",
    fontScaleLarge: "large",
    fontFamily: "Font family",
    fontFamilyHint: "Body type; code blocks stay monospace either way.",
    fontFamilySans: "sans",
    fontFamilySystem: "system",
    fontFamilySerif: "serif",
    reasoningEffort: "Reasoning effort",
    reasoningEffortHint: "Applies live to the running session.",
    effortHigh: "high",
    effortMax: "max",
    effortHighDesc: "faster, less thinking",
    effortMaxDesc: "deeper reasoning, slower",
    editMode: "Edit gate",
    editModeHint: "Tool approval behavior — change saves to disk, takes effect on next tool call.",
    editModeReview: "review",
    editModeAuto: "auto",
    editModeYolo: "yolo",
    editModeReviewDesc: "approve every write",
    editModeAutoDesc: "approve commands, auto edits",
    editModeYoloDesc: "approve nothing — full auto",
    budget: "Budget cap",
    budgetHint: "USD per session. Empty = no cap.",
    budgetPlaceholder: "no cap",
    baseUrl: "DeepSeek base URL",
    baseUrlHint: "Override only if using a proxy. Empty = official endpoint. Restart required.",
    workspace: "Workspace",
    workspaceHint:
      "Root dir agent tools operate inside. Switching saves to config and reloads tools.",
    workspaceChange: "Change…",
    editor: "Editor",
    editorHint:
      "Used when you click a file link / path. System default = OS file association. Others must be in PATH.",
    editorSystem: "System default",
    editorCustom: "custom",
    editorPlaceholder: 'e.g. "code", "subl", or full path to executable',
    editorDefault: "(default)",
    apiKey: "API key",
    apiKeyHint: "DeepSeek key — saved to ~/.carboncode/config.json (0600).",
    apiKeyNotSet: "(not set)",
    apiKeyCancel: "Cancel",
    apiKeySave: "Save",
    apiKeyShow: "show",
    apiKeyHide: "hide",
    environment: "Environment",
    model: "model",
    // page nav labels & descriptions
    pageGeneralLabel: "General",
    pageGeneralDesc: "Appearance, language, behavior",
    pageModelsLabel: "Models",
    pageModelsDesc: "Default model & sampling parameters",
    pageMcpLabel: "MCP Servers",
    pageMcpDesc: "Manage MCP protocol tool servers",
    pageSkillsLabel: "Skills",
    pageSkillsDesc: "Reusable prompt sets for / commands",
    pageMemoryLabel: "Memory",
    pageMemoryDesc: "CLAUDE.md / AGENTS.md injection",
    pageRulesLabel: "Approval Rules",
    pageRulesDesc: "Auto approve, deny, confirm command patterns",
    pageBillingLabel: "Account & Billing",
    pageBillingDesc: "Balance, usage & invoices",
    pageShortcutsLabel: "Shortcuts",
    pageShortcutsDesc: "Keyboard shortcuts overview",
    // section headers
    appearanceSection: "Appearance",
    workspaceSection: "Workspace",
    behaviorSection: "Behavior",
    apiSection: "DeepSeek API",
    mcpSection: "Configured",
    currentWorkspace: "Current workspace",
    notSelected: "(not selected)",
    apiKeySet: "Set · {prefix}…",
    // model descriptions
    defaultModelCurrent: "Default model · currently {model}",
    modelAutoDesc: "Starts with flash, upgrades to pro for complex tasks — speed + quality.",
    modelFlashDesc: "General-purpose chat model — fast, long context, cost-friendly.",
    modelProDesc: "Deep reasoning model — interpretable chain-of-thought before final answer.",
    ctxWindow: "Context",
    maxOutput: "Output",
    // MCP
    mcpConfigured: "Configured · {count}",
    mcpBridged: "· Bridged",
    mcpNotBridged:
      "· Current desktop session not bridged — restart carboncode code (TUI) to take effect",
    mcpEmpty: "No MCP servers configured yet. Enter a spec below to add one.",
    mcpRemove: "Remove",
    parseError: "Parse failed: {error}",
    mcpAddSection: "Add server",
    mcpSpecLabel: "Spec string",
    mcpSpecFormat: "Format: <code>name=command args</code> or <code>name=https://host/sse</code>",
    mcpAdd: "Add",
    // Skills
    skillsLoaded: "Loaded · {count} · invoke via / commands",
    skillsEmpty:
      "No skills available. Create SKILL.md under ~/.carboncode/skills/ or .carboncode/skills/ in your project root.",
    // Memory
    memorySection: "Long-term memory",
    memoryDesc:
      "Current version relies on built-in CLAUDE.md / AGENTS.md injection. Project-level memory is maintained at the kernel level.",
    // Rules
    appMode: "Application mode",
    ruleAutoApprovalSection: "Auto-approve commands",
    ruleAutoApprovalHint:
      'In the ApprovalCard, click "Always allow" to add a command prefix to the whitelist; subsequent matching commands will no longer prompt.',
    // Billing
    balanceLabel: "Wallet balance",
    balanceLow: "Insufficient",
    balanceAvailable: "Available",
    sessionCost: "This session cost",
    cacheHitRate: "Cache hit rate",
    // Shortcuts
    shortcutNewChat: "New chat",
    shortcutNewTab: "New tab",
    shortcutCloseTab: "Close tab",
    shortcutCommandPalette: "Command palette",
    shortcutFocusComposer: "Focus composer",
    shortcutSwitchTab: "Switch tab",
    shortcutAbort: "Abort streaming",
    shortcutSettings: "Settings",
  },
  modal: {
    planFeedbackPlaceholder: "Optional feedback — write here if you want changes",
    choiceCustomPlaceholder: "Or type your own answer…",
  },
  plan: {
    activeTitle: "Active plan",
    progress: "{done} / {total} steps",
    progressNoTotal: "{done} steps",
    expand: "expand",
    collapse: "collapse",
    dismiss: "Dismiss plan",
    riskLow: "low",
    riskMed: "med",
    riskHigh: "high",
  },
  editMode: {
    label: "Edit gate",
    review: "review",
    auto: "auto",
    yolo: "yolo",
    reviewDesc: "approve every write",
    autoDesc: "auto edits, approve commands",
    yoloDesc: "auto everything",
    reviewHint: "Every tool call needs approval",
    autoHint: "Commands matching the allowlist are auto-approved",
    yoloHint: "All auto-approved · Use with caution",
  },
  markdown: {
    filePillTitle: "click to open · right-click to copy",
    externalLinkTitle: "open {href} in browser",
    localLinkTitle: "open {href}",
    copy: "copy",
    copied: "copied",
  },
  preset: {
    autoDesc: "Flash → Pro auto-upgrade",
    flashDesc: "Fast, cheap, long context",
    proDesc: "Deep reasoning",
  },
  checkpoint: {
    title: "Step complete",
    progress: "{done} / {total}",
    notesLabel: "notes",
    continue: "Continue",
    revise: "Revise…",
    stop: "Stop",
    revisePlaceholder: "What needs to change before the next step? (leave blank to just continue)",
    sendRevise: "Send revision",
  },
  revision: {
    title: "Plan revision",
    subtitle: "Model wants to replace the remaining steps",
    remainingHeading: "New remaining steps",
    accept: "Accept",
    reject: "Reject",
    cancel: "Cancel",
  },
  app: {
    toast: {
      newSession: "New session created",
      cleared: "Cleared",
      copied: "Copied",
      copiedMd: "Copied as Markdown",
      emptySession: "Session is empty",
      langSwitched: "Switched to {lang}",
      modelSwitched: "Switched to {model}",
      modeSwitched: "Mode: {mode}",
    },
    cmd: {
      newSession: "New session",
      clearChat: "Clear screen",
      abort: "Stop streaming output",
      copyLast: "Copy last reply",
      switchModel: "Switch model",
      toggleTheme: "Toggle theme",
      toggleCurrency: "Toggle currency (CNY / USD)",
      toggleLang: "Toggle language (CN / EN)",
      exportMd: "Copy session as Markdown",
      help: "Show all commands",
    },
    skill: {
      generic: "{scope} skill · {runAs}",
      scope: {
        builtin: "Builtin",
        global: "Global",
        project: "Project",
      },
      runAs: {
        inline: "inline",
        subagent: "subagent",
      },
    },
    yolo: {
      banner1: "All tool calls, shell commands, and file edits will be ",
      bannerBold: "auto-approved",
      banner2: " without asking.",
      switchBack: "Switch to Review",
      toast: "All operations will be auto-approved without asking",
    },
    errorLabel: "Error",
    jumpToBottom: "Jump to bottom",
    splashSubtitle: "DeepSeek Agents",
    connecting: "Connecting to Carbon Code core…",
    langZH: "Chinese",
    langEN: "English",
    titlebar: {
      sidebar: "Sidebar (⌘B)",
      contextPanel: "Context panel",
      more: "More",
      commandPalette: "Command palette",
      exportMd: "Export Markdown",
      clearChat: "Clear screen",
      settings: "Settings",
      windowControls: "Window controls",
      close: "Close",
      minimize: "Minimize",
      maximize: "Maximize",
      restore: "Restore",
    },
    tab: {
      newTabTitle: "New tab ⌘T",
      newTab: "New tab",
    },
    header: {
      noWorkspace: "No workspace selected",
      running: "Running",
      clickToSelect: "Click to select workspace",
      copyMd: "Copy conversation as Markdown",
      export: "Export",
      newChat: "New chat",
      abort: "Stop",
    },
    empty: {
      welcome: "Welcome to Carbon Code",
      currentWorkspace: "Current workspace: ",
      selectWorkspace: "Select a workspace from the top bar first",
      suggestion0: "Review my latest commit changes",
      suggestion1: "Fix all TypeScript errors in the current file",
      suggestion2: "Translate README to Chinese/English",
      suggestion3: "Generate a CHANGELOG for this repo",
    },
    setup: {
      welcome: "Welcome to Carbon Code",
      description:
        "First-time setup requires a DeepSeek API Key and workspace directory. The key is stored locally only.",
      workspace: "Workspace",
      notSelected: "Not selected",
      choose: "Choose…",
      saveAndStart: "Save & start",
    },
    update: {
      available: "New version available · {current} → {latest}",
      installing: "Installing…",
      failed: "Installation failed",
      clickToInstall: "Click to install & restart",
      install: "Install",
      later: "Later",
    },
    exportUserLabel: "You",
    exportReasoningSummary: "Reasoning",
    exportToolLabel: "Tool",
    session: {
      new: "{workspace} · New session",
      format: "Session {month}-{day} {hour}:{minute}",
    },
  },
  planBadge: {
    failed: "Failed",
    blocked: "Blocked",
    running: "Running",
    done: "Done",
    pending: "Pending",
  },
  cards: {
    reasoningName: "Thinking",
    reasoningComplete: "Complete",
    shellAwaiting: "Waiting approval",
    shellRunning: "Running",
    shellExecuteHint: "execute this command",
    shellAlwaysAllow: "Always allow",
    shellReject: "Reject",
    shellRun: "Run",
    diffApplyChanges: "Apply changes",
    diffDiscard: "Discard",
    diffApply: "Apply",
    diffAwaiting: "Waiting approval",
    errorName: "Error",
    searchName: "Web search",
    subagentDone: "Done",
    subagentFailed: "Failed",
    subagentRunning: "Running",
    subagentDoneProgress: "done",
    memoryName: "Memory",
    memoryCountSuffix: "items",
    checkpointRewind: "Rewind here",
    planDefaultTitle: "Plan",
    streaming: "streaming…",
    failed: "failed",
    done: "done",
    running: "Running",
    error: "error",
    result: "result",
    hits: "hits",
    applied: "applied",
    cacheHit: "cache hit",
    prompt: "prompt",
    reasoning: "reasoning",
    output: "output",
    cost: "cost",
    elapsed: "elapsed",
  },
  statusbar: {
    offline: "Offline",
    busy: "Running",
    online: "Online",
    jobs: "jobs",
    jobsTip: "Background processes · ⌘J",
    cacheHit: "cache hit",
    cache: "cache",
    tokens: "tokens",
    thisTurn: "this turn",
    switchWorkspace: "Switch workspace · {workspace}",
    switchCurrency: "Switch currency (CNY / USD)",
    balance: "balance",
    switchTheme: "Switch theme",
    themeDark: "dark",
    themeLight: "light",
  },
  jobs: {
    title: "Background jobs",
    running: "running",
    exited: "exited",
    empty: "No background jobs in this workspace yet.",
    stopAll: "Stop all",
    stopAllTip: "Send SIGTERM to every running job",
    stop: "Stop",
    stopOne: "Stop this job",
    kbToggle: "toggle",
    kbClose: "close",
  },
  contextPanel: {
    reservedKey: "reserved",
    usedKey: "used",
    filesTab: "Files",
    toolsTab: "Tools",
    memoryTab: "Memory",
    rulesTab: "Rules",
    contextTokens: "Context · tokens",
    cacheKey: "cache",
    freeKey: "free",
    filesTitle: "Files in context",
    filesCount: "{count} files",
    fileModified: "modified",
    fileInContext: "in context",
    mcpTitle: "MCP servers",
    mcpReadyAll: "{count} ready",
    mcpReadySome: "{ready}/{count} ready",
    mcpEmpty: "No MCP servers configured",
    mcpTools: "{count} tools",
    mcpReady: "ready",
    mcpConnecting: "connecting",
    mcpDisabled: "disabled",
    mcpFailed: "failed",
    mcpConfigured: "configured",
    memoryTitle: "Long-term memory",
    itemCount: "{count} items",
    scopeProject: "project",
    scopeGlobal: "global",
    autoApproveTitle: "Auto approval",
    ruleYolo: "YOLO mode · all tool calls auto-approved",
    ruleReadOnly: "Read-only tools auto-approved",
    ruleShellAllowlist: "Shell commands matching the allowlist auto-approved",
    ruleWritesAsk: "Writes and unknown shell commands require confirmation",
    ruleReview: "Review mode · every tool call requires confirmation",
    allow: "ALLOW",
    ask: "ASK",
    noFilesMsg: "No files in context yet.",
    noMemoriesMsg: "No memories saved yet.",
  },
  sidebarPanel: {
    sessionTitle: "Session {month}-{day} {hour}:{minute}",
    justNow: "just now",
    minutesAgo: "{n}m ago",
    hoursAgo: "{n}h ago",
    daysAgo: "{n}d ago",
    weeksAgo: "{n}w ago",
    newChat: "New chat",
    commandPalette: "Command palette",
    searchSessions: "Search sessions…",
    recent: "Recent",
    noSessions: "No sessions yet",
    noMatches: "No matches",
    messageCount: "{count} messages",
    deleteSession: "Delete session",
    approvalRules: "Approval rules",
    settings: "Settings",
    cancel: "Cancel",
    delete: "Delete",
  },
  extraCards: {
    sessionUsage: "Session usage",
    sessionCost: "Cost {costLabel}",
    approve: "Approve",
    reject: "Reject",
    doctorTitle: "/doctor · system check",
    balance: "balance {balanceLabel}",
    prompt: "prompt",
    reasoning: "reasoning",
    output: "output",
    cacheHit: "cache hit",
    cache: "cache",
    contextWindow: "Context window",
    topToolsUsage: "Top tools — usage",
    memoryUser: "USER · preferences",
    memoryFeedback: "FEEDBACK · corrections",
    memoryProject: "PROJECT · project rules",
    memoryReference: "REFERENCE · references",
    unknownKind: "# unknown card kind — fallback render",
  },
  thread: {
    keepSteps: "Keep {n} remaining step(s)",
    keepOriginal: "Keep original",
    you: "You",
    planRunning: "Plan running · step {step} / {total}",
    collapse: "Collapse",
    activePlan: "Active plan",
    risk: "risk",
    planStepCount: "{count} step(s)",
    planConfirmationKind: "plan confirmation",
    startPlan: "Start plan",
    approve: "Approve",
    cancel: "Cancel",
    refine: "Refine",
    checkpointKind: "plan checkpoint",
    checkpointTitle: "step {completed} / {total} complete",
    checkpointSub: "checkpoint · {completed} / {total}",
    continue: "Continue",
    stop: "Stop",
    revise: "Revise",
    planRevisionKind: "plan revision",
    rewritePlan: "Plan rewrite",
    revisionMeta: "reason · runtime constraint",
    approveRewrite: "Approve rewrite",
    shellConfirmationKind: "shell confirmation",
    runCommand: "Run command",
    runBackgroundCommand: "Run background command",
    riskMedium: "risk · medium · {kind}",
    execute: "Execute",
    reject: "Reject",
    alwaysAllow: "Always allow \"{prefix}\"",
    pathAccessKind: "path access",
    read: "read",
    write: "write",
    readPathOutsideSandbox: "Read path outside sandbox",
    writePathOutsideSandbox: "Write path outside sandbox",
    allowRead: "Allow read",
    allowWrite: "Allow write",
    alwaysAllowPrefix: "Always allow {prefix}",
    userChoiceKind: "user choice",
    optionCount: "{count} options",
    subagent: "subagent",
    copyMessage: "Copy this message",
    copyResponse: "Copy this response",
  },
  live: {
    reasoning: "live · reasoning",
    running: "running",
    you: "You",
    secondsAgo: "{seconds}s ago",
    deliveredWaiting: "Delivered · waiting for agent",
  },
  panel: {
    renderError: "{panel} panel render error",
  },
};
