mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 12:34:22 +08:00
981 lines
39 KiB
JSON
981 lines
39 KiB
JSON
{
|
||
"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": "安装时间"
|
||
}
|
||
}
|