// 简体中文 export default { chat: { stop: "停止", welcome: { title: "欢迎使用 Infio Copilot", subtitle: "探索不同模式来提升您的生产力" }, navigation: { history: "聊天记录", historyDesc: "查看和管理您的对话历史记录", insights: "AI 洞察", insightsDesc: "查看 AI 生成的洞察和分析", search: "语义搜索", searchDesc: "使用 RAG 在笔记库中进行语义搜索", commands: "命令", commandsDesc: "创建和管理用于快速操作的自定义命令", customMode: "自定义模式", customModeDesc: "定义具有特定行为的个性化 AI 模式", mcp: "MCP", mcpDesc: "管理模型上下文协议集成" }, errors: { failedToLoadConversation: "加载对话失败", failedToSaveHistory: "保存聊天记录失败", failedToApplyChanges: "应用更改失败", conversationNotFound: "未找到对话", fileNotFound: "未找到文件:{{path}}", failedToApplyEditChanges: "应用编辑更改失败", failedToSearchAndReplace: "搜索和替换失败", failedToDeleteConversation: "删除对话失败", titleRequired: "标题不能为空", failedToUpdateTitle: "更新标题失败" }, apply: { changesApplied: "更改已成功应用", changesRejected: "用户拒绝了更改" }, search: { noResultsFound: "未找到 '{{query}}' 的结果" }, history: { title: "聊天记录", description: "管理您的对话历史,并在不同聊天之间切换", noConversations: "没有对话", noSearchResults: "未找到搜索结果", noMatchingChats: "未找到匹配的聊天", noChats: "没有可用的聊天", newChat: "新建聊天", searchPlaceholder: "搜索对话...", editTitle: "编辑标题", deleteChat: "删除聊天", deleteConversation: "删除对话", save: "保存", cancel: "取消", yesterday: "昨天", daysAgo: "天前", // New keys for ChatHistoryView cleanup: "清理", cleanupTitle: "清理历史版本", cleanupConfirm: "此操作将永久删除所有对话的历史版本,只保留最新版。这有助于清理数据,但操作不可撤销。确定要继续吗?", cleanupSuccess: "成功清理了 {count} 个过时的对话文件。", cleanupNone: "没有需要清理的对话文件。", cleanupFailed: "清理失败,请检查开发者控制台获取更多信息。", multiSelect: "多选", exitSelection: "退出选择模式", enterSelection: "进入选择模式", selectionMode: "选择模式 - 已选择 {count} 个对话", selectAll: "全选", unselectAll: "取消全选", batchDelete: "批量删除", batchDeleteConfirm: "确定要删除选中的 {count} 个对话吗?此操作不可撤销。", batchDeleteSuccess: "成功删除 {count} 个对话", batchDeleteFailed: "{count} 个对话删除失败", selectFirst: "请先选择要删除的对话", currentWorkspace: "当前工作区", showAllChats: "显示所有对话", showWorkspaceChats: "只显示当前工作区对话", workspaceLabel: "工作区: {workspace}" }, shortcutInfo: { editInline: "行内编辑", chatWithSelect: "与选定文本聊天", submitWithVault: "使用 Vault 提交" }, searchResults: { showReferencedDocuments: "显示引用的文档" }, fileResults: { showReadFiles: "显示读取的文件" }, websiteResults: { showReadWebsites: "显示网页内容文件" }, LLMResponseInfoPopover: { header: "LLM 响应信息", tokenCount: "Token 数量", promptTokens: "提示 Tokens", completionTokens: "补全 Tokens", totalTokens: "总 Tokens", model: "模型", estimatedPrice: "预估价格", usageNotAvailable: "此模型无法获取使用统计信息", notAvailable: "不可用" }, queryProgress: { readingMentionableFiles: "正在读取提及的文件", readingFiles: "正在读取文件", readingFilesDone: "文件读取完成", filesLoaded: "已加载 {count} 个文件", readingWebsites: "正在读取网页内容", readingWebsitesDone: "网页内容读取完成", websitesLoaded: "已加载 {count} 个网页", indexing: "正在索引", file: "文件", chunkIndexed: "块已索引", queryingVault: "正在查询 Vault", readingRelatedFiles: "正在读取相关文件" }, reactMarkdown: { allow: "允许", allowing: "正在允许...", success: "成功", failed: "失败", switchToMode: '切换到 "{mode}" 模式', semanticSearchInPath: '在 {path} 中语义搜索文件 "{query}"', webSearch: "网页搜索:{query}", searching: "正在搜索...", done: "完成", searchAndReplaceInPath: "在 {path} 中搜索和替换", applying: "正在应用...", apply: "应用", reasoning: "推理", plan: "规划", readFile: "读取文件:{path}", listFiles: "列出文件:{path}", fetchUrlsContent: "获取 URL 内容", fetching: "正在获取...", copied: "已复制", copy: "复制", editOrApplyDiff: "{mode}:{path}", loading: "加载中...", matchSearchInPath: '在 {path} 中匹配搜索文件 "{query}"', regexSearchInPath: '在 {path} 中正则搜索文件 "{regex}"', createNewNote: "创建新笔记", copyMsg: "复制消息", taskCompletion: "任务完成", askFollowupQuestion: "询问后续问题:", viewDetails: "查看详情" }, input: { search: "搜索", submit: "提交", collectedModels: "收集的模型", loading: "加载中...", image: "图片", createCommand: "创建命令", uploadNewImage: "上传新图片" } }, inlineEdit: { placeholder: "输入指令,Enter 提交,Esc 关闭", fetchModelsError: "获取 Provider 模型失败:", submitting: "提交中...", submit: "提交", ragNotNeeded: "行内编辑不需要 RAG", noActiveFile: "没有活动文件", noActiveEditor: "没有活动编辑器", noTextSelected: "未选择文本", noActiveContext: "没有活动文件、编辑器或选区", invalidChatModel: "无效的聊天模型", emptyLLMResponse: "LLM 返回空响应", invalidActiveFile: "无效的活动文件", readFileError: "读取文件失败:", applyChangesError: "应用更改失败", inlineEditError: "行内编辑出错:", }, prompt: { "title": "模型提示词设置", "description": "点击 + 创建新模式", "modeName": "模式名称", "modeNameDescription": "模式描述", "modeNamePlaceholder": "请输入模式名称...", "builtinModeNameWarning": "内置模式名称无法修改", "modeNameRequirements": "模式名称只能包含字母、数字和连字符", "roleDefinition": "角色定义", "roleDefinitionDescription": "设置专业领域和回复风格", "roleDefinitionPlaceholder": "请输入角色定义...", "availableFeatures": "可用功能", "builtinFeaturesWarning": "内置模式的可用功能不能修改", "readFiles": "读取文件", "editFiles": "编辑文件", "webSearch": "网络搜索", "modeSpecificRules": "模式特定规则(可选)", "modeSpecificRulesDescription": "模式特定规则", "modeSpecificRulesPlaceholder": "请输入模式自定义指令...", "supportReadingConfig": "支持从以下位置读取配置", "file": "文件", "overrideSystemPrompt": "覆盖系统提示", "overrideDescription": "您可以通过创建文件来完全替换此模式的系统提示(不包括角色定义和自定义指令)", "overrideWarning": "。这是一个非常高级的功能,将覆盖所有内置提示,包括工具使用,请谨慎使用", "previewSystemPrompt": "预览系统提示", "save": "保存" }, command: { "createQuickCommand": "创建快捷命令", "name": "名称", "content": "内容", "createCommand": "创建命令", "searchPlaceholder": "搜索命令...", "noCommandsFound": "未找到命令", "updateCommand": "更新命令", "errorContentRequired": "请输入模板内容", "errorNameRequired": "请输入模板名称" }, main: { openNewChat: "打开新聊天", openInfioCopilot: '打开 Infio Copilot', addSelectionToChat: '将选定内容添加到聊天', rebuildVaultIndex: '重建整个 Vault 索引', updateVaultIndex: '更新已修改文件的索引', autocompleteAccept: '接受自动完成', autocompletePredict: '手动触发自动完成', autocompleteToggle: '切换自动完成', autocompleteEnable: '启用自动完成', autocompleteDisable: '禁用自动完成', inlineEditCommand: '文本内编辑', }, notifications: { rebuildingIndex: '正在重建 Vault 索引...', indexingChunks: '正在索引块:{completedChunks} / {totalChunks}', rebuildComplete: 'Vault 索引重建完成', rebuildFailed: 'Vault 索引重建失败', updatingIndex: '正在更新 Vault 索引...', updateComplete: 'Vault 索引已更新', updateFailed: 'Vault 索引更新失败', selectTextFirst: '请先选择一些文本', migrationFailed: '迁移到 JSON 存储失败。请检查控制台以获取详细信息。', reloadingInfio: '因迁移而重新加载 "infio"', }, applyView: { applyingFile: '正在应用: {{file}}', acceptChanges: '接受更改', acceptAll: '全部接受 {{shortcut}}', rejectChanges: '拒绝更改', rejectAll: '全部拒绝 {{shortcut}}', fileNotFound: '文件未找到', acceptLine: '接受此行', excludeLine: '排除此行', }, previewView: { close: '关闭预览', }, settings: { // 模型设置部分 ApiProvider: { label: 'LLM 提供商:', labelDescription: '选择您想要使用的 LLM 提供商,支持配置多个提供商,API 密钥将安全保存在本地', useCustomBaseUrl: '使用自定义基础 URL', useCustomBaseUrlDescription: '为该提供商使用自定义的API端点URL', enterApiKey: '输入您的 API 密钥', enterApiKeyDescription: 'API Key 可以从官方网站{provider_api_url}获取', enterCustomUrl: '输入您的自定义 API 端点 URL', }, Models: { chatModel: '聊天模型:', chatModelDescription: '用于日常对话和问答的模型,处理大部分聊天交互', autocompleteModel: '自动补全模型:', autocompleteModelDescription: '用于代码和文本自动补全的模型,提供智能写作建议', embeddingModel: '嵌入模型:', embeddingModelDescription: '用于文档向量化和语义搜索的模型,支持 RAG 功能', insightModel: '洞察模型:', insightModelDescription: '用于生成智能洞察和分析的模型,提供深度内容理解', }, // 模型提供商设置 ModelProvider: { noApiKeySet: '当前未设置任何 API Key', setApiKey: '设置 {provider} API Key', modelSelection: '模型选择', oneClickConfig: '一键配置', oneClickConfigTooltip: '自动配置模型为已设置 API Key 的提供商的推荐模型', chatModelConfigured: '已自动配置聊天模型:{provider}/{model}', insightModelConfigured: '已自动配置洞察模型:{provider}/{model}', autocompleteModelConfigured: '已自动配置自动补全模型:{provider}/{model}', embeddingModelConfigured: '已自动配置嵌入模型:{provider}/{model}', provider: '提供商', model: '模型', selectModel: '选择模型...', searchOrEnterModelName: '搜索或输入模型名称...', enterCustomModelName: '输入自定义模型名称', custom: '自定义: ', localProviderDescription: '本地嵌入模型使用 WASM 技术在您的设备上运行,提供隐私保护和离线功能。', localProviderFeature0: '目前仅支持嵌入模型', localProviderFeature1: '完全隐私 - 数据不会离开您的设备', localProviderFeature2: '无 API 费用 - 完全本地运行', localProviderFeature3: '离线功能 - 无需网络连接即可工作', testConnection: { testApiConnection: '测试 API 连接', testingConnection: '正在测试连接...', connectionSuccess: '连接测试成功', connectionFailed: '连接测试失败', notSupported: '不支持测试 {provider} 的 API 连接', invalidApiKey: 'API Key 无效或缺失', invalidBaseUrl: '基础 URL 设置错误', requestTimeout: '请求超时,请检查网络连接', networkError: '网络连接失败', unauthorizedError: 'API Key 授权失败', forbiddenError: '访问被拒绝,请检查 API Key 权限', rateLimitError: '请求频率过高,请稍后重试', serverError: '服务器内部错误', noDefaultModel: '{provider} 没有可用的默认模型', invalidResponse: '响应格式无效', // UI 文本 showApiKey: '显示 API Key', hideApiKey: '隐藏 API Key', testConnectionTooltip: '测试 API 连接', testing: '测试中', success: '成功', failed: '失败', test: '测试', }, }, // 模型参数部分 ModelParameters: { title: '模型参数', temperature: 'Temperature', temperatureDescription: '此参数影响采样中的随机性。较低的值会导致更重复和确定性的响应。较高的温度将导致更意外或创造性的响应。默认值:0.0,如果您不确定自己在做什么,请不要更改此值。', topP: 'TopP', topPDescription: '与 temperature 参数类似,Top P 参数影响采样中的随机性。降低该值将限制模型的标记选择为更可能的标记,而增加该值则会扩展模型对较低可能性标记的选择。默认值:1,如果您不确定自己在做什么,请不要更改此值。', frequencyPenalty: 'frequencyPenalty', frequencyPenaltyDescription: '此参数根据标记在文本中出现的频率成比例地降低重复该标记的几率。这降低了在响应中重复完全相同文本的可能性。默认值:0.25', presencePenalty: 'presencePenalty', presencePenaltyDescription: '此参数降低重复文本中任何已出现标记的几率。这增加了在响应中引入新主题的可能性。默认值:2', maxTokens: 'maxTokens', maxTokensDescription: '此参数更改模型允许生成的最大 Tokens 数。默认值:4096', }, // 文件搜索部分 FilesSearch: { title: '文件搜索', method: '文件搜索方法', methodDescription: '选择搜索文件的方法。', auto: '自动', semantic: '语义', regex: '正则', match: '匹配', regexBackend: '正则搜索后端', regexBackendDescription: '选择正则搜索的后端。', matchBackend: '匹配搜索后端', matchBackendDescription: '选择匹配搜索的后端。', ripgrep: 'ripgrep', coreplugin: '核心插件', omnisearch: 'Omnisearch', ripgrepPath: 'ripgrep 路径', ripgrepPathDescription: 'ripgrep 二进制文件的路径。使用 ripgrep 正则搜索时需要此项。', }, // 聊天行为部分 ChatBehavior: { title: '聊天行为', defaultMention: '新聊天的默认提及', defaultMentionDescription: '选择开始新聊天时的默认文件提及行为。', none: '无', currentFile: '当前文件', vault: '整个 Vault', }, // 网页搜索部分 WebSearch: { title: '网页搜索', serperApiKey: 'Serper API 密钥', serperApiKeyDescription: '用于网页搜索功能的 API 密钥。Serper 允许插件在互联网上搜索信息,类似于搜索引擎。请从此处获取您的密钥', searchEngine: 'Serper 搜索引擎', searchEngineDescription: '选择用于网页搜索的搜索引擎。', google: 'Google', duckDuckGo: 'DuckDuckGo', bing: 'Bing', jinaApiKey: 'Jina API 密钥(可选)', jinaApiKeyDescription: '用于将网页解析为 Markdown 格式的 API 密钥。如果未提供,将使用本地解析。请从此处获取您的密钥', }, // RAG 部分 RAG: { title: 'RAG(高级)', includePatterns: '包含模式', includePatternsDescription: '如果指定了任何模式,则只有匹配至少一个模式的文件才会被包含在索引中。每行一个模式。使用 glob 模式(例如,"notes/*", "*.md")。留空以包含所有未被排除模式排除的文件。更改后,请使用命令 "重建整个 Vault 索引" 来应用更改。', testPatterns: '测试模式', excludePatterns: '排除模式', excludePatternsDescription: '匹配任何这些模式的文件将从索引中排除。每行一个模式。使用 glob 模式(例如,"private/*", "*.tmp")。留空以不排除任何内容。更改后,请使用命令 "重建整个 Vault 索引" 来应用更改。', chunkSize: '分块大小', chunkSizeDescription: '设置文本分割的分块大小。更改后,请使用 "重建整个 Vault 索引" 命令重新索引 Vault。', batchSize: '批处理大小', batchSizeDescription: '设置嵌入的批处理大小。较小的值可以减少内存使用。更改后,请使用 "重建整个 Vault 索引" 命令重新索引 Vault。', thresholdTokens: '阈值 Tokens', thresholdTokensDescription: '切换到 RAG 之前的最大 Tokens 数。如果提及文件的总 Tokens 超过此值,将使用 RAG 而不是包含所有文件内容。', minSimilarity: '最小相似度', minSimilarityDescription: 'RAG 结果的最小相似度得分。较高的值返回更相关但可能更少的结果。', limit: '限制', limitDescription: '包含在提示中的最大 RAG 结果数。较高的值提供更多上下文,但会增加 Tokens 使用量。', includedFiles: '包含的文件', noInclusionPatterns: '未指定包含模式 - 将包含所有文件(匹配排除模式的文件除外)', noMatchingFiles: '没有文件匹配包含模式', excludedFiles: '排除的文件', noExcludedFiles: '没有文件匹配排除模式', }, // 自动完成部分 AutoComplete: { // 基本自动完成设置 title: '自动补全(高级)', enable: '启用', enableDescription: '如果禁用,任何操作都不会触发扩展或导致 API 调用。', cacheCompletions: '缓存补全', cacheCompletionsDescription: '如果禁用,插件将不会缓存补全。接受或拒绝补全后,插件将不会记住它。这可能会导致更多的 API 调用。', debugMode: '调试模式', debugModeDescription: '如果启用,各种调试消息将被记录到控制台,例如来自 API 的完整响应,包括思维链 Tokens。', // 预处理设置 preprocessing: { title: '预处理', excludeDataview: '不包含 Dataview', excludeDataviewDescription: 'Dataview(js) 块可能很长,但对 AI 的价值不大。如果启用此设置,数据视图块将被及时删除以减少 Tokens 数量。从长远来看,这可以为您节省一些费用。', maxPrefixLength: '最大前缀长度', maxPrefixLengthDescription: '将包含在前缀中的最大字符数。较大的值将增加补全的上下文,但也可能增加成本或超出 Tokens 限制。', maxSuffixLength: '最大后缀长度', maxSuffixLengthDescription: '将包含在后缀中的最大字符数。较大的值将增加补全的上下文,但也可能增加成本或超出 Tokens 限制。', chars: '字符', }, // 后处理设置 postprocessing: { title: '后处理', removeMathBlockIndicators: '自动删除重复的数学块指示符', removeMathBlockIndicatorsDescription: 'AI 模型可能会急切地添加数学块指示符 ($),即使光标已在数学块内。如果启用此设置,插件将自动从补全中删除这些重复的指示符。', removeCodeBlockIndicators: '自动删除重复的代码块指示符', removeCodeBlockIndicatorsDescription: 'AI 模型可能会急切地添加代码块指示符 (`),即使光标已在代码块内。如果启用此设置,插件将自动从补全中删除这些重复的指示符。', }, // 触发设置 trigger: { title: '触发', delay: '延迟', delayDescription: '最后键入的字符与补全请求之间的延迟(毫秒)。', ms: '毫秒', words: '触发词', wordsDescription: '如果之前的文本匹配任何这些单词或字符,将触发补全。这可以是直接字符串匹配或正则表达式匹配。使用正则表达式时,请确保包含行尾字符 ($)。', }, // 隐私设置 privacy: { title: '隐私', ignoredFiles: '忽略的文件', ignoredFilesDescription: '此字段使您能够指定插件应忽略的文件和目录。当您打开任何这些文件时,插件将自动禁用自身并在底部菜单中显示"已禁用"状态。每行输入一个模式。这些模式的功能类似于 glob 模式。以下是一些常用的模式:', ignoredFilesPattern1: 'path/to/folder/**:此模式忽略此文件夹内的所有文件和子文件夹。', ignoredFilesPattern2: '**/secret/**:此模式忽略位于"secret"目录内的任何文件,无论其在路径中的位置如何。', ignoredFilesPattern3: '!path/to/folder/example.md:此模式明确取消忽略,使此文件对插件可见。', ignoredFilesPattern4: '**/*Python*.md:此模式忽略名称中包含"Python"的任何文件,无论其位置如何。', ignoredFilesPlaceholder: '您的文件模式,例如 **/secret/**', ignoredTags: '忽略的标签', ignoredTagsDescription: '包含任何这些标签的文件将被忽略。当您打开包含此处列出的标签的文件时,插件将自动禁用自身并在底部菜单中显示"已禁用"状态。每行输入一个标签。', ignoredTagsPlaceholder: '您的文件标签,例如 secret', }, // 危险区域设置 dangerZone: { title: '危险区域', factoryReset: '恢复出厂设置', factoryResetDescription: '搞砸了设置?别担心,按这个按钮!之后,插件将恢复到默认设置。URL 和 API 密钥将保持不变。', reset: '重置', advancedMode: '高级模式', advancedModeDescription: '如果您熟悉提示工程,可以启用此设置以查看提示生成和 few shot 示例设置。关闭此按钮。它不会重置您的更改;请使用恢复出厂设置按钮。', resetComplete: '恢复出厂设置完成。', }, // 高级设置 advanced: { title: '高级', chainOfThoughtRemovalRegex: '思维链移除正则表达式', chainOfThoughtRemovalRegexDescription: '此正则表达式用于从生成的答案中移除思维链 Tokens。如果未正确实现,思维链 Tokens 将包含在建议的补全中。', regexPlaceholder: '您的正则表达式...', systemMessage: '系统消息', systemMessageDescription: '此系统消息为模型提供了完成答案生成任务所需的所有上下文和指令。您可以根据自己的喜好编辑此消息。如果编辑思维链格式,请确保相应地更新提取正则表达式和示例。', systemMessagePlaceholder: '您的系统消息...', userMessageTemplate: '用户消息模板', userMessageTemplateDescription: '此模板定义了如何格式化前缀和后缀以创建用户消息。您可以使用两个变量:{{prefix}} 和 {{suffix}}。如果编辑此项,请确保相应地更新示例。', fewShotExamples: 'Few shot 示例', fewShotExamplesDescription: '模型使用这些示例来学习预期的答案格式。并非所有示例都同时发送。我们仅根据当前光标位置发送相关示例。例如,仅当光标位于代码块中时才发送 CodeBlock 示例。如果未检测到特殊上下文,则发送 Text 示例。每个上下文默认有 2 个示例,但如果每个上下文至少有一个示例,则可以添加或删除示例。您可以添加更多示例,但这会增加推理成本。', }, }, mcpHub: { title: "MCP 服务器", enableMcp: "启用 MCP 服务器", enableMcpDescription: "开启后可用已连接 MCP 服务器的工具,能力更强。不用这些工具时建议关闭,节省 API Token 费用。", learnMore: "了解更多关于 MCP", addNewServer: "+ 添加新的 MCP 服务器", serverName: "服务器名称", serverNamePlaceholder: "输入服务器名称", config: "配置 (JSON 格式)", configPlaceholder: "example: {\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@modelcontextprotocol/server-filesystem\",\n \"/Users/username/Desktop\",\n \"/path/to/other/allowed/dir\"\n ]\n}", createServer: "创建服务器", status: "状态", statusConnected: "已连接", statusConnecting: "连接中", statusDisconnected: "未连接", enable: "启用服务器", disable: "禁用服务器", restart: "重启服务器", delete: "删除服务器", deleteConfirm: "确定要删除服务器 \"{name}\" 吗?", createSuccess: "服务器 \"{name}\" 创建成功", createFailed: "创建服务器失败: {error}", serverNameRequired: "服务器名称不能为空", configRequired: "配置不能为空", invalidConfig: "配置格式无效,请输入有效的 JSON 格式", noServersFound: "未找到服务器", serverNotConnectedError: "服务器未连接", tools: "工具", resources: "资源", errors: "错误", noTools: "没有可用工具", noResources: "没有可用资源", noErrors: "没有错误记录", parameters: "参数", toolNoDescription: "无描述", useMcpToolFrom: "使用来自以下的 MCP 工具:", } }, semanticSearch: { title: "语义索引", embeddingModel: "嵌入模型:", vectorBlocks: "个向量块", files: "文件", initializeIndex: "初始化索引", updateIndex: "更新索引", initializing: "正在初始化...", initializingWorkspace: "正在初始化工作区 RAG 向量索引", initializingDescription: "为当前工作区的文件建立向量索引,提高搜索精度", buildingVectorIndex: "建立向量索引", blocks: "块", totalFiles: "共 {count} 个文件", initializationComplete: "工作区 RAG 向量索引初始化完成: {workspaceName}", searchPlaceholder: "语义搜索(按回车键搜索)...", searching: "正在搜索...", noResults: "未找到相关结果", imagePlaceholder: "[图片]", // 搜索模式 searchMode: { all: "全部", allDescription: "聚合搜索原始笔记和 AI 洞察", notes: "原始笔记", notesDescription: "搜索原始笔记内容", insights: "AI 洞察", insightsDescription: "搜索 AI 洞察内容" }, // 统计信息 stats: { filesAndBlocks: "{files} 个文件,{blocks} 个块", filesAndInsights: "{files} 个文件,{insights} 个洞察", filesBlocksAndInsights: "{files} 个文件,{blocks} 个块,{insights} 个洞察" }, // 确认对话框 deleteConfirm: { title: "清除工作区索引", message: "将清除当前工作区的所有向量索引数据。", warning: "此操作无法撤销,清除后需要重新初始化索引才能进行语义搜索。", workspaceLabel: "工作区:", entireVault: "整个 Vault", cancel: "取消", confirm: "确认清除" }, initConfirm: { initTitle: "初始化工作区索引", updateTitle: "更新工作区索引", initMessage: "将为当前工作区的所有文件建立向量索引,这将提高语义搜索的准确性。", updateMessage: "将更新当前工作区的向量索引,重新处理所有文件以确保索引最新。", embeddingModelLabel: "嵌入模型:", workspaceLabel: "工作区:", entireVault: "整个 Vault", warning: "此操作可能需要几分钟时间,具体取决于文件数量和大小。", cancel: "取消", startInit: "开始初始化", startUpdate: "开始更新" } }, insights: { title: "AI 洞察", initializeInsights: "初始化洞察", updateInsights: "更新洞察", clearInsights: "清除洞察", refresh: "刷新", initializing: "初始化中...", deleting: "删除中...", loading: "加载中...", initializingWorkspace: "正在初始化工作区洞察...", initializingDescription: "这可能需要几分钟时间,请耐心等待", stage: { preparing: "准备初始化工作区洞察", completing: "正在完成初始化", savingResults: "保存结果" }, deleteConfirm: { title: "确认删除", message: "您确定要删除当前工作区的所有洞察吗?", warning: "⚠️ 这个操作不可撤销,将删除所有生成的转换和洞察数据。", scopeLabel: "影响范围:", cancel: "取消", confirm: "确认删除" }, initConfirm: { initTitle: "确认初始化洞察", updateTitle: "确认更新洞察", initMessage: "您确定要初始化当前工作区的洞察吗?这将生成 AI 摘要和分析。", updateMessage: "您确定要更新当前工作区的洞察吗?这将为修改或新增的文件生成 AI 摘要和分析。", modelLabel: "使用模型:", workspaceLabel: "目标工作区:", defaultModel: "默认模型", initWarning: "⚠️ 这个过程可能需要较长时间,并会产生 API 费用。", updateWarning: "⚠️ 这个过程可能需要一些时间,并会产生 API 费用。只会处理修改或新增的文件。", cancel: "取消", initConfirm: "确认初始化", updateConfirm: "确认更新" }, stats: { itemsAndInsights: "{items} 个项目,{insights} 个洞察", workspace: "{count}工作区", folder: "{count}文件夹", file: "{count}文件", scopeLabel: "范围:", insightCount: "个洞察", workspaceCount: "个工作区", folderCount: "个文件夹", fileCount: "个文件", insightModelLabel: "洞察模型:" }, types: { denseSummary: "📋 密集摘要", simpleSummary: "📄 简单摘要", keyInsights: "💡 关键洞察", analyzePaper: "🔬 论文分析", tableOfContents: "📑 目录大纲", reflections: "🤔 思考反思" }, fileGroup: { workspacePrefix: "🌐 工作区:", folderPrefix: "📁" }, noResults: { title: "当前范围内没有找到洞察数据", hint: "请尝试在文档上运行转换工具来生成 AI 洞察" }, tooltips: { initialize: "初始化当前工作区的洞察,会递归处理所有文件并生成摘要", update: "更新当前工作区的洞察,为修改或新增的文件生成摘要", clear: "删除当前工作区的所有转换和洞察" }, success: { workspaceInitialized: '工作区 "{name}" 洞察初始化成功', workspaceDeleted: '工作区 "{name}" 的 {count} 个转换已成功删除', insightDeleted: '洞察 ID {id} 已成功删除' }, error: { initializationFailed: "工作区洞察初始化失败:", deletionFailed: "删除工作区洞察失败:", singleDeletionFailed: "删除洞察失败:", fileNotFound: "在vault中找不到文件:", folderNotFound: "文件夹不存在:" }, progress: { current: "正在处理: {item}", stage: "阶段:", progressLabel: "进度:", currentLabel: "当前:", insightCountLabel: "个洞察" } }, workspace: { title: "工作区管理", shortTitle: "工作区", description: "管理和切换不同的工作区(笔记库)", entireVault: "整个 Vault", createNew: "创建新工作区", recentWorkspaces: "最近的工作区", loading: "正在加载工作区列表...", noWorkspaces: "暂无工作区", empty: "空工作区", editTooltip: "编辑工作区", deleteTooltip: "删除工作区", refreshTooltip: "刷新工作区列表", newWorkspace: "新建工作区", notices: { alreadyInWorkspace: "当前已在此工作区中", switchedTo: "切换到工作区: {name}", workspaceContent: "工作区内容: {content}", cannotDeleteCurrent: "无法删除当前工作区", cannotDeleteDefault: "无法删除默认工作区", deleted: "已删除工作区: {name}", deleteFailed: "删除工作区失败", created: "已创建工作区: {name}", createFailed: "创建工作区失败", updated: "已更新工作区: {name}", updateFailed: "更新工作区失败", refreshFailed: "刷新工作区列表失败", switchFailed: "切换工作区失败" }, deleteConfirm: '确定要删除工作区 "{name}" 吗?此操作不可撤销。', current: "当前", conversations: "个对话", created: "创建", updated: "更新", folders: "个文件夹", tags: "个标签", noContent: "无内容", editModal: { editTitle: "编辑工作区", createTitle: "创建工作区", nameLabel: "工作区名称", namePlaceholder: "请输入工作区名称", newNamePlaceholder: "请输入新工作区名称", contentLabel: "工作区内容", noContent: "暂无内容,请添加文件夹或标签", addPlaceholder: "添加文件夹或标签...", folder: "文件夹", tag: "标签", tip: "提示:输入关键词搜索现有文件夹和标签,以 # 开头的会被识别为标签", cancel: "取消", save: "保存", create: "创建", saving: "保存中...", creating: "创建中...", nameRequired: "工作区名称不能为空", saveFailed: "保存失败,请重试", defaultName: "工作区 {date}" } } };