feat(i18n): add new i18n message files and update request config

- Add new i18n message files: audit, course-plans, files, leave, nav, practice, scheduling, student, users

- Update existing i18n messages: ai, attendance, common, diagnostic, elective, error-book, exam-homework, grades, lesson-preparation, school, settings

- Update i18n request config for new locale handling
This commit is contained in:
SpecialX
2026-06-24 12:04:01 +08:00
parent 37d2688a28
commit e3b8455b31
41 changed files with 1835 additions and 27 deletions

View File

@@ -40,6 +40,16 @@ export default getRequestConfig(async () => {
elective,
school,
ai,
practice,
student,
errorBook,
audit,
scheduling,
coursePlans,
files,
users,
leave,
nav,
] = await Promise.all([
import(`@/shared/i18n/messages/${locale}/common.json`),
import(`@/shared/i18n/messages/${locale}/auth.json`),
@@ -61,6 +71,16 @@ export default getRequestConfig(async () => {
import(`@/shared/i18n/messages/${locale}/elective.json`),
import(`@/shared/i18n/messages/${locale}/school.json`),
import(`@/shared/i18n/messages/${locale}/ai.json`),
import(`@/shared/i18n/messages/${locale}/practice.json`),
import(`@/shared/i18n/messages/${locale}/student.json`),
import(`@/shared/i18n/messages/${locale}/error-book.json`),
import(`@/shared/i18n/messages/${locale}/audit.json`),
import(`@/shared/i18n/messages/${locale}/scheduling.json`),
import(`@/shared/i18n/messages/${locale}/course-plans.json`),
import(`@/shared/i18n/messages/${locale}/files.json`),
import(`@/shared/i18n/messages/${locale}/users.json`),
import(`@/shared/i18n/messages/${locale}/leave.json`),
import(`@/shared/i18n/messages/${locale}/nav.json`),
]);
return {
@@ -86,6 +106,16 @@ export default getRequestConfig(async () => {
elective: elective.default,
school: school.default,
ai: ai.default,
practice: practice.default,
student: student.default,
errorBook: errorBook.default,
audit: audit.default,
scheduling: scheduling.default,
coursePlans: coursePlans.default,
files: files.default,
users: users.default,
leave: leave.default,
nav: nav.default,
},
};
});

View File

@@ -142,7 +142,13 @@
"callsToday": "Calls today",
"callsThisWeek": "Calls this week",
"errorRate": "Error rate",
"avgDuration": "Avg duration"
"avgDuration": "Avg duration",
"settings": {
"title": "AI Settings",
"description": "Manage AI providers, API keys, and usage statistics.",
"descriptionAdmin": "Manage AI providers, API keys, and usage statistics (Admin view).",
"descriptionUser": "Manage your AI providers and API keys."
}
},
"studyPath": {
"title": "Your Learning Path",
@@ -160,7 +166,18 @@
"title": "AI Assistant",
"open": "Open AI Assistant",
"close": "Close",
"contextAware": "Context-aware"
"contextAware": "Context-aware",
"dragHint": "Drag to move · Long press edge to hide",
"hidden": "Hidden",
"show": "Show",
"hide": "Hide",
"resetPosition": "Reset position",
"welcome": "Hi, I'm your AI Assistant",
"welcomeDesc": "How can I help you today?",
"newChat": "New chat",
"history": "History",
"online": "Online",
"tokens": "{count} chars"
},
"safety": {
"blocked": "Your message was blocked by the safety filter. Please keep the conversation educational.",

View File

@@ -49,6 +49,7 @@
"record": "Record Attendance",
"stats": "Statistics",
"save": "Save",
"retry": "Retry",
"delete": "Delete",
"cancel": "Cancel",
"markAllPresent": "Mark All Present"

View File

@@ -0,0 +1,12 @@
{
"title": "Audit Logs",
"description": "Track all user operations system-wide for security and compliance.",
"loginLogs": {
"title": "Login Logs",
"description": "Monitor all authentication events including sign-in, sign-out, and sign-up."
},
"dataChanges": {
"title": "Data Change Logs",
"description": "Track all data changes (create, update, delete) for compliance."
}
}

View File

@@ -49,5 +49,23 @@
"next": "Next",
"page": "Page {page}",
"total": "{total} items"
},
"accessDenied": "Access denied",
"accessDeniedDesc": "This resource is not available to your account.",
"somethingWentWrong": "Something went wrong",
"tryAgain": "Try again",
"user": {
"loading": "Loading...",
"notLoggedIn": "Not logged in",
"profile": "Profile",
"settings": "Settings",
"logout": "Log out"
},
"sidebar": {
"collapse": "Collapse",
"toggleSidebar": "Toggle Sidebar"
},
"breadcrumb": {
"home": "Home"
}
}

View File

@@ -0,0 +1,16 @@
{
"title": "Course Plans",
"description": "Manage course teaching plans and weekly lesson arrangements.",
"detail": {
"title": "Course Plan Details",
"description": "View course plan details."
},
"edit": {
"title": "Edit Course Plan",
"description": "Update course plan details."
},
"create": {
"title": "Create Course Plan",
"description": "Create a new course teaching plan."
}
}

View File

@@ -185,5 +185,20 @@
"noWeaknesses": "No weaknesses identified.",
"reportMeta": "Period: {period} · Overall: {score}%",
"historyReportMeta": "{date} · Overall: {score}%"
},
"parent": {
"title": "Children Diagnostic",
"description": "View your children's knowledge point mastery and diagnostic reports.",
"noChildren": "No children linked",
"noChildrenDesc": "Your account is not linked to any children. Please contact the school administrator.",
"selectChild": "Select a child",
"selectChildPlaceholder": "Choose a child to view their diagnostic data",
"overallMastery": "Overall Mastery",
"knowledgePoints": "Knowledge Points",
"strengths": "Strengths",
"weaknesses": "Weaknesses",
"reports": "Diagnostic Reports",
"noReports": "No diagnostic reports for this child yet.",
"mastery": "Mastery"
}
}

View File

@@ -60,7 +60,8 @@
"select": "Select",
"drop": "Drop",
"cancel": "Cancel",
"save": "Save"
"save": "Save",
"retry": "Retry"
},
"list": {
"empty": "No elective courses",

View File

@@ -76,11 +76,33 @@
"parent": {
"title": "Child Error Book",
"description": "View your child's error statistics and learning progress",
"noChild": "No children linked"
"noChild": "No children linked",
"noChildDesc": "Your account is not linked to any children yet. Please contact the school administrator.",
"unknown": "Unknown",
"totalErrors": "Total Errors",
"dueReview": "Due Review",
"newItems": "New",
"mastered": "Mastered",
"mastery": "{rate}% Mastery",
"weakPoints": "Weak Knowledge Points",
"errorsAndMastery": "{count} errors \u00b7 {rate}% mastery"
},
"admin": {
"title": "School-wide Error Analysis",
"description": "School-wide error statistics and weak point analysis"
"description": "School-wide error statistics and weak point analysis",
"description2": "View school-wide error statistics and weak knowledge points by subject.",
"noPermissionTitle": "Insufficient Permissions",
"noPermissionDescription": "You do not have permission to view school-wide error analysis data.",
"noStudentsTitle": "No Student Data",
"noStudentsDescription": "No student users in the system. Unable to display error analysis.",
"topStudents": "Top 50 Students with Most Errors",
"studentsWithErrors": "{count} students with errors",
"noChapterDataTitle": "No Chapter Error Data",
"noChapterDataDescription": "Knowledge points have not been linked to chapters. Unable to display chapter-level statistics.",
"noKnowledgePointDataTitle": "No Knowledge Point Data",
"noKnowledgePointDataDescription": "Errors have not been linked to knowledge points. Unable to display weak point statistics.",
"noStudentErrorsTitle": "No Student Errors",
"noStudentErrorsDescription": "No student error data for the selected subject."
},
"messages": {
"added": "Error added",

View File

@@ -131,8 +131,9 @@
"description": "Manage assignments, view submission rates and grading progress.",
"create": "Create Assignment",
"empty": "No assignments yet",
"emptyFiltered": "No assignments in this class.",
"emptyFiltered": "No assignments match your filters",
"emptyDescription": "You haven't created any assignments yet.",
"emptyFilteredDescription": "Try clearing filters or adjusting keywords.",
"clearFilters": "Clear filters",
"filterByClass": "Filter by class: {{className}}",
"columns": {

View File

@@ -0,0 +1,4 @@
{
"title": "File Management",
"description": "View and manage all uploaded files in the system."
}

View File

@@ -229,6 +229,41 @@
"dismissAriaLabel": "Close entry guide"
}
},
"batchByExam": {
"title": "Grade Entry by Exam Paper",
"selectExam": "Select Exam Paper",
"selectExamPlaceholder": "Please select an exam paper",
"selectClass": "Select Class",
"selectClassPlaceholder": "Please select a class",
"selectClassFirst": "Please select a class to start entry",
"guideSelectExam": "Select an exam paper from the library. The system will load the question list and full score automatically. Enter per-question scores and the total will be calculated automatically.",
"questionCount": "{count} questions",
"fullScore": "Full score: {score}",
"question": "Q{n}",
"points": "pts",
"totalScore": "Total",
"studentName": "Student",
"entered": "Entered",
"average": "Avg",
"max": "Max",
"min": "Min",
"searchStudent": "Search students...",
"noStudents": "No students in this class",
"invalidScoresBadge": "Invalid scores",
"invalidScoresError": "Invalid scores (exceed full score or wrong format), please check and retry",
"enterAtLeastOne": "Please enter at least one score",
"pasteApplied": "Pasted {count} rows",
"pasteHint": "Tip: Copy multiple rows/columns from Excel and paste to fill in bulk. Press Enter to go to next row, Tab to go to next cell.",
"confirmSwitchExam": "Switching exam will clear entered scores. Continue?",
"confirmSwitchClass": "Switching class will clear entered scores. Continue?",
"saveAll": "Save All Grades",
"saving": "Saving...",
"clear": "Clear",
"undo": "Undo",
"undoNoRecord": "No records to undo",
"undoExpired": "Undo expired (over 5 minutes)",
"undoFailed": "Undo failed, please retry"
},
"trend": {
"title": "Grade Trend",
"empty": "No grade records yet",
@@ -249,7 +284,8 @@
"noGradesTitle": "No grades yet",
"noGradesDescription": "There are no grade records for this student.",
"noDataTitle": "No data",
"noDataDescription": "Student grade summary is not available."
"noDataDescription": "Student grade summary is not available.",
"recordCount": "{count} grade records"
},
"empty": {
"noRecords": "No grade records found.",
@@ -344,11 +380,37 @@
"ariaLabelNonEmpty": "Ranking trend chart: {count} ranking records"
},
"classReport": {
"caption": "Class ranking table",
"noDataTitle": "No data",
"noDataDescription": "No grade records found for this class.",
"classRanking": "Class Ranking",
"rankColumn": "Rank",
"recordsColumn": "Records",
"studentCountInfo": "{studentCount} students · {recordCount} grade records"
},
"parent": {
"title": "Children Grades",
"description": "View your children's grade records.",
"noChildren": "No children linked",
"noChildrenDesc": "Your account is not linked to any children. Please contact the school administrator.",
"selectChild": "Select a child",
"selectChildPlaceholder": "Choose a child to view their grades",
"noGrades": "No grade records",
"noGradesDesc": "This child has no grade records yet.",
"subject": "Subject",
"score": "Score",
"exam": "Exam",
"semester": "Semester",
"teacher": "Teacher",
"date": "Date",
"average": "Average",
"highest": "Highest",
"lowest": "Lowest",
"totalRecords": "Total Records",
"gradeHistory": "Grade History",
"gradeSummary": "Grade Summary",
"recentGrades": "Recent Grades",
"viewAll": "View All",
"noRecentGrades": "No recent grades"
}
}

View File

@@ -0,0 +1,12 @@
{
"title": "Leave Request",
"description": "Submit a leave request for your child.",
"backToDashboard": "Back to Dashboard",
"onlineLeave": "Online Leave Request",
"comingSoon": "Coming soon",
"comingSoonDesc": "The online leave request feature is being developed and will be available soon. For now, please contact the homeroom teacher or school office directly.",
"contactOptions": "Contact options",
"callOffice": "Call the school office during working hours",
"sendMessage": "Send a message to the homeroom teacher via the Messages page",
"goToMessages": "Go to Messages"
}

View File

@@ -21,6 +21,12 @@
"confirm": "Confirm",
"create": "Create Lesson Plan",
"publish": "Publish as Homework",
"publishPlan": "Publish Lesson Plan",
"unpublishPlan": "Unpublish",
"publishPlanConfirm": "Students and parents will be able to view this lesson plan after publishing. Confirm?",
"unpublishPlanConfirm": "Students and parents will no longer be able to view this lesson plan after unpublishing. Confirm?",
"publishPlanSuccess": "Lesson plan published",
"unpublishPlanSuccess": "Lesson plan unpublished",
"viewHomework": "View"
},
"status": {
@@ -57,6 +63,10 @@
"titlePlaceholder": "e.g., Autumn - Lesson 1",
"blockCount": "{count} sections",
"blankHint": "Start from scratch",
"systemSection": "System Templates",
"personalSection": "Personal Templates",
"personalBadge": "Personal",
"noPersonalTemplates": "No personal templates yet. Save one from the editor via \"Save as Template\".",
"names": {
"tpl_regular": "Regular Lesson",
"tpl_review": "Review Lesson",
@@ -101,12 +111,51 @@
"textbookContent": "Textbook Content",
"textbookContentMissing": "Content node missing",
"textbookContentEmpty": "(No content loaded)",
"textbookOperateHint": "Operate directly on the canvas: select text to create a range anchor, or click a position to create a point anchor.",
"rightClickHint": "Right-click for anchor menu",
"dragToResize": "Drag to resize",
"anchorListTitle": "Anchor List",
"anchorListEmpty": "No anchors yet. Select text in the content to create one.",
"anchorRangeLabel": "Range",
"anchorPointLabel": "Point",
"zoomIn": "Zoom In",
"zoomOut": "Zoom Out",
"rangeAnchorTitle": "Link selection to a node",
"pointAnchorTitle": "Insert placeholder {number} here",
"pointAnchorTitle": "Insert placeholder at this position {number}",
"anchorToSelectedNode": "Link to selected node",
"anchorToNewNode": "Link to a new node"
"anchorToNewNode": "Link to a new node",
"textbookLabel": "Textbook",
"chapterLabel": "Chapter",
"selectNodeForAnchor": "Select a node to link",
"createNewNode": "Create and link a new node"
},
"readonly": {
"title": "View Lesson Plan",
"hint": "This is a read-only view. You cannot edit this lesson plan.",
"notFound": "Lesson plan not found or not published",
"notPublished": "Lesson plan is not published yet"
},
"student": {
"title": "My Lesson Plans",
"description": "View lesson plans published by your teachers"
},
"parent": {
"title": "Child's Lesson Plans",
"description": "View lesson plans published by your child's teachers"
},
"admin": {
"title": "Lesson Plan Management",
"description": "View lesson plans across the school",
"stats": {
"total": "Total Plans",
"published": "Published",
"draft": "Draft",
"archived": "Archived"
}
},
"gradeHead": {
"title": "Grade Lesson Plans",
"description": "View lesson plans from teachers in your grade"
},
"picker": {
"textbookLabel": "Select Textbook",
@@ -133,7 +182,10 @@
"noChapter": "No chapter",
"noTemplate": "No template",
"lastSaved": "Last saved: ",
"neverSaved": "Never saved"
"neverSaved": "Never saved",
"versionCount": "{count} versions",
"versionSelectorLabel": "Version",
"versionCurrent": "Latest"
},
"version": {
"title": "Version History",
@@ -145,7 +197,8 @@
"revertTitle": "Confirm Revert",
"revertConfirm": "Revert to v{versionNo}? A new version will be created.",
"revertSuccess": "Reverted to v{versionNo}",
"autoLabel": "Auto version"
"autoLabel": "Auto version",
"revertLabel": "Revert to v{versionNo}"
},
"knowledgePoint": {
"title": "Select Knowledge Points",
@@ -212,7 +265,9 @@
"noExerciseBlock": "Exercise block not found",
"noQuestions": "No questions in exercise block",
"planNotFound": "Lesson plan not found",
"noPermission": "No permission to publish"
"noPermission": "No permission to publish",
"homeworkTitle": "{title} - Homework",
"homeworkDescription": "From lesson plan"
},
"textStudy": {
"sourceTextLabel": "Source Text",
@@ -222,8 +277,86 @@
"annotationTitle": "Teaching Node",
"annotationNotePlaceholder": "Teaching notes..."
},
"objective": {
"hint": "Add learning objectives across knowledge, process, and emotional dimensions",
"dimension": {
"knowledge": "Knowledge & Skills",
"process": "Process & Methods",
"emotion": "Emotional Attitudes"
},
"textPlaceholder": "Enter learning objective...",
"addItem": "+ Add Objective"
},
"keyPoint": {
"hint": "Mark key and difficult points of this lesson",
"type": {
"key": "Key Point",
"difficult": "Difficult Point"
},
"textPlaceholder": "Enter key/difficult point...",
"addItem": "+ Add Point"
},
"newTeaching": {
"hint": "Design teaching steps for the new lesson",
"pointIndex": "Step {index}",
"outlineLabel": "Teaching Outline",
"outlinePlaceholder": "Enter teaching outline...",
"boardNotesLabel": "Board Notes",
"boardNotesPlaceholder": "Enter board notes...",
"addPoint": "+ Add Step"
},
"summary": {
"hint": "Summarize key points to help students review",
"pointPlaceholder": "Enter summary point...",
"addPoint": "+ Add Point",
"homeworkPreviewLabel": "Homework Preview",
"homeworkPreviewPlaceholder": "Briefly describe homework..."
},
"homework": {
"hint": "Assign homework",
"type": {
"exercise": "Exercise",
"reading": "Reading",
"writing": "Writing"
},
"refIdPlaceholder": "Homework ref ID (optional)",
"descriptionPlaceholder": "Enter homework requirements...",
"addItem": "+ Add Homework"
},
"blackboard": {
"hint": "Design board layout",
"layoutLabel": "Board Layout",
"layout": {
"structure": "Structured",
"mindmap": "Mind Map",
"text": "Text-based"
},
"contentLabel": "Board Content",
"contentPlaceholder": "Enter board content..."
},
"import": {
"hint": "Design lesson introduction",
"methodLabel": "Introduction Method",
"method": {
"question": "Question-based",
"situation": "Scenario-based",
"review": "Review-based",
"other": "Other"
},
"promptLabel": "Introduction Script",
"promptPlaceholder": "Enter introduction script...",
"durationLabel": "Estimated Duration",
"durationUnit": "min"
},
"reflection": {
"hint": "Write teaching reflection after class..."
"hint": "Write teaching reflection after class...",
"aspect": {
"effectiveness": "Effectiveness",
"problems": "Problems",
"improvements": "Improvements"
},
"textPlaceholder": "Enter reflection...",
"addItem": "+ Add Reflection"
},
"richText": {
"placeholder": "Enter content..."
@@ -250,7 +383,14 @@
"createFailed": "Creation failed",
"loadFailed": "Page load failed",
"loadFailedDesc": "Sorry, an unexpected error occurred. Please try again later.",
"retry": "Retry"
"retry": "Retry",
"invalidQuestionType": "Invalid question type",
"duplicateSuffix": " - Copy",
"titleRequired": "Title is required",
"titleTooLong": "Title cannot exceed 255 characters",
"templateRequired": "Please select a template",
"invalidDate": "Invalid date format",
"classRequired": "At least one class is required"
},
"confirm": {
"archive": "Archive this lesson plan?",

View File

@@ -0,0 +1,93 @@
{
"common": {
"announcements": "Announcements",
"messages": "Messages",
"aiSettings": "AI Settings"
},
"admin": {
"dashboard": "Dashboard",
"schoolManagement": "School Management",
"schools": "Schools",
"grades": "Grades",
"gradeInsights": "Grade Insights",
"departments": "Departments",
"classes": "Classes",
"academicYear": "Academic Year",
"users": "Users",
"userList": "User List",
"importUsers": "Import Users",
"teaching": "Teaching",
"coursePlans": "Course Plans",
"electives": "Electives",
"scheduling": "Scheduling",
"rules": "Rules",
"autoSchedule": "Auto Schedule",
"changeRequests": "Change Requests",
"attendance": "Attendance",
"announcements": "Announcements",
"files": "File Management",
"errorBook": "Error Book Analytics",
"lessonPlans": "Lesson Plans",
"auditLogs": "Audit Logs",
"operationLogs": "Operation Logs",
"loginLogs": "Login Logs",
"dataChanges": "Data Changes",
"settings": "Settings"
},
"teacher": {
"dashboard": "Dashboard",
"textbooks": "Textbooks",
"exams": "Exams",
"allExams": "All Exams",
"createExam": "Create Exam",
"homework": "Homework",
"homeworkList": "Homework List",
"submissions": "Submissions",
"grades": "Grades",
"allGrades": "All Grades",
"batchEntry": "Batch Entry",
"gradeStats": "Grade Statistics",
"gradeAnalytics": "Grade Analytics",
"questions": "Question Bank",
"classManagement": "Class Management",
"myClasses": "My Classes",
"students": "Students",
"schedule": "Schedule",
"coursePlans": "Course Plans",
"lessonPlans": "My Lesson Plans",
"attendance": "Attendance",
"attendanceRecords": "Attendance Records",
"attendanceEntry": "Record Attendance",
"attendanceStats": "Attendance Statistics",
"scheduleChanges": "Schedule Changes",
"diagnostic": "Diagnostic",
"errorBook": "Error Book Analytics",
"electives": "Electives",
"gradeManagement": "Grade Management",
"gradeClasses": "Grade Classes",
"gradeDashboard": "Grade Dashboard",
"gradeInsights": "Grade Insights"
},
"student": {
"dashboard": "Dashboard",
"myLearning": "My Learning",
"courses": "Courses",
"assignments": "Assignments",
"textbooks": "Textbooks",
"schedule": "Schedule",
"myGrades": "My Grades",
"lessonPlans": "My Lesson Plans",
"attendance": "Attendance",
"diagnostic": "Diagnostic",
"errorBook": "Error Book",
"electives": "Electives"
},
"parent": {
"dashboard": "Dashboard",
"grades": "Grades",
"lessonPlans": "Child's Lesson Plans",
"attendance": "Attendance",
"errorBook": "Error Book",
"leaveRequest": "Leave Request"
}
}

View File

@@ -0,0 +1,163 @@
{
"page": {
"title": "Targeted Practice",
"description": "Smart question generation based on errors, knowledge points, and weak chapters for targeted improvement."
},
"starter": {
"title": "Start Targeted Practice",
"description": "Choose a practice mode based on your learning progress",
"type": "Practice Type",
"knowledgePoints": "Select Knowledge Points",
"difficulty": "Difficulty",
"anyDifficulty": "Any",
"questionCount": "Question Count",
"start": "Start Practice",
"creating": "Creating..."
},
"session": {
"progress": "Progress",
"previous": "Previous",
"next": "Next",
"submit": "Submit",
"submitting": "Submitting...",
"skip": "Skip",
"complete": "Complete",
"abandon": "Abandon",
"abandonConfirm": "Are you sure you want to abandon this practice?",
"abandonDescription": "Answered questions will be saved, but this session won't count as completed.",
"cancel": "Cancel",
"confirmAbandon": "Confirm Abandon",
"question": "Question",
"difficulty": "Difficulty",
"variant": "Variant",
"correct": "Correct",
"incorrect": "Incorrect",
"pendingReview": "Pending Review",
"skipped": "Skipped",
"yourAnswer": "Your Answer",
"true": "True",
"false": "False",
"textPlaceholder": "Enter your answer...",
"empty": "No questions in this session"
},
"result": {
"title": "Practice Complete",
"answered": "Answered",
"correct": "Correct",
"accuracy": "Accuracy",
"review": "Question Review"
},
"history": {
"title": "Practice History",
"empty": "No practice records yet. Start your first targeted practice!"
},
"toasts": {
"created": "Practice created",
"createFailed": "Failed to create",
"selectKnowledgePoint": "Please select at least one knowledge point",
"selectWeakKnowledgePoint": "Please select at least one weak knowledge point",
"aiRecommendedReason": "Student-initiated AI recommended practice",
"submitted": "Submitted",
"submitFailed": "Submit failed",
"completed": "Practice completed",
"completeFailed": "Failed to complete",
"abandoned": "Practice abandoned",
"abandonFailed": "Operation failed"
},
"stats": {
"totalSessions": "Total Sessions",
"completed": "Completed",
"totalAnswered": "Total Answered",
"accuracy": "Accuracy"
},
"types": {
"error_variant": "Error Variant",
"knowledge_point": "Knowledge Point",
"weak_chapter": "Weak Chapter",
"ai_recommended": "AI Recommended"
},
"status": {
"in_progress": "In Progress",
"completed": "Completed",
"abandoned": "Abandoned"
},
"teacher": {
"title": "Practice Analytics",
"description": "View class practice stats, identify weak knowledge points, and support targeted teaching",
"noClass": "No classes available",
"noClassDescription": "You haven't been assigned to any class, so practice analytics are unavailable.",
"noStudent": "No students in class",
"noStudentDescription": "There are no students in the class, so practice analytics are unavailable.",
"noData": "No practice data",
"noDataDescription": "Students in the selected scope haven't started targeted practice yet.",
"overview": {
"totalClasses": "Classes",
"totalSessions": "Total Sessions",
"totalAnswered": "Total Answered",
"averageAccuracy": "Avg Accuracy",
"participationRate": "Participation"
},
"classComparison": {
"title": "Class Practice Comparison",
"className": "Class",
"totalStudents": "Students",
"activeStudents": "Active",
"participationRate": "Participation",
"totalSessions": "Sessions",
"completedSessions": "Completed",
"totalAnswered": "Answered",
"averageAccuracy": "Accuracy"
},
"typeBreakdown": {
"title": "Practice Type Breakdown",
"description": "Session count and accuracy grouped by practice type"
},
"knowledgePointWeakness": {
"title": "Knowledge Point Weakness",
"description": "Weak knowledge points identified from practice answers",
"knowledgePoint": "Knowledge Point",
"totalAnswers": "Answers",
"wrongAnswers": "Wrong",
"errorRate": "Error Rate",
"noData": "No knowledge point data",
"noDataDescription": "Practice questions aren't linked to knowledge points, so weakness stats are unavailable."
},
"studentRanking": {
"title": "Student Practice Ranking",
"description": "Sorted by session count to identify active and at-risk students",
"rank": "Rank",
"student": "Student",
"totalSessions": "Sessions",
"completedSessions": "Completed",
"totalAnswered": "Answered",
"accuracy": "Accuracy",
"lastPractice": "Last Practice"
},
"inactiveStudents": {
"title": "Inactive Students",
"description": "These students haven't started any practice. Consider reaching out.",
"empty": "All students have participated in practice",
"studentCount": "Inactive Count"
}
},
"grade": {
"title": "Grade Practice Overview",
"description": "Compare practice participation and quality across classes to support grade-level decisions",
"noGrade": "No grades managed",
"noGradeDescription": "You haven't been assigned to manage any grade, so grade practice data is unavailable.",
"overview": {
"totalClasses": "Classes",
"totalStudents": "Students",
"activeStudents": "Active",
"participationRate": "Participation",
"totalSessions": "Total Sessions",
"completedSessions": "Completed",
"totalAnswered": "Total Answered",
"averageAccuracy": "Avg Accuracy"
},
"classComparison": {
"title": "Class Practice Comparison",
"description": "Sorted by participation rate to identify active and underperforming classes"
}
}
}

View File

@@ -0,0 +1,30 @@
{
"rules": {
"title": "Scheduling Rules",
"description": "Configure daily lesson limits, break windows, and balance preferences.",
"noClassesTitle": "No available classes",
"noClassesDescription": "Please create classes before configuring scheduling rules.",
"hint": "Rules saved without selecting a specific class will be used as global defaults."
},
"auto": {
"title": "Auto Scheduling",
"description": "Auto-generate weekly schedules based on rules and subject allocation.",
"configureRules": "Configure Rules",
"noClassesTitle": "No available classes",
"noClassesDescription": "Please create classes before running auto scheduling.",
"hint": "Applying a new schedule will replace the current schedule for the selected classes."
},
"changes": {
"title": "Schedule Change Requests",
"description": "Review, approve, or reject schedule changes and substitute requests.",
"newRequest": "New Request",
"noChangesTitle": "No schedule change requests",
"noChangesDescription": "No schedule change requests have been submitted yet.",
"conflictDetection": "Conflict Detection",
"conflictDetectionDescription": "Detect time overlaps in existing class schedules.",
"noClassesTitle": "No available classes",
"noClassesDescription": "Please create classes before running conflict detection.",
"scheduleGrid": "Schedule Grid",
"scheduleGridDescription": "View current schedule distribution by class."
}
}

View File

@@ -130,6 +130,129 @@
"selectSchool": "Select a school",
"success": "Successfully promoted {count} grades",
"failed": "Promotion failed"
},
"gradeInsights": {
"title": "Grade Insights",
"description": "Grade-level homework statistics and class rankings.",
"manageGrades": "Manage Grades",
"selectGrade": "All Grades",
"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"
},
"gradeOverview": {
"title": "Grade Overview",
"classCount": "Classes",
"studentCount": "Students",
"teacherCount": "Teachers",
"avgScore": "Avg Score",
"passRate": "Pass Rate",
"noGrades": "No grades",
"noGradesDescription": "Create a grade to manage heads and classes.",
"viewInsights": "View Insights",
"manageClasses": "Manage Classes",
"gradeHead": "Grade Head",
"teachingHead": "Teaching Head",
"notSet": "Not set"
},
"gradeDashboard": {
"title": "Grade Dashboard",
"description": "Comprehensive view of grade score distribution, homework completion, exams, and textbook progress.",
"selectGrade": "Select grade",
"selectToView": "Select a grade to view dashboard",
"selectToViewDescription": "Choose a grade to view score distribution, homework, exams, and textbook progress.",
"noData": "No data",
"noDataDescription": "No relevant data for this grade yet.",
"tabs": {
"distribution": "Score Distribution",
"homework": "Homework",
"exams": "Exams",
"progress": "Textbook Progress"
},
"distribution": {
"overallStats": "Overall Stats",
"byClass": "By Class",
"totalRecords": "Total Records",
"averageScore": "Average",
"passRate": "Pass Rate",
"excellentRate": "Excellent Rate",
"scoreBuckets": "Score Buckets",
"students": "Students",
"class": "Class",
"count": "Count",
"bucket90": "90-100",
"bucket80": "80-89",
"bucket70": "70-79",
"bucket60": "60-69",
"bucketBelow60": "0-59"
},
"homework": {
"totalAssignments": "Total Assignments",
"totalSubmissions": "Total Submissions",
"avgSubmissionRate": "Avg Submission Rate",
"gradedRate": "Graded Rate",
"assignmentList": "Assignment List",
"classComparison": "Class Comparison",
"completionRate": "Completion Rate",
"submitted": "Submitted",
"graded": "Graded",
"targeted": "Targeted"
},
"exams": {
"totalExams": "Total Exams",
"published": "Published",
"draft": "Draft",
"totalSubmissions": "Total Submissions",
"gradedRate": "Graded Rate",
"examList": "Exam List",
"subject": "Subject",
"status": "Status",
"scheduledAt": "Scheduled At",
"submissions": "Submissions",
"graded": "Graded",
"avgScore": "Avg Score",
"createdAt": "Created At"
},
"progress": {
"overallProgress": "Overall Progress",
"totalPlans": "Total Plans",
"totalHours": "Total Hours",
"completedHours": "Completed Hours",
"activePlans": "Active",
"completedPlans": "Completed",
"progressMatrix": "Progress Matrix",
"class": "Class",
"subject": "Subject",
"teacher": "Teacher",
"progress": "Progress",
"completedHoursCol": "Completed/Total Hours",
"items": "Items",
"status": "Status"
}
}
},
"departments": {

View File

@@ -217,6 +217,16 @@
"apiKeyPlaceholder": "Paste new key to replace",
"apiKeyDesc": "Existing key won't be displayed. Leave blank to keep current.",
"setDefault": "Set as default",
"visibility": "Visibility",
"visibilityDesc": "Public providers are published by admins and available to everyone; private providers are only visible to the creator.",
"visibilityPublic": "Public",
"visibilityPrivate": "Private",
"visibilityPublicLabel": "Public (available to everyone)",
"visibilityPrivateLabel": "Private (only visible to you)",
"visibilityReadOnly": "Only admins can change visibility",
"badgePublic": "Public",
"badgePrivate": "Private",
"badgeOwner": "Mine",
"test": "Test",
"testing": "Testing...",
"save": "Save Changes",

View File

@@ -0,0 +1,105 @@
{
"schedule": {
"title": "My Schedule",
"description": "View your weekly timetable.",
"noUser": "No user found",
"noUserDesc": "Create a student user to see schedule."
},
"courses": {
"title": "My Courses",
"description": "View your enrolled classes.",
"noUser": "No user found",
"noUserDesc": "Create a student user to see courses."
},
"scheduleView": {
"noSchedule": "No schedule",
"noScheduleDesc": "No timetable entries found for your enrolled classes.",
"today": "Today",
"noClasses": "No classes."
},
"scheduleFilters": {
"allClasses": "All classes",
"selectClass": "Select class"
},
"coursesView": {
"active": "Active",
"details": "Details",
"schedule": "Schedule",
"assignments": "Assignments",
"noCourses": "No courses yet",
"noCoursesDesc": "You are not enrolled in any classes. Join a class below to get started.",
"joinClass": "Join a Class",
"joinClassDesc": "Enter the invitation code provided by your teacher to enroll.",
"invitationCode": "Invitation Code",
"invitationCodePlaceholder": "Enter 6-digit code",
"joining": "Joining...",
"joinButton": "Join Class",
"joinedSuccess": "Joined class",
"joinFailed": "Failed to join class",
"grade": "Grade {grade}",
"room": "Room {room}"
},
"courseFilters": {
"searchPlaceholder": "Search by class name, teacher, school..."
},
"learning": {
"title": "My Learning",
"description": "Your learning hub: courses, assignments, and textbooks.",
"noUser": "No user found",
"noUserDesc": "Create a student user to see learning.",
"courses": "Courses",
"coursesDesc": "Your enrolled classes.",
"enrolled": "{count} enrolled",
"assignments": "Assignments",
"assignmentsDesc": "Homework and practice.",
"pending": "{count} pending",
"dueSoon": " · {count} due soon",
"textbooks": "Textbooks",
"textbooksDesc": "Browse course materials.",
"available": "{count} available"
},
"errorBook": {
"title": "Error Book",
"description": "Automatically collect wrong answers from exams and homework, review scientifically, and overcome weak points."
},
"diagnostic": {
"title": "My Diagnostic",
"description": "Your knowledge point mastery analysis and diagnostic reports."
},
"error": {
"title": "Something went wrong",
"description": "An unexpected error occurred. Please try again.",
"retry": "Try again"
},
"classDetail": {
"backToCourses": "Back to Courses",
"grade": "Grade {grade}",
"room": "Room {room}",
"active": "Active",
"fullSchedule": "Full Schedule",
"assignments": "Assignments",
"teacher": "Teacher",
"noTeacher": "No teacher assigned.",
"school": "School",
"schoolNotAvailable": "School info not available.",
"classroom": "Classroom",
"roomNotAssigned": "Room not assigned.",
"homeroom": "Homeroom: {homeroom}",
"classSchedule": "Class Schedule",
"noSchedule": "No schedule",
"noScheduleDesc": "No timetable entries found for this class."
},
"weekdays": {
"mon": "Mon",
"tue": "Tue",
"wed": "Wed",
"thu": "Thu",
"fri": "Fri",
"sat": "Sat",
"sun": "Sun"
},
"assignment": {
"due": "Due: {date}",
"maxAttempts": "Max Attempts: {count}"
}
}

View File

@@ -0,0 +1,44 @@
{
"title": "User Management",
"description": "Manage all system users.",
"import": {
"title": "Batch Import Users",
"description": "Batch create user accounts via Excel file.",
"back": "Back",
"subtitle": "Batch create user accounts and automatically assign students to classes.",
"instructionsTitle": "Import Guide",
"instructionsDescription": "Steps to batch import users via Excel",
"step1": "Click the 'Batch Import Users' button to download the import template.",
"step2": "Fill in user information (name, email, role, phone, class invite code) following the template format.",
"step3": "Upload the completed Excel file. The system will parse and preview the data.",
"step4": "Confirm the preview data is correct, then click 'Confirm Import' to complete batch creation.",
"notesTitle": "Important Notes",
"notesDescription": "Please read carefully before importing",
"note1": "Default password is set for all users. Please remind users to change it after first login.",
"note2": "Email must be unique. Duplicate emails will be skipped and recorded in the error report.",
"note3": "Available roles: admin / teacher / student / parent / grade_head / teaching_head.",
"note4": "Class invite code is only valid for student role. Students will be automatically added to the corresponding class.",
"note5": "Maximum file size is 10MB. Recommended no more than 500 records per import.",
"note6": "After import, the success count, failure count, and detailed error information will be displayed.",
"templateTitle": "Template Field Guide",
"templateDescription": "Excel template column meanings and requirements",
"columnName": "Column Name",
"columnRequired": "Required",
"columnDescription": "Description",
"fieldName": "Name",
"fieldNameRequired": "Required",
"fieldNameDescription": "User name",
"fieldEmail": "Email",
"fieldEmailRequired": "Required",
"fieldEmailDescription": "Login account, must be valid email format and unique",
"fieldRole": "Role",
"fieldRoleRequired": "Required",
"fieldRoleDescription": "admin / teacher / student / parent / grade_head / teaching_head",
"fieldPhone": "Phone",
"fieldPhoneRequired": "Optional",
"fieldPhoneDescription": "Contact phone number",
"fieldInviteCode": "Class Invite Code",
"fieldInviteCodeRequired": "Optional",
"fieldInviteCodeDescription": "Only valid for student role, 6-digit invite code"
}
}

View File

@@ -142,7 +142,13 @@
"callsToday": "今日调用",
"callsThisWeek": "本周调用",
"errorRate": "错误率",
"avgDuration": "平均耗时"
"avgDuration": "平均耗时",
"settings": {
"title": "AI 配置",
"description": "统一管理 AI 服务商、API 密钥与使用统计。",
"descriptionAdmin": "统一管理 AI 服务商、API 密钥与使用统计(管理员视图)。",
"descriptionUser": "管理你的 AI 服务商与 API 密钥。"
}
},
"studyPath": {
"title": "你的学习路径",
@@ -160,7 +166,18 @@
"title": "AI 助手",
"open": "打开 AI 助手",
"close": "关闭",
"contextAware": "上下文感知"
"contextAware": "上下文感知",
"dragHint": "拖动移动 · 长按边缘隐藏",
"hidden": "已隐藏",
"show": "显示",
"hide": "隐藏",
"resetPosition": "重置位置",
"welcome": "你好,我是 AI 助手",
"welcomeDesc": "有什么可以帮你的吗?",
"newChat": "新对话",
"history": "历史记录",
"online": "在线",
"tokens": "{count} 字"
},
"safety": {
"blocked": "您的消息被安全过滤器拦截,请保持教育性对话。",

View File

@@ -49,6 +49,7 @@
"record": "录入考勤",
"stats": "统计分析",
"save": "保存",
"retry": "重试",
"delete": "删除",
"cancel": "取消",
"markAllPresent": "全部标记到场"

View File

@@ -0,0 +1,12 @@
{
"title": "审计日志",
"description": "追踪系统内所有用户操作,保障安全与合规。",
"loginLogs": {
"title": "登录日志",
"description": "监控所有认证事件,包括登录、登出与注册。"
},
"dataChanges": {
"title": "数据变更日志",
"description": "追踪系统所有数据变更(增删改),保障合规。"
}
}

View File

@@ -49,5 +49,23 @@
"next": "下一页",
"page": "第 {page} 页",
"total": "共 {total} 条"
},
"accessDenied": "访问被拒绝",
"accessDeniedDesc": "该资源对您的账号不可用。",
"somethingWentWrong": "出了点问题",
"tryAgain": "重试",
"user": {
"loading": "加载中...",
"notLoggedIn": "未登录",
"profile": "个人资料",
"settings": "设置",
"logout": "退出登录"
},
"sidebar": {
"collapse": "收起",
"toggleSidebar": "切换侧边栏"
},
"breadcrumb": {
"home": "首页"
}
}

View File

@@ -0,0 +1,16 @@
{
"title": "课程计划",
"description": "管理课程教学计划与周课时安排。",
"detail": {
"title": "课程计划详情",
"description": "查看课程计划详情。"
},
"edit": {
"title": "编辑课程计划",
"description": "更新课程计划详情。"
},
"create": {
"title": "新建课程计划",
"description": "创建新的课程教学计划。"
}
}

View File

@@ -185,5 +185,20 @@
"noWeaknesses": "暂无弱项知识点。",
"reportMeta": "周期:{period} · 总体:{score}%",
"historyReportMeta": "{date} · 总体:{score}%"
},
"parent": {
"title": "子女学情诊断",
"description": "查看子女的知识点掌握度与诊断报告。",
"noChildren": "暂无子女关联",
"noChildrenDesc": "您的账号尚未关联子女,请联系学校管理员进行关联。",
"selectChild": "选择子女",
"selectChildPlaceholder": "请选择要查看学情诊断的子女",
"overallMastery": "总体掌握度",
"knowledgePoints": "知识点",
"strengths": "强项",
"weaknesses": "弱项",
"reports": "诊断报告",
"noReports": "该子女暂无诊断报告。",
"mastery": "掌握度"
}
}

View File

@@ -60,7 +60,8 @@
"select": "选课",
"drop": "退课",
"cancel": "取消",
"save": "保存"
"save": "保存",
"retry": "重试"
},
"list": {
"empty": "暂无选修课程",

View File

@@ -76,11 +76,33 @@
"parent": {
"title": "子女错题本",
"description": "查看子女的错题情况与学习进度",
"noChild": "暂无子女关联"
"noChild": "暂无子女关联",
"noChildDesc": "您的账号尚未关联子女,请联系学校管理员进行关联。",
"unknown": "未知",
"totalErrors": "错题总数",
"dueReview": "待复习",
"newItems": "待学习",
"mastered": "已掌握",
"mastery": "{rate}% 掌握",
"weakPoints": "薄弱知识点",
"errorsAndMastery": "{count} 错 · {rate}% 掌握"
},
"admin": {
"title": "全校错题分析",
"description": "全校错题统计与薄弱知识点分析,辅助教学决策"
"description": "全校错题统计与薄弱知识点分析,辅助教学决策",
"description2": "按学科查看全校学生的错题统计与薄弱知识点。",
"noPermissionTitle": "权限不足",
"noPermissionDescription": "您没有权限查看全校错题分析数据。",
"noStudentsTitle": "暂无学生数据",
"noStudentsDescription": "系统中还没有学生用户,无法查看错题分析。",
"topStudents": "错题最多的学生 Top 50",
"studentsWithErrors": "共 {count} 名学生有错题",
"noChapterDataTitle": "暂无章节错题数据",
"noChapterDataDescription": "尚未关联知识点到章节,无法显示章节维度统计。",
"noKnowledgePointDataTitle": "暂无知识点数据",
"noKnowledgePointDataDescription": "错题尚未关联知识点,无法显示薄弱知识点统计。",
"noStudentErrorsTitle": "暂无学生错题",
"noStudentErrorsDescription": "所选学科下没有学生错题数据。"
},
"messages": {
"added": "错题已添加",

View File

@@ -131,8 +131,9 @@
"description": "管理作业,查看提交率与批改进度。",
"create": "创建作业",
"empty": "暂无作业",
"emptyFiltered": "该班级还没有作业",
"emptyFiltered": "没有匹配筛选条件的作业",
"emptyDescription": "您还没有创建任何作业。",
"emptyFilteredDescription": "尝试清除筛选条件或调整关键词。",
"clearFilters": "清除筛选",
"filterByClass": "按班级筛选:{{className}}",
"columns": {

View File

@@ -0,0 +1,4 @@
{
"title": "文件管理",
"description": "查看与管理系统中所有上传文件。"
}

View File

@@ -229,6 +229,41 @@
"dismissAriaLabel": "关闭录入指引"
}
},
"batchByExam": {
"title": "按试卷录入成绩",
"selectExam": "选择试卷",
"selectExamPlaceholder": "请选择试卷",
"selectClass": "选择班级",
"selectClassPlaceholder": "请选择班级",
"selectClassFirst": "请选择班级以开始录入",
"guideSelectExam": "请从试卷库选择一份试卷,系统将自动带出题目列表和满分。录入时按每题得分填写,总分自动计算。",
"questionCount": "共 {count} 题",
"fullScore": "满分 {score} 分",
"question": "第{n}题",
"points": "分",
"totalScore": "总分",
"studentName": "学生姓名",
"entered": "已录入",
"average": "均分",
"max": "最高",
"min": "最低",
"searchStudent": "搜索学生...",
"noStudents": "该班级暂无学生",
"invalidScoresBadge": "存在无效分数",
"invalidScoresError": "存在无效分数(超过满分或格式错误),请检查后重试",
"enterAtLeastOne": "请至少输入一个分数",
"pasteApplied": "已粘贴 {count} 行数据",
"pasteHint": "提示:可从 Excel 复制多行多列分数,粘贴到表格中批量填充。按 Enter 跳到下一行Tab 跳到下一格。",
"confirmSwitchExam": "切换试卷将清空已录入的分数,确认切换?",
"confirmSwitchClass": "切换班级将清空已录入的分数,确认切换?",
"saveAll": "保存全部成绩",
"saving": "保存中...",
"clear": "清空",
"undo": "撤销",
"undoNoRecord": "无可撤销的录入记录",
"undoExpired": "撤销已过期(超过 5 分钟)",
"undoFailed": "撤销失败,请重试"
},
"trend": {
"title": "成绩趋势",
"empty": "暂无成绩记录",
@@ -249,7 +284,8 @@
"noGradesTitle": "暂无成绩",
"noGradesDescription": "该学生暂无成绩记录。",
"noDataTitle": "暂无数据",
"noDataDescription": "学生成绩摘要不可用。"
"noDataDescription": "学生成绩摘要不可用。",
"recordCount": "{count} 条成绩记录"
},
"empty": {
"noRecords": "暂无成绩记录",
@@ -344,11 +380,37 @@
"ariaLabelNonEmpty": "排名趋势图:共 {count} 次排名记录"
},
"classReport": {
"caption": "班级排名表",
"noDataTitle": "暂无数据",
"noDataDescription": "该班级暂无成绩记录。",
"classRanking": "班级排名",
"rankColumn": "排名",
"recordsColumn": "记录数",
"studentCountInfo": "{studentCount} 名学生 · {recordCount} 条成绩记录"
},
"parent": {
"title": "子女成绩",
"description": "查看子女的成绩记录。",
"noChildren": "暂无子女关联",
"noChildrenDesc": "您的账号尚未关联子女,请联系学校管理员进行关联。",
"selectChild": "选择子女",
"selectChildPlaceholder": "请选择要查看成绩的子女",
"noGrades": "暂无成绩记录",
"noGradesDesc": "该子女暂无成绩记录。",
"subject": "科目",
"score": "分数",
"exam": "考试",
"semester": "学期",
"teacher": "教师",
"date": "日期",
"average": "平均分",
"highest": "最高分",
"lowest": "最低分",
"totalRecords": "总记录数",
"gradeHistory": "成绩历史",
"gradeSummary": "成绩摘要",
"recentGrades": "最近成绩",
"viewAll": "查看全部",
"noRecentGrades": "暂无最近成绩"
}
}

View File

@@ -0,0 +1,12 @@
{
"title": "请假申请",
"description": "为您的孩子提交请假申请。",
"backToDashboard": "返回仪表盘",
"onlineLeave": "在线请假申请",
"comingSoon": "即将上线",
"comingSoonDesc": "在线请假功能正在开发中,即将上线。目前请直接联系班主任或学校办公室。",
"contactOptions": "联系方式",
"callOffice": "在工作时间致电学校办公室",
"sendMessage": "通过消息页面向班主任发送消息",
"goToMessages": "前往消息"
}

View File

@@ -21,6 +21,12 @@
"confirm": "确认",
"create": "创建课案",
"publish": "发布为作业",
"publishPlan": "发布课案",
"unpublishPlan": "撤回发布",
"publishPlanConfirm": "发布后学生和家长将可查看此课案,确认发布?",
"unpublishPlanConfirm": "撤回后学生和家长将无法查看此课案,确认撤回?",
"publishPlanSuccess": "课案已发布",
"unpublishPlanSuccess": "课案已撤回",
"viewHomework": "查看"
},
"status": {
@@ -57,6 +63,10 @@
"titlePlaceholder": "例如:《秋天》第一课时",
"blockCount": "{count} 个环节",
"blankHint": "从空白开始",
"systemSection": "系统模板",
"personalSection": "个人模板",
"personalBadge": "个人",
"noPersonalTemplates": "暂无个人模板,可在编辑器中「另存为模板」创建",
"names": {
"tpl_regular": "常规课",
"tpl_review": "复习课",
@@ -101,12 +111,51 @@
"textbookContent": "课文正文",
"textbookContentMissing": "正文节点缺失",
"textbookContentEmpty": "(未加载课文内容)",
"textbookOperateHint": "请在画布上直接操作正文:选中文本可创建区间锚点,点击位置可创建点锚点。",
"rightClickHint": "右键弹出锚点菜单",
"dragToResize": "拖拽缩放",
"anchorListTitle": "锚点列表",
"anchorListEmpty": "暂无锚点。选中正文文本即可创建。",
"anchorRangeLabel": "区间",
"anchorPointLabel": "点",
"zoomIn": "放大",
"zoomOut": "缩小",
"rangeAnchorTitle": "为选中文本关联节点",
"pointAnchorTitle": "在此位置插入占位符 {number}",
"anchorToSelectedNode": "关联到当前选中节点",
"anchorToNewNode": "关联到新节点"
"anchorToNewNode": "关联到新节点",
"textbookLabel": "教材",
"chapterLabel": "课文",
"selectNodeForAnchor": "选择要关联的节点",
"createNewNode": "创建新节点并关联"
},
"readonly": {
"title": "查看课案",
"hint": "这是只读视图,您无法编辑此课案",
"notFound": "课案不存在或未发布",
"notPublished": "课案尚未发布"
},
"student": {
"title": "我的课案",
"description": "查看老师发布的备课内容"
},
"parent": {
"title": "孩子课案",
"description": "查看孩子老师发布的备课内容"
},
"admin": {
"title": "课案管理",
"description": "查看全校教师的备课情况",
"stats": {
"total": "课案总数",
"published": "已发布",
"draft": "草稿",
"archived": "已归档"
}
},
"gradeHead": {
"title": "年级备课",
"description": "查看本年级教师的备课"
},
"picker": {
"textbookLabel": "选择教材",
@@ -133,7 +182,10 @@
"noChapter": "无章节",
"noTemplate": "无模板",
"lastSaved": "最后保存:",
"neverSaved": "未保存"
"neverSaved": "未保存",
"versionCount": "{count} 个版本",
"versionSelectorLabel": "版本",
"versionCurrent": "最新"
},
"version": {
"title": "版本历史",
@@ -145,7 +197,8 @@
"revertTitle": "确认回退",
"revertConfirm": "确认回退到 v{versionNo}?将生成新版本。",
"revertSuccess": "已回退到 v{versionNo}",
"autoLabel": "自动版本"
"autoLabel": "自动版本",
"revertLabel": "回退到 v{versionNo}"
},
"knowledgePoint": {
"title": "选择知识点",
@@ -212,7 +265,9 @@
"noExerciseBlock": "练习块不存在",
"noQuestions": "练习块无题目",
"planNotFound": "课案不存在",
"noPermission": "无权发布"
"noPermission": "无权发布",
"homeworkTitle": "{title} - 作业",
"homeworkDescription": "来自课案"
},
"textStudy": {
"sourceTextLabel": "课文原文",
@@ -222,8 +277,86 @@
"annotationTitle": "教学节点",
"annotationNotePlaceholder": "教学说明..."
},
"objective": {
"hint": "添加教学目标,支持知识与技能、过程与方法、情感态度三个维度",
"dimension": {
"knowledge": "知识与技能",
"process": "过程与方法",
"emotion": "情感态度"
},
"textPlaceholder": "输入教学目标...",
"addItem": "+ 添加目标"
},
"keyPoint": {
"hint": "标记本课的重点和难点",
"type": {
"key": "重点",
"difficult": "难点"
},
"textPlaceholder": "输入重点/难点内容...",
"addItem": "+ 添加重点/难点"
},
"newTeaching": {
"hint": "设计新授环节的教学步骤",
"pointIndex": "步骤 {index}",
"outlineLabel": "教学提纲",
"outlinePlaceholder": "输入教学提纲...",
"boardNotesLabel": "板书要点",
"boardNotesPlaceholder": "输入板书要点...",
"addPoint": "+ 添加步骤"
},
"summary": {
"hint": "总结本课要点,帮助学生梳理知识",
"pointPlaceholder": "输入小结要点...",
"addPoint": "+ 添加要点",
"homeworkPreviewLabel": "作业预览",
"homeworkPreviewPlaceholder": "简要描述本课作业..."
},
"homework": {
"hint": "布置课后作业",
"type": {
"exercise": "练习",
"reading": "阅读",
"writing": "写作"
},
"refIdPlaceholder": "作业引用 ID可选",
"descriptionPlaceholder": "输入作业要求...",
"addItem": "+ 添加作业"
},
"blackboard": {
"hint": "设计板书结构",
"layoutLabel": "板书形式",
"layout": {
"structure": "结构式",
"mindmap": "思维导图",
"text": "文字式"
},
"contentLabel": "板书内容",
"contentPlaceholder": "输入板书内容..."
},
"import": {
"hint": "设计课堂导入环节",
"methodLabel": "导入方式",
"method": {
"question": "提问导入",
"situation": "情境导入",
"review": "复习导入",
"other": "其他"
},
"promptLabel": "导入语",
"promptPlaceholder": "输入导入语...",
"durationLabel": "预计时长",
"durationUnit": "分钟"
},
"reflection": {
"hint": "课后填写教学反思..."
"hint": "课后填写教学反思...",
"aspect": {
"effectiveness": "教学效果",
"problems": "存在问题",
"improvements": "改进措施"
},
"textPlaceholder": "输入反思内容...",
"addItem": "+ 添加反思"
},
"richText": {
"placeholder": "输入内容..."
@@ -250,7 +383,14 @@
"createFailed": "创建失败",
"loadFailed": "页面加载失败",
"loadFailedDesc": "抱歉,页面加载时发生了意外错误。请稍后重试。",
"retry": "重试"
"retry": "重试",
"invalidQuestionType": "无效的题目类型",
"duplicateSuffix": " - 副本",
"titleRequired": "请输入课案标题",
"titleTooLong": "标题不能超过 255 个字符",
"templateRequired": "请选择模板",
"invalidDate": "日期格式无效",
"classRequired": "至少选择一个班级"
},
"confirm": {
"archive": "确认归档此课案?",

View File

@@ -0,0 +1,93 @@
{
"common": {
"announcements": "公告",
"messages": "消息",
"aiSettings": "AI 配置"
},
"admin": {
"dashboard": "仪表盘",
"schoolManagement": "学校管理",
"schools": "学校",
"grades": "年级",
"gradeInsights": "年级洞察",
"departments": "部门",
"classes": "班级",
"academicYear": "学年",
"users": "用户",
"userList": "用户列表",
"importUsers": "导入用户",
"teaching": "教学管理",
"coursePlans": "课程计划",
"electives": "选修课",
"scheduling": "排课",
"rules": "排课规则",
"autoSchedule": "自动排课",
"changeRequests": "调课申请",
"attendance": "考勤",
"announcements": "公告管理",
"files": "文件管理",
"errorBook": "错题分析",
"lessonPlans": "课案管理",
"auditLogs": "审计日志",
"operationLogs": "操作日志",
"loginLogs": "登录日志",
"dataChanges": "数据变更",
"settings": "设置"
},
"teacher": {
"dashboard": "仪表盘",
"textbooks": "教材",
"exams": "考试",
"allExams": "全部考试",
"createExam": "创建考试",
"homework": "作业",
"homeworkList": "作业列表",
"submissions": "提交记录",
"grades": "成绩",
"allGrades": "全部成绩",
"batchEntry": "批量录入",
"gradeStats": "成绩统计",
"gradeAnalytics": "成绩分析",
"questions": "题库",
"classManagement": "班级管理",
"myClasses": "我的班级",
"students": "学生",
"schedule": "课表",
"coursePlans": "课程计划",
"lessonPlans": "我的备课",
"attendance": "考勤",
"attendanceRecords": "考勤记录",
"attendanceEntry": "录入考勤",
"attendanceStats": "考勤统计",
"scheduleChanges": "调课申请",
"diagnostic": "学情诊断",
"errorBook": "错题分析",
"electives": "选修课",
"gradeManagement": "年级管理",
"gradeClasses": "年级班级",
"gradeDashboard": "年级仪表盘",
"gradeInsights": "年级洞察"
},
"student": {
"dashboard": "仪表盘",
"myLearning": "我的学习",
"courses": "课程",
"assignments": "作业",
"textbooks": "教材",
"schedule": "我的课表",
"myGrades": "我的成绩",
"lessonPlans": "我的课案",
"attendance": "考勤",
"diagnostic": "学情诊断",
"errorBook": "错题本",
"electives": "选修课"
},
"parent": {
"dashboard": "仪表盘",
"grades": "成绩",
"lessonPlans": "孩子课案",
"attendance": "考勤",
"errorBook": "错题本",
"leaveRequest": "请假申请"
}
}

View File

@@ -0,0 +1,163 @@
{
"page": {
"title": "专项练习",
"description": "根据错题、知识点、薄弱章节智能出题,针对性提升。"
},
"starter": {
"title": "发起专项练习",
"description": "根据你的学习情况,选择适合的练习模式",
"type": "练习类型",
"knowledgePoints": "选择知识点",
"difficulty": "难度",
"anyDifficulty": "不限",
"questionCount": "题目数量",
"start": "开始练习",
"creating": "创建中..."
},
"session": {
"progress": "进度",
"previous": "上一题",
"next": "下一题",
"submit": "提交",
"submitting": "提交中...",
"skip": "跳过",
"complete": "完成练习",
"abandon": "放弃练习",
"abandonConfirm": "确定要放弃本次练习吗?",
"abandonDescription": "放弃后已作答的题目将保留记录,但不会计入完成统计。",
"cancel": "取消",
"confirmAbandon": "确认放弃",
"question": "第",
"difficulty": "难度",
"variant": "变式题",
"correct": "回答正确",
"incorrect": "回答错误",
"pendingReview": "待教师批阅",
"skipped": "已跳过",
"yourAnswer": "你的答案",
"true": "正确",
"false": "错误",
"textPlaceholder": "请输入你的答案...",
"empty": "本次练习没有题目"
},
"result": {
"title": "练习完成",
"answered": "已答题数",
"correct": "正确数",
"accuracy": "正确率",
"review": "逐题回顾"
},
"history": {
"title": "练习记录",
"empty": "还没有练习记录,开始你的第一次专项练习吧"
},
"toasts": {
"created": "练习已创建",
"createFailed": "创建失败",
"selectKnowledgePoint": "请至少选择一个知识点",
"selectWeakKnowledgePoint": "请至少选择一个薄弱知识点",
"aiRecommendedReason": "学生自主发起 AI 推荐练习",
"submitted": "已提交",
"submitFailed": "提交失败",
"completed": "练习已完成",
"completeFailed": "完成失败",
"abandoned": "练习已放弃",
"abandonFailed": "操作失败"
},
"stats": {
"totalSessions": "练习总数",
"completed": "已完成",
"totalAnswered": "答题总数",
"accuracy": "正确率"
},
"types": {
"error_variant": "错题变式",
"knowledge_point": "知识点专项",
"weak_chapter": "薄弱章节",
"ai_recommended": "AI 推荐"
},
"status": {
"in_progress": "进行中",
"completed": "已完成",
"abandoned": "已放弃"
},
"teacher": {
"title": "专项练习分析",
"description": "查看班级学生的专项练习情况,识别薄弱知识点,辅助精准教学",
"noClass": "暂无可查看的班级",
"noClassDescription": "您还未被分配到任何班级,无法查看练习分析数据。",
"noStudent": "班级暂无学生",
"noStudentDescription": "班级中没有学生,无法查看练习分析数据。",
"noData": "暂无练习数据",
"noDataDescription": "所选范围内学生尚未开始专项练习。",
"overview": {
"totalClasses": "覆盖班级",
"totalSessions": "练习总数",
"totalAnswered": "答题总数",
"averageAccuracy": "平均正确率",
"participationRate": "参与率"
},
"classComparison": {
"title": "班级练习对比",
"className": "班级",
"totalStudents": "学生数",
"activeStudents": "参与学生",
"participationRate": "参与率",
"totalSessions": "练习数",
"completedSessions": "完成数",
"totalAnswered": "答题数",
"averageAccuracy": "正确率"
},
"typeBreakdown": {
"title": "练习类型分布",
"description": "按练习类型分组的会话数与正确率"
},
"knowledgePointWeakness": {
"title": "知识点薄弱度",
"description": "基于练习答题数据识别的薄弱知识点",
"knowledgePoint": "知识点",
"totalAnswers": "答题数",
"wrongAnswers": "错题数",
"errorRate": "错误率",
"noData": "暂无知识点数据",
"noDataDescription": "练习题目尚未关联知识点,无法显示薄弱知识点统计。"
},
"studentRanking": {
"title": "学生练习排名",
"description": "按练习数降序排列,识别活跃与待引导学生",
"rank": "排名",
"student": "学生",
"totalSessions": "练习数",
"completedSessions": "完成数",
"totalAnswered": "答题数",
"accuracy": "正确率",
"lastPractice": "最近练习"
},
"inactiveStudents": {
"title": "未参与练习学生",
"description": "以下学生尚未开始任何专项练习,建议教师主动引导",
"empty": "所有学生都已参与练习",
"studentCount": "未参与学生数"
}
},
"grade": {
"title": "年级专项练习总览",
"description": "全年级各班级专项练习参与情况与质量对比,辅助年级主任宏观决策",
"noGrade": "暂无可管理的年级",
"noGradeDescription": "您还未被分配管理任何年级,无法查看年级练习数据。",
"overview": {
"totalClasses": "班级数",
"totalStudents": "学生数",
"activeStudents": "参与学生",
"participationRate": "参与率",
"totalSessions": "练习总数",
"completedSessions": "完成数",
"totalAnswered": "答题总数",
"averageAccuracy": "平均正确率"
},
"classComparison": {
"title": "各班级练习对比",
"description": "按参与率降序排列,识别活跃班级与待提升班级"
}
}
}

View File

@@ -0,0 +1,30 @@
{
"rules": {
"title": "排课规则",
"description": "配置每日课时上限、课间窗口与均衡偏好。",
"noClassesTitle": "暂无可用班级",
"noClassesDescription": "请先创建班级,再配置排课规则。",
"hint": "未选择具体班级时保存的规则将作为全局默认。"
},
"auto": {
"title": "自动排课",
"description": "基于规则与学科分配自动生成周课表。",
"configureRules": "配置规则",
"noClassesTitle": "暂无可用班级",
"noClassesDescription": "请先创建班级,再进行自动排课。",
"hint": "应用新课表将替换所选班级的现有课表。"
},
"changes": {
"title": "课表变更申请",
"description": "审核、批准或拒绝课表变更与代课申请。",
"newRequest": "新建申请",
"noChangesTitle": "暂无课表变更申请",
"noChangesDescription": "系统中尚未产生任何课表变更申请。",
"conflictDetection": "冲突检测",
"conflictDetectionDescription": "检测现有班级课表中的时间重叠。",
"noClassesTitle": "暂无可用班级",
"noClassesDescription": "请先创建班级,再进行冲突检测。",
"scheduleGrid": "课表网格",
"scheduleGridDescription": "按班级查看当前课表分布。"
}
}

View File

@@ -130,6 +130,129 @@
"selectSchool": "请选择学校",
"success": "成功升级 {count} 个年级",
"failed": "升级失败"
},
"gradeInsights": {
"title": "年级作业洞察",
"description": "按年级聚合的作业统计与班级排名。",
"manageGrades": "管理年级",
"selectGrade": "全部年级",
"selectToView": "请选择年级以查看洞察",
"selectToViewDescription": "选择一个年级,查看最新作业与历史成绩统计。",
"notFound": "年级未找到",
"notFoundDescription": "该年级可能不存在或无可访问数据。",
"noData": "该年级暂无作业数据",
"noDataDescription": "尚未向该年级学生布置任何作业。",
"classes": "班级数",
"students": "学生数",
"overallAvg": "总体均分",
"latestAvg": "最新均分",
"homeworkTimeline": "最新作业",
"classRanking": "班级排名",
"assignment": "作业",
"status": "状态",
"created": "创建时间",
"targeted": "目标数",
"submitted": "提交数",
"graded": "已批改",
"avg": "均分",
"median": "中位数",
"class": "班级",
"latestAvgCol": "最新均分",
"prevAvg": "上次均分",
"delta": "Δ",
"overallAvgCol": "总体均分",
"active": "在读",
"inactive": "停用"
},
"gradeOverview": {
"title": "年级概览",
"classCount": "班级数",
"studentCount": "学生数",
"teacherCount": "教师数",
"avgScore": "平均分",
"passRate": "及格率",
"noGrades": "暂无年级",
"noGradesDescription": "创建年级以管理年级主任和班级。",
"viewInsights": "查看洞察",
"manageClasses": "管理班级",
"gradeHead": "年级主任",
"teachingHead": "教学主任",
"notSet": "未设置"
},
"gradeDashboard": {
"title": "年级仪表盘",
"description": "年级成绩分布、作业完成、考试与课本进度的综合视图。",
"selectGrade": "请选择年级",
"selectToView": "请选择年级以查看仪表盘",
"selectToViewDescription": "选择一个年级,查看成绩分布、作业完成、考试与课本进度。",
"noData": "暂无数据",
"noDataDescription": "该年级暂无相关数据。",
"tabs": {
"distribution": "成绩分布",
"homework": "作业完成",
"exams": "考试",
"progress": "课本进度"
},
"distribution": {
"overallStats": "整体统计",
"byClass": "班级分布对比",
"totalRecords": "成绩记录数",
"averageScore": "平均分",
"passRate": "及格率",
"excellentRate": "优秀率",
"scoreBuckets": "分数段分布",
"students": "学生数",
"class": "班级",
"count": "人数",
"bucket90": "90-100",
"bucket80": "80-89",
"bucket70": "70-79",
"bucket60": "60-69",
"bucketBelow60": "0-59"
},
"homework": {
"totalAssignments": "作业总数",
"totalSubmissions": "提交总数",
"avgSubmissionRate": "平均提交率",
"gradedRate": "批改率",
"assignmentList": "作业列表",
"classComparison": "班级对比",
"completionRate": "完成率",
"submitted": "已提交",
"graded": "已批改",
"targeted": "目标数"
},
"exams": {
"totalExams": "考试总数",
"published": "已发布",
"draft": "草稿",
"totalSubmissions": "提交总数",
"gradedRate": "批改率",
"examList": "考试列表",
"subject": "科目",
"status": "状态",
"scheduledAt": "计划时间",
"submissions": "提交数",
"graded": "已评分",
"avgScore": "平均分",
"createdAt": "创建时间"
},
"progress": {
"overallProgress": "整体进度",
"totalPlans": "计划总数",
"totalHours": "总课时",
"completedHours": "已完成课时",
"activePlans": "进行中",
"completedPlans": "已完成",
"progressMatrix": "进度矩阵",
"class": "班级",
"subject": "科目",
"teacher": "教师",
"progress": "进度",
"completedHoursCol": "已完成/总课时",
"items": "条目",
"status": "状态"
}
}
},
"departments": {

View File

@@ -217,6 +217,16 @@
"apiKeyPlaceholder": "粘贴新密钥以替换",
"apiKeyDesc": "已有密钥不会显示。留空则保留当前密钥。",
"setDefault": "设为默认",
"visibility": "可见性",
"visibilityDesc": "公开 Provider 由管理员发布,全员可用;私有 Provider 仅创建者可见。",
"visibilityPublic": "公开",
"visibilityPrivate": "私有",
"visibilityPublicLabel": "公开(全员可用)",
"visibilityPrivateLabel": "私有(仅自己可见)",
"visibilityReadOnly": "仅管理员可修改可见性",
"badgePublic": "公开",
"badgePrivate": "私有",
"badgeOwner": "我的",
"test": "测试",
"testing": "测试中...",
"save": "保存修改",

View File

@@ -0,0 +1,105 @@
{
"schedule": {
"title": "我的课表",
"description": "查看你的每周课程安排。",
"noUser": "未找到用户",
"noUserDesc": "请创建学生用户以查看课表。"
},
"courses": {
"title": "我的课程",
"description": "查看你已加入的班级课程。",
"noUser": "未找到用户",
"noUserDesc": "请创建学生用户以查看课程。"
},
"scheduleView": {
"noSchedule": "暂无课表",
"noScheduleDesc": "未找到你已加入班级的课表记录。",
"today": "今天",
"noClasses": "暂无课程。"
},
"scheduleFilters": {
"allClasses": "全部班级",
"selectClass": "选择班级"
},
"coursesView": {
"active": "进行中",
"details": "详情",
"schedule": "课表",
"assignments": "作业",
"noCourses": "暂无课程",
"noCoursesDesc": "你还未加入任何班级。使用下方邀请码加入班级。",
"joinClass": "加入班级",
"joinClassDesc": "输入老师提供的邀请码加入班级。",
"invitationCode": "邀请码",
"invitationCodePlaceholder": "输入 6 位邀请码",
"joining": "加入中...",
"joinButton": "加入班级",
"joinedSuccess": "已加入班级",
"joinFailed": "加入班级失败",
"grade": "年级 {grade}",
"room": "教室 {room}"
},
"courseFilters": {
"searchPlaceholder": "按班级名称、教师、学校搜索..."
},
"learning": {
"title": "我的学习",
"description": "你的学习中心:课程、作业和教材。",
"noUser": "未找到用户",
"noUserDesc": "请创建学生用户以查看学习内容。",
"courses": "课程",
"coursesDesc": "查看已加入的班级。",
"enrolled": "{count} 个已加入",
"assignments": "作业",
"assignmentsDesc": "作业与练习。",
"pending": "{count} 个待完成",
"dueSoon": " · {count} 个即将截止",
"textbooks": "教材",
"textbooksDesc": "浏览课程教材。",
"available": "{count} 本可用"
},
"errorBook": {
"title": "错题本",
"description": "自动收录考试与作业中的错题,科学复习,攻克薄弱点。"
},
"diagnostic": {
"title": "我的学情诊断",
"description": "查看你的知识点掌握度分析与诊断报告。"
},
"error": {
"title": "出错了",
"description": "发生了意外错误,请稍后重试。",
"retry": "重试"
},
"classDetail": {
"backToCourses": "返回课程",
"grade": "年级 {grade}",
"room": "教室 {room}",
"active": "进行中",
"fullSchedule": "完整课表",
"assignments": "作业",
"teacher": "教师",
"noTeacher": "暂未分配教师。",
"school": "学校",
"schoolNotAvailable": "学校信息不可用。",
"classroom": "教室",
"roomNotAssigned": "教室未分配。",
"homeroom": "班主任: {homeroom}",
"classSchedule": "班级课表",
"noSchedule": "暂无课表",
"noScheduleDesc": "该班级暂无课表记录。"
},
"weekdays": {
"mon": "周一",
"tue": "周二",
"wed": "周三",
"thu": "周四",
"fri": "周五",
"sat": "周六",
"sun": "周日"
},
"assignment": {
"due": "截止: {date}",
"maxAttempts": "最大尝试次数: {count}"
}
}

View File

@@ -0,0 +1,44 @@
{
"title": "用户管理",
"description": "管理系统所有用户。",
"import": {
"title": "批量导入用户",
"description": "通过 Excel 文件批量创建用户账号,支持学生自动加入班级。",
"back": "返回",
"subtitle": "批量创建用户账号,学生可自动加入对应班级。",
"instructionsTitle": "导入说明",
"instructionsDescription": "使用 Excel 批量导入用户的步骤",
"step1": "点击「批量导入用户」按钮,下载导入模板。",
"step2": "按模板格式填写用户信息(姓名、邮箱、角色、手机、班级邀请码)。",
"step3": "上传填写好的 Excel 文件,系统将解析并预览数据。",
"step4": "确认预览数据无误后,点击「确认导入」完成批量创建。",
"notesTitle": "注意事项",
"notesDescription": "导入前请仔细阅读",
"note1": "所有用户默认密码统一设置,请提示用户首次登录后修改。",
"note2": "邮箱必须唯一,重复邮箱将被跳过并记录在错误报告中。",
"note3": "角色可选admin / teacher / student / parent / grade_head / teaching_head。",
"note4": "班级邀请码仅对 student 角色有效,填写后学生将自动加入对应班级。",
"note5": "单次最多导入 10MB 的文件,建议单次不超过 500 条记录。",
"note6": "导入完成后将显示成功数、失败数及详细错误信息。",
"templateTitle": "模板字段说明",
"templateDescription": "Excel 模板各列含义与要求",
"columnName": "列名",
"columnRequired": "是否必填",
"columnDescription": "说明",
"fieldName": "姓名",
"fieldNameRequired": "必填",
"fieldNameDescription": "用户姓名",
"fieldEmail": "邮箱",
"fieldEmailRequired": "必填",
"fieldEmailDescription": "登录账号,需符合邮箱格式且唯一",
"fieldRole": "角色",
"fieldRoleRequired": "必填",
"fieldRoleDescription": "admin / teacher / student / parent / grade_head / teaching_head",
"fieldPhone": "手机",
"fieldPhoneRequired": "选填",
"fieldPhoneDescription": "联系电话",
"fieldInviteCode": "班级邀请码",
"fieldInviteCodeRequired": "选填",
"fieldInviteCodeDescription": "仅 student 角色有效6 位邀请码"
}
}