export default {
meta: {
title: "无限画布",
description: "一个无限画布创作工具",
},
theme: { toggle: "切换主题" },
common: {
cancel: "取消",
save: "保存",
edit: "编辑",
done: "完成",
delete: "删除",
copy: "复制",
copied: "已复制",
details: "详情",
addToAssets: "加入我的资产",
addedToAssets: "已加入我的资产",
copyPrompt: "复制提示词",
promptCopied: "提示词已复制",
created: "创建:{{date}}",
updated: "更新:{{date}}",
all: "全部",
view: "查看",
download: "下载",
upload: "上传",
requestCanceled: "请求已取消",
durationMinutes: "{{minutes}}分{{seconds}}秒",
durationSeconds: "{{seconds}}秒",
imageReadFailed: "读取图片失败",
},
settingsPanels: {
common: { auto: "自动", low: "低", medium: "中", high: "高", xhigh: "极高" },
image: { title: "图像设置", quality: "质量", size: "尺寸", align16: "16 倍数对齐", align16Hint: "输入完成后自动向上补成 16 的倍数", aspectRatio: "宽高比", transparent: "透明背景", transparentHint: "开启后生成无背景的透明图像(仅部分模型可用)", count: "生成张数", images: "{{count}} 张" },
video: { title: "视频设置", quality: "清晰度", size: "尺寸", seconds: "秒数", resolution: "分辨率", ratio: "比例", duration: "时长", smart: "智能", output: "输出", generateAudio: "生成声音", watermark: "添加水印", adaptive: "自适应", sizes: { landscape: "横屏", portrait: "竖屏", square: "方形", widescreen: "宽屏", tall: "长图", auto: "自动" }, ratios: { landscape: "横屏", portrait: "竖屏", square: "方形", standardLandscape: "标准横屏", standardPortrait: "标准竖屏", cinematic: "宽银幕", adaptive: "自适应" } },
audio: { title: "音频设置", voice: "声音", format: "格式", speed: "语速", instructions: "声音指令", instructionsPlaceholder: "例如:自然、温暖、适合旁白。" },
text: { title: "文本设置", reasoning: "推理强度" },
model: { select: "选择模型", assign: "请先在渠道里为{{capability}}指定模型", noMatch: "暂无匹配的{{capability}}模型", addFirst: "请先到配置里添加渠道和模型", capabilities: { image: "生图", video: "视频", text: "文本", audio: "音频" } },
},
generation: { pending: ["正在创建图片", "马上就好了", "再等等", "正在整理细节"] },
imageReferences: { label: "图片{{index}}", separator: "、", promptPrefix: "参考图片编号:{{labels}}。请按这些编号理解提示词中的图片引用。\n\n{{prompt}}" },
seedance: { autoMatch: "自动匹配", separator: "、", references: { image: "图片{{index}}", video: "视频{{index}}", audio: "音频{{index}}" }, promptPrefix: "参考资产编号:{{labels}}。请按这些编号理解提示词中的图片、视频和音频引用。\n\n{{prompt}}", referenceHint: "参考视频需为 mp4/mov,H.264/H.265,FPS 24-60;含真人人脸资产请使用火山授权 asset:// 资产。", errors: { format: "{{label}} 仅支持 mp4/mov 格式", size: "{{label}} 超过 200MB,请压缩后再上传", duration: "{{label}} 时长需要在 2-15 秒之间", dimensions: "{{label}} 宽高需要在 300-6000px 之间", ratio: "{{label}} 宽高比需要在 0.4-2.5 之间", pixels: "{{label}} 总像素需要在 409600-8295044 之间", totalDuration: "Seedance 参考视频总时长不能超过 15 秒" } },
modelPlugin: {
pollTimeout: "插件轮询超时,请检查调用脚本或稍后重试", executionFailed: "模型调用脚本执行失败:{{message}}", noImages: "模型调用脚本没有返回图片",
variables: { prompt: "用户输入的提示词(已拼接系统提示词)", images: "参考图,dataURL 数组(改图 / 图生视频时有值)", messages: "对话消息数组,含系统消息", params: "生成参数:生图 {size,quality,count}、视频 {seconds,size,resolution,ratio,generateAudio,watermark}、音频 {voice,format,speed,instructions}", model: "模型名称(不含渠道前缀)", baseUrl: "渠道接口地址(原样,未拼 /v1)", apiKey: "渠道 API Key,请求头里自己带上", systemPrompt: "系统提示词原文", reasoningEffort: "文本推理强度;auto 表示由脚本决定是否传递", http: "便捷请求:http.post(path, body, {headers,params,responseType})、http.get(path, opts)、http.url(path);默认带 Authorization: Bearer apiKey,可用 headers 覆盖;path 相对时按 baseUrl 拼 /v1", request: "原始请求 request({ method, url, headers, params, data, responseType }),不加任何默认头,鉴权头自己写;url 相对时按 baseUrl 拼接(不加 /v1)", poll: "轮询 poll(request, extract, {intervalMs,timeoutMs}),extract 返回真值即结束", sleep: "sleep(ms) 延时", signal: "取消信号,可透传给 http/request", onDelta: "onDelta(text) 推送流式文本(文本模型)" },
returns: { image: "文生图(images 为空)和图生图(images 有参考图)接口不同,脚本需自行区分;返回图片 URL 或 dataURL 字符串,也可返回它们的数组,或 [{ dataUrl }] / [{ url }] / [{ b64_json }]", video: "脚本内部完成轮询,返回 { url } 或 { blob } 或视频 URL 字符串", audio: "返回 Blob,或 base64 / dataURL 字符串,或 { b64_json } / { data } / { url }", text: "用 onDelta(text) 推送流式,最终 return 完整文本字符串" },
templates: { openai: "OpenAI 规范", gemini: "Gemini 规范", imageOpenai: "生图 / 改图:两者接口不同,用 images 是否为空来区分。", availableImage: "可用:prompt、images(dataURL[])、params{size,quality,count}、model、baseUrl、apiKey", textToImage: "文生图:/images/generations(JSON)", imageToImage: "图生图:/images/edits(multipart/form-data,参考图作为文件上传)", formDataHeader: "不要手动设 Content-Type,交给浏览器带 boundary", imageGemini: "Gemini 文生图 / 图生图:都走 generateContent,参考图放进 parts 的 inline_data。", availableImageGemini: "可用:prompt、images(dataURL[])、model、baseUrl、apiKey", videoOpenai: "视频(脚本内部自行轮询)。可用:prompt、images(dataURL[])、params{seconds,size,resolution,ratio}", videoGemini: "Gemini(Veo) 视频:predictLongRunning 提交,轮询 operation 拿视频 URI。", availableVideoGemini: "可用:prompt、images(dataURL[])、params、model、baseUrl、apiKey", geminiNoVideoUri: "Gemini 未返回视频 URI", audioOpenai: "音频 TTS。可用:prompt、params{voice,format,speed,instructions}、model", audioGemini: "Gemini TTS:generateContent + AUDIO 模态,返回 base64 PCM(音频数据在 inlineData.data)。", availableAudioGemini: "可用:prompt、params{voice}、model、baseUrl、apiKey", geminiNoAudio: "Gemini 未返回音频", textOpenai: "文本对话(OpenAI Responses 接口)。可用:messages([{role,content}])、systemPrompt、model、reasoningEffort", textGemini: "Gemini 文本:generateContent,system 消息放 systemInstruction。", availableTextGemini: "可用:messages([{role,content}])、systemPrompt、model、baseUrl、apiKey" },
},
apiErrors: { requestFailed: "请求失败", requestCanceled: "请求已取消", baseUrlRequired: "请先配置 Base URL", apiKeyRequired: "请先配置 API Key", authenticationFailed: "鉴权失败,请检查 API Key、套餐权限或模型权限", rateLimited: "请求被限流或额度不足,请稍后重试", notFound: "接口地址不存在(404),请检查 Base URL 和模型选择", badGateway: "网关错误(502),接口服务暂时不可用,请稍后重试", serviceBusy: "服务繁忙(503),请稍后重试", httpFailed: "请求失败(HTTP {{status}}),请检查 Base URL 和 API Key 是否正确", htmlError: "服务返回了 HTML 错误页面({{preview}})", audioModelRequired: "请先配置音频模型", audioGenerationFailed: "音频生成失败", scriptNoAudio: "模型调用脚本没有返回音频", geminiAudioUnsupported: "Gemini 调用格式暂不支持音频生成,请使用 OpenAI 格式渠道", invalidImageSizeFormat: "图像尺寸格式不支持,请使用 auto、9:16 或 1024x1024", positiveImageRatio: "图像比例必须是正数,例如 9:16", imageRatioLimit: "图像宽高比不能超过 3:1,请调整尺寸", positiveImageDimensions: "图像尺寸必须是正整数,例如 1024x1024", imageDimensionStep: "图像尺寸的宽高必须是 16 的倍数,请调整尺寸", imageEdgeLimit: "图像尺寸最长边不能超过 3840px,请调整尺寸", imagePixelLimit: "图像总像素需在 655360 到 8294400 之间,请调整尺寸", unknownImageResponse: "接口返回了未知格式的数据(字段:{{fields}}),请检查模型或接口兼容性", noImageReturned: "接口没有返回图片,请检查提示词是否触发安全审核或模型是否支持该操作", geminiRejected: "Gemini 拒绝了本次请求:{{reason}}", geminiNoImage: "Gemini 接口没有返回图片", geminiMaskUnsupported: "Gemini 调用格式暂不支持蒙版编辑", maskModelUnsupported: "蒙版编辑暂不支持该模型,请使用其他渠道", noContent: "没有返回内容", modelReadFailed: "读取模型失败", videoTimeout: "{{provider}}视频生成超时,请稍后重试", videoReferencesUnsupported: "当前视频接口不支持参考视频或参考音频,请切换到 Seedance 2.0 / 火山 Agent Plan 模型,或移除参考资产", pluginVideoExpired: "插件视频任务已失效,请重新生成", scriptNoVideo: "模型调用脚本没有返回视频", noPlayableVideo: "视频接口没有返回可播放的视频", noVideoTaskId: "视频接口没有返回任务 ID", videoTaskCreateFailed: "视频任务创建失败", videoGenerationFailed: "视频生成失败", videoTaskQueryFailed: "视频任务查询失败", seedanceAudioRequiresVisual: "Seedance 参考音频不能单独使用,请同时添加参考图或参考视频", videoPromptRequired: "请输入视频提示词,或连接参考图片/视频/音频", seedanceNoTaskId: "Seedance 接口没有返回任务 ID", seedanceTaskCreateFailed: "Seedance 任务创建失败", seedanceNoVideoUrl: "Seedance 任务成功但没有返回视频 URL", seedanceVideoTimeout: "Seedance 视频生成超时", seedanceVideoFailed: "Seedance 视频生成失败", seedanceTaskQueryFailed: "Seedance 任务查询失败", seedanceVideoDuration: "Seedance 参考视频单个时长需要在 2-15 秒之间", seedanceVideoTotalDuration: "Seedance 参考视频总时长不能超过 15 秒", seedanceAudioDuration: "Seedance 参考音频单个时长需要在 2-15 秒之间", seedanceAudioTotalDuration: "Seedance 参考音频总时长不能超过 15 秒", referenceImageReadFailed: "参考图读取失败,请换一张图片或重新上传", invalidReferenceVideo: "参考视频必须是公网 URL、资产 ID,或本地已保存的视频", invalidReferenceAudio: "参考音频必须是公网 URL、资产 ID,或本地已保存的音频", videoModelRequired: "请先配置视频模型", geminiVideoUnsupported: "Gemini 调用格式暂不支持视频生成,请使用 OpenAI 格式渠道", noVideoTask: "接口没有返回视频任务", seedanceNoTask: "Seedance 接口没有返回任务", videoDownloadFailed: "视频下载失败", localAssetReadFailed: "读取本地资产失败" },
prompts: {
title: "提示词中心",
library: "提示词库",
total: "当前共 {{count}} 条提示词",
category: "分类",
tags: "标签",
search: "搜索标题、内容或标签",
searchTitle: "按标题查询",
loadFailed: "获取提示词失败",
sourceMissing: "提示词来源不存在",
use: "使用此提示词",
empty: "没有找到匹配的提示词",
loading: "加载中...",
loadMore: "继续向下滚动加载更多",
end: "已经到底了",
},
assets: {
title: "我的资产",
description: "收藏常用文本和图片,按类型、标题和标签快速查找。",
search: "搜索标题、内容、标签或来源",
type: "类型",
export: "导出资产",
import: "导入资产",
add: "新增资产",
edit: "编辑资产",
empty: "没有找到资产",
manual: "手动添加",
selectImage: "请选择图片文件",
updated: "资产已更新",
saved: "资产已保存",
textCopied: "文本已复制",
noneToExport: "暂无资产可导出",
imported: "已导入 {{count}} 个资产",
importFailed: "导入失败,请选择有效的资产压缩包",
deleted: "资产已删除",
packageName: "我的资产.zip",
kinds: { text: "文本", image: "图片", video: "视频" },
fields: {
title: "标题",
titleRequired: "请输入标题",
titlePlaceholder: "给资产起一个容易检索的名字",
coverUrl: "封面 URL",
coverPlaceholder: "可粘贴图片 URL,也可以上传本地封面",
tags: "标签",
tagsPlaceholder: "输入标签后回车",
source: "来源",
sourcePlaceholder: "手动添加 / 画布 / 提示词库",
note: "备注",
optional: "可选",
textContent: "文本内容",
textRequired: "请输入文本内容",
textPlaceholder: "保存提示词、说明文案、参考描述等文本资产",
imageContent: "图片内容",
},
selectImageFile: "选择图片文件",
noImageSelected: "未选择图片",
preview: "预览",
noCover: "暂无封面",
untitled: "未命名资产",
noTags: "无标签",
untagged: "未打标签",
unknownSource: "未标注来源",
details: "资产详情",
deleteTitle: "删除资产",
deleteConfirm: "确定删除「{{name}}」吗?删除后会从我的资产中移除。",
copyText: "复制文本",
downloadImage: "下载图片",
downloadVideo: "下载视频",
},
notFound: {
title: "页面不存在",
description: "这个地址没有对应的页面,可能已经移动或被合并到其他入口。",
home: "返回首页",
},
workbench: {
logs: "生成记录",
settings: "参数",
prompt: "提示词",
viewPrompts: "查看提示词库",
viewAssets: "查看我的资产",
clipboard: "剪切板",
upload: "上传",
adjust: "调整",
generate: "开始生成",
results: "生成结果",
waiting: "等待 {{time}}",
model: "模型",
generating: "生成中",
success: "成功",
failed: "生成失败",
retry: "重试",
new: "新建",
selectAll: "全选",
noLogs: "暂无生成记录",
deleteLogs: "删除生成记录",
deleteLogsConfirm: "确定删除选中的 {{count}} 条生成记录吗?",
successCount: "成功 {{count}}",
failCount: "失败 {{count}}",
itemCount: "{{count}} 张",
untitled: "未命名",
configFirst: "请先完成配置",
generationFailed: "生成失败",
retrySuccess: "重试成功",
},
imageWorkbench: {
title: "生图工作台",
promptPlaceholder: "描述画面主体、风格、构图、光线和用途",
references: "参考图",
removeReference: "移除参考图",
dropReferences: "松开即可添加参考图",
noReferences: "暂无参考图,可将图片拖到这里",
clipboardEmpty: "剪切板里没有可读取的图片",
clipboardAdded: "已读取 {{count}} 张参考图",
promptRequired: "请输入生图提示词",
configIncomplete: "生图配置不完整",
invalidParams: "生图参数无效",
busy: "生图工作台已有任务正在运行",
generated: "图片已生成",
addedReference: "已加入参考图",
resultTitle: "生成结果 {{count}}",
source: "生图工作台",
unsupportedAsset: "生图工作台只能使用文本或图片资产",
missingResult: "接口没有返回图片",
empty: "还没有生成图片",
resultAlt: "生成结果 {{count}}",
addReference: "加入参考图",
},
videoWorkbench: {
title: "视频创作台",
promptPlaceholder: "描述镜头运动、主体动作、场景氛围和画面风格",
references: "参考图",
videoReferences: "参考视频",
audioReferences: "参考音频",
removeImage: "移除参考图",
removeVideo: "移除参考视频",
removeAudio: "移除参考音频",
dropReferences: "松开即可上传参考资产",
noImages: "暂无参考图,可拖入文件,最多 9 张",
noVideos: "暂无参考视频,可拖入文件,最多 3 个",
noAudio: "暂无参考音频,可拖入文件,最多 3 个,mp3/wav,单个 15MB 内",
unsupportedFiles: "已忽略不支持的参考资产,请使用图片、mp4/mov 视频或 mp3/wav 音频",
imageTooLarge: "已忽略超过 30MB 的参考图",
videoTooLarge: "已忽略超过 200MB 的参考视频",
audioTooLarge: "已忽略超过 15MB 的参考音频",
audioDurationInvalid: "已忽略不符合时长要求的参考音频:单个 2-15 秒,总时长不超过 15 秒",
clipboardEmpty: "剪切板里没有可读取的图片",
clipboardAdded: "已读取 {{count}} 张参考图",
promptRequired: "请输入视频提示词",
referenceError: "{{error}}。{{hint}}",
invalidParams: "视频生成参数无效",
busy: "视频工作台已有任务正在运行",
generated: "视频已生成",
timeout: "视频生成超时,请稍后重试",
resultTitle: "生成视频",
source: "视频创作台",
empty: "还没有生成视频",
},
canvas: {
defaultTitle: "无限画布 {{count}}",
library: "画布库",
title: "无限画布",
imported: "已导入 {{count}} 个画布",
importFailed: "导入失败,请选择有效的画布压缩包",
opening: "正在打开画布...",
loading: "正在加载画布...",
exportSelected: "导出选中",
deleteSelected: "删除选中",
deleteAll: "删除全部",
import: "导入画布",
create: "新建画布",
empty: "还没有画布",
emptyDescription: "新建一个画布后,就可以独立保存节点、连线和画布外观。",
collapsePanel: "收起面板",
expandPanel: "展开面板",
home: "主页",
docs: "文档",
projects: "我的画布",
deleteCurrent: "删除当前画布",
importAsset: "导入资产",
exportCurrent: "导出当前画布",
undo: "撤销",
redo: "重做",
openMenu: "打开画布菜单",
renameHint: "双击修改画布名称",
shortcuts: "快捷键",
miniMapOpen: "打开小地图",
miniMapClose: "关闭小地图",
resetView: "重置视图",
zoom: "放大/缩小画布",
agentConnected: "Codex 已连接",
agentConnecting: "Codex {{activity}}",
agentDisconnected: "Codex 未连接",
connecting: "连接中",
openAgent: "打开本地 Codex 面板",
nodeTypes: { image: "图片", text: "文本", config: "生成配置", video: "视频", audio: "音频", group: "组" },
toolbar: {
move: "移动/选择", text: "文本", image: "图片", video: "视频", audio: "音频", config: "生成配置", group: "组", extensions: "扩展节点", upload: "上传资产", appearance: "画布外观", clear: "清空画布",
themeMode: "主题模式", light: "浅色", dark: "深色", gridStyle: "网格样式", dots: "点", lines: "线", blank: "空白", imageInfo: "图片信息",
},
project: {
untitled: "未命名画布", imported: "导入画布",
select: "选择 {{name}}", stats: "{{nodes}} 个节点 · {{connections}} 条连线", updated: "更新于 {{date}}", saveName: "保存名称", cancelRename: "取消重命名", export: "导出", rename: "重命名", delete: "删除",
deleteTitle: "删除画布?", deleteDescription: "将删除 {{count}} 个画布,里面的节点和连线也会一起移除。",
},
export: { defaultProjectName: "无限画布", defaultNodesName: "画布元素", item: "元素" },
createMenu: {
fromNode: "引用该节点生成", close: "关闭", text: "文本生成", textDescription: "脚本、广告词、品牌文案", image: "图片生成", video: "视频生成", audio: "音频参考", config: "配置节点", configDescription: "模型、尺寸、数量和输入顺序", select: "选择节点",
},
node: {
node: "节点",
untitled: "未命名节点", renameHint: "双击修改节点名称", group: "组", nodeCount: "{{count}} 个节点", generating: "生成中", failed: "生成失败", retry: "重试", missingPlugin: "缺少插件", missingPluginDescription: "节点类型“{{type}}”的插件未安装或未启用", generateImage: "用文本生图", generate: "生图", editText: "双击编辑文字", emptyImage: "空图片节点", emptyVideo: "空视频节点", emptyAudio: "空音频节点", audio: "音频", batchExpanded: "图片组已展开", batchCollapsed: "图片组已收起", setPrimary: "设为主图",
},
sidePanel: {
canvas: "画布", assets: "资产", prompts: "提示词库", resize: "调整左侧面板宽度", elements: "画布元素", select: "选择", searchNodes: "搜索节点", focusNode: "定位到节点", preview: "放大预览", noNodes: "画布暂无节点", clearAll: "取消全选", selected: "已选 {{count}}", exporting: "正在导出选中元素…", exportName: "画布元素-{{count}}个", exported: "已导出 {{count}} 个元素", exportFailed: "导出失败,请重试",
addingAssets: "正在添加资产…", addedAssets: "已添加 {{count}} 个资产", mediaOnly: "仅支持图片或视频文件", addFailed: "添加失败,请重试", searchAssets: "搜索资产", add: "添加", noAssets: "暂无资产", inserted: "插入画布", removeAssetTitle: "移除该资产?", remove: "移除", removeAsset: "移除资产", assetRemoved: "资产已移除",
searchPrompts: "搜索提示词", noPrompts: "暂无提示词", promptCopied: "已复制提示词", copyFailed: "复制失败", loadFailedRetry: "加载失败,点击重试", noMatchingPrompts: "无匹配提示词", sourceEmpty: "该来源暂无提示词", viewDetails: "查看详情",
filter: { image: "图片", video: "视频", text: "文本", audio: "音频", config: "配置", group: "分组" },
},
assetPicker: { title: "选择资产", insert: "插入", search: "搜索资产", empty: "没有资产" },
imageTools: { copyPrompt: "复制提示词", copyPromptTitle: "复制生成该图片的提示词", reversePrompt: "反推提示词", reversePromptTitle: "创建反推提示词的文本和配置节点", replace: "替换图片", locked: "锁比例", free: "自由比例", lockTitle: "切换为等比缩放", freeTitle: "切换为自由比例", mask: "局部编辑", maskTitle: "添加蒙版遮罩后局部修改", crop: "裁剪", cropTitle: "裁剪并生成新节点", split: "切图", splitTitle: "按行列切分图片", upscale: "放大", upscaleTitle: "放大图片分辨率", superResolve: "超分", superResolveTitle: "AI 超分", angle: "多角度", angleTitle: "生成角度", view: "查看大图", viewTitle: "查看图片详情", more: "更多", configure: "配置快捷工具", customize: "自定义工具栏", showLabels: "显示按钮文字", description: "选择你想在图片节点编辑栏中使用的快捷工具。", preview: "节点预览", imageNode: "图片节点", quickTools: "快捷工具" },
nodeToolbar: { noPrompt: "暂无可复制的提示词", infoTitle: "查看节点信息", info: "信息", removeTitle: "移除节点", retryTitle: "重新生成", saveAsset: "存资产", downloadAudio: "下载音频", downloadVideo: "下载视频", downloadImage: "下载图片", editTextTitle: "编辑文本", editText: "编辑文字", decreaseFont: "减小字号", increaseFont: "增大字号", zoomOut: "缩小", zoomIn: "放大", uploadImage: "上传图片", replaceVideo: "替换视频", uploadVideo: "上传视频", replaceAudio: "替换音频", uploadAudio: "上传音频", nodeInfo: "节点信息", name: "名称", type: "类型", size: "尺寸", position: "位置", status: "状态", imageGroup: "图片组", imageSize: "图片大小" },
configNode: { title: "生成配置", image: "生图", text: "文本", video: "视频", audio: "音频", prompt: "提示词", references: "参考图", videoReferences: "参考视频", audioReferences: "参考音频", items: "{{count}} 个", images: "{{count}} 张", compose: "组装提示词", stop: "停止", generate: "开始生成" },
projectPage: {
stopTitle: "停止生成?", stopDescription: "当前生成请求会被中断,已经生成完成的内容会保留。", stop: "停止", continue: "继续生成", configConnection: "配置节点之间不能连接", notFound: "未找到当前画布", exporting: "正在导出当前画布…", exported: "已导出当前画布", clipboardText: "剪切板文本", clipboardImageAdded: "已从剪切板添加图片", clipboardTextAdded: "已从剪切板添加文本", noTextToSave: "没有可保存的文本", canvasText: "画布文本", noVideoToSave: "没有可保存的视频", canvasVideo: "画布视频", noImageToSave: "没有可保存的图片", canvasImage: "画布图片", emptyReverse: "图片节点为空,无法反推提示词", reverseTitle: "反推提示词", reverseConfigTitle: "反推提示词配置", splitTitle: "{{name}} {{row}}-{{column}}", splitSuccess: "已切分为 {{count}} 个子节点", maskResult: "局部编辑结果", maskFailed: "局部修改失败", generationFailed: "生成失败", partialFailed: "部分图片生成失败", allFailed: "全部图片生成失败", retryPromptMissing: "找不到提示词,无法重试", referenceMissing: "参考图片已丢失,无法继续重试", emptyTextImage: "文本节点为空,无法生图", untitledCanvas: "未命名画布", superResolve: "AI 超分", notImplemented: "暂未实现", imageDetails: "图片详情", clearTitle: "清空画布?", clear: "清空", clearDescription: "这会删除当前画布上的所有节点和连线。", reversePreset: "请根据参考图片反推一段适合用于 AI 生图的提示词。\n\n要求:\n1. 只输出提示词正文,不要解释。\n2. 覆盖主体、构图、风格、光线、色彩、材质、镜头和氛围。\n3. 尽量写成可直接用于生图模型的完整提示词。", maskPrompt: "只修改蒙版透明区域,其他区域保持不变。{{prompt}}", editTextPrompt: "请根据要求修改以下文本。\n\n原文:\n{{source}}\n\n修改要求:\n{{prompt}}"
},
reverseComposer: "参考图片:@[node:{{imageId}}]\n任务说明:@[node:{{textId}}]",
editors: {
reset: "重置", zoomOut: "缩小", zoomIn: "放大", loading: "读取中", unknown: "未知", cancel: "取消",
angleTitle: "AI 多角度", angleDescription: "左侧只预览方向,结果会基于原图重新生成", horizontal: "左右角度", pitch: "俯仰角度", distance: "镜头距离", lens: "广角镜头", standard: "标准", wide: "广角", aiGenerate: "AI 生成",
upscaleTitle: "图片放大", source: "源图", targetPixels: "目标像素", maxReached: "图片已达到 4K,无需放大", targetReached: "图片已达到当前目标像素,无需放大", algorithm: "放大算法", outputSize: "输出尺寸", upscale: "生成放大图", high: "高清插值", highDescription: "适合照片和细节图", bilinear: "双线性", bilinearDescription: "平滑、速度快", nearest: "最近邻", nearestDescription: "适合像素风格",
cropTitle: "裁剪图片", adjustCrop: "调整裁剪框", cropHint: "滚轮缩放 · 中键或空格+左键拖动画面", cropSize: "裁剪尺寸 {{size}}", ratio: "比例 {{ratio}}", original: "原图 {{width}} x {{height}}", confirmCrop: "确认裁剪", free: "自由", fixed: "固定", originalMode: "原图",
maskTitle: "局部遮罩编辑", maskHint: "滚轮缩放 · 中键或空格+左键拖动画面 · Alt+左/右键横拖调笔刷 · Ctrl/Cmd+Z 撤回 · Ctrl/Cmd+Shift+Z 重做", brush: "画笔", erase: "擦除", undoMaskTitle: "撤回局部涂抹 (Ctrl/Cmd+Z)", undoMask: "撤回局部涂抹", redoMaskTitle: "重做局部涂抹 (Ctrl/Cmd+Shift+Z)", redoMask: "重做局部涂抹", brushSize: "笔刷大小", editInstructions: "修改要求", maskPlaceholder: "例如:把选中区域改成金属材质,保持原图光影", maskPromptRequired: "请输入修改要求", maskRequired: "请先涂抹局部区域", aiEdit: "AI 修改",
splitTitle: "切分图片", splitDescription: "生成 {{count}} 个图片子节点,并按原图网格排列到画布右侧", splitHint: "滚轮缩放 · 中键或空格+左键拖动画面 · Delete 删除选中线 · Ctrl/Cmd+Z 撤回 · Ctrl/Cmd+Shift+Z 重做", undoSplitTitle: "撤回切图调整 (Ctrl/Cmd+Z)", undoSplit: "撤回切图调整", redoSplitTitle: "重做切图调整 (Ctrl/Cmd+Shift+Z)", redoSplit: "重做切图调整", rows: "行数", columns: "列数", horizontalLine: "横向线", verticalLine: "纵向线", deleteLine: "删除线", resetLines: "重置线", pieceCount: "切片数量", pieces: "{{count}} 个", averageSize: "平均约", generateChildren: "生成子节点",
},
plugins: { title: "节点插件", installedPlugin: "已安装插件 {{name}}", installed: "已安装 {{name}}", installFailed: "安装失败:{{error}}", enabled: "已启用", disabled: "已禁用", upgradeAvailable: "有新版本,点击升级", updateFromSource: "从来源更新", updated: "已更新", uninstallTitle: "卸载该插件?", uninstall: "卸载", newVersion: "有新版本可升级", officialDescription: "本项目官方插件,来自仓库注册表", refresh: "刷新", loadFailed: "加载失败:{{error}}", loadingOfficial: "正在获取官方插件…", noOfficial: "暂无官方插件", install: "安装", urlPlaceholder: "输入插件 JS 文件 URL,例如 https://.../plugin.js", noThirdParty: "还没有安装第三方插件", official: "官方插件", local: "本地插件", thirdParty: "第三方插件", warning: "插件代码会在当前页面内直接执行,可访问本地数据(包含 AI API Key)。请仅安装你信任来源的插件。", aiConfigRequired: "AI 配置未就绪,请先在设置里配置模型与密钥", interactiveTitle: "当前:交互中。点击切回「移动」——拖动可移动节点", movableTitle: "当前:可移动。点击切到「交互」——可操作节点内容(如转动全景)", move: "移动", interact: "交互" },
promptPanel: { video: "描述要生成的视频内容", audio: "描述要生成的音频内容", image: "描述要生成的图片内容", text: "请输入你想要生成的文本内容", editImage: "请输入你想要把这张图修改成什么", editText: "请输入你想要将本段文本修改成什么", stopGeneration: "停止生成", generate: "生成", stop: "停止" },
composer: { title: "组装提示词", description: "@ 引用已连接资产,发送前按当前连接重新编号", placeholder: "输入提示词,按 @ 引用连接的图片或文本", imagePreview: "引用图片预览", resources: { image: "图片{{index}}", video: "视频{{index}}", audio: "音频{{index}}", text: "文本{{index}}" } },
controls: { ratio: "比例", duplicate: "复制", delete: "删除", images: "{{count}} 张", reasoning: "推理" },
generation: { interrupted: "页面刷新后生成已中断,请重新生成。", front: "正面视角", rotateRight: "向右旋转 {{angle}} 度", rotateLeft: "向左旋转 {{angle}} 度", level: "水平视角", topDown: "俯视 {{angle}} 度", lowAngle: "仰视 {{angle}} 度", angleLabel: "AI 多角度:{{horizontal}},{{pitch}},镜头距离 {{distance}},{{lens}}镜头", anglePrompt: "基于参考图重新生成同一主体的新视角,保持主体、颜色、材质和画面风格一致,不要只做透视变形。{{angle}}。" },
agentOps: { add_node: "新增节点", update_node: "更新节点", delete_node: "删除节点", delete_connections: "删除连线", connect_nodes: "连接", set_viewport: "调整视图", select_nodes: "选择节点", run_generation: "触发生成" },
pluginErrors: { invalidExport: "插件未导出有效对象", missingFields: "插件缺少 id 或 nodes", downloadFailed: "下载失败 (HTTP {{status}})", registryFailed: "获取官方插件列表失败 (HTTP {{status}})" },
shortcut: {
dragCanvas: "拖动画布",
pan: "平移视图",
wheel: "滚轮",
zoom: "缩放画布",
zoomSlider: "缩放滑杆",
preciseZoom: "精确调整缩放",
boxSelect: "框选多个节点",
addSelection: "追加选择节点",
selectAll: "全选节点",
copyPaste: "复制 / 粘贴节点,或粘贴剪切板文本/图片",
copyPasteNodes: "复制 / 粘贴节点",
delete: "删除选中",
escape: "取消选择并关闭浮层",
dropMedia: "拖入图片/视频/音频",
upload: "上传到画布",
drag: "拖动",
click: "点击",
},
},
navigation: {
canvas: "我的画布",
image: "生图工作台",
video: "视频创作台",
prompts: "提示词库",
assets: "我的资产",
config: "配置",
},
topNav: {
openMenu: "打开导航菜单",
menu: "导航菜单",
navigation: "导航",
openAgent: "打开 Agent",
closeAgent: "收起 Agent",
plugins: "节点插件",
docs: "文档",
switchLanguage: "切换到 {{language}}",
shortcuts: "快捷键",
lightTheme: "切换到浅色主题",
darkTheme: "切换到深色主题",
},
home: {
promptError: "获取提示词失败",
description: "在 中生成、连接和重组 图片、文字与图形,让创作从单次生成变成连续推演。",
start: "开始使用",
openCanvas: "打开画布",
showcaseTitle: "沉淀每一次好结果",
showcaseDescription: "收藏稳定出图的提示词、参考风格和结果图片,让下一次创作从已有经验开始。",
viewPrompts: "查看提示词库",
},
version: {
viewUpdates: "查看版本更新",
title: "版本更新",
currentVersion: "当前版本",
latestVersion: "最新版本",
checking: "检查中...",
checkUpdates: "检查更新",
unreleased: "未发布",
latest: "最新",
current: "当前",
readFailed: "版本读取失败",
changelogFailed: "更新日志读取失败",
updated: "已获取最新版本信息",
updateFailed: "获取最新版本信息失败",
types: { added: "新增", fixed: "修复", changed: "调整", optimized: "优化", docs: "文档" },
},
config: {
title: "配置与用户偏好",
invalidFile: "配置文件格式不正确",
description: "渠道聚合、模型选择和同步偏好",
modalDescription: "渠道聚合、默认模型和同步偏好",
tabs: {
channels: "渠道",
preferences: "偏好设置",
promptSources: "提示词来源",
},
promptSources: {
add: "新增来源",
deleteTitle: "删除「{{name}}」?",
deleteDescription: "来源配置会被移除,已经加入我的资产的内容不受影响。",
refreshed: "「{{name}}」已更新 {{count}} 条",
refreshFailedCached: "更新失败,已保留旧缓存",
refreshPartial: "更新完成:{{success}} 个成功,{{failed}} 个失败,失败来源已保留旧缓存",
refreshAllSuccess: "已更新 {{sources}} 个来源,共 {{total}} 条",
refreshFailed: "更新失败",
builtIn: "内置",
itemCount: "{{count}} 条",
failed: "失败",
healthy: "正常",
unsynced: "未同步",
lastSuccess: "上次成功 {{time}}",
neverFetched: "尚未拉取",
view: "查看内容",
refresh: "立即拉取",
edit: "编辑来源",
schedule: "定时拉取",
interval: "拉取周期",
refreshAll: "全部立即拉取",
lastFetched: "上次拉取 {{time}}",
neverScheduled: "尚未定时拉取",
scheduleDescription: "开启周期后,页面打开期间会按周期自动拉取所有启用的来源。",
intervals: {
disabled: "关闭定时",
minutes30: "每 30 分钟",
hour1: "每 1 小时",
hours6: "每 6 小时",
hours24: "每 24 小时",
},
editor: {
addTitle: "新增提示词来源",
editTitle: "编辑提示词来源",
nameRequired: "请输入来源名称",
invalidUrl: "请输入有效的 JSON URL",
invalidHomepage: "请输入有效的主页地址",
name: "来源名称",
namePlaceholder: "用于分类展示",
homepage: "来源主页(可选)",
enabled: "启用来源",
jsonFormat: "JSON 格式",
},
content: {
loadFailed: "拉取提示词失败",
title: "{{name}} · 提示词内容",
count: "共 {{count}} 条",
refresh: "立即更新",
empty: "暂无提示词",
cover: "封面",
titleColumn: "标题",
tags: "标签",
actions: "操作",
},
runtime: { requestFailed: "请求失败({{status}})", urlRequired: "JSON URL 不能为空", fetchFailed: "「{{name}}」拉取失败:{{error}}", noPrompts: "「{{name}}」未解析到有效提示词", invalidRoot: "「{{name}}」格式错误:根节点必须是数组" },
},
fileSecurity: "JSON 文件包含 API Key 和 WebDAV 凭据,请妥善保管。",
import: "导入配置",
export: "导出配置",
imported: "配置与用户偏好已导入",
importedDirectConfig: "已导入本地直连配置",
importFailed: "配置文件读取失败",
saved: "配置已保存",
savedContinue: "配置已保存,请继续刚才的请求",
channels: {
description: "每个渠道选择一个协议并拉取模型,为每个模型指定能力(生图/视频/文本/音频),并可自定义调用脚本。",
add: "新增渠道",
unnamed: "未命名渠道",
numberedName: "渠道 {{count}}",
modelCount: "{{count}} 个模型",
missingUrl: "未填写接口地址",
keepOne: "至少保留一个渠道",
defaultName: "默认渠道",
newName: "新渠道",
indexedName: "渠道 {{index}}",
},
preferences: {
interface: "界面偏好",
language: "界面语言",
languageDescription: "切换应用界面及组件语言。",
defaultModels: "默认模型",
defaultImageModel: "默认生图模型",
defaultVideoModel: "默认视频模型",
defaultTextModel: "默认文本模型",
defaultAudioModel: "默认音频模型",
generation: "生成偏好",
canvasImageCount: "画布默认生图张数",
canvasImageCountDescription: "新建画布生图和配置节点默认使用,单个节点仍可单独覆盖。",
audioVoice: "默认音频声音",
audioFormat: "默认音频格式",
audioSpeed: "默认音频语速",
audioInstructions: "默认音频指令",
audioInstructionsPlaceholder: "例如:自然、温暖、适合旁白。",
systemPrompt: "系统提示词",
systemPromptPlaceholder: "例如:你是一位擅长电影感写实摄影的视觉导演。",
},
channelEditor: {
title: "编辑渠道",
name: "渠道名称",
protocol: "协议",
baseUrl: "接口地址",
models: "渠道模型",
modelDescription: "已选 {{count}} 个;为每个模型指定能力并可自定义调用脚本。",
selectModels: "选择模型",
scriptReady: "脚本已设",
script: "调用脚本",
empty: "点击「选择模型」拉取或手动增加模型。",
capabilities: {
image: "生图",
video: "视频",
text: "文本",
audio: "音频",
},
},
modelSelect: {
missingConfig: "请先填写接口地址和 API Key",
fetched: "已拉取 {{count}} 个模型",
fetchFailed: "拉取模型失败",
title: "选择渠道模型",
selected: "已选择 {{selected}} / {{total}}",
confirm: "确定",
search: "搜索模型",
modelName: "输入模型名称",
add: "增加模型",
fetch: "拉取模型列表",
description: "如果上游不提供 OpenAI /models 模型列表接口,请在这里手动增加模型名称。",
fetchedTab: "新获取的模型 ({{count}})",
existingTab: "已有的模型 ({{count}})",
visibleSelected: "当前列表已选择 {{selected}} / {{total}}",
selectVisible: "全选当前列表",
clearVisible: "取消当前列表",
fetchedEmpty: "点击「拉取模型列表」获取上游模型,或手动增加模型名称。",
existingEmpty: "暂无已选择的模型。",
},
scriptEditor: {
description: "脚本是一段异步函数体,直接使用下方变量,最后 return 结果;留空则使用系统默认调用。",
insertTemplate: "插入{{name}}模板",
restoreDefault: "恢复默认调用",
returnRequirements: "返回要求",
variables: "可用变量",
insert: "点击插入",
placeholder: "// 留空使用系统默认调用;点击右下角「插入模板」查看示例。",
},
webdav: {
title: "WebDAV 同步",
description: "同步画布、我的资产、生成记录和本地媒体文件,不包含 AI API Key;浏览器会直接连接 WebDAV 服务。",
lastSynced: "上次同步 {{time}}",
neverSynced: "尚未同步",
url: "WebDAV 地址",
directory: "远程目录",
directoryDescription: "会在该目录下分业务目录保存,每个目录包含 {{manifest}} 和 files/",
username: "用户名",
password: "密码 / 应用密码",
test: "测试连接",
syncing: "同步中",
syncNow: "立即同步",
missingUrl: "请先填写 WebDAV 地址",
available: "WebDAV 连接可用",
testFailed: "WebDAV 连接测试失败",
preparing: "准备同步",
failed: "WebDAV 同步失败",
completed: "同步完成:{{projects}} 个画布,{{assets}} 个资产,{{records}} 条记录,本次上传 {{files}} 个文件 {{bytes}}",
domains: {
canvas: "画布",
assets: "我的资产",
imageWorkbench: "生图工作台",
videoWorkbench: "视频创作台",
},
stages: {
waiting: "等待同步",
localWaiting: "等待本地数据加载",
syncComplete: "同步完成",
remoteManifest: "读取远端清单",
localData: "读取本地数据",
downloadMedia: "下载缺失媒体",
writeMerge: "写入本地合并结果",
uploadMedia: "上传新增媒体",
mediaReady: "媒体已齐全",
mediaSkipped: "媒体无需上传",
checkMissingMedia: "检查缺失媒体",
downloadMediaFile: "下载媒体",
checkLocalMedia: "检查本地媒体",
uploadMediaFile: "上传媒体 {{size}}",
uploadManifest: "上传清单 {{size}}",
complete: "完成",
},
errors: { testFailed: "WebDAV 连接测试失败", downloadFailed: "读取 WebDAV 同步文件失败", downloadTimeout: "读取 WebDAV 同步文件超时", emptyUpload: "上传文件为空,已取消上传", uploadFailed: "上传 WebDAV 同步文件失败", directoryFailed: "创建 WebDAV 远程目录失败", requestTimeout: "WebDAV 请求超时,请检查网络或远端服务状态", connectionFailed: "无法连接 WebDAV,请检查地址、HTTPS 证书、CORS 或网络状态", urlRequired: "请先填写 WebDAV 地址", authenticationFailed: "WebDAV 认证失败,请检查用户名、密码或应用密码", pathMissing: "WebDAV 路径不存在,请检查地址和远程目录", responseFailed: "{{fallback}}:{{status}}{{detail}}", syncFailed: "同步失败", invalidManifest: "{{domain}} 同步清单不是当前应用的数据" },
},
protocols: {
ark: "火山方舟",
},
},
agent: {
status: { failed: "连接失败", connected: "已连接", connecting: "连接中", disconnected: "未连接" },
state: { ready: "就绪", connectionRequired: "请填写 Local URL 和 Connect token", invalidUrl: "Local URL 格式不正确", offline: "离线", skillReadFailed: "读取 Skill 失败", skillParseFailed: "Skill 解析失败", requestFailed: "本地 Agent 请求失败" },
siteTools: { canvasList: "画布列表", generationStatus: "生成任务状态", imageConfig: "生图配置", imageGenerate: "生图工作台生成", videoConfig: "视频配置", videoGenerate: "视频创作台生成", promptSearch: "搜索提示词", assetList: "资产列表", assetAdd: "添加资产", unknownTool: "未知工具:{{name}}", canvasLoading: "画布还在加载中,请稍后重试", canvasHint: "用 site_navigate 跳转 /canvas/{id} 打开对应画布", assetsLoading: "资产还在加载中,请稍后重试", assetTitleRequired: "请提供资产标题 title", textContentRequired: "kind=text 时需要提供 content 文本内容", imageUrlRequired: "kind=image 时需要提供 imageUrl(图片地址或 dataURL)", imageReadFailed: "无法读取该图片地址,请改用 dataURL 或可跨域访问的图片链接", assetKindUnsupported: "assets_add 仅支持 kind=text 或 kind=image", imageGenerationStarted: "已跳转生图工作台并触发生成,可用 generation_get_status 查询任务", imageConfigApplied: "已跳转生图工作台并填入参数,未触发生成", videoGenerationStarted: "已跳转视频创作台并触发生成,可用 generation_get_status 查询任务", videoConfigApplied: "已跳转视频创作台并填入参数,未触发生成" },
connect: { pluginTitle: "方式一:在 Codex 中使用插件", pluginText: "在 Codex app 安装 Infinite Canvas 插件后,通过插件启动画布,插件会自动启动本地 Agent 并带上连接信息。", directTitle: "方式二:直接运行 Agent", directText: "不使用 Codex 插件时,在终端运行下面命令,再回到网页里连接或手动填入 Local URL 和 Connect token。", commandCopied: "命令已复制", pluginReminder: "Codex 插件提醒", pluginReminderText: "只有安装 Codex 插件或手动添加 MCP 后,工具列表才会进入 Codex 上下文并增加 token 消耗;仅运行 npx -y @basketikun/canvas-agent 启动本地 Agent 不会安装 MCP。", removePlugin: "移除插件", removeMcp: "移除手动 MCP", copyCommand: "复制命令", title: "连接本地 Agent", description: "按使用场景选择一种连接方式。", webConnection: "网页连接", autoDiscover: "默认自动读取 Local URL 和 Connect token,失败时再手动填写。", disconnect: "断开", connect: "连接", localAddress: "本地地址", urlPlaceholder: "例如 http://127.0.0.1:17371", token: "连接 Token", tokenPlaceholder: "自动发现,或手动填入 Connect token" },
history: { workspace: "工作空间", defaultWorkspace: "默认画布目录", selected: "已选 {{count}} 条", count: "{{count}} 条历史", empty: "暂无历史", deleteCount: "删除 {{count}} 条", refresh: "刷新", newThread: "新对话", selectThread: "选择{{name}}", untitled: "未命名对话", current: "当前", noWorkspaceThreads: "当前工作空间还没有对话记录", connectHint: "连接本地 Agent 后显示历史记录" },
skills: { selectLocal: "选择本地 Skill", search: "搜索 Skill", loading: "正在读取 Skill…", noMatch: "没有匹配的已启用 Skill", none: "还没有可用的 Skill", select: "选择 Skill", connectHint: "连接 Agent 后使用 Skill" },
skillManager: {
codexBusy: "Codex 正在运行,请完成当前任务后再提炼 Skill", noConversation: "当前对话还没有可提炼的已完成内容", noCanvas: "当前页面没有可提炼的画布", connecting: "当前页面仍在连接 Agent,请稍后再试", syncFailed: "同步当前画布失败,请检查 Agent 连接后重试", noDraft: "未生成 Skill 草稿", draftCreated: "草稿已生成,可在技能页确认后创建", draftFailed: "生成 Skill 草稿失败", contentMissing: "未读取到 Skill 内容", readFailed: "读取 Skill 失败", defaultPromptMention: "默认提示词需要包含 ${{name}}", created: "Skill 已创建", updated: "Skill 已更新", saveFailed: "保存 Skill 失败", deleteTitle: "删除 {{name}}", deleteDescription: "删除后本地文件无法恢复,确定继续吗?", delete: "删除", deleted: "Skill 已删除", deleteFailed: "删除 Skill 失败", statusFailed: "更新 Skill 状态失败",
fromConversation: "从当前对话生成草稿", availableAfterRun: "Codex 运行结束后可用", conversationDescription: "整理当前对话中的可复用流程", noCompletedContent: "当前对话还没有已完成内容", startConversation: "请先开始一段对话", fromCanvas: "从当前画布生成草稿", canvasDescription: "整理当前页面的节点与生成流程", canvasUnavailable: "当前页面没有可用画布", blankCreate: "空白创建", blankDescription: "从空白表单开始编写", localSkills: "本地 Skill", localDescription: "安装在本机,由 Codex 直接执行", reload: "重新读取", reloadSkill: "重新读取 Skill", createSkill: "创建 Skill", filterBySource: "按来源筛选 Skill", scopes: { all: "全部来源", repo: "项目", user: "个人", system: "系统", admin: "管理员" }, loadErrors: "{{count}} 个 Skill 未能加载", externalReadonly: "外部 Skill 只能使用或启停", noDescription: "暂无说明", enabled: "已启用", disabled: "已停用", selected: "已选择", use: "使用", editNamed: "编辑 {{name}}", deleteNamed: "删除 {{name}}", connectToView: "连接 Agent 后查看 Skill", noMatch: "没有匹配的 Skill", none: "还没有本地 Skill", connectDescription: "连接成功后会读取本机已安装的 Skill", tryAnotherFilter: "换个关键词或来源试试", createOrInstall: "创建一个,或在本机安装后刷新", saveChanges: "保存更改", saveLocation: "保存到本地 Agent 工作区", basicInfo: "基本信息",
identifier: "Skill 标识", identifierExtra: "用于文件夹名和 $skill-name 调用。", identifierRequired: "请输入 Skill 标识", identifierMax: "Skill 标识不能超过 64 个字符", identifierPattern: "仅支持小写字母、数字和连字符,连字符不能连续或位于首尾", identifierPlaceholder: "例如 product-grid", displayName: "显示名称", displayNameMax: "显示名称不能超过 64 个字符", displayNamePlaceholder: "例如 产品九宫格生成", whenToUse: "何时使用", whenToUseExtra: "说明这个 Skill 的能力和适用场景,Codex 会据此判断是否调用。", whenToUseRequired: "请输入使用场景", whenToUseMax: "使用场景不能超过 1024 个字符", noAngleBrackets: "使用场景不能包含尖括号", whenToUsePlaceholder: "例如:当用户需要基于商品信息规划并生成一组产品图时使用", instructions: "执行说明", instructionsExtra: "按实际执行顺序写清步骤、约束和输出要求。", instructionsRequired: "请输入执行说明", instructionsPlaceholder: "写清楚执行步骤、必要检查和最终输出", advanced: "高级设置", shortDescription: "卡片短说明", shortDescriptionExtra: "填写时控制在 25–64 个字符,便于快速浏览。", shortDescriptionMin: "卡片短说明不能少于 25 个字符", shortDescriptionMax: "卡片短说明不能超过 64 个字符", shortDescriptionPlaceholder: "可选,用于列表展示", defaultPrompt: "默认提示词", defaultPromptExtra: "填写时必须准确包含 $skill-name,例如 $product-grid。", defaultPromptMax: "默认提示词不能超过 1024 个字符", defaultPromptPlaceholder: "可选,选择 Skill 时预填到输入框",
},
composer: { removeImage: "移除图片", removeSkill: "移除 Skill", uploadImage: "上传图片", stop: "停止", send: "发送", model: "模型:{{model}}", selectModel: "选择 Codex 模型,当前为 {{model}}", reasoning: "思考程度:{{effort}}", selectReasoning: "选择思考程度,当前为 {{effort}}", permissionLabel: "权限:{{mode}}", selectPermission: "选择 Codex 权限模式,当前为 {{mode}}", effort: { minimal: "最低", low: "轻度", medium: "中", high: "高", xhigh: "极高", max: "最高", ultra: "Ultra" }, permission: { request: "请求批准", requestDescription: "编辑工作区外文件或联网时始终询问", automatic: "自动审查", automaticDescription: "由 Codex 审查风险操作,必要时再询问", full: "完全访问权限", fullShort: "完全访问", fullDescription: "不受限制地访问网络和本机文件" }, tools: { label: "工具确认:{{mode}}", manual: "手动确认", manualDescription: "Agent 执行画布写入前会请求确认", automatic: "自动确认", automaticDescription: "Agent 会自动执行画布写入操作", select: "选择工具确认模式,当前为 {{mode}}" } },
panel: { connectionSettings: "连接设置 · {{status}}", connectionSettingsLabel: "连接设置,当前{{status}}", chat: "对话", history: "历史", skills: "技能", logs: "日志", collapse: "收起对话", collapseLabel: "收起 Agent 面板", resize: "调整右侧面板宽度", content: "Agent 内容", mcpInitializing: "MCP 初始化中,完成后即可发送", initFailed: "Codex 对话初始化失败,请新建或恢复对话", placeholder: "询问 Codex,或让它操作网站/画布" },
chat: { latestMessages: "查看最新消息", latestCall: "最新调用", input: "输入", cached: "缓存", output: "输出" },
logs: { copied: "日志已复制", selectedManual: "已选中日志,请手动复制", copyFailed: "复制失败,请切换到原始 JSON 后手动复制", title: "运行日志", diagnostics: "排查日志", rawJson: "原始 JSON", messages: "{{count}} 条消息", tool: "工具:{{tool}}", noPendingTool: "无待处理工具", all: "全部 {{count}}", errors: "错误 {{count}}", warnings: "警告 {{count}}", info: "信息 {{count}}", list: "排查日志列表", noFiltered: "当前筛选下没有日志", empty: "暂无事件日志", new: "{{count}} 条新日志", newLabel: "{{count}} 条新日志,查看最新日志", latest: "查看最新日志", fullData: "完整诊断数据 · {{count}} 条", copyAll: "复制全部日志", copyLastError: "复制最近错误", lastErrorCopied: "最近错误已复制", clear: "清空日志", repeated: "重复 {{count}} 次", details: "详细信息", skillLoading: "技能加载", plugin: "插件", terminal: "终端", conversationStorage: "会话存储" },
message: { close: "关闭", copied: "已复制", copyCode: "复制代码", copyLink: "复制链接", externalWarning: "即将打开以下外部链接,请确认链接可信。", openExternal: "打开外部链接?", continueOpen: "继续打开", revealed: "已在文件管理器中定位", openLocalFailed: "无法打开本地文件", openLocal: "打开本地文件?", localDescription: "将在本机文件管理器中定位该路径,不会通过浏览器打开。", externalDescription: "即将打开以下外部链接,请确认链接可信。", pathCopied: "路径已复制", linkCopied: "链接已复制", copyPath: "复制路径", showInFolder: "在文件管理器中显示", toolCall: "工具调用", awaitingConfirmation: "等待确认", reject: "拒绝执行", approve: "批准执行", networkApproval: "请求网络访问", fileApproval: "请求编辑文件", permissionApproval: "请求扩展权限", commandApproval: "请求执行命令", decline: "拒绝", allowOnce: "允许一次", allowSession: "本会话允许", thinking: "正在思考", commandsRunning: "正在执行 {{count}} 条命令", commandRunning: "正在执行命令", commandsCompleted: "已执行 {{count}} 条命令{{failed}}", commandsFailed: " · {{count}} 条失败", failed: "执行失败", running: "进行中", completed: "已完成", command: "命令", slowResponse: "响应时间较长,但任务仍在运行。可以继续等待,或点击输入框右侧的停止按钮结束本轮。", waitingSeconds: "已等待 {{seconds}} 秒", waitingMinutes: "已等待 {{minutes}} 分 {{seconds}} 秒", files: "涉及文件", errorInfo: "错误信息", output: "运行输出", viewLarge: "点击查看大图", attachmentPreview: "图片附件预览", noEffect: "未生效", canceled: "已取消", recorded: "已记录", stopped: "已停止", finished: "已结束", pending: "待处理" },
events: { analyzing: "正在分析任务…", reasoning: "思考摘要", plan: "执行计划", commandFailed: "命令执行失败", commandCompleted: "命令已完成", executeCommand: "执行命令", editFiles: "修改文件", searchWeb: "搜索资料", viewImage: "查看图片", imageViewed: "已查看图片", viewingImage: "正在查看图片", imageGeneration: "内置生图", imageFailed: "图片生成失败", imageCompleted: "图片生成完成", generatingImage: "正在生成图片…", compactContext: "整理上下文", contextCompacted: "已整理当前对话,继续处理任务", compactingContext: "正在整理当前对话…", collaboration: "协作处理", collaborationFailed: "协作任务失败", collaborationCompleted: "已完成协作任务", collaborating: "正在协作处理任务…", progress: "任务进度", progressCount: "已完成 {{completed}}/{{total}} 项", planning: "正在整理执行步骤…", executingCommand: "正在执行命令…", workingDirectory: "工作目录", exitStatus: "退出状态", duration: "耗时", seconds: "{{value}} 秒", filesCompleted: "已完成文件修改", preparingFiles: "正在准备文件修改…", fileCompleted: "已{{action}} {{path}}", editingFile: "正在{{action}} {{path}}", filesEdited: "已修改 {{count}} 个文件:{{names}}{{more}}", editingFiles: "正在修改 {{count}} 个文件:{{names}}{{more}}", andMore: " 等", openPage: "打开网页:{{url}}", findInPage: "在网页中查找“{{pattern}}”", content: "内容", search: "搜索:{{query}}", relatedInfo: "相关资料", keyword: "关键词", webpage: "网页", add: "新增", delete: "删除", edit: "修改", diagnostics: "Infinite Canvas Agent 诊断", address: "地址:{{endpoint}}", connection: "连接:{{connection}} · 状态:{{status}}", online: "在线", connecting: "连接中", disabled: "未启用", messageTool: "消息:{{messages}} · 工具:{{tool}}", none: "无", noLogs: "暂无事件日志", threadCreated: "创建会话", turnStarted: "开始处理", progressUpdated: "更新任务进度", turnFailed: "处理失败", turnStopped: "处理已停止", turnCompleted: "处理完成", toolCalled: "调用工具", toolFailed: "工具失败", toolCompleted: "工具完成", replyReceived: "收到回复", completed: "完成", modelBusy: "模型暂时繁忙", modelBusyDescription: "当前选择的模型请求量过大,暂时无法处理。请稍后重试,或切换其他模型后再试。", taskFailed: "任务失败", taskFailedDescription: "Codex 未能完成本次任务,请稍后重试。" },
eventExtra: { toolNamed: "调用工具:{{name}}", toolOperation: "工具操作", targetPage: "目标页面", searchContent: "搜索内容", textContent: "文本内容", operationContent: "操作内容", imageCount: "图片数量", tools: { generateImage: "生成图片", viewImage: "查看图片", executeCommand: "执行命令", editFiles: "修改文件", searchWeb: "搜索资料", canvasOps: "画布操作", readCanvas: "读取画布", readSelection: "读取选区", exportSnapshot: "导出快照", createNode: "创建节点", addAttachments: "添加附件图片", createText: "创建文本", createTexts: "批量创建文本", createConfig: "创建生成配置", createImageFlow: "创建生图流程", createGenerationFlow: "创建生成流程", generateText: "生成文本", generateVideo: "生成视频", generateAudio: "生成音频", updateNode: "更新节点", updateText: "更新文本", moveNodes: "移动节点", resizeNode: "调整节点尺寸", deleteNodes: "删除节点", connectNodes: "连接节点", selectNodes: "选择节点", setViewport: "调整视口", runGeneration: "触发生成", openPage: "打开页面" } },
eventMore: { toolRunning: "{{action}}中…", openedRoute: "已打开{{route}}", canvasCount: "共 {{count}} 个画布", promptCount: "找到 {{count}} 条提示词", assetCount: "共 {{count}} 个资产", assetAdded: "已加入我的素材", generationStatus: "共 {{total}} 个任务,排队 {{queued}},运行中 {{running}},成功 {{succeeded}},失败 {{failed}}", workbenchExecuted: "已在工作台执行", workbenchConfigRead: "已读取工作台配置", canvasRead: "已读取当前画布内容", selectionRead: "已读取当前选中内容", textNodes: "{{count}} 个文本", imageNodes: "{{count}} 张图片", configNodes: "{{count}} 个配置", videoNodes: "{{count}} 个视频", audioNodes: "{{count}} 个音频", groupNodes: "{{count}} 个分组", otherNodes: "{{count}} 个其他节点", connections: "{{count}} 条连线", emptyCanvas: "当前画布为空", executeTool: "执行{{tool}}", thinking: "正在思考...", operationRunning: "{{operation}}正在进行...", organizingCanvas: "画布已读取,Codex 正在整理结果...", operationCompleted: "{{operation}}已完成,Codex 正在继续处理...", attachmentPrompt: "请处理上传的图片附件。", routes: { home: "首页", canvas: "画布页面", canvasProject: "指定画布", image: "生图工作台", video: "视频工作台", prompts: "提示词中心", assets: "我的素材", config: "配置页面" } },
runtime: {
mcpStarting: "正在启动 MCP:{{name}}", mcpConnecting: "正在建立工具连接并读取可用工具列表", mcpReadyNamed: "MCP 已就绪:{{name}}", toolsReady: "工具列表加载完成,可以开始对话", mcpFailedNamed: "MCP 启动失败:{{name}}", mcpCanceledNamed: "MCP 启动已取消:{{name}}", toolInitFailed: "工具服务未能完成初始化", mcpServicesStarting: "正在启动 MCP 服务", toolServicesPending: "还有 {{count}} 个工具服务正在初始化", checkingToolServices: "正在确认工具服务状态", conversationInitializing: "正在初始化 Codex 对话", conversationCreating: "正在创建会话并启动画布工具服务", someMcpFailed: "部分 MCP 服务初始化失败", remainingToolsReady: "其余工具已就绪,可以开始对话", conversationInitFailed: "Codex 对话初始化失败", conversationCreateFailed: "无法创建 Codex 会话", mcpServicesReady: "{{count}} 个 MCP 服务已完成初始化", toolInitCanceled: "工具服务初始化已取消", mcpStatusComplete: "MCP 状态确认完成", mcpListRead: "已读取 Codex 返回的完整工具服务清单",
historyReadFailed: "读取历史失败", conversationSyncFailed: "同步会话失败", agentOutdated: "本地 Agent 版本过旧,请重启 Canvas Agent 后重新连接", restartRequired: "需要重启 Agent", versionMismatch: "Agent 版本不匹配", awaitingApproval: "等待权限确认", codexRunning: "Codex 正在运行", connected: "已连接", localAgentConnected: "本地 Agent 已连接", processingFailed: "处理失败", completed: "完成", approvalGranted: "已批准权限", approvalCanceled: "已取消权限", log: "日志", connectionLostDescription: "本地 Agent 连接失败或已断开", connectionFailedDescription: "连接失败,请检查地址和 token", connectionLost: "连接断开", connectionFailed: "连接失败", modelListFailed: "读取模型列表失败",
imageTooLarge: "图片过大", imagePayloadTooLarge: "图片附件超过 30MB,请删减后再发送。", imagesSent: "发送了 {{count}} 张图片", sending: "发送中", defaultModel: "默认模型", defaultEffort: "默认强度", sendTask: "发送任务", attachmentCount: "附件 {{count}}", attachmentsOnly: "仅附件", startConversationFailed: "启动对话失败", attachmentHistoryFailed: "保存附件历史失败", sendFailed: "发送失败", conversationSynced: "会话已同步", taskStillRunning: "任务仍在运行", stopping: "停止中", stopTask: "停止任务", taskStopped: "任务已停止", stopFailed: "停止失败", imageLimit: "图片附件最多约 30MB。", imageReadFailed: "图片读取失败", pendingCanvasTool: "仍有待确认的画布工具调用", awaitingConfirmation: "等待确认", toolCompleted: "{{tool}}完成", toolExecutionFailed: "工具执行失败", openCanvasFirst: "当前不在画布页,请先用 site_navigate 打开画布", canvasOperationFailed: "画布操作失败", canvasToolCanceled: "用户取消了画布工具调用",
submittingApproval: "正在提交权限决定", waitingCodexApproval: "等待 Codex 确认权限", approvalFailed: "权限审批失败", enableFullAccess: "启用完全访问权限", fullAccessDescription: "Codex 将不受沙箱限制,可访问互联网及本机任意文件。请仅在信任当前任务时使用。", enableFullAccessAction: "启用完全访问", offline: "离线", addressRequired: "请填写本地 Agent 地址", agentNotFound: "没有发现本地 Agent,请先在 Codex 使用插件或手动启动 Canvas Agent", invalidAddress: "本地 Agent 地址格式不正确", connecting: "连接中", creatingConversation: "正在新建对话", newConversation: "新对话", newConversationFailed: "新建对话失败", conversationResumed: "已恢复会话", resumeConversationFailed: "恢复对话失败", recordsDeleted: "已删除 {{count}} 条记录", deleteConversationFailed: "删除对话失败", deleteConversations: "删除 {{count}} 条对话记录", deleteConversationsDescription: "删除后无法恢复,确定继续吗?", importGeneratedImages: "导入生成图片", addedToSourceCanvas: "已添加到发起任务的画布", imageGenerated: "图片已生成", noImageAttachments: "没有可添加的图片附件", invalidAttachmentNode: "图片附件节点参数无效", attachmentReadFailed: "读取图片附件失败", referenceImage: "参考图", generatedImageReadFailed: "读取 Codex 生成图片失败", generatedImageName: "生成图片 {{index}}",
},
},
locale: {
zhCN: "简体中文",
enUS: "English",
},
};