Files
NextEdu/src/shared/i18n/messages/en/school.json
SpecialX 15aa84b72c refactor(school,classes): 完成 school/grade/class 审计全量改进项
P0-1/P0-2: 删除 grade-management 死模块,年级 CRUD 统一由 school 模块负责

P0-3: classes/actions.ts 从 974 行拆分为 6 个职责文件 + barrel re-export

P0-5: 13 个页面 i18n 全量接入(grades/departments/academic-year/classes/insights)

P1-1: 角色硬编码改为 hasAdminScope/hasTeacherScope/hasStudentScope 基于 dataScope.type

P1-3: 新增 SchoolErrorBoundary + SchoolListSkeleton/SchoolCardSkeleton,4 个页面包裹 Error Boundary

P1-4: classes/types.ts 跨领域类型添加归属决策注释

P1-5: schools-view.tsx 拆分为组合模式(SchoolFormDialog + SchoolDeleteDialog + SchoolListToolbar)

P1-6: 新增 getSchoolsForUser/getGradesForUser 权限感知查询函数

P2-1: 抽取 useSchoolData hook,对话框状态管理与 UI 分离

同步更新架构图文档 004/005
2026-06-22 18:54:01 +08:00

258 lines
7.8 KiB
JSON

{
"schools": {
"title": "School Management",
"description": "Manage schools across multiple campuses.",
"new": "New school",
"all": "All schools",
"empty": {
"title": "No schools",
"description": "Create your first school to get started."
},
"column": {
"name": "Name",
"code": "Code",
"updated": "Updated",
"actions": "Actions"
},
"form": {
"createTitle": "New school",
"editTitle": "Edit school",
"name": "Name",
"namePlaceholder": "e.g. First Primary School",
"code": "Code",
"codePlaceholder": "Optional",
"cancel": "Cancel",
"create": "Create",
"save": "Save"
},
"delete": {
"title": "Delete school",
"description": "This will permanently delete {name} and its grades.",
"cancel": "Cancel",
"confirm": "Delete"
},
"actions": {
"edit": "Edit",
"delete": "Delete"
}
},
"grades": {
"title": "Grade Management",
"description": "Manage grades and assign grade heads.",
"new": "New grade",
"all": "All grades",
"empty": {
"title": "No grades",
"description": "Create your first grade to get started."
},
"column": {
"school": "School",
"grade": "Grade",
"order": "Order",
"gradeHead": "Grade Head",
"teachingHead": "Teaching Head",
"updated": "Updated",
"actions": "Actions"
},
"form": {
"createTitle": "New grade",
"editTitle": "Edit grade",
"school": "School",
"schoolPlaceholder": "Select school",
"name": "Grade name",
"namePlaceholder": "e.g. Grade 1",
"order": "Order",
"gradeHead": "Grade Head",
"gradeHeadPlaceholder": "Select grade head",
"teachingHead": "Teaching Head",
"teachingHeadPlaceholder": "Select teaching head",
"cancel": "Cancel",
"create": "Create",
"save": "Save"
},
"delete": {
"title": "Delete grade",
"description": "Are you sure you want to delete {name}? This action cannot be undone.",
"cancel": "Cancel",
"confirm": "Delete"
},
"actions": {
"edit": "Edit",
"delete": "Delete",
"insights": "Insights"
},
"notSet": "Not set",
"filters": {
"search": "Search grade/school/head...",
"school": "School",
"allSchools": "All schools",
"head": "Head",
"allHeads": "All",
"missing": "Both missing",
"missingGradeHead": "Missing grade head",
"missingTeachingHead": "Missing teaching head",
"sort": "Sort",
"defaultSort": "Default",
"updatedDesc": "Updated (new→old)",
"updatedAsc": "Updated (old→new)",
"nameAsc": "Name (A→Z)",
"nameDesc": "Name (Z→A)",
"orderAsc": "Order (low→high)",
"orderDesc": "Order (high→low)",
"reset": "Reset"
},
"list": {
"title": "Grade list",
"noSchools": "No schools",
"noSchoolsDescription": "Please create a school first, then create grades under it.",
"noGrades": "No grades",
"noGradesDescription": "Create a grade to manage heads and classes.",
"noMatch": "No matching results",
"noMatchDescription": "Try adjusting filters or clearing the search."
},
"validation": {
"selectSchool": "Please select a school",
"enterName": "Please enter a grade name",
"nameTooLong": "Grade name must be at most 100 characters",
"orderInvalid": "Order must be a non-negative integer",
"duplicateName": "A grade with this name already exists in this school",
"fixForm": "Please complete the form",
"noChanges": "No changes to save"
},
"optional": "Optional",
"failedCreate": "Failed to create grade",
"failedUpdate": "Failed to update grade",
"failedDelete": "Failed to delete grade"
},
"departments": {
"title": "Department Management",
"description": "Manage school departments.",
"new": "New department",
"all": "All departments",
"empty": {
"title": "No departments",
"description": "Create your first department to get started."
},
"column": {
"name": "Name",
"description": "Description",
"updated": "Updated",
"actions": "Actions"
},
"form": {
"createTitle": "New department",
"editTitle": "Edit department",
"name": "Name",
"namePlaceholder": "e.g. Chinese Teaching Group",
"description": "Description",
"descriptionPlaceholder": "Optional",
"cancel": "Cancel",
"create": "Create",
"save": "Save"
},
"delete": {
"title": "Delete department",
"description": "Are you sure you want to delete {name}? This action cannot be undone.",
"cancel": "Cancel",
"confirm": "Delete"
},
"actions": {
"edit": "Edit",
"delete": "Delete"
}
},
"academicYear": {
"title": "Academic Year Management",
"description": "Manage academic year periods.",
"new": "New academic year",
"all": "All academic years",
"active": "Active",
"empty": {
"title": "No academic years",
"description": "Create your first academic year to get started."
},
"column": {
"name": "Name",
"startDate": "Start date",
"endDate": "End date",
"status": "Status",
"updated": "Updated",
"actions": "Actions"
},
"form": {
"createTitle": "New academic year",
"editTitle": "Edit academic year",
"name": "Name",
"namePlaceholder": "e.g. 2025-2026",
"startDate": "Start date",
"endDate": "End date",
"isActive": "Set as active year",
"cancel": "Cancel",
"create": "Create",
"save": "Save"
},
"delete": {
"title": "Delete academic year",
"description": "Are you sure you want to delete {name}? This action cannot be undone.",
"cancel": "Cancel",
"confirm": "Delete"
},
"actions": {
"edit": "Edit",
"delete": "Delete"
}
},
"classManagement": {
"title": "Class Management",
"description": "Manage classes and assign teachers.",
"grade": {
"title": "Class Management",
"description": "Manage classes for your grades.",
"insights": {
"title": "Grade Insights",
"description": "View grade-level homework statistics for grades you lead.",
"filters": "Filters",
"grade": "Grade",
"apply": "Apply",
"selectGrade": "Select a grade",
"noGrades": "No grades assigned",
"noGradesDescription": "You are not assigned as a grade head or teaching head for any grade.",
"selectToView": "Select a grade to view insights",
"selectToViewDescription": "Pick a grade to see latest homework and historical score statistics.",
"notFound": "Grade not found",
"notFoundDescription": "This grade may not exist or has no accessible data.",
"noData": "No homework data for this grade",
"noDataDescription": "No homework assignments were targeted to students in this grade yet.",
"classes": "Classes",
"students": "Students",
"overallAvg": "Overall Avg",
"latestAvg": "Latest Avg",
"homeworkTimeline": "Homework timeline",
"classRanking": "Class ranking",
"assignment": "Assignment",
"status": "Status",
"created": "Created",
"targeted": "Targeted",
"submitted": "Submitted",
"graded": "Graded",
"avg": "Avg",
"median": "Median",
"class": "Class",
"latestAvgCol": "Latest Avg",
"prevAvg": "Prev Avg",
"delta": "Δ",
"overallAvgCol": "Overall Avg",
"active": "Active",
"inactive": "Inactive"
}
}
},
"errors": {
"boundary": {
"title": "Loading Failed",
"description": "An error occurred while loading data. Please retry.",
"retry": "Retry"
}
}
}