// 简体中文 export default { chat: { stop: "停止", welcome: { title: "欢迎使用 Infio Copilot", subtitle: "探索不同模式来提升您的生产力" }, navigation: { commands: "命令", commandsDesc: "创建和管理用于快速操作的自定义命令", customMode: "自定义模式", customModeDesc: "定义具有特定行为的个性化 AI 模式", mcp: "MCP", mcpDesc: "管理模型上下文协议集成" }, errors: { failedToLoadConversation: "加载对话失败", failedToSaveHistory: "保存聊天记录失败", failedToApplyChanges: "应用更改失败", conversationNotFound: "未找到对话", fileNotFound: "未找到文件:{{path}}", failedToApplyEditChanges: "应用编辑更改失败", failedToSearchAndReplace: "搜索和替换失败" }, apply: { changesApplied: "更改已成功应用", changesRejected: "用户拒绝了更改" }, search: { noResultsFound: "未找到 '{{query}}' 的结果" }, history: { noConversations: "没有对话" }, shortcutInfo: { editInline: "行内编辑", chatWithSelect: "与选定文本聊天", submitWithVault: "使用 Vault 提交" }, searchResults: { showReferencedDocuments: "显示引用的文档" }, LLMResponseInfoPopover: { header: "LLM 响应信息", tokenCount: "Token 数量", promptTokens: "提示 Tokens", completionTokens: "补全 Tokens", totalTokens: "总 Tokens", model: "模型", estimatedPrice: "预估价格", usageNotAvailable: "此模型无法获取使用统计信息", notAvailable: "不可用" }, queryProgress: { readingMentionableFiles: "正在读取提及的文件", 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: "推理", readFile: "读取文件:{path}", listFiles: "列出文件:{path}", fetchUrlsContent: "获取 URL 内容", fetching: "正在获取...", copied: "已复制", copy: "复制", editOrApplyDiff: "{mode}:{path}", loading: "加载中...", regexSearchInPath: '在 {path} 中正则搜索文件 "{regex}"', createNewNote: "创建新笔记", copyMsg: "复制消息", taskCompletion: "任务完成", askFollowupQuestion: "询问后续问题:", viewDetails: "查看详情" }, input: { 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 提供商:', useCustomBaseUrl: '使用自定义基础 URL', enterApiKey: '输入您的 API 密钥', enterCustomUrl: '输入您的自定义 API 端点 URL', }, Models: { chatModel: '聊天模型:', autocompleteModel: '自动补全模型:', embeddingModel: '嵌入模型:', }, // 模型参数部分 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: '正则', regexBackend: '正则搜索后端', regexBackendDescription: '选择正则搜索的后端。', ripgrep: 'ripgrep', 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。', 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: "Use MCP tool from", } } };