- Credential.get_all() now uses per-row error handling instead of failing on first bad row - Broken credentials include decryption_error field with descriptive message - DELETE endpoint falls back to direct DB delete when credential can't be decrypted - Frontend shows amber warning alert for broken credentials with disabled test/edit/discover - Added i18n translation keys for decryption error warning in all 9 locales
929 lines
42 KiB
TypeScript
929 lines
42 KiB
TypeScript
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 密钥",
|
||
decryptionError: "解密错误",
|
||
decryptionErrorDescription: "此凭证的 API 密钥无法解密。加密密钥可能已更改。请删除此凭证并使用正确的密钥重新创建。",
|
||
},
|
||
setupBanner: {
|
||
encryptionRequired: "未配置加密密钥",
|
||
encryptionRequiredDescription: "请设置 OPEN_NOTEBOOK_ENCRYPTION_KEY 环境变量以启用安全凭据存储。",
|
||
migrationAvailable: "API 密钥迁移可用",
|
||
migrationDescription: "{count} 个服务商的 API 密钥通过环境变量设置。将它们迁移到数据库以便于管理。",
|
||
goToSettings: "前往设置",
|
||
viewDocs: "查看文档",
|
||
},
|
||
}
|