export const zhCN = {
  common: {
    search: "搜索...",
    create: "新建",
    new: "新建",
    cancel: "取消",
    delete: "删除",
    edit: "编辑",
    theme: "主题",
    signOut: "退出登录",
    noMatches: "未找到匹配项",
    tryDifferentSearch: "尝试使用不同的搜索词。",
    light: "浅色",
    dark: "深色",
    system: "系统",
    loading: "加载中...",
    note: "笔记",
    insight: "洞察",
    newSource: "新建来源",
    newNotebook: "新建笔记本",
    newPodcast: "新建播客",
    language: "语言",
    english: "English",
    chinese: "简体中文",
    japanese: "日本語",
    french: "Français",
    russian: "Русский",
    bengali: "বাংলা",
    source: "来源",
    notebook: "笔记本",
    podcast: "播客",
    quickActions: "快捷操作",
    quickActionsDesc: "导航、搜索、提问、主题",
    appName: "Open Notebook",
    add: "添加",
    remove: "移除",
    confirm: "确认",
    warning: "警告",
    error: "操作失败",
    success: "操作成功",
    model: "模型",
    back: "返回",
    next: "下一步",
    done: "完成",
    processing: "处理中...",
    creating: "创建中...",
    linked: "已关联",
    adding: "正在添加...",
    addSelected: "添加所选",
    customModel: "自定义模型",
    failed: "失败",
    current: "当前",
    save: "保存",
    writeNote: "撰写笔记",
    batchMode: "批量模式",
    optional: "可选",
    type: "类型",
    title: "标题",
    created: "创建于 {time}",
    updated: "更新于 {time}",
    actions: "快捷操作",
    noResults: "未找到结果",
    references: "引用",
    refreshPage: "请重试刷新页面",
    refresh: "刷新",
    aiGenerated: "AI 生成",
    human: "人类",
    unknown: "未知",
    notes: "笔记",
    chat: "聊天",
    deleteForever: "永久删除",
    connectionError: "连接错误",
    unableToConnect: "无法连接到 API 服务器",
    retryConnection: "重试连接",
    diagnosticInfo: "诊断信息",
    version: "版本",
    built: "构建时间",
    apiUrl: "API 地址",
    frontendUrl: "前端地址",
    checkConsoleLogs: "请检查浏览器控制台获取详细日志（搜索 🔧 [Config] 消息）",
    yes: "是",
    no: "否",
    saving: "正在保存...",
    description: "描述",
    saveToNote: "保存到笔记",
    copyToClipboard: "复制到剪贴板",
    close: "关闭",
    insights: "见解",
    progress: "进度",
    deleting: "正在删除...",
    created_label: "创建时间",
    updated_label: "更新时间",
    download: "下载",
    saveChanges: "保存更改",
    name: "名称",
    default: "默认",
    nameRequired: "这是必填项",
    modelConfiguration: "模型配置",
    resetToDefault: "重置为默认",
    reasoning: "推理过程",
    searchTerms: "搜索词",
    strategy: "策略",
    individualAnswers: "独立回答 ({count})",
    finalAnswer: "最终回答",
    notebookLabel: "笔记本: {name}",
    itemNotFound: "未找到该 {type}",
    accessibility: {
      transformationViews: "转换视图",
      searchKB: "向知识库提问或搜索",
      enterQuestion: "输入您的问题以询问知识库",
      enterSearch: "输入搜索词",
      searchKBBtn: "搜索知识库",
      podcastViews: "播客视图",
      ytVideo: "YouTube 视频",
      askResponse: "提问回答",
      searchNotebooks: "搜索笔记本",
    },
    url: "URL",
    errorDetails: "错误详情",
    editTransformation: "编辑转换规则",
    retry: "重试",
    traditionalChinese: "繁体中文",
    portuguese: "葡萄牙语",
    completed: "已完成",
    saveSuccess: "保存成功",
    contextModes: {
      off: "未包含在聊天中",
      insights: "仅限见解",
      full: "全部内容",
      clickToCycle: "点击循环切换",
    },
    clickToEdit: "点击编辑",
  },
  apiErrors: {
    notebookNotFound: "找不到笔记本",
    sourceNotFound: "找不到源文件",
    transformationNotFound: "找不到转换规则",
    fileUploadFailed: "文件上传失败",
    urlRequired: "链接类型需要提供 URL",
    contentRequired: "文本类型需要提供内容",
    invalidSourceType: "无效的源类型",
    processingFailed: "处理失败",
    failedToQueue: "排队处理失败",
    invalidSortBy: "排序字段必须是 'created' 或 'updated'",
    invalidSortOrder: "排序方向必须是 'asc' 或 'desc'",
    accessDenied: "文件访问被拒绝",
    fileNotFoundOnServer: "服务器上找不到该文件",
    searchFailed: "搜索失败",
    askFailed: "提问失败",
    pleaseEnterQuestion: "请输入问题",
    pleaseConfigureModels: "请配置所有必选模型",
    failedToCreateSession: "创建对话失败",
    failedToUpdateSession: "更新会话失败",
    failedToDeleteSession: "删除会话失败",
    failedToSendMessage: "发送消息失败",
    unauthorized: "无权访问，请检查您的密码",
    invalidPassword: "密码错误",
    embeddingModelRequired: "此功能需要嵌入模型。请在模型设置中配置一个。",
    strategyModelNotFound: "未找到策略模型",
    answerModelNotFound: "未找到回答模型",
    finalAnswerModelNotFound: "未找到最终回答模型",
    noAnswerGenerated: "未能生成回答",
    genericError: "发生了意外错误",
  },
  connectionErrors: {
    apiTitle: "无法连接到 API 服务器",
    apiDesc: "无法访问 Open Notebook API 服务器",
    dbTitle: "数据库连接失败",
    dbDesc: "API 服务器正在运行，但无法访问数据库",
    troubleshooting: "这通常意味着：",
    apiUnreachable1: "API 服务器未运行",
    apiUnreachable2: "API 服务器运行在不同的地址",
    apiUnreachable3: "网络连接问题",
    dbFailed1: "SurrealDB 未运行",
    dbFailed2: "数据库连接设置不正确",
    dbFailed3: "API 与数据库之间的网络问题",
    quickFixes: "快速修复：",
    setApiUrl: "设置 API_URL 环境变量：",
    checkSurreal: "检查 SurrealDB 是否运行：",
    seeDocumentation: "有关详细设置说明，请参阅：",
    docLink: "Open Notebook 文档",
    showTechnical: "显示技术细节",
    attemptedUrl: "尝试的 URL",
    message: "消息",
    technicalDetails: "技术细节",
    stackTrace: "堆栈跟踪",
    retryLabel: "重试连接",
    retryHint: "按 R 或点击按钮重试",
    dockerLabel: "对于 Docker",
    localDevLabel: "对于本地开发",
  },
  auth: {
    loginTitle: "Open Notebook",
    loginDesc: "输入密码以访问应用程序",
    passwordPlaceholder: "密码",
    signingIn: "正在登录...",
    signIn: "登录",
    connectErrorHint: "无法连接到服务器。请检查 API 是否正在运行。",
  },
  navigation: {
    collect: "采集",
    process: "处理",
    create: "创作",
    manage: "管理",
    sources: "来源",
    notebooks: "笔记本",
    askAndSearch: "询问与搜索",
    podcasts: "播客",
    models: "模型",
    transformations: "转换",
    transformation: "转换",
    settings: "设置",
    advanced: "高级",
    nav: "导航",
    language: "切换语言",
    theme: "主题",
    ask: "提问",
  },
  notebooks: {
    title: "笔记本",
    newNotebook: "创建笔记本",
    searchPlaceholder: "搜索笔记本...",
    archived: "已归档",
    archive: "归档",
    unarchive: "取消归档",
    deleteNotebook: "删除笔记本",
    deleteNotebookDesc: "您确定要删除 \"{name}\" 吗？此操作无法撤销。",
    deleteNotebookLoading: "正在加载删除预览...",
    deleteNotebookNotes: "{count} 个笔记将被永久删除。",
    deleteNotebookNoNotes: "没有要删除的笔记。",
    deleteNotebookExclusiveSources: "{count} 个来源仅存在于此笔记本中。",
    deleteNotebookSharedSources: "{count} 个来源与其他笔记本共享，将被取消关联。",
    deleteNotebookNoSources: "此笔记本中没有来源。",
    deleteExclusiveSourcesLabel: "删除专属来源",
    keepExclusiveSourcesLabel: "取消关联并保留",
    activeNotebooks: "活动的笔记本",
    archivedNotebooks: "归档的笔记本",
    notFound: "未找到笔记本",
    notFoundDesc: "请求的笔记本不存在。",
    updated: "已更新",
    namePlaceholder: "笔记本名称",
    addDescription: "添加描述...",
    noNotesYet: "暂无笔记",
    deleteNote: "删除笔记",
    deleteNoteConfirm: "确定要删除此笔记吗？此操作无法撤销。",
    noteCreatedSuccess: "笔记创建成功",
    failedToCreateNote: "创建笔记失败",
    noteUpdatedSuccess: "笔记更新成功",
    failedToUpdateNote: "更新笔记失败",
    noteDeletedSuccess: "笔记删除成功",
    failedToDeleteNote: "删除笔记失败",
    createNew: "创建新笔记本",
    createNewDesc: "输入名称和可选描述以开始。",
    descPlaceholder: "在此添加有关此笔记本的更多信息...",
    createSuccess: "笔记本创建成功",
    updateSuccess: "笔记本更新成功",
    deleteSuccess: "笔记本删除成功",
  },
  sources: {
    title: "来源",
    add: "添加来源",
    addNew: "添加新来源",
    addExisting: "添加现有来源",
    delete: "删除来源",
    statusPreparing: "正在准备",
    statusQueued: "已排队",
    statusProcessing: "正在处理",
    statusCompleted: "已完成",
    statusFailed: "处理失败",
    statusPreparingDesc: "准备处理中",
    statusQueuedDesc: "等待处理",
    statusProcessingDesc: "正在处理内容",
    statusCompletedDesc: "处理成功",
    statusFailedDesc: "处理失败",
    failedToLoad: "加载来源失败",
    allSourcesDesc: "在此查看所有来源。您可以添加新来源或管理现有来源。",
    allSources: "所有来源",
    insights: "见解",
    yes: "是",
    no: "否",
    loadingMore: "正在加载更多...",
    noSourcesYet: "暂无来源",
    allSourcesDescShort: "在此查看所有来源。",
    cannotSaveNoteNoNotebook: "无法保存笔记：缺少笔记本 ID",
    createFirstSource: "添加您的第一个来源开始构建知识库。",
    deleteSourceConfirm: "确定要删除此来源吗？",
    deleteConfirm: "确定要删除吗？",
    deleteConfirmWithTitle: "确定要删除 \"{title}\" 吗？",
    deleteSuccess: "来源删除成功。注意：要从存储中删除文件，必须在设置页面中启用“删除文件”选项。",
    failedToDelete: "删除来源失败",
    sourceQueued: "来源已加入队列",
    sourceQueuedDesc: "来源已提交进行后台处理。您可以在来源列表中监控进度。",
    sourceAddedSuccess: "来源添加成功",
    failedToAddSource: "添加来源失败",
    sourceUpdatedSuccess: "来源更新成功",
    failedToUpdateSource: "更新来源失败",
    sourceDeletedSuccess: "来源删除成功",
    failedToDeleteSource: "删除来源失败",
    fileUploadedSuccess: "文件上传成功",
    failedToUploadFile: "文件上传失败",
    sourceRequeued: "来源重试已加入队列",
    sourceRequeuedDesc: "来源已重新加入处理队列。",
    failedToRetry: "重试失败",
    sourcesAddedToNotebook: "{count} 个来源已添加到笔记本",
    failedToAddSourcesToNotebook: "添加来源到笔记本失败",
    partialAddSuccess: "{success} 个来源已添加，{failed} 个失败",
    sourceRemovedFromNotebook: "来源已成功从笔记本中移除",
    failedToRemoveSourceFromNotebook: "从笔记本中移除来源失败",
    removeConfirm: "确定要从此笔记本移除吗？",
    checking: "正在检查...",
    untitledSource: "未命名来源",
    maxItems: "最多 {count} 个",
    insightsCount: "{count} 条见解",
    details: "详情",
    detailsTitle: "来源详情",
    content: "内容",
    metadata: "元数据",
    type: {
      link: "链接",
      file: "文件",
      text: "文本",
    },
    id: "来源 ID",
    topics: "主题",
    embedded: "已嵌入向量",
    notEmbedded: "未嵌入向量",
    embedContent: "嵌入内容",
    embedding: "正在嵌入...",
    alreadyEmbedded: "已嵌入",
    downloadFile: "下载文件",
    fileUnavailable: "文件不可用",
    preparing: "正在准备...",
    generateNewInsight: "生成新见解",
    selectTransformation: "选择转换规则...",
    noInsightsYet: "暂无见解",
    createFirstInsight: "使用上方的转换规则创建您的第一个见解",
    viewInsight: "查看见解",
    deleteInsight: "删除见解",
    deleteInsightConfirm: "确定要删除此见解吗？此操作无法撤销。",
    insightGenerationStarted: "见解生成已开始，稍后将显示。",
    editNote: "编辑笔记",
    createNote: "创建笔记",
    addTitle: "添加标题...",
    untitledNote: "无标题笔记",
    writeNotePlaceholder: "在此处编写您的笔记内容...",
    saveNote: "保存笔记",
    createNoteBtn: "创建笔记",
    createFirstNote: "创建您的第一条笔记，记录见解与观察。",
    urlLabel: "URL(s) *",
    fileLabel: "文件(s) *",
    textContentLabel: "文本内容 *",
    enterUrlsPlaceholder: "每行输入一个 URL\nhttps://example.com/article1\nhttps://example.com/article2",
    batchUrlHint: "粘贴多个 URL（每行一个）进行批量导入",
    invalidUrlsDetected: "检测到无效的 URL：",
    lineLabel: "第 {line} 行",
    fixInvalidUrls: "请修正或移除无效的 URL 以继续",
    selectMultipleFilesHint: "选择多个文件进行批量导入。支持：文档 (PDF, DOC, DOCX, PPT, XLS, EPUB, TXT, MD)，媒体 (MP4, MP3, WAV, M4A)，图片 (JPG, PNG)，归档 (ZIP)",
    selectedFiles: "已选择文件：",
    textPlaceholder: "在此处粘贴或输入您的内容...",
    htmlDetected: "检测到 HTML 内容。处理后将转换为 Markdown。",
    titlePlaceholder: "为您的来源起一个描述性的标题",
    batchTitlesAuto: "将为每个来源自动生成标题。",
    batchCommonSettings: "同样的笔记本和转换将应用于所有项目。",
    urlsCount: "{count} 个 URL",
    filesCount: "{count} 个文件",
    addSource: "添加来源",
    notEmbeddedAlert: "内容未嵌入向量",
    notEmbeddedDesc: "此内容尚未为了向量搜索进行嵌入。嵌入可以启用高级搜索功能并更好地发现内容。",
    openOnYoutube: "在 YouTube 上打开",
    urlCopied: "URL 已复制到剪贴板",
    viewSource: "查看来源",
    noInsightSelected: "未选择见解",
    sourceInsight: "来源见解",
    manageNotebooks: "管理所属笔记本",
    manageNotebooksDesc: "管理包含此来源的笔记本",
    noNotebooksAvailable: "暂无可用笔记本",
    loadFailed: "加载来源详情失败",
    removeFromNotebook: "从笔记本移除",
    retryProcessing: "重试处理",
    deleteSource: "删除来源",
    retry: "重试",
    addExistingTitle: "添加现有来源",
    addExistingDesc: "从您的所有笔记本中选择已有的来源添加到当前笔记本。",
    searchPlaceholder: "通过名称或 URL 搜索来源...",
    noNotebooksFound: "未找到笔记本。",
    showingFirst100: "仅显示前 100 个来源。请使用搜索功能查找特定来源。",
    selectedCount: "已选择 {count} 个来源",
    added: "已添加于 {date}",
    addUrl: "添加 URL",
    uploadFile: "上传文件",
    enterText: "输入文本",
    processDescription: "内容将经过处理并由 AI 分析。",
    processingFiles: "正在处理您的文件...",
    titleRequired: "文本内容必须提供标题",
    titleGenerated: "如果留空，将根据内容自动生成标题",
    batchCount: "将处理 {count} 个{type}",
    enableEmbedding: "启用搜索向量嵌入",
    embeddingDesc: "允许此来源在向量搜索和 AI 查询中被检索",
    embeddingAlways: "已自动启用嵌入",
    embeddingAlwaysDesc: "您的设置已配置为始终对内容进行向量嵌入。",
    embeddingNever: "嵌入已禁用",
    embeddingNeverDesc: "您的设置已配置为跳过嵌入。此来源将无法进行向量搜索。",
    changeInSettings: "您可以在此处更改设置：",
    notFound: "未找到来源",
    noContent: "暂无内容",
    insightsDesc: "根据模型分析生成的见解",
    uploadedFile: "已上传文件",
    fileUnavailableDesc: "由于存储系统原因，此文件目前不可用。",
    batchSuccess: "成功创建 {count} 个来源",
    batchFailed: "全部 {count} 个来源创建失败",
    batchPartial: "{success} 个成功，{failed} 个失败",
    submittingSource: "正在提交来源进行处理...",
    processingBatchSources: "正在处理 {count} 个来源，请稍候...",
    processingSource: "正在处理您的来源，请稍候...",
    maxFilesAllowed: "每批最多允许 {count} 个文件",
  },
  chat: {
    sessions: "会话",
    sessionTitlePlaceholder: "在此输入标题...",
    noSessions: "暂无会话",
    deleteSession: "删除会话",
    deleteSessionDesc: "确定要删除此聊天会话吗？此操作无法撤销。",
    sendPlaceholder: "向您的来源提问...",
    sessionsTitle: "对话列表",
    chatWith: "与{name}对话",
    startConversation: "开始针对{type}进行对话",
    askQuestions: "提出问题以更好地理解内容",
    pressToSend: "按 {key} 发送",
    model: "模型",
    createToStart: "创建一个会话以开始。",
    chatWithNotebook: "与笔记本对话",
    unableToLoadChat: "无法加载聊天",
    noDescription: "暂无描述",
    startByCreating: "从创建您的第一个笔记本开始，组织您的研究。",
    messagesCount: "{count} 条消息",
    sessionCreated: "聊天会话已创建",
    sessionUpdated: "会话已更新",
    sessionDeleted: "会话已删除",
  },
  searchPage: {
    askAndSearch: "提问与搜索",
    chooseAMode: "选择模式",
    askBeta: "提问 (beta)",
    search: "搜索",
    askYourKb: "向您的知识库提问 (beta)",
    askYourKbDesc: "大语言模型将根据您知识库中的文档回答您的查询。",
    question: "问题",
    enterQuestionPlaceholder: "输入您的问题...",
    pressToSubmit: "按 Cmd/Ctrl+Enter 提交",
    noEmbeddingModel: "您无法使用此功能，因为尚未选择嵌入模型。请在模型页面设置一个。",
    usingCustomModels: "正在使用自定义模型",
    usingDefaultModels: "正在使用默认模型",
    advanced: "高级",
    strategy: "策略",
    answer: "回答",
    final: "最终",
    ask: "提问",
    processing: "处理中...",
    saveToNotebooks: "保存到笔记本",
    searchDesc: "在您的知识库中搜索特定的关键字或概念",
    enterSearchPlaceholder: "输入搜索查询...",
    pressToSearch: "按 Enter 键搜索",
    searchType: "搜索类型",
    vectorSearchWarning: "向量搜索需要嵌入模型。目前仅文本搜索可用。",
    textSearch: "文本搜索",
    vectorSearch: "向量搜索",
    searchIn: "搜索范围",
    searchSources: "搜索来源",
    searchNotes: "搜索笔记",
    resultsFound: "{count} 个结果",
    matches: "匹配项 ({count})",
    noResultsFor: "未找到 “{query}” 的结果",
    notSet: "未设置",
    saveToNotebook: "保存到笔记本",
    saveSuccess: "成功保存到笔记本",
    saveError: "保存到笔记本失败",
    selectNotebook: "选择笔记本",
    searchAndAsk: "搜索与提问",
    searchResultsFor: "搜索 “{query}”",
    askAbout: "提问关于 “{query}”",
    orSearchKb: "或搜索您的知识库",
    saving: "保存中...",
    advancedModelTitle: "高级模型选择",
    advancedModelDesc: "为提问过程的每个阶段选择特定的模型",
    strategyModel: "策略模型",
    answerModel: "回答模型",
    finalAnswerModel: "最终回答模型",
    selectStrategyPlaceholder: "选择策略模型",
    selectAnswerPlaceholder: "选择回答模型",
    selectFinalPlaceholder: "选择最终回答模型",
    saveChanges: "保存更改",
    processingQuestion: "正在处理您的问题...",
  },
  podcasts: {
    generateEpisode: "生成播客单集",
    generateEpisodeDesc: "在生成新的播客单集之前，选择要包含的内容并配置单集详情。",
    content: "内容",
    contentDesc: "选择要包含在此单集中的笔记本、来源和笔记。",
    itemsSelected: "{count} 个项目已选择",
    tokens: "{count} token",
    chars: "{count} 字符",
    loadingNotebooks: "正在加载笔记本...",
    noNotebooksFoundInPodcasts: "未找到笔记本。在生成播客之前，请先创建一个笔记本并添加内容。",
    noContentSelected: "未选择内容",
    summary: "摘要",
    fullContent: "全部内容",
    untitledSource: "未命名来源",
    untitledNote: "未命名笔记",
    episodeSettings: "单集设置",
    episodeProfile: "单集简介",
    episodeProfilePlaceholder: "选择单集简介",
    episodeName: "单集名称",
    episodeNamePlaceholder: "例如：AI 与工作的未来",
    additionalInstructions: "附加指令",
    instructionsPlaceholder: "任何要追加到单集简讯的补充建议...",
    generating: "正在生成...",
    generate: "生成",
    hostPlaceholder: "主持人 {number}",
    profileRequired: "需要单集简介",
    profileRequiredDesc: "在生成播客之前，请选择一个单集简介。",
    nameRequired: "需要单集名称",
    nameRequiredDesc: "请为单集提供一个名称。",
    addContext: "添加上下文",
    addContextDesc: "至少选择一个来源或笔记包含在单集中。",
    generationFailed: "播客生成失败",
    speakerProfile: "主持人简介",
    usesSpeakerProfile: "使用主持人简介",
    sources: "来源",
    notes: "笔记",
    noSources: "此笔记本中没有可用的来源。",
    noNotes: "此笔记本中没有可用的笔记。",
    selectMode: "选择模式",
    buildContextFailed: "构建上下文失败。请检查您的选择。",
    podcastTaskStarted: "播客生成任务已开始",
    loadingProfiles: "正在加载单集简介...",
    noProfilesFound: "未找到单集简介。在生成播客之前，请先创建一个单集简介。",
    listTitle: "播客",
    listDesc: "跟踪生成的单集并管理可重复使用的简介。",
    chooseAView: "选择视图",
    episodesTab: "单集",
    templatesTab: "配置",
    overviewTitle: "单集概览",
    overviewDesc: "监控播客生成任务并查看最终成品。",
    generateBtn: "生成播客",
    total: "总计",
    processingLabel: "处理中",
    completedLabel: "已完成",
    failedLabel: "失败",
    pendingLabel: "排队中",
    loadErrorTitle: "加载单集失败",
    loadErrorDesc: "无法获取最新的播客单集。请稍后重试。",
    loadingEpisodes: "正在加载单集...",
    noEpisodesYet: "暂无播客单集。从笔记本或来源聊天界面开始生成您的第一个单集。",
    statusRunningTitle: "正在处理中",
    statusRunningDesc: "正在活跃生成资产的单集。",
    statusPendingTitle: "排队中 / 待处理",
    statusPendingDesc: "已提交并在等待开始处理的单集。",
    statusCompletedTitle: "已完成单集",
    statusCompletedDesc: "可以查看、下载或发布。",
    statusFailedTitle: "失败单集",
    statusFailedDesc: "在生成过程中遇到问题的单集。",
    templatesWorkspaceTitle: "简介工作区",
    templatesWorkspaceDesc: "构建可重复使用的单集和发言人配置，以实现快速的播客制作。",
    howTemplatesPowerTitle: "简介如何驱动播客生成",
    howTemplatesPowerDesc: "简介将播客工作流拆分为两个可重复使用的构建块。在生成新单集时可以随时混合搭配它们。",
    episodeProfilesSetFormat: "单集简介设定格式",
    episodeProfilesList1: "概述分段数量及故事流向",
    episodeProfilesList2: "选择用于简报、大纲和脚本编写的语言模型",
    episodeProfilesList3: "存储默认简报，以便每个单集都以一致的基调开始",
    speakerProfilesBringVoices: "发言人简介赋予声音生命",
    speakerProfilesList1: "选择文字转语音库及模型",
    speakerProfilesList2: "记录每个发言人的性格、背景故事和发音说明",
    speakerProfilesList3: "在不同的单集格式中重复使用相同的主持人或嘉宾声音",
    recommendedWorkflow: "推荐工作流",
    workflowStep1: "为您需要的每个声音创建发言人简介",
    workflowStep2: "构建按名称引用这些发言人的单集简介",
    workflowStep3: "通过选择适合故事的单集简介来生成播客",
    workflowHint: "单集简介按名称引用发言人简介，因此从发言人开始可以避免以后缺少声音指派。",
    failedToLoadTemplates: "加载简介数据失败",
    failedToLoadTemplatesDesc: "请确保 API 正在运行并重试。某些部分可能不完整。",
    loadingTemplates: "正在加载简介...",
    speakerProfilesTitle: "发言人简介",
    speakerProfilesDesc: "为生成的单集配置声音和性格。",
    createSpeaker: "创建发言人",
    noSpeakerProfiles: "暂无发言人简介。创建一个以使单集简介可用。",
    noDescription: "未提供描述。",
    usedByCount_one: "被 1 个单集使用",
    usedByCount_other: "被 {count} 个单集使用",
    usedByCount: "被 {count} 个单集使用",
    unused: "未使用",
    voiceId: "声音 ID",
    backstory: "背景故事",
    personality: "性格",
    edit: "编辑",
    duplicate: "复制",
    deleteSpeakerProfileTitle: "删除发言人简介？",
    deleteSpeakerProfileDesc: "删除 “{name}” 无法撤销。",
    deleteSpeakerDisabledHint: "在删除之前，请先从单集简介中移除该发言人。",
    deleting: "正在删除...",
    episodeProfilesTitle: "单集简介",
    episodeProfilesDesc: "为您播客定义可重复使用的生成设置。",
    createProfile: "创建简介",
    createSpeakerFirst: "在添加单集简介之前，请先创建一个发言人简介。",
    noEpisodeProfiles: "暂无单集简介。创建一个以启动播客生成。",
    speakerCreated: "发言人配置已创建",
    speakerCreatedDesc: "发言人配置已准备就绪。",
    failedToCreateSpeaker: "创建发言人配置失败",
    speakerUpdated: "发言人配置已更新",
    speakerUpdatedDesc: "更改已成功保存。",
    failedToUpdateSpeaker: "更新发言人配置失败",
    speakerDeleted: "发言人配置已删除",
    speakerDeletedDesc: "配置已成功移除。",
    failedToDeleteSpeaker: "删除发言人配置失败",
    speakerDuplicated: "发言人配置已复制",
    speakerDuplicatedDesc: "已创建配置副本。",
    failedToDuplicateSpeaker: "复制发言人配置失败",
    generationStarted: "播客启动生成",
    generationStartedDesc: "剧集 \"{name}\" 正在创建中。",
    failedToStartGeneration: "启动播客生成失败",
    tryAgainMoment: "请稍后再试。",
    deleteProfileTitle: "删除简介？",
    deleteProfileDesc: "这将移除 “{name}”。现有单集将保留其数据，但新单集将不再使用此配置。",
    profileCreated: "剧集配置已创建",
    profileCreatedDesc: "新的剧集配置已准备就绪。",
    failedToCreateProfile: "创建剧集配置失败",
    profileUpdated: "剧集配置已更新",
    profileUpdatedDesc: "更改已成功保存。",
    failedToUpdateProfile: "更新剧集配置失败",
    profileDeleted: "剧集配置已删除",
    profileDeletedDesc: "配置已成功移除。",
    failedToDeleteProfile: "删除剧集配置失败",
    failedToDeleteProfileDesc: "请确保配置未在使用中并重试。",
    profileDuplicated: "剧集配置已复制",
    profileDuplicatedDesc: "已创建配置副本。",
    failedToDuplicateProfile: "复制剧集配置失败",
    episodeDeleted: "剧集已删除",
    episodeDeletedDesc: "播客剧集已成功移除。",
    failedToDeleteEpisode: "删除剧集失败",
    failedToDeleteSpeakerDesc: "请确保配置未在使用中并重试。",
    outlineModel: "大纲模型",
    transcriptModel: "脚本模型",
    segments: "分段数量",
    defaultBriefingTitle: "默认简报",
    created: "创建于 {time}",
    details: "详情",
    summaryTab: "总结",
    outlineTab: "大纲",
    transcriptTab: "脚本",
    briefing: "内容简报",
    noOutline: "暂无大纲。",
    noTranscript: "暂无脚本。",
    deleteEpisodeTitle: "删除单集？",
    deleteEpisodeDesc: "这将永久移除 “{name}” 及其音频文件。",
    audioUnavailable: "音频不可用",
    segment: "分段",
    speaker: "发言人",
    profile: "简介",
    link: "链接",
    file: "文件",
    embedded: "已嵌入",
    notEmbedded: "未嵌入",
    noSpeakerProfilesAvailable: "没有可用的发言人简介",
    editEpisodeProfile: "编辑单集简介",
    createEpisodeProfile: "创建单集简介",
    episodeProfileFormDesc: "定义单集生成的规则及默认使用的发言人配置。",
    noSpeakerProfilesDesc: "在配置单集简介之前，请先创建一个发言人简介。",
    profileName: "简介名称",
    profileNamePlaceholder: "例如：技术讨论",
    descriptionPlaceholder: "简要说明何时使用此简介",
    speakerConfig: "发言人配置",
    selectSpeakerProfile: "选择发言人简介",
    outlineGeneration: "大纲生成",
    transcriptGeneration: "文稿生成",
    defaultBriefingPlaceholder: "概述此单集格式的结构、语气和目标",
    editSpeakerProfile: "编辑发言人简介",
    createSpeakerProfile: "创建发言人简介",
    speakerProfileFormDesc: "配置文字转语音设置并定义最多四名发言人。",
    speakers: "发言人",
    speakersDesc: "为此简介配置一到四种声音。",
    addSpeaker: "添加发言人",
    speakerNumber: "发言人 {number}",
    backstoryPlaceholder: "发言人的简要传记或背景信息",
    personalityPlaceholder: "描述风格和语气",
    outlineModelRequired: "必须选择大纲模型",
    transcriptModelRequired: "必须选择文稿模型",
    defaultBriefingRequired: "必须填写默认简介",
    segmentsInteger: "必须是整数",
    segmentsMin: "至少包含 3 个分段",
    segmentsMax: "最多包含 20 个分段",
    voiceIdRequired: "必须填写声音 ID",
    backstoryRequired: "必须填写背景故事",
    personalityRequired: "必须填写性格描述",
    speakerCountMin: "至少需要一个发言人",
    speakerCountMax: "最多只能配置 4 个发言人",
    delete: "删除",
    failedToDelete: "删除播客失败",
    retry: "重试",
    retrying: "重试中…",
    retryStarted: "已开始重试",
    retryStartedDesc: "已提交新的播客生成任务。",
    failedToRetry: "重试失败",
    errorDetails: "错误详情",
    language: "语言",
    languagePlaceholder: "选择语言（可选）",
    podcastLanguage: "播客语言",
    selectOutlineModel: "选择大纲模型",
    selectTranscriptModel: "选择转录模型",
    voiceModel: "语音模型",
    voiceModelRequired: "语音模型为必填项",
    selectVoiceModel: "选择语音模型",
    perSpeakerTtsOverride: "每个发言人的TTS覆盖（可选）",
    useProfileDefault: "使用配置默认值",
    setupRequired: "需要配置",
    setupRequiredDesc: "部分配置尚未设置模型。请编辑它们以在生成播客之前选择模型。",
    notConfigured: "未配置",
  },
  settings: {
    contentProcessing: "内容处理",
    contentProcessingDesc: "配置文档和 URL 的处理方式",
    docEngine: "文档处理引擎",
    docEnginePlaceholder: "选择文档处理引擎",
    urlEngine: "URL 处理引擎",
    urlEnginePlaceholder: "选择 URL 处理引擎",
    autoRecommended: "自动 (推荐)",
    simple: "Simple",
    docling: "Docling",
    helpMeChoose: "帮助我选择",
    docHelp: "· Docling: 速度稍慢但更准确，特别是包含表格和图像的文档。 · Simple: 直接提取内容而不进行格式化。 · 自动 (推荐): 优先尝试 Docling，失败则回退至 Simple。",
    firecrawl: "Firecrawl",
    jina: "Jina",
    urlHelp: "· Firecrawl: 强大的付费服务（有免费额度）。 · Jina: 优秀的备选方案，同样提供免费额度。 · Simple: 基础 HTTP 提取，在 JS 渲染的网站上可能会丢失内容。 · 自动 (推荐): 优先尝试 Firecrawl，其次 Jina，最后回退至 Simple。",
    embeddingAndSearch: "嵌入与搜索",
    embeddingAndSearchDesc: "配置搜索和向量嵌入选项",
    defaultEmbeddingOption: "默认嵌入选项",
    embeddingOptionPlaceholder: "选择嵌入选项",
    ask: "询问",
    always: "始终",
    never: "从不",
    embeddingHelp: "将内容进行向量嵌入可以让您和您的 AI 助手更容易找到它。如果您运行本地嵌入模型（如 Ollama），建议开启。对于在线服务商，只有在每天处理数百个文档时才需考虑成本。",
    fileManagement: "文件管理",
    fileManagementDesc: "配置文件的处理和存储选项",
    autoDeleteFiles: "自动删除文件",
    autoDeletePlaceholder: "选择自动删除选项",
    filesHelp: "文件处理完成后，原始件不再需要。建议开启自动删除以节省存储空间。除非您将其作为主要存储位置（不建议），否则请选择“是”。",
    loadFailed: "加载设置失败",
  },
  advanced: {
    title: "高级工具",
    desc: "面向进阶用户的调试和实用工具",
    systemInfo: "系统信息",
    rebuildEmbeddings: "重建索引",
    rebuildEmbeddingsDesc: "为所有来源重建向量索引",
    currentVersion: "当前版本",
    latestVersion: "最新版本",
    status: "状态",
    updateAvailable: "版本 {version} 可用",
    updateAvailableDesc: "Open Notebook 的新版本可用。",
    upToDate: "已是最新",
    unknown: "未知",
    viewOnGithub: "在 GitHub 上查看",
    updateCheckFailed: "无法检查更新。GitHub 可能无法访问。",
    rebuild: {
      mode: "重建模式",
      existing: "仅现有项",
      all: "全部项",
      existingDesc: "仅重新嵌入已有向量的项（速度较快，适用于切换模型）",
      allDesc: "重新嵌入已有项 + 为缺失向量的项补全（速度较慢，较全面）",
      include: "包含在重建中",
      selectOneError: "请至少选择一种重建类型",
      starting: "正在启动重建...",
      startBtn: "开始重建",
      queued: "排队中",
      running: "正在提交任务...",
      completed: "任务已提交!",
      failed: "失败",
      leavePageHint: "您可以离开此页面，后台将继续运行",
      startNew: "开始新的重建",
      itemsProcessed: "{processed}/{total} 任务已提交 ({percent}%)",
      failedItems: "{count} 任务提交失败",
      time: "耗时",
      whenToRebuild: "我该何时重建索引？",
      whenToRebuildAns: "当您切换嵌入模型、升级模型版本、怀疑数据损坏或进行了大批量内容导入后，建议执行重建。",
      howLong: "重建需要多长时间？",
      howLongAns: "耗时取决于项目总数、模型速度和 API 速率限制。本地模型（如 Ollama）通常非常快。",
      isSafe: "在使用应用时重建安全吗？",
      isSafeAns: "是的，重建过程是安全的。它不会删除您的原始内容，仅会逐步替换向量数据。在大批量处理时，搜索速度可能会有轻微抖动。",
    },
  },
  transformations: {
    title: "内容转换规则",
    desc: "转换规则是用于让大模型处理来源并提取见解、摘要等的提示词。",
    workspace: "选择工作区",
    playground: "实验室",
    defaultPrompt: "默认全局提示词",
    defaultPromptDesc: "该提示词将被添加到您所有的转换提示词中",
    defaultPromptPlaceholder: "输入您的默认转换指令...",
    listTitle: "自定义转换",
    createNew: "新建转换",
    inputLabel: "输入文本",
    inputPlaceholder: "请输入要转换的文本...",
    outputLabel: "输出",
    runTest: "运行转换",
    running: "运行中...",
    selectToStart: "选择一个转换规则开始",
    name: "名称",
    namePlaceholder: "唯一标识符，例如 key_topics",
    titlePlaceholder: "显示名称，默认为名称",
    promptPlaceholder: "编写驱动此转换的提示词...",
    descriptionPlaceholder: "描述此转换的作用。",
    suggestDefault: "新来源默认建议",
    promptHint: "提示词应根据源内容编写。您可以要求模型总结、提取见解或生成表格等结构化输出。",
    createSuccess: "转换规则创建成功",
    updateSuccess: "转换规则更新成功",
    deleteSuccess: "转换规则删除成功",
    noTransformations: "暂无转换规则",
    createOne: "创建一个转换规则以开始",
    selectModel: "选择模型",
    deleteConfirm: "确定要删除此转换规则吗？",
    model: "模型",
    systemPrompt: "系统提示词",
    overrideModelDesc: "为此聊天会话覆盖默认模型。留空则使用系统默认。",
    sessionUseReplacement: "此会话将使用 {name} 而不是默认模型。",
    systemDefault: "系统默认",
  },
  models: {
    embedding: "嵌入模型",
    tts: "文字转语音",
    stt: "语音转文字",
    apiKey: "API 密钥",
    deleteSuccess: "模型删除成功",
    saveSuccess: "模型保存成功",
    noModels: "暂无模型",
    discoverModels: "发现模型",
    noModelsFound: "未从此提供商找到模型",
    modelType: "模型类型",
    modelTypeHint: "选择要添加的模型类型。如果需要不同类型，请分批添加。",
    deleteModel: "删除模型",
    defaultAssignments: "默认模型分配",
    defaultAssignmentsDesc: "配置用于 Open Notebook 不同用途的默认模型",
    missingRequiredModels: "缺少必需的模型：{models}。如果没有这些模型，Open Notebook 可能无法正常运行。",
    selectModelPlaceholder: "选择一个模型",
    requiredModelPlaceholder: "⚠️ 必需 - 请选择一个模型",
    chatModelLabel: "聊天模型",
    chatModelDesc: "用于聊天对话",
    transformationModelLabel: "转换模型",
    transformationModelDesc: "用于摘要、见解和内容转换",
    toolsModelLabel: "工具模型",
    toolsModelDesc: "用于函数调用 - 推荐 OpenAI 或 Anthropic",
    largeContextModelLabel: "大上下文模型",
    largeContextModelDesc: "用于处理大文档 - 推荐 Gemini",
    embeddingModelLabel: "嵌入模型",
    embeddingModelDesc: "用于语义搜索和向量嵌入",
    ttsModelLabel: "文字转语音模型",
    ttsModelDesc: "用于生成播客",
    sttModelLabel: "语音转文字模型",
    sttModelDesc: "用于音频转录",
    embeddingChangeTitle: "嵌入模型变更",
    embeddingChangeConfirm: "您即将将嵌入模型从 {from} 更改为 {to}。",
    rebuildRequired: "重要提示：需要重建索引",
    rebuildReason: "更改嵌入模型需要重建所有现有嵌入以保持一致性。如果不重建，您的搜索可能会返回错误或不完整的结果。",
    whatHappensNext: "接下来会发生什么：",
    step1: "您的默认嵌入模型将被更新",
    step2: "在重新构建之前，现有的嵌入将保持不变",
    step3: "新内容将使用新的嵌入模型",
    step4: "您应该尽快重新构建嵌入",
    proceedToRebuildPrompt: "您想现在前往“高级设置”页面开始重建索引吗？",
    changeModelOnly: "仅更改模型",
    changeAndRebuild: "更改并前往重建",
    autoAssign: "自动分配默认值",
    autoAssigning: "正在分配...",
    autoAssignSuccess: "已自动分配 {count} 个默认模型",
    autoAssignNoModels: "没有可分配的模型。请先同步模型。",
    autoAssignAlreadySet: "所有默认模型已配置",
    testModel: "测试模型",
    testModelSuccess: "模型测试通过",
    testModelFailed: "模型测试失败",
    searchOrAddModel: "搜索或输入模型名称...",
    addCustomModel: "添加 \"{name}\"",
  },
  apiKeys: {
    title: "使用您自己的 API 密钥配置 AI",
    description: "将 API 密钥安全地存储在数据库中，以在 Open Notebook 中启用 AI 服务商。",
    encryptionRequired: "未配置加密密钥",
    encryptionRequiredDescription: "请将 OPEN_NOTEBOOK_ENCRYPTION_KEY 环境变量设置为任意密钥字符串，以启用将 API 密钥存储到数据库。",
    configured: "已配置",
    notConfigured: "未配置",
    migrationAvailable: "检测到环境变量",
    migrationDescription: "{count} 个 API 密钥通过环境变量配置，可以迁移到数据库以便于管理。",
    migrateToDatabase: "迁移到数据库",
    migrating: "迁移中...",
    migrationSuccess: "{count} 个 API 密钥迁移成功",
    migrationErrors: "{count} 个密钥迁移失败",
    migrationNothingToMigrate: "所有密钥已在数据库中",
    learnMore: "了解如何配置 API 密钥 →",
    testConnection: "测试连接",
    testSuccess: "连接成功",
    testFailed: "连接测试失败",
    syncModels: "同步模型",
    syncSuccess: "发现 {discovered} 个模型，新增 {new} 个",
    syncNoNew: "发现 {count} 个模型，全部已注册",
    syncFailed: "同步模型失败",
    getApiKey: "获取 API 密钥",
    vertexProject: "GCP 项目 ID",
    vertexLocation: "区域",
    vertexCredentials: "服务账户 JSON 路径",
    addConfig: "添加配置",
    editConfig: "编辑配置",
    deleteConfig: "删除配置",
    configName: "配置名称",
    configNameHint: "此配置的描述性名称（例如：'生产环境'、'开发环境'）",
    baseUrl: "基础 URL",
    baseUrlOverrideHint: "仅在需要覆盖提供商默认 API 端点时更改此项。",
    deleteConfigConfirm: "确定要删除 '{name}' 吗？此操作无法撤销。",
    configSaveSuccess: "配置保存成功",
    configUpdateSuccess: "配置更新成功",
    configDeleteSuccess: "配置删除成功",
    apiKeyEditHint: "留空以保留现有 API 密钥",
  },
  setupBanner: {
    encryptionRequired: "未配置加密密钥",
    encryptionRequiredDescription: "请设置 OPEN_NOTEBOOK_ENCRYPTION_KEY 环境变量以启用安全凭据存储。",
    migrationAvailable: "API 密钥迁移可用",
    migrationDescription: "{count} 个服务商的 API 密钥通过环境变量设置。将它们迁移到数据库以便于管理。",
    goToSettings: "前往设置",
    viewDocs: "查看文档",
  },
}
