{
  "app": {
    "title": "LLM Wiki",
    "subtitle": "用 LLM 构建和维护你的个人知识库"
  },
  "nav": {
    "chat": "对话",
    "wiki": "Wiki",
    "sources": "原始资料",
    "search": "搜索",
    "graph": "关系图",
    "lint": "检查",
    "review": "待审阅",
    "settings": "设置",
    "switchProject": "切换项目",
    "updateAvailable": "有可用更新",
    "updateAvailableSuffix": " · 有更新"
  },
  "updateBanner": {
    "message": "新版本 {{version}} 已发布",
    "openDownload": "打开下载页",
    "dismiss": "关闭"
  },
  "welcome": {
    "newProject": "新建项目",
    "openProject": "打开项目",
    "recentProjects": "最近项目"
  },
  "sidebar": {
    "knowledge": "知识库",
    "files": "文件"
  },
  "research": {
    "title": "深度研究",
    "notConfigured": "深度研究信息来源尚未配置。请到设置 → 外部信息源中配置网页搜索或 AnyTXT。",
    "activeBadge": "{{running}} 个运行中{{queued, plural, =0 {} other {，{{queued}} 个排队中}}}",
    "inputPlaceholder": "输入研究主题...",
    "emptyTitle": "还没有研究任务",
    "emptyHint": "在上方输入主题，或在待审阅中点击深度研究",
    "sourcesCount": "来源（{{count}}）",
    "anyTxtSource": "AnyTXT 来源",
    "webSource": "网页来源",
    "open": "打开",
    "remove": "移除",
    "status": {
      "queued": "排队中",
      "searching": "正在搜索来源...",
      "synthesizing": "正在综合...",
      "saving": "正在保存到 Wiki...",
      "saved": "已保存",
      "done": "已完成",
      "failed": "失败"
    }
  },
  "project": {
    "createTitle": "新建 Wiki 项目",
    "name": "项目名称",
    "namePlaceholder": "my-research-wiki",
    "parentDir": "父目录",
    "parentDirPlaceholder": "/Users/you/projects",
    "template": "模板",
    "cancel": "取消",
    "create": "创建",
    "creating": "创建中...",
    "errorNameRequired": "名称和路径不能为空",
    "errorLanguageRequired": "请选择 AI 输出语言",
    "requiredHint": "填写项目名称、选择输出语言和父目录后即可创建项目。",
    "requiredMarker": "*",
    "browse": "选择父目录",
    "aiOutputLanguage": "AI 输出语言",
    "aiOutputLanguageHint": "所有 AI 生成的内容（Wiki 页面、聊天回复、Research 结果）都将使用此语言。您可以在设置 → 输出 中稍后更改。",
    "pickLanguage": "选择语言..."
  },
  "templates": {
    "research": {
      "name": "研究",
      "description": "用于深度研究，包含假设跟踪和方法论记录"
    },
    "reading": {
      "name": "阅读",
      "description": "跟踪书籍的人物、主题、情节线和章节笔记"
    },
    "personal": {
      "name": "个人成长",
      "description": "记录目标、习惯、反思和成长日志"
    },
    "business": {
      "name": "商务",
      "description": "管理团队会议、决策、项目和干系人背景"
    },
    "general": {
      "name": "通用",
      "description": "最小化初始结构，适合从空白开始"
    }
  },
  "sources": {
    "title": "原始资料",
    "import": "导入",
    "importing": "导入中...",
    "noSources": "暂无资料",
    "importHint": "导入文档，开始构建你的 Wiki",
    "importFiles": "导入文件",
    "importFolder": "文件夹",
    "importSourceFiles": "导入源文件",
    "importSourceFolder": "导入源文件夹",
    "refresh": "刷新",
    "refreshFolder": "刷新文件夹",
    "refreshingFolder": "刷新中...",
    "refreshFolderHint": "重新扫描资料文件夹，并处理新增、修改或删除的文件。",
    "refreshFolderTooltip": "按自动监控相同规则重新扫描当前项目的资料文件夹。允许的新增或修改文件会加入提取队列；已删除的资料会走正常的 Wiki 与索引清理流程；随后重建文件树。",
    "refreshFailed": "刷新原始资料失败：{{error}}",
    "ingest": "提取到 Wiki",
    "delete": "删除资料及相关 Wiki 页面",
    "deleteConfirm": "删除「{{name}}」及其相关 Wiki 页面？\n\n此操作将：\n- 删除原始资料文件\n- 删除由该资料生成的 Wiki 页面\n- 更新 index.md",
    "deleteFolder": "删除文件夹 {{name}}（递归）",
    "deleteFolderConfirm": "再次点击删除文件夹 {{name}} 及全部内容",
    "deleteFile": "删除 {{name}}",
    "deleteFileConfirm": "再次点击删除 {{name}}",
    "confirm": "确认",
    "loadingMore": "加载更多资料...",
    "sourceCount": "{{count}} 个资料",
    "sourceCount_plural": "{{count}} 个资料"
  },
  "chat": {
    "placeholder": "向你的 Wiki 提问...",
    "ingestPlaceholder": "讨论资料内容或继续追问...",
    "saveToWiki": "保存到 Wiki",
    "saving": "保存中...",
    "saved": "已保存！",
    "writeToWiki": "写入 Wiki",
    "emptyHint": "提问或开始提取资料。",
    "sources": "来源",
    "newChat": "新建对话",
    "newConversation": "新对话",
    "noConversationsYet": "暂无对话",
    "msgCount": "条消息",
    "startNewConversation": "开始新对话",
    "clickNewChatToBegin": "点击「新建对话」开始",
    "typeAMessage": "输入消息...",
    "useWebSearch": "网页搜索",
    "useAnyTxtSearch": "AnyTXT 搜索",
    "agentMode": "Agent 模式",
    "agentModes": {
      "fast": "快速",
      "standard": "标准",
      "deep": "深度",
      "localFirst": "本地优先"
    },
    "enableAnyTxtInSettings": "请在设置 → 外部信息源中启用 AnyTXT",
    "sendMessage": "发送消息",
    "stopGeneration": "停止生成",
    "attachImage": "添加图片",
    "removeImage": "移除图片",
    "imageMessage": "图片",
    "imageVisionHint": "图片会发送给当前 LLM。图片提问需要使用支持视觉的模型。",
    "imageInputUnavailable": "当前 Provider 不支持图片输入。请在设置中切换到支持视觉的 Provider。",
    "imageTooLarge": "图片过大（最大 {{max}}MB）：{{name}}",
    "tooManyImages": "图片数量过多（最多 {{max}} 张）",
    "unsupportedImageType": "不支持的图片类型：{{type}}",
    "referencePreview": "引用预览",
    "closeReferencePreview": "关闭引用预览",
    "resizeReferencePreview": "调整引用预览宽度",
    "noReferencePreviewFragment": "没有返回可预览的片段。",
    "agent": {
      "understanding": "理解问题",
      "routing": "规划下一步",
      "tool_call": "调用工具",
      "tool_result": "工具结果",
      "searching_wiki": "搜索 Wiki",
      "searching_graph": "探索知识图谱",
      "searching_web": "搜索网页",
      "searching_anytxt": "搜索 AnyTXT",
      "reading_context": "读取上下文",
      "writing": "生成回答",
      "resultCount": "{{count}} 条结果"
    }
  },
  "search": {
    "title": "搜索",
    "placeholder": "搜索 Wiki 页面...",
    "noResults": "未找到相关结果",
    "startSearching": "输入关键词搜索 Wiki 页面"
  },
  "lint": {
    "title": "Wiki 检查",
    "semantic": "语义检查 (LLM)",
    "running": "检查中...",
    "runLint": "开始检查",
    "runLintHint": "运行检查以诊断 Wiki 健康状况",
    "runLintDescription": "检查孤立页面、失效链接等问题",
    "allClear": "一切正常！",
    "noIssues": "未发现问题。",
    "warnings": "警告",
    "info": "提示",
    "sectionCount": "{{label}} ({{count}})",
    "open": "打开",
    "fixing": "修复中...",
    "fix": "修复",
    "fixFailed": "修复失败：{{error}}",
    "delete": "删除",
    "selectAll": "全选",
    "selectItem": "选择 {{page}}",
    "selectedCount": "已选择 {{count}} 项",
    "fixSelected": "修复选中项",
    "sendSelectedToReview": "转入待审阅",
    "ignoreSelected": "忽略选中项",
    "openEdit": "打开编辑",
    "skip": "跳过",
    "deletePage": "删除页面",
    "fixBrokenLink": "修复 {{page}} 中的失效链接",
    "addCrossRefs": "为 {{page}} 添加交叉引用",
    "addCrossRefsDescription": "此页面没有出站 [[wikilinks]]。建议添加与相关实体和概念的交叉引用。",
    "suggestedTarget": "建议目标：{{page}}",
    "suggestedSource": "建议来源：{{page}}",
    "deleteOrphanConfirm": "删除孤立页面「{{page}}」？",
    "typeLabels": {
      "orphan": "孤立页面",
      "broken-link": "失效链接",
      "no-outlinks": "无出站链接",
      "semantic": "语义问题"
    },
    "issues": "{{count}} 个问题",
    "issues_plural": "{{count}} 个问题"
  },
  "review": {
    "title": "待审阅",
    "clearResolved": "清除已解决",
    "refresh": "刷新",
    "refreshHint": "从磁盘重新加载审阅项",
    "selectPending": "选择待处理项",
    "selectItem": "选择 {{title}}",
    "selectedCount": "已选择 {{count}} 项",
    "markSelectedResolved": "标记为已解决",
    "dismissSelected": "忽略选中项",
    "allClear": "一切正常，无需审阅",
    "resolvedDivider": "— 已解决 —"
  },
  "settings": {
    "title": "设置",
    "llmProvider": "LLM 提供商",
    "provider": "提供商",
    "apiKey": "API 密钥",
    "apiKeyPlaceholder": "请输入你的 {{provider}} API 密钥",
    "model": "模型",
    "customModel": "或手动输入模型名称",
    "ollamaUrl": "Ollama 地址",
    "customEndpoint": "API 端点（OpenAI 兼容）",
    "customEndpointHint": "任何兼容 OpenAI 的 API 端点（如 LiteLLM、vLLM、LocalAI、Azure OpenAI）",
    "customApiKey": "请输入 API 密钥（如需要）",
    "modelPlaceholder": "请输入模型名称",
    "save": "保存",
    "saved": "已保存",
    "savedTick": "已保存 ✓",
    "changeHint": "改动会在保存后应用。",
    "saveFailed": "保存失败，部分设置可能没有保存。详细信息见控制台。",
    "language": "语言",
    "languageHint": "界面语言（Wiki 内容语言以原始资料为准）",
    "categories": {
      "general": "通用",
      "llm": "LLM 模型",
      "embedding": "向量嵌入",
      "multimodal": "图片描述",
      "webSearch": "外部信息源",
      "network": "网络",
      "sourceWatch": "资料文件夹监控",
      "scheduledImport": "定时导入",
      "mineru": "MinerU PDF",
      "apiServer": "API + MCP",
      "output": "输出偏好",
      "interface": "界面",
      "maintenance": "维护",
      "changelog": "更新日志",
      "about": "关于"
    },
    "sections": {
      "general": {
        "title": "通用",
        "description": "桌面应用的启动和窗口关闭行为。",
        "autostart": "登录系统后自动启动",
        "autostartHint": "登录这台电脑后自动启动 LLM Wiki。",
        "closeBehavior": "关闭窗口时",
        "closeBehaviorHint": "点击标题栏关闭按钮时使用这个设置。托盘菜单仍可直接退出应用。",
        "closeAsk": "每次询问",
        "closeAskHint": "显示确认框。取消会隐藏窗口，并保持后台功能继续运行。",
        "closeMinimize": "隐藏窗口",
        "closeMinimizeHint": "关闭窗口时让 LLM Wiki 留在后台运行。在 macOS 上这符合红色关闭按钮的常规行为；如果 Linux 托盘不可用，会最小化窗口而不是隐藏。",
        "closeExit": "退出应用",
        "closeExitHint": "关闭窗口时立即退出 LLM Wiki。"
      },
      "llm": {
        "title": "LLM 模型",
        "description": "每个厂商一条独立配置。打开开关即切换为当前活跃 provider；其他的会自动关闭。配置改动即时保存,每个厂商的 API Key 独立存储,切换之间不丢失。",
        "expand": "展开配置",
        "collapse": "收起",
        "toggleOff": "点击关闭",
        "toggleOn": "点击启用（会关闭其他 provider）",
        "deactivate": "停用",
        "activate": "启用",
        "apiMode": "API 模式",
        "endpoint": "Endpoint",
        "contextWindow": "上下文窗口",
        "wireOpenAi": "OpenAI 兼容",
        "wireAnthropic": "Anthropic 兼容",
        "apiKeyPlaceholderCustom": "无 Key 可留空（本地模型）",
        "apiKeyPlaceholder": "请输入 API Key",
        "savedBadge": "已保存",
        "configuredBadge": "已配置",
        "activeBadge": "● 活跃",
        "useModel": "使用 {{model}}",
        "typeCustomModel": "输入自定义模型 ID",
        "customModel": "自定义…",
        "customModelBadge": "自定义：{{model}}",
        "endpointPreviewWillUse": "将使用",
        "endpointPreviewAutoApply": "（离开输入框时自动套用）",
        "providerTests": "Provider 测试",
        "providerTestsHint": "连接测试用于确认 endpoint 能正常响应；功能测试会让模型执行一个极小指令。",
        "localCliIsolation": "隔离本地 CLI 配置",
        "localCliIsolationHint": "仅用于 Claude Code 和 Codex CLI。开启后，LLM Wiki 会让 CLI 尽量忽略用户级 rules / config / MCP / tools。这是配置隔离，不是进程沙箱：CLI 仍会使用你的本机登录凭据和网络能力。若你有意依赖本机 CLI 配置，请保持关闭。",
        "localCliIsolationOn": "隔离已开启：在 CLI 支持的范围内禁用用户规则、MCP/tools 和持久会话。本机凭据和网络访问仍由 CLI 自身控制。",
        "localCliIsolationOff": "隔离已关闭：该 Provider 可以使用你平时的本地 CLI 配置。",
        "codexCliTimeout": "Codex CLI 超时时间",
        "codexCliTimeoutUnit": "分钟",
        "codexCliTimeoutHint": "单次 Codex CLI 请求的总超时时间。长 PDF 摄取或较慢的本地 / 网络会话可适当调大。",
        "testConnection": "测试连接",
        "testFunction": "测试功能",
        "testingConnection": "正在测试连接…",
        "testingFunction": "正在测试功能…",
        "deploymentName": "部署名称",
        "azureApiVersion": "Azure API 版本",
        "azureApiVersionHint": "会作为 Azure OpenAI 的 api-version 查询参数发送。",
        "azureModelFamily": "Azure 模型族",
        "azureModelFamilyAuto": "根据部署名称自动判断",
        "azureModelFamilyGpt5": "GPT-5 / o-series 严格参数",
        "azureModelFamilyHint": "Azure 的 deployment 名称可以任意命名。如果该部署拒绝 max_tokens 或非默认 temperature，请选择 GPT-5 / o-series。",
        "reasoning": {
          "title": "Reasoning / thinking",
          "auto": "自动",
          "off": "关闭",
          "low": "低",
          "medium": "中",
          "high": "高",
          "max": "最大",
          "custom": "自定义",
          "budgetTokens": "thinking token 预算",
          "hint": "结构化任务（如 ingest）可能会自动关闭 reasoning，避免模型只输出思考过程而没有正文。"
        }
      },
      "embedding": {
        "title": "向量嵌入",
        "description": "启用语义搜索。支持 OpenAI 兼容的 /v1/embeddings endpoint、Google Gemini 原生 embedContent endpoint，以及火山方舟 / 豆包 embedding endpoint。本地模型（如 LM Studio、Ollama embedding）不需要 API Key。",
        "enableLabel": "启用向量搜索",
        "enableHint": "关掉后搜索只走 token 匹配。",
        "endpoint": "Endpoint",
        "endpointHint": "OpenAI 兼容示例：http://127.0.0.1:1234/v1/embeddings。Gemini 示例：https://generativelanguage.googleapis.com/v1beta，模型填 gemini-embedding-001。火山方舟示例：https://ark.cn-beijing.volces.com/api/v3，模型填 doubao-embedding-vision。",
        "apiKey": "API Key（可选）",
        "apiKeyPlaceholder": "本地模型留空即可",
        "model": "Model",
        "modelHint": "输入框会提示常见模型；OpenAI 兼容 endpoint 的自定义模型 ID 也可以直接填写。",
        "outputDimensionality": "输出维度（仅 Gemini）",
        "outputDimensionalityHint": "可选。仅对 Gemini 原生 embedContent endpoint 作为 `output_dimensionality` 发送；OpenAI 兼容 endpoint 会忽略此项。留空则使用模型默认值。修改模型或维度后需要重建嵌入。",
        "extraHeaders": "自定义请求头",
        "extraHeadersHint": "可选。每行一条，格式 `Header-Name: value`。用于需要按请求头路由的网关，例如 mify 需要 `X-Model-Provider-Id: siliconflow`。Authorization、Content-Type、Host、Content-Length、x-goog-api-key 由系统管理，会被忽略。",
        "chunking": "切分参数",
        "maxChunkChars": "每块最大字符数",
        "maxChunkCharsHint": "单个 chunk 的目标长度。endpoint 上下文较小时（llama.cpp n_ctx=512、mxbai-embed-large 等）调低（如 500）。",
        "overlapChunkChars": "重叠字符数",
        "overlapChunkCharsHint": "相邻 chunk 之间的重叠字符数，避免语义在边界被切断。",
        "providerTests": "Provider 测试",
        "providerTestsHint": "连接测试会发送一次短 embedding 请求；功能测试会验证返回的是稳定、有限的向量，并显示维度。",
        "testConnection": "测试连接",
        "testFunction": "测试功能",
        "testingConnection": "正在测试 embedding 连接…",
        "testingFunction": "正在测试 embedding 功能…",
        "statsHeading": "索引状态",
        "chunkCount": "已索引 {{count}} 个 chunk",
        "lastErrorHeading": "上次 embedding 错误",
        "reindexAll": "重新索引全部页面",
        "reindexing": "索引中 {{done}}/{{total}}…",
        "reindexDone": "已索引 {{count}} 个页面。",
        "reindexError": "重新索引失败：{{message}}",
        "legacyPromptTitle": "检测到旧版（按页）索引",
        "legacyPromptBody": "当前项目在旧版按页向量存储里有 {{count}} 条记录。新版按 chunk 索引检索质量更高,但需要一次性重新 embed。点击\"重新索引全部页面\"完成升级。",
        "dropLegacy": "删除旧版索引",
        "dropLegacyDone": "旧版索引已删除。"
      },
      "multimodal": {
        "title": "图片描述",
        "description": "导入时调用视觉模型为 PDF / DOCX / PPTX 中提取的图片生成事实性描述。描述会写入源 markdown 的 alt 属性，语义搜索按图片内容查询时就靠它命中。按图片字节 SHA-256 缓存，跨文档重复出现的 logo / 图表模板只调用一次。",
        "enableLabel": "导入时生成图片描述",
        "enableHint": "关：ingest 时把图片引用从内容里剥掉 —— wiki 页面里不会出现图片，搜索也不会返回。（图片仍会落到 wiki/media/，原始文档预览能看到。）开：每张新图调用视觉模型生成事实性 caption（按 hash 缓存），写入 wiki 页面 alt 属性。",
        "stateOn": "已开启",
        "stateOff": "已关闭",
        "useMainLabel": "使用主 LLM 生成 caption",
        "useMainHint": "复用「设置 → LLM Provider」里选的模型。仅当主模型支持图像输入时打开 —— 纯文本模型会返回 400。",
        "dedicatedHeading": "独立视觉端点",
        "provider": "Provider",
        "ollamaUrl": "Ollama URL",
        "customEndpoint": "端点 URL",
        "customEndpointHint": "OpenAI 兼容的 /v1 根地址。LM Studio、llama.cpp server、vLLM、LocalAI 都可以。",
        "azureEndpoint": "Azure 端点",
        "azureEndpointHint": "填写 Azure OpenAI resource endpoint。模型字段填写 deployment name。",
        "azureApiVersion": "Azure API 版本",
        "azureApiVersionHint": "会作为 Azure OpenAI 的 api-version 查询参数发送。",
        "azureModelFamily": "Azure 模型族",
        "azureModelFamilyAuto": "根据部署名称自动判断",
        "azureModelFamilyGpt5": "GPT-5 / o-series 严格参数",
        "azureModelFamilyHint": "如果该部署拒绝 max_tokens 或非默认 temperature，请选择 GPT-5 / o-series。",
        "azureDeployment": "部署名称",
        "apiKey": "API Key",
        "apiKeyPlaceholder": "本地 / 无鉴权端点留空",
        "model": "模型",
        "modelHint": "必须是支持视觉输入的模型。文本-only 模型会在首次 ingest 时报 400 / image-not-supported。",
        "concurrency": "并发 caption 请求数",
        "concurrencyHint": "并行多少个 caption 请求。1 = 严格串行。多数场景 4 合适；只有在高性能 GPU 或托管端点上才考虑 8+。",
        "costHeading": "费用提示",
        "costPoint1": "每张新图触发一次视觉模型调用（约 500-2000 token，取决于模型和 thinking 模式）。",
        "costPoint2": "Caption 按图片字节 SHA-256 缓存。跨文档重复的 logo / 通用图表模板只调用 ONE 次。",
        "costPoint3": "Rust 端过滤掉小于 100×100 像素的图，并限制每文档最多 500 张 —— 病态 PDF 不会无限放大费用。",
        "costPoint4": "批量 ingest 推荐用本地视觉模型（LM Studio / Ollama 跑 Qwen2.5-VL）；托管视觉 API 留给少量高价值文档。"
      },
      "webSearch": {
        "title": "外部信息源",
        "description": "配置 LLM Wiki 可以使用的外部信息来源。",
        "deepResearchSources": "深度研究来源模式",
        "deepResearchSourcesHint": "网页搜索使用当前选中的在线搜索 Provider。AnyTXT 会通过本机 ATGUI.exe 的本地索引搜索文件内容。",
        "sourceWeb": "网页搜索",
        "sourceAnyTxt": "AnyTXT",
        "sourceBoth": "两者都用",
        "webProviders": "网页搜索 Provider",
        "anyTxtTitle": "AnyTXT 本地文件搜索",
        "anyTxtDescription": "把 AnyTXT 的本地 JSON-RPC API 作为 Deep Research 的信息来源。开始研究前请保持 ATGUI.exe 运行。",
        "anyTxtEndpoint": "AnyTXT 端点",
        "anyTxtFilterDir": "搜索文件夹",
        "anyTxtFilterDirPlaceholder": "留空则使用 AnyTXT 默认范围；Windows 如需其他盘符请指定盘符或文件夹",
        "anyTxtFilterExt": "扩展名过滤",
        "anyTxtLimit": "最多本地结果数",
        "anyTxtHint": "AnyTXT pattern 会直接传给 AnyTXT，因此会使用 AnyTXT 自己的搜索语法。AnyTXT API 是本地 Beta 能力，请遵守 AnyTXT 的使用条款。",
        "anyTxtBroadDirWarning": "这个目录范围很大。Deep Research 可能会把匹配到的本地文件片段（包括敏感内容）发送给当前选择的 LLM。",
        "expand": "展开",
        "collapse": "收起",
        "activate": "启用",
        "deactivate": "停用",
        "configuredBadge": "已配置",
        "activeBadge": "活跃",
        "savedBadge": "已保存",
        "instanceUrl": "实例 URL",
        "ollamaHint": "使用官方 Ollama Web Search API（`https://ollama.com/api/web_search`），需要填写 Ollama API Key。",
        "firecrawlHint": "使用 Firecrawl 的匿名搜索 API（`https://api.firecrawl.dev/v2/search`），这里不需要 API Key；但 Firecrawl 可能会拦截可疑 IP。",
        "searxngJsonHint": "实例必须允许 JSON 搜索响应（`format=json`）。",
        "searchCategories": "搜索分类",
        "searxngCategoriesHint": "分类会作为 SearXNG 的 `categories` 参数发送。",
        "searchEngine": "搜索引擎 / 分类",
        "customSerpApiPlaceholder": "自定义 SerpApi engine，例如 google_finance",
        "customSerpApiHint": "自定义 engine 会作为 SerpApi 的 `engine` 参数发送。",
        "testProvider": "测试搜索",
        "testRunning": "测试中...",
        "testSuccess": "搜索测试成功（{{count}} 条结果）。",
        "testSuccess_plural": "搜索测试成功（{{count}} 条结果）。",
        "testNoResults": "连接可用，但测试查询没有返回结果。",
        "testFailed": "搜索测试失败：{{message}}",
        "firecrawlIpBlocked": "Firecrawl 匿名搜索已被当前 IP 拦截。请切换其他网页搜索 Provider，或尝试更换网络。",
        "firecrawlNetworkError": "无法连接 Firecrawl Search。请检查网络，或切换其他网页搜索 Provider。",
        "firecrawlInvalidJson": "Firecrawl 返回了无效响应。请稍后重试，或切换其他网页搜索 Provider。",
        "configureBeforeTesting": "请先配置"
      },
      "network": {
        "title": "网络",
        "description": "让所有外部 HTTP 请求（LLM、向量、搜索、更新检查）走代理。点击保存即时生效，不需要重启应用。",
        "enable": "启用代理",
        "url": "代理地址",
        "urlHelp": "完整 URL，必须带协议头。支持：http://、https://（当前版本不支持 SOCKS5）。",
        "bypassLocal": "本地地址不走代理（推荐）",
        "bypassLocalHelp": "对 localhost、127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 以及 *.local 的请求会绕过代理。如果你用 Ollama / LM Studio 或局域网内的 LLM 服务，请保持开启。"
      },
      "sourceWatch": {
        "title": "资料文件夹自动监控",
        "description": "监控 raw/sources 的外部变化，并选择哪些文件允许自动进入提取队列。",
        "enable": "监控项目资料文件夹",
        "enableDescription": "刷新原始资料列表，并为 raw/sources 下允许的新文件或修改文件建立提取任务。",
        "autoIngest": "自动提取允许的原始资料文件",
        "autoIngestDescription": "关闭后，外部变化仍会刷新文件树，但不会创建提取任务。",
        "noProject": "打开项目后才能修改这个项目级设置。",
        "fileTypes": "允许的文件类型",
        "fileTypesDescription": "常见文档类型默认开启。媒体、二进制、源码和配置类格式默认关闭，需要时再手动选择。",
        "exclusions": "排除规则和限制",
        "maxSize": "自动提取的最大文件大小（MB）",
        "excludeDirs": "排除的文件夹",
        "excludeDirsPlaceholder": ".git, node_modules, drafts, subdir/drafts",
        "excludeDirsHint": "文件夹名称会匹配任意路径段。subdir/drafts 这类路径会匹配对应的嵌套文件夹。",
        "excludeExtensions": "排除的文件扩展名",
        "excludeExtensionsPlaceholder": "tmp, bak, exe, dll, iso, dmg",
        "excludeExtensionsHint": "不需要写点号。这些扩展名会覆盖上面的允许文件类型勾选。",
        "excludeGlobs": "排除的文件名模式",
        "excludeGlobsHint": "用逗号分隔模式，例如 *.draft.*、~$*、.~lock.*#。",
        "groups": {
          "documents": "文档",
          "presentations": "演示文稿",
          "spreadsheets": "表格",
          "web": "网页文档",
          "data": "数据 / 配置",
          "images": "图片",
          "media": "音频 / 视频",
          "code": "源码"
        }
      },
      "scheduledImport": {
        "title": "定时导入",
        "description": "自动监控指定目录，按固定间隔导入新增或修改的文件。",
        "enable": "启用定时导入",
        "directory": "监控目录",
        "directoryHelp": "请选择当前 LLM Wiki 项目之外的外部文件夹。raw、raw/sources、wiki、.llm-wiki 等项目内部目录会被跳过，因为资料文件夹监控已经负责这些内容。",
        "managedPathWarning": "该路径位于当前 LLM Wiki 项目内部，已经由资料文件夹监控负责。请选择外部文件夹，避免重复扫描。",
        "privacyNotice": "所选目录中的文件可能会被复制到当前项目，并在提取时发送给你配置的 LLM。源目录中删除文件不会自动删除项目内已导入内容。",
        "browse": "浏览",
        "selectDirectory": "选择监控目录",
        "interval": "扫描间隔（分钟）",
        "intervalHelp": "检查变更的频率。最小值：1 分钟。",
        "scanNow": "立即扫描",
        "scanning": "扫描中...",
        "lastScan": "上次扫描：{{time}}",
        "never": "从未"
      },
      "apiServer": {
        "title": "API + MCP",
        "description": "通过本地 HTTP API 将 LLM Wiki 开放给你的脚本和工具，也可以额外启用内置 MCP 服务供智能体客户端访问。",
        "enable": "启用本地 HTTP API",
        "enableHint": "关闭后，即使已配置 token，除 /health 外的所有接口都会返回 503。可作为不清空 token 的临时关闭开关。",
        "status": "状态",
        "statusRunning": "运行中",
        "statusOpen": "运行中，无需鉴权",
        "statusNoToken": "运行中，未配置 token",
        "statusDisabled": "已禁用",
        "statusStarting": "启动中…",
        "statusPortConflict": "端口 19828 被占用",
        "statusError": "错误",
        "statusUnknown": "未知",
        "baseUrl": "服务地址",
        "openHealth": "打开 /health",
        "openHealthHint": "在系统浏览器中打开。/health 是唯一不需要 token 的接口。",
        "allowUnauthenticated": "允许无 token 访问",
        "allowUnauthenticatedHint": "仅用于可信的本地智能体。启用后，这台机器上的任何进程或浏览器页面都可以调用 API。",
        "allowLanAccess": "允许 API 和 Clip server 局域网访问",
        "allowLanAccessHint": "重启应用后，API 和 Clip server 会监听 0.0.0.0，而不是 127.0.0.1。仅在可信网络中使用，除非完全信任局域网，否则请保留 token 鉴权。",
        "mcpEnable": "启用 MCP 访问",
        "mcpEnableHint": "MCP 复用本地 API 和同一套 token 规则。保持 HTTP API 启用后，将 MCP 客户端连接到内置 Node 服务即可。",
        "mcpUsage": "MCP 使用说明",
        "mcpUsageHint": "先执行一次 `npm run mcp:build`，然后让 MCP 客户端运行下面的服务配置。除非启用了无认证访问，否则需要设置 LLM_WIKI_API_TOKEN。",
        "mcpPathUnavailable": "没有找到 MCP 服务入口。请在 LLM Wiki 仓库中先执行 `npm run mcp:build`，然后重新打开设置。",
        "token": "访问令牌",
        "tokenHint": "除非启用了无认证访问，否则必须配置。通过 `Authorization: Bearer <token>` 或 `X-LLM-Wiki-Token: <token>` 发送。设置了环境变量 LLM_WIKI_API_TOKEN 时优先生效。",
        "tokenPlaceholder": "粘贴已有 token，或点击生成",
        "generate": "生成新 token",
        "show": "显示",
        "hide": "隐藏",
        "copy": "复制",
        "copied": "已复制",
        "tokenMissing": "未配置 token —— 所有接口都会返回 401",
        "tokenUnused": "启用无认证访问时，token 不会参与鉴权",
        "envTokenActive": "LLM_WIKI_API_TOKEN 正在生效，并会覆盖此处填写的 token",
        "tokenWeak": "token 长度偏短 —— 建议使用「生成新 token」获得 256 位熵",
        "saveFirst": "保存设置后 API/MCP 改动才会生效",
        "saveFirstExample": "请先保存设置，然后再复制示例请求。",
        "tokenWarning": "请妥善保管。任何能访问这台机器 localhost 的进程拿到 token 后，都能通过 API 读取你的项目内容。",
        "tokenQueryWarning": "推荐使用 Authorization header —— 将 token 放在 ?token=… 查询参数里会泄露到 shell 历史、日志和 Referer。",
        "sample": "示例请求",
        "endpoints": "接口列表",
        "endpointsHint": "把 {id} 替换为项目 UUID、项目文件系统路径，或字面量 'current'。",
        "endpointHealthNote": "存活探针。无需鉴权。",
        "endpointProjectsNote": "列出所有已知项目及其 ID 和路径。",
        "endpointFilesNote": "?root=wiki|sources|all；?recursive=false；?maxFiles=N（≤10000）。",
        "endpointContentNote": "?path=wiki/index.md —— 仅文本文件，最大 2 MB。",
        "endpointReviewsNote": "?status=unresolved|resolved|all；?type=missing-page；?limit=N。默认返回未解决的 Review 项。",
        "endpointPatchReviewNote": "更新单个 Review 项。JSON body：{ resolved?, action? }（resolved 默认为 true；传 false 可重新打开）。使用 Review 标签页的刷新按钮重新读取。",
        "endpointBulkResolveNote": "批量解决 Review 项。JSON body：{ ids, action? }。返回 { resolved, notFound, count }。",
        "endpointSearchNote": "JSON body：{ query, topK?, includeContent?, queryEmbedding? }。配置嵌入后使用统一的关键词 + 向量检索。",
        "endpointGraphNote": "?q=…&nodeType=…&limit=N —— 基于 wiki/*.md 的双链图谱。",
        "endpointRescanNote": "使用你的资料文件夹监控配置触发后端重新扫描。",
        "endpointChatNote": "尚未实现（返回 501）。"
      },
      "output": {
        "title": "输出偏好",
        "description": "影响生成内容的语言、对话历史长度等参数。",
        "aiLanguage": "AI 输出语言",
        "aiLanguageHint": "强制 AI 生成内容（chat 回复、wiki 页面、research 结果、lint 报告）使用指定语言。选 \"Auto\" 让 AI 跟随用户输入或源文档的语言。",
        "historyLength": "对话历史长度",
        "historyHint": "每次请求发给 AI 的历史消息条数。多 = 上下文更完整但更费 token。",
        "historyCurrent": "当前 {{count}} 条消息（约 {{turns}} 轮对话）"
      },
      "interface": {
        "title": "界面",
        "description": "界面语言和外观样式。切换后立即生效并持久化。",
        "uiLanguage": "UI 语言",
        "uiLanguageHint": "只影响按钮、标签这些 UI 文案,不影响 AI 输出语言(那个在\"输出偏好\"里单独设置)。",
        "theme": "主题",
        "themeHint": "预览会立即生效。保存设置后会记住所选主题。跟随系统会使用操作系统的外观设置。",
        "themeLight": "浅色",
        "themeDark": "深色",
        "themeSystem": "跟随系统",
        "zoom": "界面缩放",
        "zoomHint": "缩放应用内文字和基于 rem 的间距。少数固定像素面板会保留实际尺寸限制。",
        "zoomIn": "放大",
        "zoomOut": "缩小"
      },
      "maintenance": {
        "title": "维护",
        "description": "清理 wiki 的工具 —— 检测并合并 LLM 在多次再导入时用不同名字创建的重复实体 / 概念。",
        "noProject": "请先打开一个项目。",
        "noLlm": "请先配置 LLM 服务。",
        "dedup": {
          "title": "检测重复实体 / 概念",
          "description": "让 LLM 扫描全部 entity / concept 页面，把可能指向同一主题但用了不同名字的页面分组（中英对照、单复数、缩写与全称等）。每一组都需要你确认后才会合并。合并任务会进入串行队列依次执行，避免交叉引用被并发改写覆盖。",
          "scanButton": "扫描重复项",
          "scanning": "扫描中…",
          "noneFound": "未发现重复分组，wiki 很干净。",
          "candidates": "{{n}} 个候选",
          "canonicalLabel": "保留以下 slug 作为主条目：",
          "mergeButton": "合并到 {{slug}}",
          "merging": "合并中…",
          "queued": "排队中",
          "queuedAhead": "排队中（前面还有 {{n}} 个）",
          "failed": "失败（{{retries}}/3）",
          "cancel": "取消",
          "retry": "重试",
          "delete": "删除",
          "queueTitle": "进行中的合并",
          "queueDescription": "上次扫描后排进队列、还未跑完的合并任务。每次只跑一个。",
          "notDuplicates": "不是重复",
          "merged": "已合并",
          "skipped": "已标记为不重复"
        }
      },
      "changelog": {
        "title": "更新日志",
        "description": "每个版本对用户可见的功能改动，最新版本在最前面。"
      },
      "about": {
        "title": "关于",
        "description": "构建信息和运行时状态。",
        "version": "版本",
        "clipServer": "Clip 服务",
        "apiServer": "API 服务",
        "apiDisabled": "已禁用",
        "apiOpen": "运行中（无认证）",
        "apiNoToken": "运行中（未配置 token）",
        "updateCheck": "更新检查",
        "lastChecked": "上次检查",
        "lastCheckedNever": "从未",
        "unreachable": "未能连接 GitHub",
        "checkNow": "立即检查",
        "checking": "检查中…",
        "upToDate": "已是最新版本（v{{version}}）。",
        "updateAvailable": "有可用更新：v{{version}}",
        "openDownload": "打开下载页",
        "later": "稍后",
        "autoCheck": "应用启动时自动检查更新（每 6 小时最多一次）",
        "appDescription": "一个由 LLM 驱动的个人知识库。源代码："
      },
      "mineru": {
        "title": "MinerU PDF 解析",
        "description": "使用 MinerU 云端 API 获得更高质量的 PDF 解析（表格、公式、复杂排版）。默认使用内置 pdfium 提取。",
        "privacyNotice": "启用后，PDF 内容会上传到 MinerU 云端进行解析。除非你接受这一点，否则不要用于敏感文档。",
        "enabled": "启用 MinerU",
        "token": "API Token",
        "tokenHint": "从 mineru.net 获取您的 Token",
        "model": "模型版本",
        "modelVlm": "VLM（推荐，适合复杂排版）",
        "modelPipeline": "Pipeline（更快）",
        "modelHint": "PDF 解析仅使用 pipeline 或 vlm。MinerU-HTML 用于 HTML 文件，这里不会使用。",
        "test": "测试连接",
        "testQuotaNotice": "连接测试会向 MinerU 提交一个小型示例文件，可能消耗少量额度。",
        "testing": "测试中...",
        "testSuccess": "连接成功",
        "testFailed": "测试失败"
      }
    }
  },
  "preview": {
    "selectFile": "选择文件以预览",
    "notAvailable": "该文件类型暂不支持预览"
  },
  "activity": {
    "processing": "处理中：{{title}}",
    "done": "已完成：{{title}}",
    "clearCompleted": "清除已完成",
    "ingestQueue": "摄取队列",
    "ingestQueuePaused": "摄取队列（已暂停）",
    "pauseQueue": "暂停",
    "resumeQueue": "继续",
    "pauseQueueTitle": "当前任务完成后暂停，不再启动新的摄取任务。",
    "resumeQueueTitle": "继续处理排队中的摄取任务",
    "queueCompleteCount": "{{done}}/{{total}} 已完成",
    "failedCount": "{{count}} 个失败",
    "cancelAll": "全部取消",
    "cancelAllTitle": "取消所有排队和正在处理的任务",
    "cancelAllConfirm": "要取消全部 {{count}} 个排队/处理中摄取任务吗？正在处理任务产生的部分文件会被移除；失败任务会保留，之后仍可重试。",
    "retryFailed": "重试失败项",
    "retryFailedTitle": "重试所有失败的摄取任务"
  },
  "fileTree": {
    "noProject": "未打开项目"
  },
  "graph": {
    "openProject": "打开项目以查看关系图",
    "buildingGraph": "正在构建关系图...",
    "retry": "重试",
    "noPages": "暂无页面",
    "importSourcesHint": "导入资料以开始构建知识图谱",
    "knowledgeGraph": "知识关系图",
    "hidden": "已隐藏",
    "pages": "页面",
    "links": "链接",
    "searchLabel": "搜索关系图",
    "searchPlaceholder": "搜索节点...",
    "clearSearch": "清除关系图搜索",
    "closeSearch": "关闭关系图搜索",
    "noSearchResults": "没有匹配的节点",
    "noVisibleNodes": "没有可见节点",
    "filter": "过滤器",
    "reset": "重置",
    "type": "类型",
    "community": "社区",
    "insights": "洞察",
    "resizing": "调整中...",
    "graphFilters": "关系图过滤器",
    "quickFilters": "快速过滤",
    "hideIndexOverview": "隐藏索引/概述/日志",
    "hideIsolated": "隐藏孤立节点",
    "minLinks": "最小链接数",
    "minLinksHint": "隐藏链接数低于此值的节点",
    "maxLinks": "最大链接数",
    "maxLinksHint": "隐藏链接数超过此值的节点",
    "displayTuning": "显示调节",
    "nodeSize": "节点大小",
    "spacing": "间距",
    "displayTuningHint": "用这些控制项让大型关系图在小屏幕上更容易阅读。",
    "nodeTypes": "节点类型",
    "hiddenNodes": "已隐藏节点",
    "show": "显示",
    "showingStats": "显示 {{pages}}/{{total}} 个页面和 {{links}}/{{totalLinks}} 条链接。",
    "hideThisNode": "隐藏此节点",
    "nodeTypesLabel": "节点类型",
    "communitiesLabel": "社区",
    "showAll": "显示全部",
    "cluster": "簇 {{id}}",
    "surprisingConnections": "意外连接",
    "knowledgeGaps": "知识缺口",
    "deepResearch": "深度研究",
    "generatingTopic": "正在生成研究主题...",
    "researchTopic": "研究主题",
    "searchQueries": "搜索查询",
    "cancel": "取消",
    "startResearch": "开始研究",
    "nodeTypeLabels": {
      "entity": "实体",
      "concept": "概念",
      "source": "来源",
      "query": "查询",
      "synthesis": "综合",
      "overview": "概述",
      "comparison": "比较",
      "finding": "发现",
      "thesis": "论点",
      "methodology": "方法论",
      "other": "其他"
    }
  },
  "time": {
    "justNow": "刚刚",
    "minutesAgo": "{{count}} 分钟前",
    "hoursAgo": "{{count}} 小时前",
    "daysAgo": "{{count}} 天前"
  }
}
