{ "common": { "next": "下一步", "prev": "上一步", "finish": "完成", "cancel": "取消", "save": "保存", "loading": "加载中...", "confirm": "确认", "success": "成功", "error": "错误", "delete": "删除", "edit": "编辑", "add": "添加", "search": "搜索", "clear": "清空", "close": "关闭", "yes": "是", "no": "否", "submit": "提交", "reset": "重置", "import": "导入", "export": "导出", "create": "创建", "update": "更新", "refresh": "刷新", "view": "查看", "name": "姓名", "status": "状态", "operation": "操作", "description": "描述", "total": "共 {{count}} 条", "noData": "暂无数据", "pleaseSelect": "请选择", "pleaseEnter": "请输入", "readOnly": "当前为只读权限", "none": "无", "more": "更多" }, "oobe": { "title": "欢迎使用 SecScore", "subtitle": "教育积分管理专家", "step": "第 {{current}}/{{total}} 步", "skip": "跳过", "steps": { "entry": { "title": "开始配置", "description": "请选择接下来要进行的操作", "enterOobe": "进入OOBE", "connectPostgresAutoSync": "连接PostgreSQL自动同步", "skipDirect": "跳过OOBE,直接进入" }, "postgresql": { "title": "连接 PostgreSQL", "description": "输入 PostgreSQL 连接字符串,系统将自动连接并同步后进入应用", "connectionPlaceholder": "postgresql://user:password@host:port/database?sslmode=require", "autoSyncAndEnter": "连接并自动同步后进入" }, "language": { "title": "选择语言", "description": "请选择您偏好的界面语言" }, "theme": { "title": "设置主题", "description": "选择您喜欢的界面外观", "mode": "模式", "lightMode": "浅色", "darkMode": "深色", "primaryColor": "主色", "backgroundGradient": "背景渐变" }, "password": { "title": "设置密码", "description": "设置登录密码以保护您的数据(可选)", "adminPassword": "管理密码", "adminPasswordHint": "可管理所有功能,6位数字", "pointsPassword": "积分密码", "pointsPasswordHint": "仅可操作积分,6位数字", "passwordPlaceholder": "请输入6位数字", "hint": "留空则不设置密码,之后可在设置中配置" }, "students": { "title": "导入名单", "description": "添加学生名单以便开始积分管理", "import": "导入名单", "manual": "手动添加", "importHint": "支持 Excel (.xlsx) 或 JSON 文件", "manualHint": "支持粘贴多行文本,一行一个姓名", "dragDrop": "拖拽文件到此处,或点击选择", "supportedFormats": "支持 .xlsx, .json 格式", "studentName": "学生姓名", "addStudent": "添加学生", "noStudents": "暂无学生,请添加或导入", "studentCount": "已添加 {{count}} 名学生", "studentExists": "学生已存在", "importSuccess": "成功导入 {{count}} 名学生", "noNewStudents": "没有新学生可导入", "parseFailed": "文件解析失败", "unsupportedFormat": "不支持的文件格式" }, "reasons": { "title": "设置理由", "description": "添加常用的积分变动理由", "addReason": "添加理由", "reasonName": "理由名称", "points": "积分", "positive": "加分", "negative": "扣分", "noReasons": "暂无理由,请添加常用理由", "reasonCount": "已添加 {{count}} 个理由", "reasonExists": "理由已存在" }, "start": { "title": "准备就绪", "description": "一切准备就绪,开始使用 SecScore 吧!", "features": { "score": "轻松管理学生积分", "history": "完整的积分变动历史", "settlement": "支持结算与归档" }, "startButton": "开始使用" } } }, "settings": { "title": "系统设置", "tabs": { "appearance": "外观", "security": "安全", "account": "账户", "database": "数据库连接", "dataManagement": "数据管理", "urlProtocol": "URL 链接", "about": "关于" }, "language": "语言", "languageHint": "选择界面显示语言", "fontFamily": "全局字体", "fontFamilyHint": "选择应用界面的字体(需要刷新页面以完全生效)", "theme": "主题", "password": "设置密码", "themeMode": "模式", "lightMode": "浅色", "darkMode": "深色", "primaryColor": "主色", "backgroundGradient": "背景渐变", "searchKeyboard": { "title": "搜索小键盘", "hint": "选择搜索框下方弹出的小键盘布局", "disableToggle": "禁用搜索小键盘", "disableHint": "开启后,搜索框下方不再弹出小键盘", "options": { "qwerty26": "26 键(QWERTY)", "t9": "9 键(T9)" } }, "interfaceZoom": "界面缩放", "zoomOptions": { "small70": "小 (70%)", "default100": "默认 (100%)", "large150": "大 (150%)" }, "general": { "saved": "已保存", "saveFailed": "保存失败" }, "zoomHint": "调节应用界面的整体大小", "mobile": { "navigationTitle": "页面入口", "bottomNav": { "label": "底部导航功能", "hint": "可选择要出现在手机底部导航的功能。底栏最多展示 4 项,其余会自动收纳到“更多”。" }, "dragHint": "拖动可调整顺序。前 4 项显示在底栏,其余显示在“更多”。", "dropHere": "松手后放到这里", "bottomSection": "底栏(最多 4 个)", "moreSection": "更多", "moveToMore": "移到更多", "moveToBottom": "移到底栏" }, "zoomUpdated": "界面缩放已更新", "updateFailed": "更新失败", "security": { "title": "密码保护系统", "adminPassword": "管理密码", "pointsPassword": "积分密码", "recoveryString": "找回字符串", "set": "已设置", "notSet": "未设置", "generated": "已生成", "notGenerated": "未生成", "enterPassword": "输入6位数字(留空则不修改)", "adminPasswordPlaceholder": "输入6位数字管理密码(留空则不修改)", "pointsPasswordPlaceholder": "输入6位数字积分密码(留空则不修改)", "recoveryPlaceholder": "输入找回字符串", "savePassword": "保存密码", "savePasswords": "保存密码", "generateRecovery": "生成找回字符串", "clearAllPasswords": "清空所有密码", "recoveryReset": "找回字符串重置", "enterRecovery": "输入找回字符串", "resetPassword": "重置密码", "resetHint": "重置会清空管理/积分密码,并生成新的找回字符串。", "confirmClear": "确认清空所有密码?", "clearHint": "清空后将关闭保护(无密码时默认视为管理权限)。", "saved": "密码已更新", "saveFailed": "更新失败", "generateFailed": "生成失败", "resetFailed": "重置失败", "cleared": "已清空", "clearFailed": "清空失败", "passwordClearedNewRecovery": "密码已清空,新的找回字符串", "newRecoveryString": "新的找回字符串(请保存)" }, "account": { "title": "SECTL Auth 账户", "notLoggedIn": "尚未登录 SECTL Auth 账户", "oauthHint": "使用 SECTL Auth 账号登录,享受统一认证和远程退登功能", "loginButton": "使用 SECTL Auth 登录", "loginSuccess": "登录成功", "logout": "退出登录", "userId": "用户ID", "permission": "权限等级" }, "database": { "title": "数据库连接", "currentStatus": "当前数据库状态", "sqliteLocal": "SQLite 本地数据库", "postgresqlRemote": "PostgreSQL 远程数据库", "connected": "已连接", "disconnected": "未连接", "postgresqlConnection": "PostgreSQL 远程连接", "connectionHint": "输入 PostgreSQL 连接字符串以连接远程数据库,支持多端同步操作。", "testConnection": "测试连接", "switchToPostgreSQL": "切换到 PostgreSQL", "switchToSQLite": "切换到本地 SQLite", "connectionTestSuccess": "连接测试成功", "connectionTestFailed": "连接测试失败", "switchedTo": "已切换到 {{type}} 数据库", "switchedToSQLite": "已切换到 SQLite 本地数据库", "switchFailed": "切换失败", "syncDescription": "多端同步说明", "syncPoint1": "使用 PostgreSQL 远程数据库可以实现多端数据同步。", "syncPoint2": "系统内置操作队列机制,确保多端同时操作时数据一致性。", "syncPoint3": "切换数据库后需要重启应用以生效。", "syncPoint4": "建议使用云数据库服务(如 Neon、Supabase、AWS RDS 等)。", "enterConnectionString": "请输入 PostgreSQL 连接字符串", "connectionExample": "示例:postgresql://xxxxxx_xxxxx:xxxxxxxx@xx-xxx.xxx.neon.xxxx/xxxxdxx?sslmode=require", "uploadButton": "上传本地数据到远程", "uploadHint": "连接远程数据库后,可将本地 SQLite 历史数据上传并合并到远程。", "uploadNeedRemote": "请先切换并连接到 PostgreSQL 远程数据库", "noNeedUpload": "本地与远程数据已一致,无需上传", "uploadConfirmTitle": "确认上传本地数据到远程?", "uploadConfirmContent": "将以本地数据为优先进行同步。检测到本地新增 {{localOnly}} 条、远程新增 {{remoteOnly}} 条、冲突 {{conflicts}} 条。", "uploadSuccess": "本地数据已上传到远程", "uploadFailed": "上传失败" }, "data": { "title": "数据管理", "settlement": "结算", "settlementAndRestart": "结算并重新开始", "settlementHint": "将当前未结算记录划分为一个阶段,并将所有学生积分清零。", "importExport": "导入 / 导出", "exportJson": "导出 JSON", "importJson": "导入 JSON", "importHint": "导入会覆盖现有学生/理由/积分记录/设置(安全相关设置不会导入)。", "logs": "日志", "logLevel": "日志级别", "logOperation": "日志操作", "viewLogs": "查看日志", "exportLogs": "导出日志", "clearLogs": "清空日志", "logsCleared": "日志已清空", "systemLogs": "系统日志 (最后200条)", "noLogs": "暂无日志", "logLevelUpdated": "日志级别已更新", "readLogsFailed": "读取日志失败", "logsExported": "日志已导出", "exportFailed": "导出失败", "exportSuccess": "导出成功", "importSuccess": "导入成功,正在刷新", "importFailed": "导入失败", "clearFailed": "清空失败", "confirmSettlement": "确认结算并重新开始?", "settlementConfirm1": "将把当前未结算的积分记录归档为一个阶段,并将所有学生当前积分清零。", "settlementConfirm2": "学生名单不变;结算后的历史在「结算历史」页面查看。", "settlementSuccess": "结算成功,已重新开始积分", "settlementFailed": "结算失败", "settle": "结算", "logLevels": { "debug": "DEBUG (调试)", "info": "INFO (信息)", "warn": "WARN (警告)", "error": "ERROR (错误)" } }, "url": { "title": "URL 协议 (secscore://)", "protocol": "URL 协议", "description": "可以通过 URL 链接唤起 SecScore 并执行操作,例如:", "register": "注册 URL 协议", "registered": "URL 协议已注册", "registerFailed": "注册失败", "installerRequired": "需要安装版 SecScore,开发模式下可能无效。" }, "mcp": { "title": "MCP 服务", "description": "管理内置 MCP HTTP 服务,供外部 MCP 客户端调用。", "running": "运行中", "stopped": "已停止", "noUrl": "暂无地址", "host": "主机", "port": "端口", "start": "启动", "stop": "停止", "refresh": "刷新状态", "hint": "建议仅绑定到 127.0.0.1;启动后 MCP 入口为 http://host:port/mcp", "hostRequired": "请输入 MCP 主机地址", "portInvalid": "请输入有效端口(1-65535)", "startSuccess": "MCP 服务启动成功", "startFailed": "MCP 服务启动失败", "stopSuccess": "MCP 服务已停止", "stopFailed": "MCP 服务停止失败", "startTimeout": "启动 MCP 服务超时,请稍后重试", "stopTimeout": "停止 MCP 服务超时,请稍后重试" }, "app": { "title": "应用控制", "description": "快速重启或退出应用。", "restart": "重启应用", "quit": "退出应用", "confirmRestartTitle": "确认重启应用?", "confirmRestartContent": "应用将立即关闭并重新启动。", "confirmQuitTitle": "确认退出应用?", "confirmQuitContent": "应用将立即退出。", "restartFailed": "重启失败", "quitFailed": "退出失败" }, "about": { "title": "关于", "appName": "教育积分管理", "version": "版本", "copyright": "版权", "ipcStatus": "IPC 状态", "ipcConnected": "已连接", "ipcDisconnected": "未连接 (Preload 失败)", "environment": "环境", "toggleDevTools": "切换开发者工具", "license": "SecScore遵循GPL3.0协议", "copyRightText": "CopyRight © 2025-{{year}} SECTL" } }, "sidebar": { "home": "首页", "students": "学生管理", "score": "积分操作", "boards": "看板", "leaderboard": "排行榜", "settlements": "结算历史", "reasons": "理由管理", "autoScore": "自动化", "rewardExchange": "奖励兑换", "rewardSettings": "奖励设置", "settings": "系统设置", "remoteDb": "远程数据库", "refreshStatus": "刷新状态", "syncNow": "立即同步", "syncSuccess": "同步成功", "syncFailed": "同步失败", "getDbStatusFailed": "获取数据库状态失败", "notRemoteMode": "当前不是远程数据库模式,请重启应用后重试", "dbNotConnected": "数据库未连接", "plugins": "插件管理" }, "auth": { "unlock": "权限解锁", "unlockHint": "输入 6 位数字密码:管理密码=全功能,积分密码=仅积分操作。", "unlockButton": "解锁", "unlocked": "权限已解锁", "logout": "已切换为只读", "passwordPlaceholder": "例如 123456", "passwordError": "密码错误", "enterPassword": "输入密码", "lock": "锁定" }, "languages": { "zh-CN": "简体中文", "en-US": "English" }, "theme": { "colorAndBackground": "颜色与背景", "gradientLabels": { "blue": "清爽蓝", "pink": "柔和粉", "cyan": "青蓝", "purple": "紫韵" }, "gradientDirections": { "vertical": "纵向", "horizontal": "横向", "diagonal": "对角" }, "generate": "生成", "saved": "已保存", "saveFailed": "保存失败", "mode": "模式", "myTheme": "我的主题" }, "permissions": { "admin": "管理权限", "points": "积分权限", "view": "只读" }, "home": { "title": "学生积分主页", "subtitle": "共 {{count}} 名学生,点击卡片进行积分操作", "searchPlaceholder": "搜索姓名/拼音...", "sortBy": { "alphabet": "姓名排序", "surname": "姓氏分组", "group": "小组排序", "score": "积分排行" }, "layoutBy": { "grouped": "分组列表", "squareGrid": "正方形网格", "largeAvatar": "大头像" }, "noStudents": "暂无学生数据,请前往学生管理添加", "noMatch": "未找到匹配的学生", "clearSearch": "清除搜索", "points": "分", "currentScore": "当前积分", "quickOptions": "快捷选项", "adjustPoints": "调整分值", "customPoints": "自定义分值", "customPointsHint": "可在输入框微调特输入任意分值", "reason": "操作理由", "reasonPlaceholder": "输入加分/扣分的原因(可选)", "preview": "变更预览", "noReason": "(无理由)", "ungrouped": "未分组", "category": { "others": "其他" }, "scoreAdded": "已为 {{name}} 加{{points}}分", "scoreDeducted": "已为 {{name}} 扣{{points}}分", "submitFailed": "提交失败", "pleaseSelectPoints": "请选择或输入分值", "reasonDefault": "{{action}}{{points}}分", "studentCount": "{{count}} 人", "operationTitle": "积分操作:{{name}}", "submitOperation": "提交操作", "operationTitleBatch": "积分操作:已选 {{count}} 人", "undoLastAction": "撤销", "undoLastHint": "撤销上一条:{{name}} {{delta}}", "undoUnavailable": "当前没有可撤销的积分操作", "undoLastSuccess": "已撤销上一步积分操作", "multiSelect": "多选", "batchMode": "多选模式", "selectAll": "全选", "clearSelected": "清空已选", "batchOperate": "批量积分", "selected": "已选", "selectedCount": "已选 {{count}} 人", "batchSuccess": "已为 {{count}} 名学生提交积分", "batchPartial": "成功提交 {{success}}/{{total}} 名学生积分", "selectStudentFirst": "请先选择学生", "addPoints": "加分", "deductPoints": "扣分", "pointsChange": "积分变更", "reasonLabel": "理由:" }, "students": { "title": "学生管理", "importList": "导入名单", "addStudent": "添加学生", "name": "姓名", "group": "小组", "avatar": "头像", "currentScore": "当前积分", "tags": "标签", "noTags": "无标签", "editTags": "编辑标签", "editAvatar": "设置头像", "deleteConfirm": "确认删除该学生?", "addTitle": "添加学生", "addConfirm": "添加", "namePlaceholder": "请输入学生姓名", "groupPlaceholder": "请输入小组名称(可选)", "nameRequired": "请输入姓名", "nameExists": "学生姓名已存在", "addSuccess": "添加成功", "addFailed": "添加失败", "deleteSuccess": "删除成功", "deleteFailed": "删除失败", "tagSaveSuccess": "标签保存成功", "tagSaveFailed": "保存标签失败", "importTitle": "导入名单", "importTextHint": "支持粘贴多行文本,一行一个姓名", "importTextPlaceholder": "例如:\n张三\n李四\n王五", "importByText": "从文本导入", "importByXlsx": "通过 xlsx 导入", "importByBanyou": "从班优导入", "xlsxPreview": "xlsx 预览与导入", "file": "文件", "selectNameCol": "点击表头选择姓名列", "previewRows": "预览前 50 行", "importConfirm": "导入", "importComplete": "导入完成:新增 {{inserted}},跳过 {{skipped}}", "workerNotReady": "Worker 未初始化", "parseXlsxFailed": "解析 xlsx 失败", "selectNameColFirst": "请先点击选择\"姓名列\"", "noNamesFound": "所选列未解析到可导入的姓名", "importFailed": "导入失败", "banyouCookieHint": "请在班优网页版登录后,复制完整 Cookie 并粘贴到下方。", "banyouCookiePlaceholder": "uid=...; accessToken=...; ...", "banyouCookieRequired": "请先粘贴 Cookie", "banyouFetch": "获取班级列表", "banyouFetchSuccess": "已获取 {{count}} 个班级", "banyouFetchFailed": "获取班优班级失败", "banyouCreatedClasses": "我创建的班级", "banyouJoinedClasses": "我加入的班级", "banyouNoClasses": "暂无班级数据", "banyouClassTeacher": "班主任:", "banyouStudentCount": "学生:", "banyouPraiseCount": "表扬:", "banyouFetchDetailFailed": "获取班级详情失败", "banyouClassDetail": "班级详情", "banyouDetailEmpty": "暂无班级详情数据", "banyouReasonList": "加分/扣分理由列表", "banyouStudentList": "学生列表", "banyouTeamList": "小组列表", "banyouNoTeams": "暂无小组数据(可尝试填写 teamPlanId 后重新打开)", "banyouTeamPlanSelector": "分组方案", "banyouLoadTeamPlan": "加载该方案小组", "banyouTeamPlanSource": "方案来源接口:", "banyouSelectTeamPlanFirst": "请先选择分组方案", "banyouImportSelected": "一键导入勾选项", "banyouNothingSelected": "请至少勾选一项后再导入", "banyouImportSummary": "班优导入完成:学生 新增{{studentsInserted}}/跳过{{studentsSkipped}};理由 新增{{reasonsInserted}}/跳过{{reasonsSkipped}};分组 更新{{groupsUpdated}}/跳过{{groupsSkipped}}", "editTagTitle": "编辑标签 - {{name}}", "editGroup": "设置小组", "editGroupTitle": "设置小组 - {{name}}", "groupSaveSuccess": "小组保存成功", "groupSaveFailed": "小组保存失败", "existingGroups": "已有小组(点击一键填入)", "noExistingGroups": "暂无可用的小组", "groupBoardEdit": "编辑分组", "groupBoardTitle": "快速编辑分组", "groupBoardHint": "拖动学生到不同小组卡片中,点击保存后批量生效。", "groupBoardNewGroupPlaceholder": "输入新分组名称", "groupBoardAddGroup": "新建分组", "groupBoardGroupExists": "该分组已存在", "groupBoardGroupNameRequired": "请输入分组名称", "groupBoardGroupNameInvalid": "分组名称无效", "groupBoardEmpty": "可将学生拖拽到这里", "groupBoardNoChanges": "分组未发生变化", "groupBoardSaveSuccess": "已更新 {{count}} 名学生的小组", "groupBoardSaveFailed": "保存失败,{{failed}} 名学生未更新", "noGroup": "未分组", "editAvatarTitle": "设置头像 - {{name}}", "avatarUpload": "上传图片", "avatarClear": "清除头像", "noAvatar": "无头像", "avatarTip": "支持常见图片格式,文件大小不超过 2MB", "avatarSaveSuccess": "头像保存成功", "avatarSaveFailed": "头像保存失败", "avatarInvalidFile": "请选择图片文件", "avatarTooLarge": "图片不能超过 2MB", "avatarReadFailed": "读取图片失败", "avatarClipboardImport": "从剪贴板导入", "avatarClipboardUnsupported": "当前环境不支持读取剪贴板图片", "avatarClipboardNoImage": "剪贴板中没有图片", "avatarClipboardReadFailed": "读取剪贴板图片失败" }, "score": { "title": "积分管理", "student": "学生", "change": "变动", "reason": "理由", "time": "时间", "undoConfirm": "确定要撤销这条记录吗?学生积分将回滚。", "undo": "撤销", "undoSuccess": "已撤销操作", "undoFailed": "撤销失败", "recentRecords": "最近记录", "pleaseSelectStudent": "请选择或搜索学生", "selectAllStudents": "全班", "clearSelectedStudents": "清空", "selectedCount": "已选 {{selected}} / {{total}} 人", "points": "分数", "addPoints": "加分", "deductPoints": "扣分", "quickReason": "快捷理由", "selectReason": "选择预设理由", "reasonContent": "理由内容", "reasonPlaceholder": "手动输入或选择快捷理由", "submit": "确认提交", "pleaseEnterInfo": "请填写完整信息", "pleaseEnterPoints": "请填写分值或选择预设理由", "batchSuccess": "已为 {{count}} 名学生提交积分", "batchPartial": "成功提交 {{success}}/{{total}} 名学生的积分" }, "reasons": { "title": "理由管理", "addReason": "添加预设理由", "category": "分类", "content": "理由内容", "presetPoints": "预设分值", "deleteConfirm": "确认删除该理由?", "addTitle": "添加理由", "addConfirm": "添加", "categoryPlaceholder": "例如: 学习, 纪律", "contentPlaceholder": "请输入理由", "pointsPlaceholder": "例如: 2 或 -2", "contentRequired": "请输入理由内容", "pointsRequired": "请输入预设分值", "reasonExists": "该分类下已存在相同理由", "addSuccess": "添加成功", "addFailed": "添加失败", "deleteSuccess": "删除成功", "deleteFailed": "删除失败", "others": "其他" }, "rewardExchange": { "title": "奖励兑换", "enterMode": "奖励兑换", "exitMode": "退出奖励兑换模式", "modeHint": "当前为奖励兑换模式,点击学生卡可选择可兑换奖励。", "normalHint": "当前显示学生原始积分,点击按钮后将显示可兑换积分。", "remainingRewardPoints": "剩余兑换积分", "currentScore": "当前积分", "chooseRewardTitle": "为 {{name}} 选择奖励", "currentRewardPoints": "当前可兑换积分:{{points}}", "costLabel": "消耗积分:{{points}}", "redeemNow": "立即兑换", "noAffordableRewards": "当前没有可兑换的奖励,请先积累积分。", "redeemSuccess": "{{student}} 成功兑换「{{reward}}」,消耗 {{points}} 分", "redeemFailed": "兑换失败", "recordsTitle": "兑换记录", "recordStudent": "学生", "recordReward": "奖励", "recordCost": "消耗积分", "recordTime": "兑换时间", "rewards": "选择奖励" }, "rewardSettings": { "title": "奖励设置", "addReward": "添加奖励", "addTitle": "添加奖励", "editTitle": "编辑奖励", "rewardName": "奖励名称", "costPoints": "消耗积分", "namePlaceholder": "例如:免作业券", "costPlaceholder": "请输入消耗积分", "nameRequired": "请输入奖励名称", "costRequired": "请输入正整数积分", "createSuccess": "奖励创建成功", "createFailed": "奖励创建失败", "updateSuccess": "奖励更新成功", "updateFailed": "奖励更新失败", "deleteSuccess": "奖励删除成功", "deleteFailed": "奖励删除失败", "deleteConfirm": "确认删除奖励「{{name}}」?" }, "board": { "title": "看板", "editable": "可编辑", "readonly": "只读", "addBoard": "新增看板", "removeBoard": "删除看板", "removeBoardConfirm": "确认删除当前看板?", "boardConfig": "看板配置", "boardNamePlaceholder": "输入看板名称", "renameBoard": "重命名看板", "newBoard": "新看板", "untitledBoard": "未命名看板", "addList": "新增学生列表", "removeList": "删除列表", "removeListConfirm": "确认删除当前学生列表?", "editList": "编辑", "sqlEditorTitle": "编辑学生列表", "splitHorizontal": "左右拆分", "splitVertical": "上下拆分", "dragHandle": "拖动调整布局", "listNamePlaceholder": "输入列表名称", "newList": "新列表", "applyPreset": "套用预设", "run": "运行 SQL", "runAll": "运行全部", "viewModes": { "list": "列表视图", "card": "卡片视图", "grid": "网格视图", "largeAvatar": "大头像视图" }, "scoreDisplayModes": { "total": "显示总分", "split": "显示加分与扣分" }, "metrics": { "totalScore": "总分", "addScore": "加分", "deductScore": "扣分", "rewardPoints": "奖励分", "weekChange": "近7天", "weekDeducted": "近7天扣分", "todayAnswered": "今日回答" }, "sqlPlaceholder": "输入 SQL(仅支持单条 SELECT / WITH 查询)", "templateHint": "支持时间模板变量:{{today_start}}、{{this_week_start}}、{{last_week_start}}、{{since_7d}}、{{since_30d}}、{{now}}", "templateDescription": "可直接在 SQL 中使用模板变量,运行时会自动替换为 ISO 时间,兼容 SQLite 与 PostgreSQL。", "saving": "保存中...", "saveFailed": "保存看板失败", "runFailed": "查询执行失败", "keepAtLeastOneBoard": "至少保留一个看板", "keepAtLeastOneList": "至少保留一个学生列表", "presets": { "weekLowDeduct": { "name": "上周低扣分排行", "description": "上一周扣分 < 3 的学生积分榜" }, "todayActive": { "name": "今日活跃榜", "description": "按今日回答次数与积分变化排序" }, "rewardRanking": { "name": "奖励积分榜", "description": "按奖励积分和总积分排序" } } }, "leaderboard": { "title": "积分排行榜", "rank": "排名", "name": "姓名", "totalScore": "总积分", "todayChange": "今日变化", "weekChange": "本周变化", "monthChange": "本月变化", "viewHistory": "查看", "exportXlsx": "导出 XLSX", "exportSuccess": "导出成功", "queryFailed": "查询失败", "historyTitle": "{{name}} - 操作记录", "close": "关闭", "today": "今天", "week": "本周", "month": "本月", "operationRecord": "操作记录", "change": "变化" }, "settlements": { "title": "结算历史", "phase": "阶段 #{{id}}", "viewLeaderboard": "查看排行榜", "recordCount": "记录数: {{count}}", "noRecords": "暂无结算记录", "noSettlements": "暂无结算记录", "back": "返回", "leaderboardTitle": "结算排行榜", "phaseScore": "阶段积分", "queryFailed": "查询失败", "rank": "排名", "name": "姓名" }, "autoScore": { "title": "自动化管理", "name": "自动化名称", "namePlaceholder": "例如:每日签到加分", "nameRequired": "请输入自动化名称", "triggers": "触发器", "actions": "行动", "applicableStudents": "适用学生", "allStudents": "所有学生", "lastExecuted": "最后执行", "notExecuted": "未执行", "invalidTime": "无效时间", "addTrigger": "添加规则", "addAction": "添加行动", "whenTriggered": "当以下规则触发时", "triggerScheduleHint": "提示:规则是否执行仍由“间隔时间”触发器决定,标签、SQL、AND / OR / NOT 仅用于筛选本次命中的学生。", "triggeredActions": "满足规则时触发的行动", "addAutomation": "添加自动化", "updateAutomation": "更新自动化", "cancelEdit": "取消编辑", "resetForm": "重置表单", "deleteConfirm": "确定要删除这条自动化吗?", "adminRequired": "需要管理员权限以查看自动加分自动化,请先登录管理员账号", "adminCreateRequired": "需要管理员权限以创建或更新自动加分自动化", "adminDeleteRequired": "需要管理员权限以删除自动加分自动化", "adminToggleRequired": "需要管理员权限以启用/禁用自动加分自动化", "fetchFailed": "获取自动化失败", "unsupportedLogic": "当前版本保存规则时仅支持 AND 条件,OR / NOT 逻辑暂未接入后端存储", "triggerRequired": "请至少添加一个触发器", "intervalTriggerRequired": "请至少添加一个“间隔时间”触发器,否则规则不会自动执行", "actionRequired": "请至少添加一个行动", "createSuccess": "自动化创建成功", "updateSuccess": "自动化更新成功", "createFailed": "创建自动化失败", "updateFailed": "更新自动化失败", "deleteSuccess": "自动化删除成功", "deleteFailed": "删除自动化失败", "enabled": "自动化已启用", "disabled": "自动化已禁用", "enableFailed": "启用自动化失败", "disableFailed": "禁用自动化失败", "noTriggerAvailable": "没有可用的触发器类型,请检查配置", "noActionAvailable": "没有可用的行动类型,请检查配置", "sort": "排序", "status": "状态", "triggerCount": "{{count}} 个触发器", "actionCount": "{{count}} 个行动", "studentCount": "{{count}} 名学生", "studentPlaceholder": "请选择或搜索学生(留空表示所有学生)", "triggerCondition": "触发条件", "executeAction": "执行操作", "addOperation": "添加操作", "scoreLabel": "分数", "tagNameLabel": "标签名称", "operationNoteLabel": "操作说明(可选)", "triggerIntervalTime": "间隔时间", "triggerStudentTag": "学生标签", "triggerStudentScore": "学生分数", "triggerStudentScoreGreater": "学生分数大于", "triggerStudentSql": "自定义 SQL 条件", "triggerStudentSqlPlaceholder": "输入筛选学生的 SQL 或 WHERE 条件", "actionAddScore": "加分", "actionAddTag": "添加标签", "actionSettleScore": "结算分数", "actionSettleScoreHint": "无需参数", "rewardRequired": "请选择奖励", "startAt": "开始时间", "startAtPlaceholder": "请选择开始时间(留空立即开始)", "startAtHint": "留空表示立即开始;设置后将以该时间为基准按间隔触发", "startAtWaitHint": "距离开始还有 {{minutes}} 分钟", "startAtElapsedHint": "自开始已过去 {{elapsed}} 分钟,距离下一次触发约 {{remain}} 分钟", "cooldownMinutes": "冷却时间(分钟)", "maxStudentsPerRun": "单次最多学生数", "maxRunsPerDay": "每日最多执行次数", "maxScoreDeltaPerDay": "每日最多积分变动", "filterGroups": "按分组筛选", "filterGrades": "按年级筛选", "filterMinScore": "最低当前积分", "filterMaxScore": "最高当前积分", "filterRecentEventDays": "最近事件天数", "filterMinRecentEventCount": "最近事件最少次数", "batchLogs": "执行日志", "batchId": "批次", "batchRollback": "回滚", "batchRolledBack": "已回滚", "batchRollbackConfirm": "确认回滚这个执行批次?", "batchRollbackSuccess": "批次回滚成功", "batchRollbackFailed": "批次回滚失败", "intervalAmountPlaceholder": "请输入间隔时间", "intervalUnitMonth": "个月", "intervalUnitDay": "天", "intervalUnitMinute": "分钟", "intervalPartDay": "天", "intervalPartHour": "小时", "intervalPartMinute": "分钟", "minutesPlaceholder": "请输入分钟数", "minutes": "分钟", "tagsPlaceholder": "请输入标签名称", "scorePlaceholder": "请输入分数", "tagNamePlaceholder": "请输入标签名称", "reasonPlaceholder": "请输入理由", "relationAnd": "且", "relationOr": "或", "operatorContains": "包含", "relationNot": "非", "openFile": "打开文件", "openFileFailed": "打开自动化文件失败", "backfillConfirmTitle": "检测到关闭期间可补回的自动化", "backfillConfirmSummary": "在 {{from}} 到 {{to}} 期间,预计有 {{runs}} 次自动化执行(共 {{rules}} 条规则)可补回,是否现在补回?", "backfillPreviewLine": "{{name}}:{{runs}} 次", "backfillPreviewMore": "其余 {{count}} 条规则未展开", "backfillPreviewTruncated": "{{count}} 条规则补回次数已截断到最多 {{max}} 次", "backfillApplySuccess": "补回完成:执行 {{runs}} 次,新增 {{events}} 条积分记录", "backfillApplyFailed": "补回自动加分失败" }, "triggers": { "studentTag": { "label": "学生标签", "description": "当学生匹配特定标签时触发自动化", "placeholder": "请选择标签", "required": "请输入标签名称" }, "randomTime": { "label": "随机时间触发", "description": "在指定时间范围内随机触发自动化", "required": "请输入有效的时间范围(分钟)" }, "intervalTime": { "label": "间隔时间", "description": "当间隔时间到达时触发自动化", "placeholder": "请输入时间间隔", "required": "请输入有效的时间", "monthLabel": "月", "weekLabel": "周", "timeLabel": "时间" } }, "actions": { "sendNotification": { "label": "发送通知", "description": "向学生发送通知", "placeholder": "请输入通知内容" }, "addTag": { "label": "添加标签", "description": "为学生添加标签", "placeholder": "请输入标签" }, "addScore": { "label": "添加分数", "description": "为学生添加分数", "pointsPlaceholder": "请输入分数", "reasonPlaceholder": "请输入理由" } }, "wizard": { "welcomeTitle": "欢迎使用 SecScore 积分管理", "welcomeDesc": "感谢选择 SecScore。在开始之前,请花一分钟完成基础配置。", "configComplete": "配置完成!", "configFailed": "配置保存失败", "startJourney": "开启积分之旅" }, "tags": { "editTitle": "编辑标签", "inputPlaceholder": "输入标签名称,按 Enter 添加", "selectedTags": "已选标签(点击取消)", "noTagsSelected": "未选择标签", "availableTags": "可选标签(点击选择)", "noAvailableTags": "无可用标签", "fetchFailed": "获取标签列表失败", "nameTooLong": "标签名称不能超过 30 个字符", "addFailed": "添加标签失败", "deleteSuccess": "标签删除成功", "deleteFailed": "删除标签失败" }, "recovery": { "title": "SecScore 找回字符串", "saved": "我已保存", "export": "导出文本文件", "exportHint": "建议导出后离线保存,遗失将无法找回。", "hint": "建议导出后离线保存,遗失将无法找回。" }, "plugin": { "title": "插件管理", "name": "插件名称", "author": "作者", "description": "描述", "version": "版本", "status": "状态", "enabled": "已启用", "disabled": "已禁用", "operation": "操作", "install": "安装插件", "uninstall": "卸载", "uninstallConfirm": "确认卸载插件?", "uninstallDescription": "卸载后会移除已安装到应用目录中的插件副本。", "installSuccess": "插件安装成功", "installFailed": "插件安装失败", "uninstallSuccess": "插件卸载成功", "uninstallFailed": "插件卸载失败", "toggleFailed": "切换插件状态失败", "invalidManifest": "无效的插件清单文件", "pluginFolder": "插件文件夹", "folderPlaceholder": "选择包含 manifest.json 的文件夹", "installHint": "选择一个包含 manifest.json 的文件夹来安装插件。", "selectFolder": "请选择插件文件夹", "totalPlugins": "插件总数", "enabledPlugins": "已启用", "disabledPlugins": "已禁用", "noPlugins": "暂无已安装的插件", "installedAt": "安装时间" } }