// ST-BME UI-only i18n catalog: English.
// Keep this catalog for frontend chrome/status text only. Do not use it for
// prompt construction, graph node content, persisted memories, or LLM schemas.

export default {
  "common.appName": "ST-BME",
  "common.cancel": "Cancel",
  "common.clauseSeparator": "; ",
  "common.close": "Close",
  "common.confirm": "Confirm",
  "common.delete": "Delete",
  "common.edit": "Edit",
  "common.empty": "No data",
  "common.emptyParenthetical": "(empty)",
  "common.loading": "Loading…",
  "common.retry": "Retry",
  "common.save": "Save",
  "common.status": "Status",
  "common.unknown": "Unknown",

  "error.auditFailed": "Audit failed",
  "error.deleteBlocked": "The node was removed from the graph, but write-back may be blocked. Check graph state.",
  "error.deleteFailed": "Delete failed",
  "error.nodeNotFound": "Node no longer exists",
  "error.saveBlocked": "Content updated, but write-back to chat metadata may be blocked. Check graph state.",
  "error.saveFailed": "Save failed",
  "error.syncFailed": "Sync failed",

  "graph.scope.characterPov": "Character POV · {name}",
  "graph.scope.objective": "Objective Layer",
  "graph.scope.unknownCharacter": "Unknown character",
  "graph.scope.userPov": "User POV",

  "i18n.locale.auto": "Auto",
  "i18n.locale.enUS": "English",
  "i18n.locale.setting.help": "Only affects ST-BME panel text, notices, and status messages. It does not translate chat content, memory nodes, or prompts.",
  "i18n.locale.setting.label": "Interface Language",
  "i18n.locale.zhCN": "Simplified Chinese",

  "notice.completed": "{stage} completed",
  "notice.failed": "{stage} failed",
  "notice.generic": "ST-BME",
  "notice.loading": "{stage} in progress…",
  "notice.partial": "{stage} partially succeeded",

  "panel.entry.floatingTooltip": "BME Memory Graph",
  "panel.entry.menuLabel": "Memory Graph",
  "panel.entry.openPanelAction": "Open Panel",
  "panel.entry.openFailed": "Memory Graph panel failed to load. Check the console for details.",
  "panel.entry.preloadFailed": "Memory Graph panel preloading failed. Try opening it from the menu again later.",
  "panel.appearance.locale.subtitle": "Only changes the BME frontend UI. It does not translate chat content, memory nodes, or prompts.",
  "panel.appearance.locale.title": "Interface Language",
  "panel.appearance.theme.subtitle": "Choose the panel style that best fits the current story mood and reading habits.",
  "panel.appearance.theme.title": "Panel Theme",
  "panel.title": "ST-BME Memory Graph",
  "panel.header.fabToggleTitle": "Show/Hide FAB",
  "panel.header.themePickerTitle": "Switch Theme",
  "panel.tab.graph": "Graph",
  "panel.tab.actions": "Actions",
  "panel.tab.cognition": "Cognition",
  "panel.tab.config": "Settings",
  "panel.tab.dashboard": "Overview",
  "panel.tab.extraction": "Extraction",
  "panel.tab.persistence": "Persistence State",
  "panel.tab.pipeline": "Pipeline Overview",
  "panel.tab.recall": "Recall",
  "panel.tab.settings": "Settings",
  "panel.tab.tasks": "Tasks",
  "panel.tab.timeline": "Task Timeline",
  "panel.tab.trace": "Message Trace",
  "panel.tab.vector": "Vector",

  "panel.sidebar.configKicker": "Config Workspace",
  "panel.sidebar.configTitle": "ST-BME Settings",
  "panel.sidebar.configHelp": "Switch config sections on the left; view the full settings form on the right.",
  "panel.sidebar.taskKicker": "Task Monitor",
  "panel.sidebar.taskTitle": "ST-BME Task Flow",
  "panel.sidebar.taskHelp": "Switch monitoring views on the left; view real-time task status on the right.",

  "panel.configNav.api": "API Config",
  "panel.configNav.toggles": "Feature Toggles",
  "panel.configNav.advanced": "Advanced Params",
  "panel.configNav.prompts": "Task Presets",
  "panel.configNav.planner": "ENA Planner",
  "panel.configNav.appearance": "Panel Appearance",
  "panel.configNav.cleanup": "Data Cleanup",

  "panel.taskNav.pipeline": "Pipeline Overview",
  "panel.taskNav.timeline": "Task Timeline",
  "panel.taskNav.memory": "Memory Browser",
  "panel.taskNav.injection": "Injection Preview",
  "panel.taskNav.trace": "Message Trace",
  "panel.taskNav.persistence": "Persistence",

  "panel.graphView.realtime": "Live Graph",
  "panel.graphView.cognition": "Cognition View",
  "panel.graphView.summary": "Summary View",

  "panel.graphToolbar.pauseTitle": "Pause graph rendering",
  "panel.graphToolbar.zoomInTitle": "Zoom In",
  "panel.graphToolbar.zoomOutTitle": "Zoom Out",
  "panel.graphToolbar.resetTitle": "Reset",

  "panel.configWorkspace.kicker": "Config",
  "panel.configWorkspace.title": "ST-BME Config Workspace",
  "panel.configWorkspace.desc": "Configure the secondary memory model, feature toggles, fine-grained parameters, task presets, and panel theme in one place.",

  "panel.configPlaceholder.title": "Config switched to the right-side workspace",
  "panel.configPlaceholder.help": "The left nav switches pages; the right pane shows the full config form.",

  "panel.configSection.apiKicker": "API Config",
  "panel.configSection.apiTitle": "Model Connection & Vector Access",
  "panel.configSection.apiDesc": "Manage independent memory LLM and Embedding connections, preserving existing backend proxies and direct fallback logic.",
  "panel.configSection.togglesKicker": "Feature Toggles",
  "panel.configSection.togglesTitle": "Main Pipeline & Enhanced Capabilities",
  "panel.configSection.togglesDesc": "First decide which capabilities participate in the memory pipeline, then fine-tune each module's behavior in Advanced Params.",
  "panel.configSection.advancedKicker": "Advanced Params",
  "panel.configSection.advancedTitle": "Fine-grained Behavior & Scoring Strategy",
  "panel.configSection.advancedDesc": "Carries over advanced items from the old settings page. If a feature is disabled, parameters are grayed out with a prompt to enable it in Feature Toggles.",
  "panel.configSection.promptsKicker": "Task Presets",
  "panel.configSection.promptsTitle": "Task Preset Workspace",
  "panel.configSection.promptsDesc": "Maintain independent presets for each task — configure prompt assembly, generation parameters, and regex rules in one place.",
  "panel.configSection.plannerKicker": "ENA Planner",
  "panel.configSection.plannerTitle": "Plot Planning · LLM Integration",
  "panel.configSection.plannerDesc": "Intercepts before sending and calls the planning LLM, collecting context from character cards, world books, BME memory, and history plots to generate plot and note tags appended to your input.",
  "panel.configSection.appearanceKicker": "Panel Appearance",
  "panel.configSection.appearanceTitle": "Theme & Visual Sync",
  "panel.configSection.appearanceDesc": "Theme selection here stays in sync with the top palette shortcut and immediately refreshes the graph color scheme.",
  "panel.configSection.cleanupKicker": "Data Cleanup",
  "panel.configSection.cleanupTitle": "Graph, Cache & Storage Cleanup",
  "panel.configSection.cleanupDesc": "Perform high-risk cleanup operations here. All operations require double confirmation; some are irreversible.",

  "panel.cognition.ownerList": "Character Cognition List",
  "panel.cognition.spaceConsole": "Space Console",

  "panel.nodeDetail.title": "Node Details",
  "panel.nodeDetail.delete": "Delete node",
  "panel.nodeDetail.save": "Save changes",
  "panel.memoryPopup.title": "Node Details",

  "panel.graphOverlay.loading": "Loading current chat graph",

  "panel.fullscreenGraph.title": "Live Graph (Fullscreen)",
  "panel.fsToolbar.zoomInTitle": "Zoom In",
  "panel.fsToolbar.zoomOutTitle": "Zoom Out",
  "panel.fsToolbar.closeTitle": "Close",

  "panel.taskWorkspace.kicker": "Task Monitor",
  "panel.taskWorkspace.title": "ST-BME Task Flow Workspace",
  "panel.taskWorkspace.desc": "View the real-time running status and current batch progress of all task pipelines.",

  "panel.dashboard.activeNodes": "Active Nodes",
  "panel.dashboard.edgeCount": "Edge Connections",
  "panel.dashboard.archived": "Archived",
  "panel.dashboard.fragRate": "Fragmentation",
  "panel.dashboard.runStatus": "Runtime Status",
  "panel.dashboard.cognitionSpace": "Cognition / Space",
  "panel.dashboard.viewFullCognition": "View full cognition in Cognition View →",
  "panel.dashboard.recentExtract": "Recent Extraction",
  "panel.dashboard.recentRecall": "Recent Recall",

  "panel.actions.memoryGroup": "Memory Operations",
  "panel.actions.memoryGroupSub": "Call LLM to process memory nodes",
  "panel.actions.vectorGroup": "Vector Operations",
  "panel.actions.vectorGroupSub": "Call Embedding API to compute node vectors",
  "panel.actions.graphGroup": "Graph Management",
  "panel.actions.graphGroupSub": "Import, export, and dangerous operations",
  "panel.actions.persistGroup": "Persistence Repair",
  "panel.actions.persistGroupSub": "Unified repair area for local persistence and Luker primary sidecar",

  "panel.mobileNav.pipeline": "Pipeline",
  "panel.mobileNav.timeline": "Timeline",
  "panel.mobileNav.memory": "Memory",
  "panel.mobileNav.injection": "Injection",
  "panel.mobileNav.trace": "Trace",
  "panel.mobileNav.persistence": "Persistence",

  "theme.crimson": "Crimson Synth",
  "theme.cyan": "Neon Cyan",
  "theme.amber": "Amber Terminal",
  "theme.violet": "Violet Haze",
  "theme.paperDawn": "Paper Dawn",
  "theme.glacierSky": "Glacier Sky",
  "theme.crimson.desc": "High contrast, emphasizes change and alertness.",
  "theme.cyan.desc": "A cooler, analytical feel — great for long debugging sessions.",
  "theme.amber.desc": "Retro terminal vibe with stable reading hierarchy.",
  "theme.violet.desc": "Softer nighttime texture for immersive browsing.",
  "theme.paperDawn.desc": "Warm light paper base with teal accents — daytime friendly.",
  "theme.glacierSky.desc": "Light cool gray with saturated blue — pairs well with system light mode.",

  "persistence.loadState.error": "Load failed",
  "persistence.loadState.loaded": "Loaded",
  "persistence.loadState.loading": "Loading",
  "persistence.loadState.noChat": "No chat is currently open",
  "persistence.persistState.completed": "Completed",
  "persistence.persistState.failed": "Persistence failed",
  "persistence.persistState.idle": "Idle",
  "persistence.persistState.pending": "Awaiting persistence confirmation",

  "recall.card.deleteConfirm": "Delete this persisted recall injection?",
  "recall.card.confirmDeleteShort": "Delete?",
  "recall.card.empty.graphNotReady": "Graph is not ready",
  "recall.card.empty.nodesMissing": "Recalled nodes no longer exist or the graph was rebuilt",
  "recall.card.enaNote": "Memory block triggered by Ena Planner for this turn",
  "recall.card.injectionPreview": "Injection Preview",
  "recall.card.injectionPreview.ena": "ENA Injection Preview",
  "recall.card.memoryCount": "{count} memories",
  "recall.card.memoryReady": "Memories ✓",
  "recall.card.meta.authoritativeInput": "Authoritative input",
  "recall.card.meta.fallbackCount": "{count} fallback attempts",
  "recall.card.meta.manualEdit": "Manual edit",
  "recall.card.meta.source": "Source: {source}",
  "recall.card.rerun": "Rerun Recall",
  "recall.card.rerunning": "Recalling...",
  "recall.card.title": "Relevant Memory Recall",
  "recall.card.userInput": "Current user input",
  "recall.sidebar.edgeCount": "{count} edges",
  "recall.sidebar.editTitle": "Edit Recall Injection",
  "recall.sidebar.injectionEditable": "Injection Text (editable)",
  "recall.sidebar.injectionText": "Injection Text",
  "recall.sidebar.inputPlaceholder": "Enter injection text...",
  "recall.sidebar.nodeImportance": "Importance",
  "recall.sidebar.nodeName": "Name",
  "recall.sidebar.nodeTitle": "Node Details",
  "recall.sidebar.nodeType": "Type",
  "recall.sidebar.related": "Related",

  "stage.extraction": "Extraction",
  "stage.history": "History Recovery",
  "stage.recall": "Recall",
  "stage.vector": "Vector",
  "stageNotice.title.extraction": "ST-BME Extraction",
  "stageNotice.title.generic": "ST-BME",
  "stageNotice.title.history": "ST-BME History Recovery",
  "stageNotice.title.recall": "ST-BME Recall",
  "stageNotice.title.vector": "ST-BME Vector",

  "status.aborted": "Aborted",
  "status.failed": "Failed",
  "status.idle": "Idle",
  "status.loading": "Loading…",
  "status.partial": "Partially succeeded",
  "status.ready": "Ready",
  "status.running": "Running",
  "status.skipped": "Skipped",
  "status.success": "Succeeded",
  "status.waiting": "Waiting",

  "status.initial.extraction.detail": "Extraction has not run yet",
  "status.initial.recall.detail": "Recall has not run yet",
  "status.initial.runtime.detail": "Ready",
  "status.initial.vector.detail": "Vector tasks have not run yet",
  "status.graphLoad.blocked.detail": "The graph could not finish IndexedDB confirmation. Try again later.",
  "status.graphLoad.blocked.title": "Graph Load Blocked",
  "status.graphLoad.empty.detail": "This chat does not have a graph yet",
  "status.graphLoad.loaded.detail": "Chat graph loaded; waiting for the next task",
  "status.graphLoad.loading.detail": "Reading the IndexedDB graph for chat {chatId}",
  "status.graphLoad.loadingNoChat.detail": "Waiting for chat context to become ready",
  "status.graphLoad.loadingTemp.detail": "Read a temporary graph for chat {chatId}; confirming local storage",
  "status.graphLoad.loadingTempNoChat.detail": "Read a temporary graph; confirming local storage",
  "status.graphLoad.noChat.detail": "No chat is currently open",
  "status.graphLoad.noHostChat.detail": "Loaded the graph for chat {chatId}; the host chat ID is unavailable, so maintenance actions will use the graph identity",
  "status.graphLoad.noHostChatNoId.detail": "Loaded the current graph; the host chat ID is unavailable, so maintenance actions will use the graph identity",
  "status.graphLoad.shadow.detail": "Temporarily restored from this session while waiting for official chat metadata",
  "status.graphLoad.shadow.title": "Graph Temporarily Restored",
  "status.graphLoad.temp.title": "Graph Temporarily Loaded",
  "status.graphLoad.title": "Graph Loaded",
  "status.graphLoad.waiting.title": "Graph Idle",

  "history.notice.dirty.detail": "History will be automatically restored after turn {dirtyFrom}{reasonText}",
  "history.notice.dirty.reasonSuffix": "\n{reason}",
  "history.notice.dirty.title": "Message history changed",

  "llm.providerHelp.auto": "Leave blank to reuse the current chat model. BME can detect OpenAI-compatible endpoints, Anthropic Claude, and Google AI Studio / Gemini; full endpoints are normalized into reusable base URLs.",
  "llm.providerHelp.baseUrl": "Base URL: {baseUrl}",
  "llm.providerHelp.customProvider": "Provider not recognized; treating it as a custom OpenAI-compatible endpoint",
  "llm.providerHelp.knownProvider": "Detected provider: {provider}",
  "llm.providerHelp.modelFetchUnsupported": "This provider cannot fetch models automatically yet; enter the model name manually.",
  "llm.providerHelp.normalizedUrl": "Normalized URL: {apiUrl}",
  "llm.providerHelp.transport": "Transport: {transport}",

  "memory.type.character": "Character",
  "memory.type.event": "Event",
  "memory.type.location": "Location",
  "memory.type.pov_memory": "POV Memory",
  "memory.type.reflection": "Reflection",
  "memory.type.rule": "Rule",
  "memory.type.synopsis": "Global Synopsis (legacy)",
  "memory.type.thread": "Thread",

  "scope.badge.characterPov": "Character POV · {owner}",
  "scope.badge.objectiveGlobal": "Objective · Global",
  "scope.badge.objectiveRegion": "Objective · {region}",
  "scope.badge.userPov": "User POV · {owner}",
  "scope.owner.character": "Character",
  "scope.owner.unnamed": "Unnamed",
  "scope.owner.user": "User",
  "scope.meta.characterPov": "Character POV: {owner}",
  "scope.meta.userPov": "User POV: {owner}",
  "scope.region.path": "Region path: {path}",
  "scope.region.primary": "Primary region: {region}",
  "scope.region.secondary": "Secondary regions: {regions}",

  "storyTime.meta": "Story time: {time}",
  "storyTime.mixed": "mixed",
  "storyTime.mixedTime": "Mixed time",
};
