mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-02 22:32:27 +08:00
* i18n support added
* fix: align i18n implementation with Next.js 16 guide
- Rename middleware.ts to proxy.ts (Next.js 16 convention)
- Fix params type to Promise<{lang: string}> for layout/metadata
- Add 'server-only' directive and dynamic imports to dictionaries.ts
- Add hasLocale type guard and notFound() for invalid locales
- Wrap LanguageToggle in Suspense for useSearchParams
- Fix dictionary key mismatch (learnmore -> learnMore)
- Improve Chinese translations per Gemini review:
- loading ellipsis, new -> 新建, styledMode -> 精致
- goodResponse/badResponse -> 有帮助/无帮助
- closeProtection -> 关闭确认, fileExceeds phrasing
- Improve Japanese translations per Gemini review:
- closeProtection -> ページ離脱確認
- invalidAccessCode phrasing, appendDiagram -> に追加
- styledMode -> スタイル付き
---------
Co-authored-by: dayuan.jiang <jdy.toh@gmail.com>
185 lines
7.9 KiB
JSON
185 lines
7.9 KiB
JSON
{
|
||
"common": {
|
||
"save": "保存",
|
||
"cancel": "取消",
|
||
"close": "关闭",
|
||
"confirm": "确认",
|
||
"clear": "清除",
|
||
"edit": "编辑",
|
||
"delete": "删除",
|
||
"loading": "加载中...",
|
||
"new": "新建"
|
||
},
|
||
"nav": {
|
||
"about": "关于",
|
||
"editor": "编辑器",
|
||
"newChat": "开始新对话",
|
||
"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"
|
||
},
|
||
"chat": {
|
||
"placeholder": "描述您的图表或上传文件...",
|
||
"send": "发送",
|
||
"sending": "发送中...",
|
||
"sendMessage": "发送消息",
|
||
"clearConversation": "清除对话",
|
||
"diagramHistory": "图表历史",
|
||
"saveDiagram": "保存图表",
|
||
"uploadFile": "上传文件(图片、PDF、文本)",
|
||
"minimalStyle": "简约",
|
||
"styledMode": "精致",
|
||
"minimalTooltip": "使用简约模式以加快生成速度(无颜色)",
|
||
"regenerate": "重新生成响应",
|
||
"copyResponse": "复制响应",
|
||
"copied": "已复制!",
|
||
"failedToCopy": "复制失败",
|
||
"goodResponse": "有帮助",
|
||
"badResponse": "无帮助",
|
||
"clickToEdit": "点击编辑",
|
||
"editMessage": "编辑消息",
|
||
"saveAndSubmit": "保存并提交"
|
||
},
|
||
"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 中使用",
|
||
"preview": "预览"
|
||
},
|
||
"settings": {
|
||
"title": "设置",
|
||
"description": "配置您的应用程序设置。",
|
||
"accessCode": "访问码",
|
||
"accessCodePlaceholder": "输入访问码",
|
||
"accessCodeDescription": "使用此应用程序需要访问码。",
|
||
"aiProvider": "AI 提供商设置",
|
||
"aiProviderDescription": "使用您自己的 API 密钥来绕过使用限制。您的密钥仅存储在浏览器本地,不会存储在服务器上。",
|
||
"provider": "提供商",
|
||
"modelId": "模型 ID",
|
||
"apiKey": "API 密钥",
|
||
"apiKeyPlaceholder": "您的 API 密钥",
|
||
"baseUrl": "基础 URL(可选)",
|
||
"customEndpoint": "自定义端点 URL",
|
||
"overrides": "覆盖",
|
||
"clearSettings": "清除设置",
|
||
"useServerDefault": "使用服务器默认值",
|
||
"theme": "主题",
|
||
"themeDescription": "界面和 DrawIO 画布的深色/浅色模式。",
|
||
"drawioStyle": "DrawIO 样式",
|
||
"drawioStyleDescription": "画布样式:",
|
||
"switchTo": "切换到",
|
||
"minimal": "简约",
|
||
"sketch": "草图",
|
||
"closeProtection": "关闭确认",
|
||
"closeProtectionDescription": "离开页面时显示确认。"
|
||
},
|
||
"save": {
|
||
"title": "保存图表",
|
||
"description": "选择格式和文件名以保存您的图表。",
|
||
"format": "格式",
|
||
"filename": "文件名",
|
||
"filenamePlaceholder": "输入文件名",
|
||
"formats": {
|
||
"drawio": "Draw.io XML",
|
||
"png": "PNG 图片",
|
||
"svg": "SVG 图片"
|
||
}
|
||
},
|
||
"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})。请手动重试。",
|
||
"validationFailed": "图表验证失败。请尝试重新生成。",
|
||
"malformedXml": "AI 生成的图表 XML 无效。请尝试重新生成。",
|
||
"failedToProcess": "无法处理图表。请尝试重新生成。",
|
||
"sessionCorrupted": "会话数据已损坏。重新开始。",
|
||
"failedToSave": "无法保存消息到 localStorage",
|
||
"failedToRestore": "无法从 localStorage 恢复",
|
||
"failedToPersist": "卸载前无法持久化状态",
|
||
"failedToExport": "获取图表数据时出错",
|
||
"failedToLoadExample": "加载示例图片时出错"
|
||
},
|
||
"quota": {
|
||
"dailyLimit": "已达每日配额",
|
||
"tokenLimit": "已达每日令牌限制",
|
||
"tpmLimit": "速率限制",
|
||
"tpmMessage": "请求过多。请稍等片刻。",
|
||
"messageApi": "糟糕 — 您已达到此演示的每日 API 限制!作为一名独立开发者,我自己承担所有 API 费用,因此必须设置这些限制以保持可持续性。",
|
||
"messageToken": "糟糕 — 您已达到此演示的每日令牌限制!作为一名独立开发者,我自己承担所有 API 费用,因此必须设置这些限制以保持可持续性。",
|
||
"tip": "<strong>提示:</strong>您可以使用自己的 API 密钥(点击设置图标)或自托管项目来绕过这些限制。",
|
||
"reset": "您的限制将在明天重置。感谢您的理解!",
|
||
"selfHost": "自托管",
|
||
"sponsor": "赞助",
|
||
"learnMore": "了解更多 →",
|
||
"usedOf": "{used}/{limit}"
|
||
},
|
||
"tools": {
|
||
"generateDiagram": "生成图表",
|
||
"editDiagram": "编辑图表",
|
||
"appendDiagram": "继续图表",
|
||
"complete": "完成",
|
||
"error": "错误",
|
||
"truncated": "已截断"
|
||
},
|
||
"file": {
|
||
"reading": "读取中...",
|
||
"chars": "字符",
|
||
"removeFile": "移除文件"
|
||
},
|
||
"reasoning": {
|
||
"thinking": "思考中...",
|
||
"thoughtFor": "思考了 {duration} 秒",
|
||
"thoughtBrief": "思考了几秒钟"
|
||
},
|
||
"about": {
|
||
"modelChange": "模型变更与用量限制",
|
||
"walletCrying": "(别名:我的钱包顶不住了)",
|
||
"seekingSponsorship": "寻求赞助(求大佬捞一把)",
|
||
"contactMe": "联系我",
|
||
"usageNotice": "由于使用量过高,我已将模型从 Claude 更换为 minimax-m2,并设置了一些用量限制。详情请查看关于页面。"
|
||
}
|
||
}
|