{ "common": { "brand": "Edu", "button": { "save": "Save", "cancel": "Cancel", "edit": "Edit", "export": "Export", "search": "Search", "delete": "Delete", "retry": "Retry", "back": "Back" }, "label": { "search": "Search", "loading": "Loading...", "student": "Student", "studentNo": "Student No.", "score": "Score", "feedback": "Feedback", "class": "Class", "subject": "Subject", "name": "Name", "email": "Email", "roles": "Roles" }, "status": { "loading": "Loading...", "saved": "Saved" }, "error": { "loadFailed": "Failed to load: {message}", "pageError": "Something went wrong" }, "nav": { "empty": "No viewports available", "loadError": "Navigation failed to load: {message}", "logout": "Log out", "noRoles": "No roles" }, "locale": { "label": "Language", "zhCN": "简体中文", "en": "English" }, "empty": { "title": "No data", "description": "Adjust filters and retry, or create your first record" }, "navLabel": { "dashboard": "Dashboard", "classes": "Classes", "exams": "Exams", "homework": "Homework", "grades": "Grades", "analytics": "Analytics", "knowledgeGraph": "Knowledge Graph", "notifications": "Notifications", "aiAssist": "AI Assist", "aiLessonPlan": "AI Lesson Plan", "aiReport": "AI Report", "attendance": "Attendance", "questions": "Questions", "textbooks": "Textbooks", "lessonPlans": "Lesson Plans", "coursePlans": "Course Plans", "diagnostic": "Diagnostic", "errorBook": "Error Book", "practice": "Practice", "elective": "Elective", "leave": "Leave Requests", "scheduleChanges": "Schedule Changes", "settings": "Settings", "students": "Students" } }, "shell": { "toggleSidebar": "Toggle sidebar", "layout": "Layout", "empty": "No visible plugins", "dev": { "templates": { "title": "Page Templates Quartet", "description": "P1-3 preview pages (dev only, 404 in production)", "list": "List Page Template", "listDescription": "PageHeader + FilterBar + DataTable + Pagination + 3 states", "detail": "Detail Page Template", "detailDescription": "PageHeader + info area + Tabs/sections + related list", "form": "Form Page Template", "formDescription": "PageHeader + form + submit/cancel + error summary", "workbench": "Workbench Page Template", "workbenchDescription": "Three-column (tree/canvas/properties) composite", "listExample": { "title": "Exam Management", "subtitle": "List page template example", "searchPlaceholder": "Search exam name...", "newExam": "New Exam" }, "detailExample": { "title": "2026 Spring Final Exam", "subtitle": "Detail page template example" }, "formExample": { "title": "New Exam", "subtitle": "Form page template example" }, "workbenchExample": { "title": "Lesson Plan Editor", "subtitle": "Workbench page template example" } } } }, "auth": { "title": "Login" }, "dashboard": { "title": "Welcome", "greeting": "Welcome, {name}", "subtitle": "{email} · Roles: {roles} · Data scope: {dataScope}", "subtitleNoRoles": "None", "error": { "loadFailed": "Dashboard failed to load: {message}" }, "empty": { "title": "No data", "description": "Dashboard data is not ready yet" }, "stats": { "classes": "Total Classes", "exams": "Total Exams", "pendingGrading": "Pending Grading" }, "classes": { "title": "My Classes", "count": "{count} total", "viewAll": "View all", "emptyTitle": "No classes", "emptyDescription": "Please contact the administrator to assign classes", "grade": "Grade: {gradeId}", "studentCount": "{count} students", "viewStudents": "View students" } }, "classes": { "title": "Classes" }, "exams": { "title": "Exams", "list": { "title": "Exams", "description": "View and manage all exams", "new": "New Exam", "searchPlaceholder": "Search exam name...", "statusFilter": "Filter by status", "statusAll": "All statuses", "statusDraft": "Draft", "statusPublished": "Published", "statusInProgress": "In Progress", "statusScored": "Completed", "total": "{count} total", "colName": "Name", "colStatus": "Status", "colExamDate": "Exam Date", "colDuration": "Duration", "colTotalScore": "Total Score", "colActions": "Actions", "viewDetail": "View Detail →", "mswNotice": "List query contract is pending, please ensure NEXT_PUBLIC_MSW=1 is enabled.", "unitScore": "pts" }, "detail": { "title": "Exam Detail", "edit": "Edit", "notFound": "Exam not found, may have been deleted", "createdAtPrefix": "Created on {date}", "sectionBasic": "Basic Info", "sectionStatus": "Status Info", "fieldTitle": "Title", "fieldDescription": "Description", "fieldExamDate": "Exam Date", "fieldDuration": "Duration", "fieldTotalScore": "Total Score", "fieldClassId": "Class ID", "fieldSubjectId": "Subject ID", "fieldCurrentStatus": "Current Status", "fieldStatusChangedAt": "Status Changed At", "fieldStatusChangedBy": "Status Changed By", "fieldCreatedBy": "Created By", "fieldCreatedAt": "Created At", "fieldUpdatedAt": "Updated At", "unitScore": "pts" }, "new": { "title": "New Exam", "description": "Fill in exam basic information", "submit": "Create Exam", "success": "Exam created successfully", "error": "Creation failed", "classId": "Class ID", "subjectId": "Subject ID", "titleLabel": "Title", "titlePlaceholder": "e.g. 2026 Spring Midterm", "descriptionLabel": "Description", "descriptionPlaceholder": "Exam scope, notes, etc.", "examDate": "Exam Date", "duration": "Duration (minutes)", "totalScore": "Total Score", "errorClassRequired": "Please fill in Class ID", "errorTitleRequired": "Please fill in exam title", "errorDateRequired": "Please select exam date", "contractPending": "Create exam contract is @contract-pending, currently backed by MSW. Will switch to real submission once backend mutation is ready." }, "analytics": { "title": "Exam Analytics", "subtitle": "Exam ID: {examId}", "exportCsv": "Export CSV", "notFound": "No analytics data found, grading may not be complete", "sectionSummary": "Summary", "sectionDistribution": "Score Distribution", "sectionQuestionAccuracy": "Question Accuracy", "sectionRankings": "Student Rankings", "summaryExpected": "Expected", "summaryAttended": "Attended", "summaryAvg": "Average", "summaryMax": "Max", "summaryMin": "Min", "summaryPassRate": "Pass Rate", "emptyDistribution": "No score distribution data", "emptyQuestionAccuracy": "No question accuracy data", "emptyRankings": "No ranking data", "colOrder": "#", "colQuestionTitle": "Question", "colCorrectRate": "Correct Rate", "colAvgScore": "Avg Score", "colMaxScore": "Max Score", "colRank": "Rank", "colStudentNo": "Student No.", "colStudentName": "Name", "colTotalScore": "Total Score", "colLevel": "Level" }, "build": { "title": "Build Exam", "subtitle": "Current total: {total} pts · Pass score: {pass} pts", "save": "Save Build", "saveSuccess": "Build saved successfully", "saveFailed": "Save failed: {message}", "notFound": "No build data found", "alreadyAdded": "This question has already been added", "libraryTitle": "Question Library", "searchPlaceholder": "Search question content...", "filterType": "Filter by type", "filterDifficulty": "Filter by difficulty", "allTypes": "All types", "allDifficulties": "All difficulties", "typeSingle": "Single Choice", "typeMultiple": "Multiple Choice", "typeFill": "Fill in the Blank", "typeEssay": "Essay", "diffEasy": "Easy", "diffMedium": "Medium", "diffHard": "Hard", "loadingLibrary": "Loading library...", "loadLibraryFailed": "Library load failed", "libraryEmpty": "No questions match the filter", "libraryTotal": "{total} questions total", "addToExam": "Add to exam", "unitScore": "pts", "selectedTitle": "Selected Questions", "selectedCount": "{count} questions", "selectedEmpty": "Add questions from the library on the left", "scoreLabel": "Score", "moveUp": "Move up", "moveDown": "Move down", "remove": "Remove", "previewTitle": "Preview", "previewTotal": "Total Score", "previewBaseline": "Baseline: {baseline} pts", "previewPassScore": "Pass Score", "previewTypeBreakdown": "Type Breakdown" }, "edit": { "title": "Edit Exam Paper", "subtitle": "Total: {total} pts · {count} questions", "save": "Save Paper", "saveSuccess": "Paper saved successfully", "saveFailed": "Save failed: {message}", "notFound": "No paper content found", "propertiesTitle": "Paper Properties", "propExamId": "Exam ID", "propTotalScore": "Total Score", "propQuestionCount": "Question Count", "propUpdatedAt": "Last Updated", "contractPending": "Rich text editor contract is @contract-pending, currently backed by MSW. Will switch to real data once backend is ready.", "editorTitle": "Paper Content", "toolbarBold": "Bold", "toolbarItalic": "Italic", "toolbarUnderline": "Underline", "toolbarBulletList": "Bullet list", "toolbarOrderedList": "Ordered list" } }, "homework": { "title": "Homework", "list": { "title": "Homework", "description": "View and manage all homework", "new": "Assign Homework", "searchPlaceholder": "Search homework name...", "statusFilter": "Filter by status", "statusAll": "All statuses", "statusDraft": "Draft", "statusPublished": "Published", "statusClosed": "Closed", "statusArchived": "Archived", "total": "{count} total", "colName": "Name", "colStatus": "Status", "colDueDate": "Due Date", "colGracePeriod": "Grace Period", "colActions": "Actions", "viewDetail": "View Detail →", "mswNotice": "List query contract is pending, please ensure NEXT_PUBLIC_MSW=1 is enabled." }, "detail": { "title": "Homework Detail", "edit": "Edit", "notFound": "Homework not found, may have been deleted", "createdAtPrefix": "Created on {date}", "sectionBasic": "Basic Info", "sectionSubmissions": "Submissions", "sectionInlineGrade": "Inline Grade", "fieldTitle": "Title", "fieldDescription": "Description", "fieldDueDate": "Due Date", "fieldGracePeriod": "Grace Period", "fieldStatus": "Status", "fieldClassId": "Class ID", "fieldSubjectId": "Subject ID", "fieldCreatedBy": "Created By", "fieldUpdatedAt": "Updated At", "viewAllSubmissions": "All Submissions", "noSubmissions": "No submissions yet", "colStudent": "Student", "colStatus": "Status", "colSubmittedAt": "Submitted At", "colScore": "Score", "colActions": "Actions", "grade": "Grade", "gradeStudentId": "Student ID", "gradeScore": "Score", "gradeFeedback": "Feedback", "gradeFeedbackPlaceholder": "Write feedback to the student...", "gradeSubmit": "Submit Grade", "gradeSubmitting": "Submitting...", "gradeSuccess": "Grade submitted successfully", "gradeError": "Grading failed", "gradeErrorStudentRequired": "Please fill in Student ID", "gradeErrorScoreInvalid": "Score is invalid, please enter a non-negative number", "gradeContractPending": "Grade contract is @contract-pending, currently backed by MSW." }, "new": { "title": "Assign Homework", "description": "Fill in homework basic information", "submit": "Assign", "success": "Homework assigned successfully", "error": "Assignment failed", "classId": "Class ID", "subjectId": "Subject ID", "titleLabel": "Title", "titlePlaceholder": "e.g. Set and Function Practice", "descriptionLabel": "Description", "descriptionPlaceholder": "Scope, notes, etc.", "dueDate": "Due Date", "gracePeriod": "Grace Period (hours)", "gracePeriodHint": "Hours of grace after the deadline, 0 means no grace", "errorClassRequired": "Please fill in Class ID", "errorTitleRequired": "Please fill in homework title", "errorDateRequired": "Please select due date", "contractPending": "Assign homework contract is @contract-pending, currently backed by MSW. Will switch to real submission once backend mutation is ready." }, "submissions": { "title": "Submission Grading", "description": "View all homework submissions and grade them", "searchPlaceholder": "Search student/no/homework...", "classIdFilter": "Filter by class", "classIdPlaceholder": "Class ID", "statusFilter": "Filter by status", "statusAll": "All statuses", "statusSubmitted": "Submitted", "statusGrading": "Grading", "statusGraded": "Graded", "statusReturned": "Returned", "statusLate": "Late", "total": "{count} total", "colStudent": "Student", "colHomework": "Homework", "colClass": "Class", "colStatus": "Status", "colSubmittedAt": "Submitted At", "colScore": "Score", "colActions": "Actions", "toGrade": "Grade", "mswNotice": "Submission query contract is pending, please ensure NEXT_PUBLIC_MSW=1 is enabled." }, "grading": { "title": "Grade: {name}", "titleLoading": "Loading grade...", "subtitle": "Homework: {homework} · No.: {no}", "notFound": "Submission not found, may have been deleted", "sectionStudent": "Student Info", "sectionAnswers": "Answers", "sectionNavigation": "Navigation", "fieldStudentName": "Name", "fieldStudentNo": "Student No.", "fieldClass": "Class", "fieldHomework": "Homework", "fieldStatus": "Status", "fieldSubmittedAt": "Submitted At", "fieldFeedback": "Current Feedback", "questionType": "Type", "maxScore": "Max Score", "maxScoreTotal": "Total Max", "studentAnswer": "Student Answer", "score": "Score", "teacherComment": "Teacher Comment", "overallFeedback": "Overall Feedback", "overallFeedbackPlaceholder": "Write overall feedback to the student...", "applyAi": "Apply AI Suggestion", "aiSuggestionLabel": "AI Suggestion", "aiSuggestionApplied": "AI suggestion applied", "prev": "Previous", "next": "Next", "position": "{current}/{total}", "submit": "Submit Grade", "submitting": "Submitting...", "success": "Grade submitted successfully", "error": "Grading failed", "errorScoreInvalid": "Score for question {qid} is invalid", "contractPending": "Grading contract is @contract-pending, currently backed by MSW." }, "scan": { "title": "Scan Grade: {name}", "titleLoading": "Loading scan grade...", "subtitle": "Homework: {homework}", "notFound": "Submission not found, may have been deleted", "scanPreview": "Scan Preview", "imagePlaceholder": "Scan image (submissionId: {id})", "imageContractPending": "Scan image preview contract is @contract-pending, currently a placeholder.", "recognizedAnswers": "Recognized Answers", "recognizedAnswer": "Recognized Answer", "recognizedCorrect": "Recognized correct", "recognizedIncorrect": "Recognized incorrect", "questionType": "Type", "aiSuggestionLabel": "AI Suggestion", "noAnswers": "No answer data", "gradingForm": "Grading Form", "scoreLabel": "Score for {qid}", "totalScore": "Current Total", "applyAllAi": "Apply All AI Suggestions", "aiAppliedCount": "Applied {count} AI suggestions", "confidence": "Confidence", "overallFeedback": "Overall Feedback", "overallFeedbackPlaceholder": "Write overall feedback to the student...", "save": "Save Grade", "saving": "Saving...", "saveSuccess": "Scan grading saved successfully", "saveError": "Save failed", "errorScoreInvalid": "Score for question {qid} is invalid", "unitScore": "pts", "contractPending": "Scan grading contract is @contract-pending, currently backed by MSW." }, "assignment": { "title": "Batch Grading by Homework", "description": "Homework: {title}", "descriptionLoading": "Loading homework info...", "backToHomework": "Back to Homework Detail", "total": "{count} submissions", "mswNotice": "Assignment submissions query contract is pending, please ensure NEXT_PUBLIC_MSW=1 is enabled.", "sectionHomework": "Homework Info", "sectionSubmissions": "Submissions", "sectionAiGrading": "AI Batch Grading", "homeworkTitle": "Title", "homeworkId": "Homework ID", "className": "Class", "dueDate": "Due Date", "colStudent": "Student", "colStatus": "Status", "colSubmittedAt": "Submitted At", "colScore": "Score", "colActions": "Actions", "scanGrade": "Scan Grade", "detailGrade": "Detail Grade", "statsTotalStudents": "Expected", "statsSubmitted": "Submitted", "statsGraded": "Graded", "statsPending": "Pending", "statsAvgScore": "Avg", "statsSubmissionRate": "Submission Rate", "aiBatchGrade": "Batch Auto Grade", "aiTriggered": "AI grading request triggered", "aiSummary": "Processed {processed}/{total}, avg confidence {avg}", "aiEmpty": "No AI suggestions yet, click the button to trigger", "aiContractPending": "AI grading contract is @contract-pending, currently backed by MSW.", "suggestedScore": "Suggested", "confidence": "Confidence" }, "error": { "title": "Homework page error", "unknown": "Unknown error", "retry": "Retry" } }, "grades": { "title": "Grades", "list": { "title": "Grades", "description": "View and manage all student grades", "entry": "Record Grade", "searchPlaceholder": "Search by student name/no...", "statusFilter": "Filter by status", "statusAll": "All statuses", "statusGraded": "Graded", "statusPending": "Pending", "statusExempt": "Exempt", "statusAbsent": "Absent", "total": "{count} total", "colStudent": "Student", "colClass": "Class", "colSource": "Source", "colScore": "Score", "colStatus": "Status", "colGradedAt": "Graded At", "mswNotice": "List query contract is pending, please ensure NEXT_PUBLIC_MSW=1 is enabled." }, "entry": { "title": "Record Grade", "description": "Fill in student grade information", "submit": "Submit", "success": "Grade recorded successfully", "error": "Submission failed", "classId": "Class ID", "studentId": "Student ID", "examId": "Exam ID (optional)", "examIdPlaceholder": "e.g. exam-001", "homeworkId": "Homework ID (optional)", "homeworkIdPlaceholder": "e.g. hw-001", "score": "Score", "totalScore": "Total Score", "feedbackLabel": "Feedback", "feedbackPlaceholder": "Write feedback to the student...", "errorClassRequired": "Please fill in Class ID", "errorStudentRequired": "Please fill in Student ID", "errorScoreInvalid": "Score is invalid, please enter a non-negative number", "errorTotalInvalid": "Total score is invalid, please enter a positive number", "errorSourceRequired": "At least one of Exam ID or Homework ID is required", "contractPending": "Grade submission contract is @contract-pending, currently backed by MSW. Will switch to real submission once backend mutation is ready." }, "analytics": { "title": "Grade Analytics", "subtitle": "Scope: {scope}", "notFound": "No analytics data found, grading may not be complete", "sectionSummary": "Summary", "sectionDistribution": "Score Distribution", "sectionRankings": "Student Rankings", "summaryTotal": "Expected", "summaryGraded": "Graded", "summaryAvg": "Average", "summaryMax": "Max", "summaryMin": "Min", "summaryPassRate": "Pass Rate", "summaryPassScore": "Pass Score", "emptyDistribution": "No score distribution data", "emptyRankings": "No ranking data", "colRank": "Rank", "colStudentNo": "Student No.", "colStudentName": "Name", "colScore": "Score", "colLevel": "Level" }, "stats": { "title": "Grade Statistics", "subtitle": "Class: {classId} · Period: {period}", "notFound": "No statistics data found", "empty": "No subject statistics data", "sectionSummary": "Subject Summary Cards", "sectionTable": "Subject Statistics Table", "studentCount": "{count} students", "avgScore": "Average", "maxScore": "Max", "minScore": "Min", "passRate": "Pass Rate", "passCount": "Pass Count", "failCount": "Fail Count", "colSubject": "Subject", "colClass": "Class", "colStudentCount": "Students", "colAvgScore": "Average", "colMaxScore": "Max", "colMinScore": "Min", "colPassRate": "Pass Rate", "colPassCount": "Pass Count", "colFailCount": "Fail Count" }, "reportCard": { "title": "Report Card", "titleWithName": "{name}'s Report Card", "subtitle": "No.: {no} · Class: {className} · Period: {period}", "notFound": "No report card data found", "sectionBasic": "Student Info", "sectionEntries": "Subject Grades", "sectionSummary": "Summary", "fieldStudentName": "Name", "fieldStudentNo": "Student No.", "fieldClass": "Class", "fieldPeriod": "Period", "colSubject": "Subject", "colSource": "Source", "colScore": "Score", "colLevel": "Level", "colFeedback": "Feedback", "colGradedAt": "Graded At", "emptyEntries": "No subject grades", "totalAvgScore": "Total Average", "totalRank": "Total Rank", "totalStudents": "Total Students", "rankValue": "Rank {rank} / {total}" }, "error": { "title": "Grades page error", "unknown": "Unknown error", "retry": "Retry" } }, "analytics": { "title": "Analytics" }, "knowledgeGraph": { "title": "Knowledge Graph" }, "notifications": { "title": "Notifications" }, "aiAssist": { "title": "AI Assist" }, "aiLessonPlan": { "title": "AI Lesson Plan" }, "aiReport": { "title": "AI Report" }, "attendance": { "title": "Attendance" }, "questions": { "title": "Questions" }, "textbooks": { "title": "Textbooks" }, "lessonPlans": { "title": "Lesson Plans" }, "coursePlans": { "title": "Course Plans" }, "diagnostic": { "title": "Diagnostic" }, "errorBook": { "title": "Error Book" }, "practice": { "title": "Practice" }, "elective": { "title": "Elective" }, "leave": { "title": "Leave Requests" }, "scheduleChanges": { "title": "Schedule Changes" }, "settings": { "title": "Settings" }, "students": { "title": "Students" } }