{
    "common": {
        "save": "保存",
        "cancel": "取消",
        "close": "关闭",
        "confirm": "确认",
        "clear": "清除",
        "edit": "编辑",
        "delete": "删除",
        "loading": "加载中...",
        "new": "新建"
    },
    "nav": {
        "about": "关于",
        "editor": "编辑器",
        "newChat": "开始新对话",
        "github": "GitHub",
        "settings": "设置",
        "hidePanel": "隐藏聊天面板 (Ctrl+B)",
        "showPanel": "显示聊天面板 (Ctrl+B)",
        "aiChat": "AI 聊天"
    },
    "providers": {
        "useServerDefault": "使用服务器默认值",
        "openai": "OpenAI",
        "anthropic": "Anthropic",
        "google": "Google",
        "azure": "Azure OpenAI",
        "openrouter": "OpenRouter",
        "deepseek": "DeepSeek",
        "siliconflow": "SiliconFlow",
        "modelscope": "ModelScope",
        "minimax": "MiniMax",
        "glm": "GLM",
        "qwen": "Qwen",
        "kimi": "Kimi",
        "qiniu": "Qiniu",
        "mimo": "MiMo (小米)"
    },
    "chat": {
        "placeholder": "描述您的图表或上传文件...",
        "send": "发送",
        "stopGeneration": "停止生成",
        "sendMessage": "发送消息",
        "clearConversation": "清除对话",
        "diagramHistory": "图表历史",
        "saveDiagram": "保存图表",
        "uploadFile": "上传文件（图片、PDF、文本）",
        "minimalStyle": "简约",
        "styledMode": "精致",
        "minimalTooltip": "使用简约模式以加快生成速度（无颜色）",
        "regenerate": "重新生成响应",
        "copyResponse": "复制响应",
        "copied": "已复制！",
        "failedToCopy": "复制失败",
        "failedToCopyDetail": "复制消息失败。请手动复制或检查剪贴板权限。",
        "goodResponse": "有帮助",
        "badResponse": "无帮助",
        "clickToEdit": "点击编辑",
        "editMessage": "编辑消息",
        "saveAndSubmit": "保存并提交",
        "ExtractURL": "从 URL 提取"
    },
    "examples": {
        "title": "用 AI 创建图表",
        "subtitle": "描述您想要创建的内容或上传图片进行复制",
        "quickExamples": "快速示例",
        "paperToDiagram": "文档转图表",
        "paperDescription": "上传 .pdf, .txt, .md, .json, .csv, .py, .js, .ts 等文件",
        "animatedDiagram": "动画图表",
        "animatedDescription": "绘制带有动画连接器的 Transformer 架构",
        "awsArchitecture": "AWS 架构",
        "awsDescription": "使用 AWS 图标创建云架构图",
        "replicateFlowchart": "复制流程图",
        "replicateDescription": "上传并复制现有流程图",
        "creativeDrawing": "创意绘图",
        "creativeDescription": "绘制有趣且富有创意的内容",
        "cachedNote": "示例已缓存，可即时响应",
        "mcpServer": "MCP 服务器",
        "mcpDescription": "在 Claude Desktop、VS Code 和 Cursor 中使用"
    },
    "settings": {
        "title": "设置",
        "description": "配置您的应用程序设置。",
        "apiKeysModels": "API 密钥和模型",
        "apiKeysModelsDescription": "配置 AI 提供商和 API 密钥。",
        "accessCode": "访问码",
        "accessCodePlaceholder": "输入访问码",
        "accessCodeDescription": "使用此应用程序需要访问码。",
        "aiProvider": "AI 提供商设置",
        "aiProviderDescription": "使用您自己的 API 密钥来绕过使用限制。您的密钥仅存储在浏览器本地，不会存储在服务器上。",
        "provider": "提供商",
        "modelId": "模型 ID",
        "apiKey": "API 密钥",
        "apiKeyPlaceholder": "您的 API 密钥",
        "baseUrl": "基础 URL（可选）",
        "customEndpoint": "自定义端点 URL",
        "overrides": "覆盖",
        "clearSettings": "清除设置",
        "useServerDefault": "使用服务器默认值",
        "language": "语言",
        "languageDescription": "选择界面语言。",
        "theme": "主题",
        "themeDescription": "界面和 DrawIO 画布的深色/浅色模式。",
        "drawioStyle": "DrawIO 样式",
        "drawioStyleDescription": "画布样式",
        "themeDefault": "默认",
        "themeDark": "深色",
        "themeMinimal": "简约",
        "themeSketch": "草图",
        "themeSimple": "简单",
        "diagramStyle": "图表样式",
        "diagramStyleDescription": "切换简约与精致图表输出模式。",
        "sendShortcut": "发送快捷键",
        "sendShortcutDescription": "选择发送消息的方式。",
        "enterToSend": "回车发送",
        "ctrlEnterToSend": "Cmd/Ctrl+回车发送",
        "diagramActions": "图表操作",
        "diagramActionsDescription": "管理图表历史记录和导出",
        "history": "历史记录",
        "download": "下载",
        "proxy": "代理设置",
        "proxyDescription": "配置 API 请求的 HTTP/HTTPS 代理（仅桌面版）",
        "httpProxy": "HTTP 代理",
        "httpsProxy": "HTTPS 代理",
        "applyProxy": "应用",
        "proxyApplied": "代理设置已应用",
        "diagramValidation": "图表验证（实验性）",
        "diagramValidationDescription": "使用视觉语言模型验证生成的图表。需要支持视觉的模型，如 GPT-5.2 或 Sonnet-4.5。",
        "enabled": "已启用",
        "disabled": "已禁用",
        "customSystemMessage": "自定义系统消息",
        "customSystemMessageDescription": "添加自定义指令，将附加到 AI 的系统提示末尾。",
        "customSystemMessagePlaceholder": "例如：图表始终使用蓝色配色方案...",
        "maxOutputTokens": "最大输出 token 数",
        "maxOutputTokensDescription": "单次回复的额度，思考过程和图表 XML 共用。如果 AI 一直在思考却没有生成图表，请把它调大。留空则使用默认值。",
        "panelVisibility": "大厅面板",
        "panelVisibilityDescription": "选择在聊天大厅显示哪些面板。",
        "showRecentChats": "最近聊天",
        "showMyTemplates": "我的模板",
        "showQuickExamples": "快速示例"
    },
    "save": {
        "title": "保存图表",
        "description": "选择格式和文件名以保存您的图表。",
        "format": "格式",
        "filename": "文件名",
        "filenamePlaceholder": "输入文件名",
        "formats": {
            "drawio": "Draw.io XML",
            "png": "PNG 图片",
            "svg": "SVG 图片",
            "xmlsvg": "可编辑 SVG"
        },
        "savedSuccessfully": "保存成功！"
    },
    "history": {
        "title": "图表历史",
        "description": "在 AI 修改之前保存的每个图表。\n点击图表以恢复它",
        "noHistory": "尚无历史记录。发送消息以创建图表历史。",
        "version": "版本",
        "restoreTo": "恢复到版本 {version}？"
    },
    "dialogs": {
        "clearTitle": "清除所有内容？",
        "clearDescription": "这将清除当前对话并重置图表。此操作无法撤消。",
        "clearEverything": "清除所有内容",
        "clearSuccess": "已开始新对话"
    },
    "errors": {
        "maxFiles": "文件太多。最多允许 {max} 个。",
        "onlyMoreAllowed": "只能再添加 {slots} 个文件",
        "fileExceeds": "\"{name}\" 大小为 {size}（超过 {max}MB）",
        "unsupportedType": "\"{name}\" 不是支持的文件类型",
        "filesRejected": "{count} 个文件被拒绝：",
        "andMore": "...还有 {count} 个",
        "invalidAccessCode": "无效或缺少访问码。请在设置中配置。",
        "networkError": "网络错误。请检查您的连接。",
        "retryLimit": "已达到自动重试限制（{max}）。请手动重试。",
        "continuationRetryLimit": "已达到继续重试限制（{max}）。图表可能过于复杂。",
        "validationFailed": "图表验证失败。请尝试重新生成。",
        "malformedXml": "AI 生成的图表 XML 无效。请尝试重新生成。",
        "failedToProcess": "无法处理图表。请尝试重新生成。",
        "sessionCorrupted": "会话数据已损坏。重新开始。",
        "failedToSave": "无法保存消息到 localStorage",
        "failedToRestore": "无法从 localStorage 恢复",
        "failedToPersist": "卸载前无法持久化状态",
        "failedToExport": "获取图表数据时出错",
        "failedToLoadExample": "加载示例图片时出错",
        "failedToRecordFeedback": "记录您的反馈失败。请重试。",
        "storageUpdateFailed": "聊天已清除，但无法更新浏览器存储"
    },
    "quota": {
        "dailyLimit": "已达每日配额",
        "tokenLimit": "已达每日令牌限制",
        "tpmLimit": "速率限制",
        "tpmMessage": "请求过多。请稍等片刻。",
        "tpmMessageDetailed": "达到速率限制（{limit} 令牌/分钟）。请等待 {seconds} 秒后再发送请求。",
        "messageApi": "看来您今天的体验次数已达上限。非常高兴您玩得开心，虽然本项目由字节跳动豆包慷慨赞助，但为了确保大家都能公平使用，我们不得不对使用量做一点小小的限制。",
        "messageApiSelfHosted": null,
        "messageToken": "看来您今天的 Token 用量已达上限。非常高兴您玩得开心，虽然本项目由字节跳动豆包慷慨赞助，但为了确保大家都能公平使用，我们不得不对使用量做一点小小的限制。",
        "messageTokenSelfHosted": null,
        "tip": "<strong>提示：</strong>您可以使用自己的 API 密钥（点击设置图标）或自托管项目来绕过这些限制。",
        "tipSelfHosted": "<strong>提示：</strong>您可以在设置中配置自己的 API 密钥以继续使用服务。",
        "reset": "您的限制将在明天重置。感谢您的理解。",
        "doubaoSponsorship": "<a href=\"{link}\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"underline hover:text-foreground\">点击此处注册</a>可获得每个模型 50 万免费 Token（包括豆包、DeepSeek 和 Kimi），然后在模型设置中配置您的 API Key。",
        "configModel": "使用您的密钥",
        "selfHost": "自托管",
        "sponsor": "赞助",
        "learnMore": "了解更多 →",
        "usedOf": "{used}/{limit}"
    },
    "tools": {
        "generateDiagram": "生成图表",
        "editDiagram": "编辑图表",
        "appendDiagram": "继续图表",
        "complete": "完成",
        "error": "错误",
        "truncated": "已截断"
    },
    "file": {
        "reading": "读取中...",
        "chars": "字符",
        "removeFile": "移除文件"
    },
    "url": {
        "title": "从 URL 提取内容",
        "description": "粘贴 URL 以提取和分析其内容",
        "Extracting": "提取中...",
        "extract": "提取",
        "Cancel": "取消",
        "enterUrl": "请输入 URL",
        "invalidFormat": "URL 格式无效"
    },
    "reasoning": {
        "thinking": "思考中...",
        "thoughtFor": "思考了 {duration} 秒",
        "thoughtBrief": "思考了几秒钟"
    },
    "dev": {
        "title": "开发：XML 流式模拟器",
        "preset": "预设：",
        "selectPreset": "选择预设...",
        "clear": "清除",
        "placeholder": "在此粘贴 mxCell XML 或选择预设...",
        "interval": "间隔：",
        "chars": "字符：",
        "streaming": "流式传输中...",
        "simulate": "模拟",
        "stop": "停止",
        "testQuotaToast": "测试配额提示",
        "simulatingMessage": "[开发] 模拟 XML 流式传输",
        "successMessage": "成功显示图表。"
    },
    "about": {
        "modelChange": "模型变更与用量限制",
        "walletCrying": "（别名：我的钱包顶不住了）",
        "seekingSponsorship": "寻求赞助（求大佬捞一把）",
        "contactMe": "联系我",
        "usageNotice": "由于使用量过高，我已将模型从 Claude 更换为 minimax-m2，并设置了一些用量限制。详情请查看关于页面。"
    },
    "sessionHistory": {
        "tooltip": "聊天历史",
        "newChat": "新对话",
        "empty": "暂无聊天记录",
        "emptyHint": "开始对话吧",
        "today": "今天",
        "yesterday": "昨天",
        "thisWeek": "本周",
        "earlier": "更早",
        "deleteTitle": "删除此对话？",
        "deleteDescription": "这将永久删除此聊天会话及其图表。此操作无法撤消。",
        "recentChats": "最近对话",
        "justNow": "刚刚",
        "searchPlaceholder": "搜索对话...",
        "noResults": "未找到对话"
    },
    "templates": {
        "title": "我的模板库",
        "subtitle": "您的个人 prompt 库，快速创建图表",
        "emptyTitle": "暂无模板",
        "emptyDescription": "创建您的第一个模板，开始构建个人 prompt 库",
        "createFirst": "创建第一个模板",
        "neverUsed": "未使用过",
        "usedCount": "使用 {count} 次",
        "myTemplates": "我的模板",
        "createTitle": "创建模板",
        "createDescription": "保存常用 prompt 以便重复使用。模板帮助您快速开始常用工作流。",
        "promptLabel": "提示词",
        "promptPlaceholder": "描述您想要创建的图表...",
        "promptRequired": "提示词不能为空",
        "titleLabel": "标题",
        "titlePlaceholder": "输入标题",
        "titleHint": "留空则使用提示词前 20 个字符作为标题",
        "descriptionLabel": "描述",
        "descriptionPlaceholder": "为此模板添加描述",
        "pinnedLabel": "置顶模板",
        "pinnedHint": "置顶的模板会显示在列表顶部",
        "createButton": "创建模板",
        "createFailed": "创建模板失败，请重试。",
        "editTitle": "编辑模板",
        "editDescription": "更新模板内容和设置。",
        "updateFailed": "更新模板失败，请重试。",
        "duplicate": "复制",
        "copySuffix": "(副本)",
        "deleteTitle": "删除此模板？",
        "deleteDescription": "此操作将永久删除该模板，无法撤销。",
        "confirmSendTitle": "替换当前输入？",
        "confirmSendDescription": "您有未发送的内容。发送此模板将替换它。",
        "confirmSendButton": "发送模板",
        "searchPlaceholder": "搜索模板...",
        "searchNoResults": "没有匹配的模板",
        "pin": "置顶",
        "unpin": "取消置顶",
        "saveAsTemplate": "保存为模板",
        "exportTemplates": "导出模板",
        "importTemplates": "导入模板",
        "exportEmpty": "没有可导出的模板",
        "exportSuccess": "成功导出 {count} 个模板",
        "importNoFile": "请选择一个 JSON 文件",
        "importFailed": "导入失败：{error}",
        "importSuccess": "成功导入 {imported} 个模板，跳过 {skipped} 个重复"
    },
    "validation": {
        "title": "验证图表",
        "capturing": "截图中",
        "validating": "验证中",
        "validatingWithAttempt": "验证中 ({attempt}/{max})",
        "valid": "通过",
        "validWithWarnings": "通过（有警告）",
        "issuesFound": "发现问题",
        "error": "错误",
        "skipped": "已跳过",
        "capturedScreenshot": "截图预览：",
        "issuesFoundLabel": "发现的问题：",
        "suggestions": "建议：",
        "passedValidation": "图表通过视觉验证 - 未发现问题。",
        "improvementRequested": "改进请求已发送 - 请查看下方新图表",
        "improveWithSuggestions": "根据建议改进",
        "regenerateWithFeedback": "使用验证反馈重新生成图表"
    },
    "modelConfig": {
        "title": "AI 模型配置",
        "description": "配置多个 AI 提供商和模型",
        "configure": "配置",
        "addProvider": "添加提供商",
        "addModel": "添加模型",
        "modelId": "模型 ID",
        "modelLabel": "显示名称",
        "streaming": "启用流式输出",
        "deleteProvider": "删除提供商",
        "deleteModel": "删除模型",
        "noModels": "尚未配置模型。添加模型以开始使用。",
        "selectProvider": "选择一个提供商或添加新的",
        "configureMultiple": "配置多个 AI 提供商并轻松切换",
        "apiKeyStored": "API 密钥存储在您的浏览器本地",
        "test": "测试",
        "validationError": "验证失败",
        "addModelFirst": "请先添加至少一个模型以进行验证",
        "providers": "提供商",
        "addProviderHint": "添加提供商即可开始使用",
        "verified": "已验证",
        "configuration": "配置",
        "displayName": "显示名称",
        "awsAccessKeyId": "AWS 访问密钥 ID",
        "awsSecretAccessKey": "AWS Secret Access Key",
        "awsRegion": "AWS 区域",
        "selectRegion": "选择区域",
        "apiKey": "API 密钥",
        "enterApiKey": "输入您的 API 密钥",
        "enterSecretKey": "输入您的 Secret Key",
        "baseUrl": "基础 URL",
        "optional": "（可选）",
        "baseUrlWithExample": "基础 URL（可选，例如 {example}）",
        "customEndpoint": "自定义端点 URL",
        "minimaxBaseUrlHint": "使用 /anthropic 端点为 Anthropic 兼容 API（推荐），或使用 /v1 端点为 OpenAI 兼容 API",
        "mimoBaseUrlHint": "默认地址适用于按量付费密钥（sk-...）。Token Plan 订阅用户（tp-... 密钥）请设置为 https://token-plan-cn.xiaomimimo.com/v1",
        "models": "模型",
        "customModelId": "自定义模型 ID...",
        "allAdded": "已全部添加",
        "suggested": "推荐",
        "noModelsConfigured": "尚未配置模型",
        "modelIdEmpty": "模型 ID 不能为空",
        "modelIdExists": "此模型 ID 已存在",
        "configureProviders": "配置 AI 提供商",
        "selectProviderHint": "从列表中选择提供商或添加新的以配置 API 密钥和模型",
        "deleteConfirmDesc": "确定要删除 {name} 吗？这将移除所有配置的模型且无法撤销。",
        "typeToConfirm": "输入 \"{name}\" 以确认",
        "typeProviderName": "输入提供商名称...",
        "modelsConfiguredCount": "已配置 {count} 个模型",
        "validationFailedCount": "{count} 个模型验证失败",
        "cancel": "取消",
        "delete": "删除",
        "clickToChange": "（点击更改）",
        "usingServerDefault": "使用服务器默认模型",
        "selectModel": "选择模型",
        "searchModels": "搜索模型...",
        "noVerifiedModels": "没有已验证的模型。请先测试您的模型。",
        "noModelsFound": "未找到模型。",
        "default": "默认",
        "serverDefault": "服务器默认",
        "serverModels": "服务器模型",
        "userModels": "用户模型",
        "configureModels": "配置模型...",
        "onlyVerifiedShown": "仅显示已验证的模型",
        "showUnvalidatedModels": "显示未验证的模型",
        "allModelsShown": "显示所有模型（包括未验证的）",
        "unvalidatedModelWarning": "此模型尚未验证",
        "serverDefaultModel": "服务器默认模型",
        "showValue": "显示值",
        "hideValue": "隐藏值"
    },
    "admin": {
        "title": "管理员设置",
        "loginPrompt": "输入管理员密码（即 ADMIN_PASSWORD 环境变量）以管理服务器设置。",
        "password": "密码",
        "signIn": "登录",
        "signingIn": "正在登录…",
        "loginFailed": "登录失败",
        "precedence": "文件覆盖环境变量 · 环境变量覆盖默认值",
        "notWritable": "此部署环境下设置文件不可写（无服务器平台没有持久化磁盘）。设置以只读方式显示——请改用环境变量进行配置。",
        "settingGroups": "设置分组",
        "enabled": "已启用",
        "disabled": "已禁用",
        "enableGroup": "启用 {group}",
        "unsavedChanges": "有未保存的更改",
        "saved": "设置已保存，更改立即生效。",
        "saveFailed": "保存失败。请检查网络连接后重试。",
        "invalidSettings": "部分设置无效。",
        "discard": "放弃",
        "saveChanges": "保存更改",
        "saving": "正在保存…",
        "sourceSaved": "已保存",
        "sourceEnv": "环境变量",
        "sourceSavedTitle": "在管理员设置文件中设置",
        "sourceEnvTitle": "通过环境变量设置",
        "restartRequired": "需要重启",
        "modified": "已修改",
        "notSet": "未设置",
        "savedReplace": "已保存（{hint}）——输入以替换",
        "showValue": "显示值",
        "hideValue": "隐藏值",
        "removeValue": "移除值",
        "removeValueTitle": "移除已保存的值",
        "resetToDefault": "恢复默认",
        "models": "模型",
        "modelsDescription": "面向所有用户的服务端 provider 和模型——无需个人 API 密钥。当用户未选择模型时，使用默认 provider 的第一个模型。",
        "addProviderHint": "添加一个 provider，为所有用户提供服务端模型。",
        "selectProviderHint": "选择或添加一个 provider 以配置其凭证和模型。",
        "addProviderToOfferModels": "至少添加一个模型，才能向用户开放此 provider。",
        "managedViaEnv": "（通过环境变量管理）",
        "envReadOnly": "在 AI_MODELS_CONFIG / ai-models.json 中定义——此处只读。请编辑环境配置以更改。",
        "defaultModel": "默认模型",
        "noModelsConfigured": "未配置模型",
        "modelCount": "{count} 个模型",
        "modelCountPlural": "{count} 个模型",
        "default": "默认",
        "setAsDefault": "设为默认 provider",
        "defaultProvider": "默认 provider",
        "modelIdPlaceholder": "模型 ID…",
        "addModel": "添加模型",
        "suggested": "推荐",
        "test": "测试",
        "testOk": "正常（{ms} 毫秒）",
        "testFailed": "失败",
        "removeModel": "移除 {model}",
        "deleteProviderTitle": "删除 {name}？",
        "deleteProviderDesc": "保存后，其凭证和模型将从服务器上移除。",
        "cancel": "取消",
        "delete": "删除",
        "groups": {
            "generation": {
                "title": "生成",
                "description": "应用于所有聊天请求的输出参数。"
            },
            "access": {
                "title": "访问控制",
                "description": "限制谁可以使用此部署。"
            },
            "features": {
                "title": "功能",
                "description": "可选功能和安全开关。"
            },
            "observability": {
                "title": "可观测性",
                "description": "对 LLM 调用进行 Langfuse 追踪。"
            },
            "quota": {
                "title": "配额与速率限制",
                "description": "按 IP 的用量限制。强制执行需要 DynamoDB 表。"
            }
        },
        "settings": {
            "TEMPERATURE": {
                "label": "温度",
                "description": "对于拒绝温度参数的推理模型，请留空。"
            },
            "MAX_OUTPUT_TOKENS": {
                "label": "最大输出 token 数"
            },
            "ACCESS_CODE_LIST": {
                "label": "访问码",
                "description": "以逗号分隔的列表。用户需输入其中之一才能聊天。留空 = 开放访问。"
            },
            "ENABLE_VLM_VALIDATION": {
                "label": "VLM 图表验证",
                "description": "使用视觉模型对生成的图表进行可视化验证。"
            },
            "VALIDATION_MODEL": {
                "label": "验证模型",
                "description": "留空时回退到默认 AI 模型。"
            },
            "VALIDATION_TIMEOUT": {
                "label": "验证超时（毫秒）"
            },
            "ENABLE_HISTORY_XML_REPLACE": {
                "label": "历史 XML 压缩",
                "description": "用占位符替换历史记录中的旧图表 XML。"
            },
            "ALLOW_PRIVATE_URLS": {
                "label": "允许私有 URL",
                "description": "关闭以阻止对私有 IP 和内部主机名的请求（SSRF 防护）。"
            },
            "LANGFUSE_PUBLIC_KEY": {
                "label": "Langfuse Public Key"
            },
            "LANGFUSE_SECRET_KEY": {
                "label": "Langfuse Secret Key"
            },
            "LANGFUSE_BASEURL": {
                "label": "Langfuse Base URL"
            },
            "DAILY_REQUEST_LIMIT": {
                "label": "每日请求上限",
                "description": "每个 IP 每天。"
            },
            "DAILY_TOKEN_LIMIT": {
                "label": "每日 token 上限",
                "description": "每个 IP 每天。"
            },
            "TPM_LIMIT": {
                "label": "每分钟 token 数"
            },
            "DYNAMODB_QUOTA_TABLE": {
                "label": "DynamoDB 表",
                "description": "留空时配额强制执行被禁用。"
            },
            "DYNAMODB_REGION": {
                "label": "DynamoDB 区域"
            },
            "QUOTA_TIMEZONE": {
                "label": "配额时区",
                "description": "每日重置边界所用的时区。"
            }
        }
    }
}
