Add complete i18n infrastructure using next-intl (cookie-driven, without i18n routing) with zh-CN/en dictionary files, locale switcher, and NextIntlClientProvider in root layout. Add class invitation code system with new class_invitation_codes table, data-access layer (generate/validate/consume/revoke), server actions with permission checks, rate limiting, and audit logging. Add class-invitation-manager UI component. Refactor onboarding stepper to use i18n translations and accept new invitation code format (6-char alphanumeric) with backward compatibility for legacy 6-digit codes.
79 lines
3.0 KiB
JSON
79 lines
3.0 KiB
JSON
{
|
||
"title": "首次登录引导",
|
||
"description": "完成首次登录信息配置",
|
||
"steps": {
|
||
"roleConfirm": "角色确认",
|
||
"basicInfo": "基础信息",
|
||
"roleInfo": "角色信息",
|
||
"complete": "完成"
|
||
},
|
||
"role": {
|
||
"yourRole": "你的角色",
|
||
"allRoles": "全部角色:{roles}",
|
||
"adminAssigned": "角色由管理员预分配,如需变更请联系管理员。",
|
||
"admin": "管理员",
|
||
"teacher": "教师",
|
||
"student": "学生",
|
||
"parent": "家长",
|
||
"grade_head": "年级主任",
|
||
"teaching_head": "教研组长"
|
||
},
|
||
"form": {
|
||
"name": "姓名",
|
||
"nameRequired": "请填写姓名",
|
||
"nameMax": "姓名长度不能超过 50 个字符",
|
||
"phone": "电话",
|
||
"phoneRequired": "请填写电话",
|
||
"phoneInvalid": "请输入有效的手机号(11 位,以 1 开头)",
|
||
"address": "住址",
|
||
"addressMax": "住址长度不能超过 200 个字符"
|
||
},
|
||
"teacher": {
|
||
"classCodes": "班级邀请码",
|
||
"classCodesOptional": "班级邀请码(可选,可多个)",
|
||
"classCodesPlaceholder": "每行一个或用逗号分隔,6 位字母数字",
|
||
"classCodesHint": "服务端会校验邀请码有效性及科目是否已被其他教师占用。",
|
||
"subjects": "教学科目",
|
||
"subjectsOptional": "教学科目(可选,可多选)",
|
||
"subjectsHint": "可选多个科目,服务端会为每个班级的每个所选科目绑定任课教师。若班级该科目已有任课教师,绑定将被拒绝。"
|
||
},
|
||
"student": {
|
||
"classCodesOptional": "班级邀请码(可选)",
|
||
"classCodesPlaceholder": "每行一个或用逗号分隔,6 位字母数字",
|
||
"classCodesHint": "若管理员已预分配班级,可跳过此项。"
|
||
},
|
||
"parent": {
|
||
"bindHint": "通过子女邮箱 + 子女生日 + 子女手机号后 4 位绑定子女(至少完整填写一个,可添加多个)。",
|
||
"childN": "子女 {index}",
|
||
"childEmail": "子女邮箱",
|
||
"childEmailRequired": "请填写子女邮箱",
|
||
"childEmailInvalid": "子女邮箱格式错误",
|
||
"childBirthDate": "子女生日",
|
||
"childBirthDateRequired": "请填写子女生日",
|
||
"childBirthDateInvalid": "子女生日格式错误(YYYY-MM-DD)",
|
||
"childPhoneSuffix": "子女手机号后 4 位",
|
||
"childPhoneSuffixRequired": "请填写子女手机号后 4 位",
|
||
"childPhoneSuffixInvalid": "子女手机号后 4 位格式错误",
|
||
"childRelation": "关系",
|
||
"childRelationPlaceholder": "父亲 / 母亲 / 其他",
|
||
"addChild": "添加子女"
|
||
},
|
||
"complete": {
|
||
"ready": "已准备完成",
|
||
"readyHint": "点击完成后进入系统。"
|
||
},
|
||
"validation": {
|
||
"needNamePhone": "请填写姓名与电话",
|
||
"needOneChild": "请至少完整填写一个子女的绑定信息"
|
||
},
|
||
"progress": {
|
||
"label": "Onboarding 进度"
|
||
},
|
||
"toast": {
|
||
"completeSuccess": "配置完成",
|
||
"partialFailure": "配置完成,但 {count} 项绑定失败",
|
||
"submitFailed": "提交失败",
|
||
"inputInvalid": "输入校验失败"
|
||
}
|
||
}
|