(function(){
    if(!window.StudioI18n) return;
    window.StudioI18n.register({
        "canvas.noApiProviders": { zh: "暂无 API 平台", en: "No API providers" },
        "canvas.noApiProvidersHint": { zh: "暂无 API 平台，请到 API 设置添加", en: "No API providers. Add one in API Settings." },
        "canvas.noImageModelsHint": { zh: "暂无生图模型，请到 API 设置添加", en: "No image models. Add some in API Settings." },
        "canvas.noModelsHint": { zh: "暂无模型，请到 API 设置添加", en: "No models. Add some in API Settings." },
        "canvas.title": { zh: "无限画布", en: "Infinite Canvas" },
        "canvas.backToManager": { zh: "返回画布管理", en: "Back to canvas manager" },
        "canvas.untitled": { zh: "未命名画布", en: "Untitled Canvas" },
        "canvas.chooseFirst": { zh: "请选择或新建画布", en: "Choose or create a canvas" },
        "canvas.image": { zh: "上传", en: "Upload" },
        "canvas.uploadCard": { zh: "上传卡片", en: "Upload Card" },
        "canvas.prompt": { zh: "提示词", en: "Prompt" },
        "canvas.promptTemplateLibrary": { zh: "提示词模板库", en: "Prompt Templates" },
        "canvas.promptTemplateShort": { zh: "模板库", en: "Templates" },
        "canvas.promptTemplateSystem": { zh: "系统提示词", en: "System prompts" },
        "canvas.promptTemplateSearch": { zh: "搜索模板", en: "Search templates" },
        "canvas.promptTemplateAll": { zh: "全部", en: "All" },
        "canvas.promptTemplateView": { zh: "视角", en: "View" },
        "canvas.promptTemplateStoryboard": { zh: "分镜", en: "Storyboard" },
        "canvas.promptTemplateCharacter": { zh: "角色", en: "Character" },
        "canvas.promptTemplateProduct": { zh: "产品", en: "Product" },
        "canvas.promptTemplateLighting": { zh: "光影", en: "Lighting" },
        "canvas.promptTemplateEmpty": { zh: "没有匹配的模板", en: "No matching templates" },
        "canvas.promptTemplatePick": { zh: "选择一个模板", en: "Select a template" },
        "canvas.promptTemplatePositive": { zh: "正向提示词", en: "Positive prompt" },
        "canvas.promptTemplateNegative": { zh: "负向提示词", en: "Negative prompt" },
        "canvas.promptTemplateParams": { zh: "参数建议", en: "Parameter suggestions" },
        "canvas.promptTemplateApplyPositive": { zh: "正向", en: "Positive" },
        "canvas.promptTemplateApplyFull": { zh: "完整应用", en: "Apply full" },
        "canvas.loop": { zh: "循环", en: "Loop" },
        "canvas.loopNode": { zh: "循环节点", en: "Loop Node" },
        "canvas.loopCount": { zh: "次数", en: "Runs" },
        "canvas.loopStart": { zh: "起始", en: "Start" },
        "canvas.loopSerial": { zh: "循环", en: "Batch" },
        "canvas.loopParallel": { zh: "并发", en: "Concurrent" },
        "canvas.loopHint": { zh: "控制一键运行轮数", en: "Controls cascade rounds" },
        "canvas.loopPromptToggle": { zh: "提示词", en: "Prompt" },
        "canvas.loopImageToggle": { zh: "图片", en: "Images" },
        "canvas.loopImageStart": { zh: "起始计数", en: "Start index" },
        "canvas.loopBatchSize": { zh: "批次", en: "Batch size" },
        "canvas.loopImageWillOutput": { zh: "当前会输出 {n} 张图片", en: "Will output {n} images" },
        "canvas.loopImageEmpty": { zh: "把图片或图片组连接到左侧输入口", en: "Connect images or image groups to the left input" },
        "canvas.loopImageLabel": { zh: "循环图片 {n}", en: "Loop image {n}" },
        "canvas.loopVideoToggle": { zh: "视频", en: "Videos" },
        "canvas.loopVideoWillOutput": { zh: "当前会输出 {n} 个视频", en: "Will output {n} videos" },
        "canvas.loopVideoEmpty": { zh: "把视频或视频组连接到左侧输入口", en: "Connect videos or video groups to the left input" },
        "canvas.loopVideoLabel": { zh: "循环视频 {n}", en: "Loop video {n}" },
        "canvas.outputConvertToInputGroup": { zh: "转为输入组", en: "Convert to input group" },
        "canvas.outputCopyToInputGroup": { zh: "复制为新的输入组", en: "Copy as new input group" },
        "canvas.outputGroupActions": { zh: "分组", en: "Group" },
        "canvas.outputFileActions": { zh: "文件", en: "Files" },
        "canvas.outputDownloadAllImages": { zh: "下载全部图片", en: "Download all images" },
        "canvas.outputDownloadEmpty": { zh: "没有可下载的本地图片", en: "No local images to download" },
        "canvas.loopVariablePrompt": { zh: "可变提示词", en: "Variable Prompt" },
        "canvas.loopVariablePlaceholder": { zh: "例如：现在生成第[计数]个卖点", en: "Example: generate item [Count]" },
        "canvas.loopFixedPrompt": { zh: "固定提示词", en: "Fixed Prompt" },
        "canvas.loopFixedPlaceholder": { zh: "每一轮都会附加的文本", en: "Text appended on every run" },
        "canvas.insertCounter": { zh: "插入计数", en: "Insert Count" },
        "canvas.insertTotal": { zh: "插入总数", en: "Insert Total" },
        "canvas.insertProgress": { zh: "插入进度", en: "Insert Progress" },
        "canvas.counterToken": { zh: "计数", en: "Count" },
        "canvas.totalToken": { zh: "总数", en: "Total" },
        "canvas.progressToken": { zh: "进度", en: "Progress" },
        "canvas.loopRounds": { zh: "轮", en: "rounds" },
        "canvas.loopRound": { zh: "第", en: "Round" },
        "canvas.apiGenerate": { zh: "图片生成", en: "Image Generation" },
        "canvas.msGenerate": { zh: "Modelscope生成", en: "Modelscope Generate" },
        "canvas.videoGenerate": { zh: "视频生成", en: "Video Generate" },
        "canvas.videoManualUrl": { zh: "输入网址", en: "Enter URL" },
        "canvas.videoManualUrlTitle": { zh: "手动输入视频 URL", en: "Enter a video URL manually" },
        "canvas.videoUploadCloud": { zh: "上传云端", en: "Upload to Cloud" },
        "canvas.videoUploadingCloud": { zh: "上传中...", en: "Uploading..." },
        "canvas.videoUploadCloudTitle": { zh: "上传当前输入视频到云端直链", en: "Upload input videos to a cloud URL" },
        "canvas.videoUploadCloudFailed": { zh: "云端上传失败", en: "Cloud upload failed" },
        "canvas.videoUrlFailed": { zh: "设置视频网址失败", en: "Failed to set video URL" },
        "canvas.noLocalMediaToUpload": { zh: "没有需要上传的本地图片或视频", en: "No local images or videos need uploading" },
        "canvas.cloudUploadComplete": { zh: "已上传 {n} 个媒体文件到云端，首个链接已复制。链接约 3 天有效。", en: "Uploaded {n} media files to the cloud. The first URL was copied and is valid for about 3 days." },
        "canvas.manualUrlCleared": { zh: "已清除手动网址。", en: "Manual URL cleared." },
        "canvas.invalidMediaUrl": { zh: "请输入 http/https 媒体网址或 asset:// 火山素材 URI", en: "Enter an http/https media URL or an asset:// Volcengine asset URI" },
        "canvas.videoUrlSet": { zh: "已设置视频网址。", en: "Video URL set." },
        "canvas.notConfigured": { zh: "未配置", en: "Not configured" },
        "canvas.group": { zh: "分组", en: "Group" },
        "canvas.logs": { zh: "日志", en: "Logs" },
        "canvas.generationLogs": { zh: "生成日志", en: "Generation Logs" },
        "canvas.noLogs": { zh: "还没有生成日志", en: "No generation logs yet" },
        "canvas.success": { zh: "成功", en: "Success" },
        "canvas.failed": { zh: "失败", en: "Failed" },
        "canvas.selectCanvas": { zh: "选择画布", en: "Select Canvas" },
        "canvas.trash": { zh: "回收站", en: "Trash" },
        "canvas.backToList": { zh: "返回画布列表", en: "Back to canvases" },
        "canvas.subtitle": { zh: "打开已有画布，或新建一个开始创作。", en: "Open an existing canvas, or create a new one to start." },
        "canvas.trashSubtitle": { zh: "已删除画布可恢复，30 天后自动清理。", en: "Deleted canvases can be restored and are cleaned after 30 days." },
        "canvas.refresh": { zh: "刷新列表", en: "Refresh list" },
        "canvas.openTrash": { zh: "打开回收站", en: "Open trash" },
        "canvas.newCanvas": { zh: "新建画布", en: "New Canvas" },
        "canvas.newSmartCanvas": { zh: "新建智能画布", en: "New Smart Canvas" },
        "canvas.smartCanvas": { zh: "智能画布", en: "Smart Canvas" },
        "canvas.smartCanvasShort": { zh: "智能", en: "Smart" },
        "canvas.newSmartCanvasPlaceholder": { zh: "智能画布名称（可留空使用默认）", en: "Smart canvas name (optional)" },
        "canvas.newCanvasPlaceholder": { zh: "新画布名称（可留空使用默认）", en: "New canvas name (optional)" },
        "canvas.trashNote": { zh: "回收站中的画布会在 30 天后自动清理。", en: "Canvases in Trash are automatically cleaned after 30 days." },
        "canvas.dropImage": { zh: "拖放素材到画布", en: "Drop media onto the canvas" },
        "canvas.imageCard": { zh: "上传节点", en: "Upload Node" },
        "canvas.imageCardHint": { zh: "支持图片/音频/视频/批量上传", en: "Images, audio, video, batch upload" },
        "canvas.llmNode": { zh: "LLM 节点", en: "LLM Node" },
        "canvas.modelscopeGenerate": { zh: "Modelscope生成", en: "Modelscope Generate" },
        "canvas.comfyGenerate": { zh: "ComfyUI 生成", en: "ComfyUI Generate" },
        "canvas.videoGenerateNode": { zh: "视频生成", en: "Video Generate" },
        "canvas.rhGenerate": { zh: "RunningHub生成", en: "RunningHub Generate" },
        "canvas.rhModeApp": { zh: "AI应用", en: "AI App" },
        "canvas.rhModeWorkflow": { zh: "工作流", en: "Workflow" },
        "canvas.rhWebappId": { zh: "Webapp ID", en: "Webapp ID" },
        "canvas.rhWorkflowId": { zh: "Workflow ID", en: "Workflow ID" },
        "canvas.rhFetchApp": { zh: "拉取应用", en: "Fetch App" },
        "canvas.rhFetchWorkflow": { zh: "拉取工作流", en: "Fetch Workflow" },
        "canvas.rhFetching": { zh: "拉取中", en: "Fetching" },
        "canvas.rhImportJson": { zh: "导入JSON", en: "Import JSON" },
        "canvas.rhImportJsonFallback": { zh: "本地导入JSON", en: "Import local JSON" },
        "canvas.rhInstanceType": { zh: "实例类型", en: "Instance Type" },
        "canvas.rhDefault": { zh: "默认", en: "Default" },
        "canvas.rhInputs": { zh: "输入素材", en: "Input Media" },
        "canvas.rhParams": { zh: "RunningHub 参数", en: "RunningHub Params" },
        "canvas.rhWorkflowParams": { zh: "工作流参数", en: "Workflow Params" },
        "canvas.rhNoParams": { zh: "输入 webappId 并拉取应用参数", en: "Enter webappId and fetch app params" },
        "canvas.rhUseUpstream": { zh: "使用上游", en: "Use upstream" },
        "canvas.rhRun": { zh: "运行 RunningHub", en: "Run RunningHub" },
        "canvas.rhRunning": { zh: "RunningHub运行中", en: "Running RunningHub" },
        "canvas.rhNeedWebappId": { zh: "请先填写 RunningHub webappId", en: "Enter a RunningHub webappId first" },
        "canvas.rhNeedWorkflowId": { zh: "请先填写 RunningHub workflowId", en: "Enter a RunningHub workflowId first" },
        "canvas.rhNeedWorkflowJson": { zh: "请先导入工作流 api.json", en: "Import the workflow api.json first" },
        "canvas.rhWorkflowJsonInvalid": { zh: "工作流 JSON 无法解析，或没有可编辑节点", en: "Workflow JSON could not be parsed or has no editable nodes" },
        "canvas.rhWorkflowJsonOptional": { zh: "可直接用 workflowId 运行默认工作流；如需修改节点参数，再导入从 RunningHub 导出的 api.json。", en: "You can run the default workflow with only workflowId. Import RunningHub api.json only when you need editable node params." },
        "canvas.rhWorkflowFetchHint": { zh: "填写 workflowId 后点击拉取工作流参数；如果接口不可用，可本地导入 RunningHub 导出的 api.json。", en: "Enter workflowId and fetch workflow params. If the API is unavailable, import RunningHub api.json locally." },
        "canvas.rhWorkflowJsonLoaded": { zh: "已导入 {n} 个可修改字段，可按需要覆盖参数。", en: "{n} editable fields imported. Override params as needed." },
        "canvas.rhFailed": { zh: "RunningHub 任务失败", en: "RunningHub task failed" },
        "canvas.rhUploadFailed": { zh: "RunningHub 素材上传失败", en: "RunningHub asset upload failed" },
        "canvas.rhNoTaskId": { zh: "RunningHub 没有返回 taskId", en: "RunningHub did not return a taskId" },
        "canvas.rhTimeout": { zh: "RunningHub 任务超时", en: "RunningHub task timed out" },
        "canvas.rhOutputsEmpty": { zh: "RunningHub 没有返回产物", en: "RunningHub returned no outputs" },
        "canvas.hint": { zh: "拖拽画布移动，Ctrl 框选多选，拖动选中节点可一起移动。上传/提示词节点右下端口拖线到生成节点。", en: "Drag the canvas to pan. Ctrl-select multiple nodes. Drag selected nodes together. Connect upload/prompt ports to generation nodes." },
        "canvas.cropImage": { zh: "裁剪图片", en: "Crop Image" },
        "canvas.cropHint": { zh: "拖动裁剪框移动，拖右下角调整大小", en: "Drag the crop box to move it. Drag the corner to resize." },
        "canvas.editImage": { zh: "编辑图片", en: "Edit Image" },
        "canvas.editImageSub": { zh: "选择裁剪、遮罩或画笔模式", en: "Select crop, mask, brush, or grid mode" },
        "canvas.modeCrop": { zh: "裁剪", en: "Crop" },
        "canvas.modeOutpaint": { zh: "扩图", en: "Expand" },
        "canvas.modeMask": { zh: "遮罩", en: "Mask" },
        "canvas.modeBrush": { zh: "画笔", en: "Brush" },
        "canvas.modeGrid": { zh: "宫格切分", en: "Grid Split" },
        "canvas.brushSize": { zh: "笔刷", en: "Brush" },
        "canvas.clear": { zh: "清空", en: "Clear" },
        "canvas.maskHint": { zh: "白色区域为要编辑的遮罩", en: "White areas mark the region to edit" },
        "canvas.maskHint2": { zh: "在要重绘的位置涂白，保存后会生成遮罩图片节点", en: "Paint white over areas to repaint. Saving will create a mask image node." },
        "canvas.color": { zh: "颜色", en: "Color" },
        "canvas.textContent": { zh: "文字", en: "Text" },
        "canvas.textSize": { zh: "字号", en: "Size" },
        "canvas.brushHint": { zh: "直接在图片上绘制标记或草图", en: "Draw marks or sketches directly on the image" },
        "canvas.maskEdit": { zh: "遮罩编辑", en: "Mask Edit" },
        "canvas.brushEdit": { zh: "画笔编辑", en: "Brush Edit" },
        "canvas.applyMask": { zh: "生成遮罩节点", en: "Create Mask Node" },
        "canvas.applyBrush": { zh: "应用画笔", en: "Apply Brush" },
        "canvas.applyOutpaint": { zh: "应用扩图", en: "Apply Expand" },
        "canvas.outpaintImage": { zh: "扩图", en: "Expand Image" },
        "canvas.outpaintHint": { zh: "拖动红框调整画布范围，最大不超过 4K 尺寸，确认后空白区域填充白色", en: "Drag the red box to extend the canvas. It is capped at 4K size, and empty areas are filled white." },
        "canvas.applyGrid": { zh: "切分到 Output", en: "Split to Output" },
        "canvas.gridHint": { zh: "按切分线分割图片，间隔会从线两侧扣除", en: "Split image along cut lines. Gap removes pixels on each side of every line." },
        "canvas.gridCustom": { zh: "自定义", en: "Custom" },
        "canvas.gridCustomTitle": { zh: "自由放置切割线", en: "Place cut lines freely" },
        "canvas.gridHLines": { zh: "横向线", en: "H-lines" },
        "canvas.gridVLines": { zh: "竖向线", en: "V-lines" },
        "canvas.gridOrientH": { zh: "水平", en: "Horizontal" },
        "canvas.gridOrientHTitle": { zh: "点击图片放置水平线", en: "Click image to place a horizontal line" },
        "canvas.gridOrientV": { zh: "垂直", en: "Vertical" },
        "canvas.gridOrientVTitle": { zh: "点击图片放置竖直线", en: "Click image to place a vertical line" },
        "canvas.gridUndo": { zh: "撤销上一条线", en: "Undo last line" },
        "canvas.gridClearLines": { zh: "清除所有自定义线", en: "Clear all custom lines" },
        "canvas.gridGap": { zh: "间隔(px)", en: "Gap (px)" },
        "canvas.gridPresets": { zh: "预设", en: "Presets" },
        "canvas.gridWillOutput": { zh: "将输出 {n} 张", en: "Will output {n} images" },
        "canvas.copyPrompt": { zh: "复制提示词", en: "Copy Prompt" },
        "canvas.copied": { zh: "已复制", en: "Copied" },
        "canvas.rerun": { zh: "再次运行", en: "Run Again" },
        "canvas.noPromptMeta": { zh: "没有记录提示词", en: "No prompt recorded" },
        "canvas.reset": { zh: "重置", en: "Reset" },
        "canvas.applyCrop": { zh: "应用裁剪", en: "Apply Crop" },
        "canvas.manageModels": { zh: "管理模型", en: "Manage Models" },
        "canvas.manageModelsSub": { zh: "拖动调整顺序，删除不需要的模型，也可以输入新模型名称。", en: "Drag to reorder, delete unused models, or add a new model name." },
        "canvas.apiProvider": { zh: "API 平台", en: "API Provider" },
        "canvas.provider": { zh: "平台", en: "Provider" },
        "canvas.displayName": { zh: "显示名称", en: "Display Name" },
        "canvas.providerId": { zh: "平台 ID", en: "Provider ID" },
        "canvas.keepKey": { zh: "留空则保持当前 Key", en: "Leave blank to keep current key" },
        "canvas.modelInputPlaceholder": { zh: "粘贴或输入模型名称", en: "Paste or enter a model name" },
        "canvas.add": { zh: "添加", en: "Add" },
        "canvas.manageModelList": { zh: "管理模型列表...", en: "Manage model list..." },
        "canvas.manageApiProviders": { zh: "管理 API 平台...", en: "Manage API providers..." },
        "canvas.countSuffix": { zh: "个", en: "" },
        "canvas.noCanvas": { zh: "暂无画布", en: "No canvases" },
        "canvas.startWithNewCanvas": { zh: "点击右上方「新建画布」开始创作", en: "Click New Canvas in the top right to start." },
        "canvas.trashEmpty": { zh: "回收站为空", en: "Trash is empty" },
        "canvas.deletedCanvas": { zh: "已删除画布", en: "Deleted canvas" },
        "canvas.changeIcon": { zh: "修改画布图标", en: "Change canvas icon" },
        "canvas.modePreview": { zh: "预览", en: "Preview" },
        "canvas.previewImage": { zh: "预览图片", en: "Preview image" },
        "canvas.previewHint": { zh: "查看大图，可切换到裁剪 / 扩图 / 遮罩等模式", en: "View the full image, or switch to crop / expand / mask modes" },
        "canvas.sortRecent": { zh: "最近编辑", en: "Recent" },
        "canvas.sortName": { zh: "名称", en: "Name" },
        "canvas.ownerLabel": { zh: "负责人 / 项目", en: "Owner / Project" },
        "canvas.ownerPlaceholder": { zh: "输入负责人或项目", en: "Owner or project" },
        "canvas.colorLabel": { zh: "颜色标记", en: "Color" },
        "canvas.colorNone": { zh: "无", en: "None" },
        "canvas.pin": { zh: "置顶", en: "Pin" },
        "canvas.unpin": { zh: "取消置顶", en: "Unpin" },
        "canvas.editMeta": { zh: "编辑图标 / 颜色 / 负责人", en: "Edit icon / color / owner" },
        "canvas.pinned": { zh: "已置顶", en: "Pinned" },
        "canvas.metaSaveFailed": { zh: "保存失败", en: "Save failed" },
        "canvas.deletedAt": { zh: "删除于", en: "Deleted" },
        "canvas.purgeConfirm": { zh: "彻底删除？无法恢复", en: "Delete forever? This cannot be undone." },
        "canvas.moveToTrashConfirm": { zh: "移入回收站？", en: "Move to Trash?" },
        "canvas.restoreCanvas": { zh: "恢复画布", en: "Restore canvas" },
        "canvas.purgeCanvas": { zh: "彻底删除", en: "Delete forever" },
        "canvas.rename": { zh: "重命名", en: "Rename" },
        "canvas.moveToTrash": { zh: "移入回收站", en: "Move to Trash" },
        "canvas.loadingCanvases": { zh: "正在加载画布列表...", en: "Loading canvases..." },
        "canvas.needCanvas": { zh: "请先新建或选择画布", en: "Choose or create a canvas first" },
        "canvas.enterCanvasName": { zh: "输入画布名称后确认", en: "Enter a canvas name and confirm" },
        "canvas.noCanvasCreateFirst": { zh: "暂无画布，请先新建画布", en: "No canvases yet. Create one first." },
        "canvas.canvasListFailed": { zh: "画布列表加载失败", en: "Failed to load canvas list" },
        "canvas.trashLoadFailed": { zh: "回收站加载失败", en: "Failed to load Trash" },
        "canvas.movedToTrash": { zh: "已移入回收站", en: "Moved to Trash" },
        "canvas.moveToTrashFailed": { zh: "移入回收站失败", en: "Failed to move to Trash" },
        "canvas.purged": { zh: "已彻底删除", en: "Deleted forever" },
        "canvas.clickDragPasteImage": { zh: "点击/拖拽上传素材，或在空节点粘贴图片", en: "Click/drop media, or paste image into an empty node" },
        "canvas.promptPlaceholder": { zh: "输入提示词...", en: "Enter a prompt..." },
        "canvas.groupEmpty": { zh: "拖入图片或提示词到此", en: "Drop images or prompts here" },
        "canvas.grouped": { zh: "已成组", en: "grouped" },
        "canvas.imageCount": { zh: "张图片", en: "images" },
        "canvas.promptCount": { zh: "个提示词", en: "prompts" },
        "canvas.connectHere": { zh: "连接到这里", en: "Connect here" },
        "canvas.dragConnect": { zh: "拖线连接", en: "Drag to connect" },
        "canvas.resize": { zh: "调整大小", en: "Resize" },
        "canvas.nodeMode": { zh: "节点", en: "Node" },
        "canvas.chatMode": { zh: "聊天", en: "Chat" },
        "canvas.systemPrompt": { zh: "系统提示词...", en: "System prompt..." },
        "canvas.llmInputEmpty": { zh: "把 Prompt 连到 LLM 输入点", en: "Connect a Prompt to the LLM input" },
        "canvas.llmOutputEmpty": { zh: "运行后会输出文本，可连到生成卡片", en: "Run to output text. It can connect to a generation card." },
        "canvas.resizePanes": { zh: "拖动调整输入/输出高度", en: "Drag to resize input/output" },
        "canvas.running": { zh: "运行中", en: "Running" },
        "canvas.startChat": { zh: "开始一段聊天...", en: "Start a chat..." },
        "canvas.chatInput": { zh: "输入消息...", en: "Type a message..." },
        "canvas.sending": { zh: "发送中", en: "Sending" },
        "canvas.images": { zh: "Images", en: "Images" },
        "canvas.custom": { zh: "自定义", en: "Custom" },
        "canvas.fitImageSize": { zh: "适配图片", en: "Match Image" },
        "canvas.adaptiveRatio": { zh: "适配比例", en: "Adaptive Ratio" },
        "canvas.inputImagesEmpty": { zh: "把图片或图片组连到这里", en: "Connect images or image groups here" },
        "canvas.enableLora": { zh: "启用 LoRA", en: "Enable LoRA" },
        "canvas.loraStrength": { zh: "LoRA 强度", en: "LoRA Strength" },
        "canvas.noLoraForModel": { zh: "当前模型暂无绑定 LoRA，可在 API 设置 · Modelscope · LoRA 管理中添加。", en: "No LoRA is bound to this model. Add one in API Settings · Modelscope · LoRA Manager." },
        "canvas.noLoraBoundError": { zh: "当前模型没有可用 LoRA，请先到 API 设置绑定", en: "No LoRA is available for this model. Bind one in API Settings first." },
        "canvas.imageReadFailed": { zh: "无法读取参考图尺寸", en: "Could not read reference image size" },
        "canvas.msFailed": { zh: "Modelscope 生成失败", en: "Modelscope generation failed" },
        "canvas.generationFailed": { zh: "生成失败", en: "Generation failed" },
        "canvas.apiFailed": { zh: "API 生成失败", en: "API generation failed" },
        "canvas.emptyRatio": { zh: "比例空", en: "No ratio" },
        "canvas.decrease": { zh: "减少", en: "Decrease" },
        "canvas.decreaseCount": { zh: "减少生成数量", en: "Decrease generation count" },
        "canvas.increase": { zh: "增加", en: "Increase" },
        "canvas.increaseCount": { zh: "增加生成数量", en: "Increase generation count" },
        "canvas.ratioWidth": { zh: "比例宽", en: "Ratio W" },
        "canvas.ratioHeight": { zh: "比例高", en: "Ratio H" },
        "canvas.width": { zh: "宽度", en: "Width" },
        "canvas.height": { zh: "高度", en: "Height" },
        "canvas.generating": { zh: "生成中", en: "Generating" },
        "canvas.needPrompt": { zh: "请先连接提示词", en: "Connect a prompt first" },
        "canvas.needPromptOrImage": { zh: "请先连接提示词或图片", en: "Connect a prompt or image first" },
        "canvas.needImage": { zh: "请先连接图片", en: "Connect an image first" },
        "canvas.videoNeedsPrompt": { zh: "请先连接提示词", en: "Connect a prompt first" },
        "canvas.needPromptToLLM": { zh: "请先连接 Prompt 到 LLM", en: "Connect a Prompt to the LLM first" },
        "canvas.createFailed": { zh: "新建画布失败", en: "Failed to create canvas" },
        "canvas.openFailed": { zh: "打开画布失败", en: "Failed to open canvas" },
        "canvas.restored": { zh: "画布已恢复", en: "Canvas restored" },
        "canvas.restoreFailed": { zh: "恢复画布失败", en: "Failed to restore canvas" },
        "canvas.purgeFailed": { zh: "彻底删除失败", en: "Failed to delete forever" },
        "canvas.defaultProviderNoDelete": { zh: "默认平台不能删除，可以修改名称、地址和模型。", en: "Default providers cannot be deleted. You can edit their name, URL, and models." },
        "canvas.noModelsAddFirst": { zh: "暂无模型，输入名称后添加", en: "No models yet. Enter a model name to add one." },
        "canvas.manageLlmModelsTitle": { zh: "管理 LLM 模型", en: "Manage LLM Models" },
        "canvas.manageLlmModelsSub": { zh: "这些模型会出现在 LLM 节点下拉框里。拖动排序，删除或新增后保存。", en: "These models appear in LLM node dropdowns. Drag to reorder, delete, or add new ones." },
        "canvas.manageApiTitle": { zh: "管理 API 平台", en: "Manage API Providers" },
        "canvas.manageApiSub": { zh: "选择平台后维护 Base URL、Key 和这个平台下的生成模型。Key 会写入 API/.env，页面只显示脱敏状态。", en: "Edit the selected provider Base URL, Key, and generation models. Keys are saved to API/.env and only shown in masked form." },
        "canvas.manageVideoModelsTitle": { zh: "管理视频模型", en: "Manage Video Models" },
        "canvas.manageVideoModelsSub": { zh: "这些模型会出现在视频生成节点下拉框里。选择平台后维护该平台的视频模型。", en: "These models appear in video generation node dropdowns. Select a provider to edit its video models." },
        "canvas.keepCurrentKey": { zh: "保持当前", en: "Keep current" },
        "canvas.enterApiKey": { zh: "输入 API Key", en: "Enter API key" },
        "canvas.deleteModel": { zh: "删除模型", en: "Delete model" },
        "canvas.deleteLink": { zh: "删除连线", en: "Delete link" },
        "canvas.download": { zh: "下载", en: "Download" },
        "canvas.comfyModeText": { zh: "文生图", en: "Text to Image" },
        "canvas.comfyModeEnhance": { zh: "细节增强", en: "Detail Enhance" },
        "canvas.comfyModeEdit": { zh: "图片编辑", en: "Image Edit" },
        "canvas.comfyModeCustom": { zh: "自定义", en: "Custom" },
        "canvas.comfyText": { zh: "文生图", en: "Text to Image" },
        "canvas.comfyEnhance": { zh: "细节增强", en: "Enhance" },
        "canvas.comfyEdit": { zh: "图片编辑", en: "Image Edit" },
        "canvas.comfyCustom": { zh: "自定义", en: "Custom" },
        "canvas.comfyRunning": { zh: "处理中", en: "Processing" },
        "canvas.comfyRun": { zh: "Run ComfyUI", en: "Run ComfyUI" },
        "canvas.comfyNeedImages": { zh: "需要", en: "Needs" },
        "canvas.comfyNoWorkflow": { zh: "请先在 ComfyUI 设置中保存工作流。", en: "Save a workflow in ComfyUI Settings first." },
        "canvas.comfyLoadingWorkflow": { zh: "正在读取工作流参数...", en: "Loading workflow parameters..." },
        "canvas.comfyNoExtraParams": { zh: "这个工作流只有图片/提示词输入，没有额外参数。", en: "This workflow only has image/prompt inputs and no extra parameters." },
        "canvas.ltxDirector": { zh: "LTX Director", en: "LTX Director" },
        "canvas.ltxDurationSec": { zh: "秒数", en: "Seconds" },
        "canvas.ltxDurationFrames": { zh: "帧数", en: "Frames" },
        "canvas.ltxFps": { zh: "帧率", en: "FPS" },
        "canvas.ltxLinkedImages": { zh: "已连接图片", en: "Linked Images" },
        "canvas.ltxRun": { zh: "运行 LTX", en: "Run LTX" },
        "canvas.ltxRunning": { zh: "LTX 运行中", en: "Running LTX" },
        "canvas.ltxFailed": { zh: "LTX 生成失败", en: "LTX generation failed" },
        "canvas.ltxNoOutput": { zh: "LTX 没有返回产物", en: "LTX returned no outputs" },
        "canvas.ltxImageSegNeedRef": { zh: "LTX 图片段缺少参考图", en: "An LTX image segment is missing a reference image" },
        "canvas.ltxTimelineLoadFailed": { zh: "LTX 时间线 UI 加载失败，请查看控制台。", en: "LTX timeline UI failed to load. Check the console." },
        "canvas.ltxTimelineScriptMissing": { zh: "LTX 时间线脚本未加载。", en: "LTX timeline script is not loaded." },
        "canvas.videoModel": { zh: "视频模型", en: "Video Model" },
        "canvas.videoDuration": { zh: "时长", en: "Duration" },
        "canvas.videoAspect": { zh: "比例", en: "Aspect" },
        "canvas.videoResolution": { zh: "分辨率", en: "Resolution" },
        "canvas.videoUpsample": { zh: "提升到 1080p", en: "Upsample to 1080p" },
        "canvas.videoEnhancePrompt": { zh: "优化提示词", en: "Enhance Prompt" },
        "canvas.videoWatermark": { zh: "水印", en: "Watermark" },
        "canvas.videoCameraFixed": { zh: "固定镜头", en: "Fixed Camera" },
        "canvas.videoGenerateAudio": { zh: "生成音频", en: "Generate Audio" },
        "canvas.videoMultimodal": { zh: "智能多参", en: "Multimodal" },
        "canvas.videoFirstLastFrames": { zh: "首尾帧", en: "First/Last" },
        "canvas.videoRoleReference": { zh: "参考", en: "Ref" },
        "canvas.videoRoleFirstFrame": { zh: "首帧", en: "First" },
        "canvas.videoRoleLastFrame": { zh: "尾帧", en: "Last" },
        "canvas.videoFailed": { zh: "视频生成失败", en: "Video generation failed" }
    });
})();
