{
  "title": {
    "list": "Grade Records",
    "entry": "Grade Entry",
    "analytics": "Grade Analytics",
    "stats": "Grade Statistics",
    "myGrades": "My Grades",
    "childrenGrades": "Children Grades"
  },
  "filters": {
    "class": "Class",
    "subject": "Subject",
    "type": "Type",
    "semester": "Semester",
    "allClasses": "All classes",
    "allSubjects": "All subjects",
    "allTypes": "All types",
    "allSemesters": "All semesters",
    "searchPlaceholder": "Search by title..."
  },
  "type": {
    "exam": "Exam",
    "quiz": "Quiz",
    "homework": "Homework",
    "other": "Other"
  },
  "semester": {
    "s1": "Semester 1",
    "s2": "Semester 2"
  },
  "list": {
    "empty": "No grade records found.",
    "caption": "Grade records list",
    "deleteAriaLabel": "Delete {studentName}'s {subjectName} grade record",
    "editAriaLabel": "Edit {studentName}'s {subjectName} grade record",
    "bulkDelete": "Bulk Delete",
    "bulkDeleteConfirmation": "Are you sure you want to delete the {count} selected grade record(s)? This action cannot be undone.",
    "bulkDeleteSelected": "{count} record(s) selected",
    "bulkDeleteSuccess": "Deleted {count} grade record(s)",
    "bulkDeleteFailed": "Bulk delete failed",
    "selectAll": "Select all",
    "selectRow": "Select {name}'s grade record",
    "clearSelection": "Clear selection",
    "columns": {
      "student": "Student",
      "class": "Class",
      "subject": "Subject",
      "title": "Title",
      "score": "Score",
      "type": "Type",
      "semester": "Semester",
      "recordedBy": "Recorded By",
      "date": "Date",
      "actions": "Actions"
    }
  },
  "form": {
    "title": "Record Grade",
    "save": "Save Record",
    "saving": "Saving...",
    "cancel": "Cancel",
    "selectClass": "Select a class",
    "selectSubject": "Select a subject",
    "selectStudent": "Select a student",
    "titlePlaceholder": "e.g. Mid-term Exam",
    "score": "Score",
    "fullScore": "Full Score",
    "remark": "Remark (optional)",
    "remarkPlaceholder": "Notes about this grade...",
    "selectPrompt": "Please select class, subject and student",
    "student": "Student",
    "titleLabel": "Title"
  },
  "delete": {
    "title": "Delete Grade Record",
    "confirmation": "Are you sure you want to delete this grade record? This action cannot be undone.",
    "confirm": "Delete",
    "cancel": "Cancel",
    "deleting": "Deleting..."
  },
  "edit": {
    "title": "Edit Grade Record",
    "confirm": "Save Changes",
    "saving": "Saving...",
    "cancel": "Cancel",
    "score": "Score",
    "fullScore": "Full Score",
    "titleLabel": "Title",
    "remark": "Remark (optional)",
    "remarkPlaceholder": "Notes about this grade...",
    "success": "Grade record updated",
    "failed": "Update failed"
  },
  "export": {
    "detail": "Export Grade Details",
    "classReport": "Export Class Grade Report",
    "success": "Export succeeded",
    "failed": "Export failed",
    "exporting": "Exporting...",
    "selectClassFirst": "Please select a class first",
    "detailItem": "Grade Details",
    "classReportItem": "Class Grade Report",
    "defaultLabel": "Export",
    "sheets": {
      "detail": "Grade Details",
      "summary": "Statistics Summary",
      "classReport": "{className}_Grade Report"
    },
    "columns": {
      "studentName": "Student Name",
      "class": "Class",
      "subject": "Subject",
      "title": "Title",
      "score": "Score",
      "fullScore": "Full Score",
      "type": "Type",
      "semester": "Semester",
      "recorder": "Recorder",
      "remark": "Remark",
      "date": "Date",
      "metric": "Metric",
      "value": "Value",
      "total": "Total",
      "average": "Average",
      "rank": "Rank"
    },
    "metrics": {
      "average": "Average",
      "median": "Median",
      "max": "Max",
      "min": "Min",
      "stdDev": "Std Dev",
      "passRate": "Pass Rate (%)",
      "excellentRate": "Excellent Rate (%)",
      "count": "Count",
      "noData": "No Data"
    }
  },
  "stats": {
    "title": "Statistics",
    "average": "Average",
    "median": "Median",
    "max": "Max",
    "min": "Min",
    "stdDev": "Std Dev",
    "variance": "Variance",
    "passRate": "Pass Rate",
    "excellentRate": "Excellent Rate",
    "count": "Count",
    "noData": "No data available for statistics.",
    "stdDevHint": "Standard deviation",
    "passRateHint": "Score >= 60% of full",
    "excellentRateHint": "Score >= 85% of full"
  },
  "analytics": {
    "trend": "Grade Trend",
    "classComparison": "Class Comparison",
    "subjectComparison": "Subject Comparison",
    "distribution": "Grade Distribution",
    "ranking": "Ranking",
    "rankingTrend": "Ranking Trend",
    "class": "Class",
    "subject": "Subject",
    "grade": "Grade",
    "averageScore": "Average score, pass rate, excellent rate",
    "passRate": "Pass Rate",
    "excellentRate": "Excellent Rate",
    "studentCount": "Student Count",
    "classComparisonLabel": "Grade (for class comparison)",
    "allOption": "All",
    "semester": "Semester",
    "semesterAll": "All Semesters",
    "semester1": "Semester 1",
    "semester2": "Semester 2",
    "exam": "Exam",
    "examAll": "All Exams",
    "noExams": "No linked exams"
  },
  "batch": {
    "title": "Batch Grade Entry",
    "saving": "Saving...",
    "restored": "Restored unsaved grade draft",
    "restoredFromServer": "Restored grade draft from server (cross-device sync)",
    "invalidScores": "Invalid scores found",
    "fullScoreRequired": "Full score is required",
    "saved": "Saved",
    "score": "Score",
    "remark": "Remark",
    "fullScore": "Full Score",
    "type": "Type",
    "saveAll": "Save All",
    "cancel": "Cancel",
    "saveAllGrades": "Save All Grades",
    "savingGrades": "Saving grades...",
    "selectClassAndSubject": "Please select class and subject",
    "invalidScoresError": "Invalid scores found (exceeding full score or wrong format). Please check and retry.",
    "enterAtLeastOne": "Please enter at least one score",
    "noStudentsInClass": "No students in this class.",
    "entered": "Entered",
    "average": "Avg",
    "max": "Max",
    "min": "Min",
    "searchStudent": "Search student...",
    "examQuizTitle": "Exam / Quiz Title",
    "fullScoreHint": "Full score is {max}. Press Enter to move to the next student. Drafts are auto-saved every 30 seconds and valid for 2 hours.",
    "confirmSwitchClass": "There are unsaved grade records for the current class. Are you sure you want to switch?",
    "invalidScoresBadge": "Invalid scores found",
    "emailColumn": "Email",
    "pasteApplied": "Pasted {count} scores from clipboard",
    "pasteNoMatch": "Clipboard content could not be parsed as a score column",
    "pasteHint": "Tip: copy a column of scores from Excel and paste here",
    "undo": "Undo",
    "undoNoRecord": "No recent batch entry to undo",
    "undoExpired": "Undo expired (more than 5 minutes)",
    "undoFailed": "Undo failed, please try again",
    "downloadTemplate": "Download Template",
    "templateAriaLabel": "Download grade entry template",
    "templateStudentName": "Student Name",
    "templateScore": "Score",
    "templateRemark": "Remark",
    "templateFilename": "grade-entry-template.csv",
    "guide": {
      "title": "Grade Entry Guide",
      "step1": "Select the class and subject for grade entry, and fill in the exam or quiz title.",
      "step2": "Enter scores directly in the score column, or copy a column of scores from Excel and paste here.",
      "step3": "Drafts are auto-saved every 30 seconds (2 hours locally, 24 hours on server for cross-device sync).",
      "step4": "After saving, you can undo the entry within 5 minutes by clicking the undo button.",
      "dismiss": "Got it",
      "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?",
    "confirmTitle": "Confirm Switch",
    "confirmAction": "Switch",
    "cancelAction": "Cancel",
    "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",
    "score": "Score",
    "date": "Date"
  },
  "summary": {
    "caption": "Student Grade Summary",
    "title": "Grade Summary",
    "averageScore": "Average Score",
    "classRank": "Class Rank",
    "rankValue": "#{rank}",
    "totalRecords": "Total Records",
    "highestScore": "Highest Score",
    "lowestScore": "Lowest Score",
    "student": "Student",
    "gradeHistory": "Grade History",
    "noGradesTitle": "No grades yet",
    "noGradesDescription": "There are no grade records for this student.",
    "noDataTitle": "No data",
    "noDataDescription": "Student grade summary is not available.",
    "recordCount": "{count} grade records"
  },
  "empty": {
    "noRecords": "No grade records found.",
    "noData": "No data available",
    "noClassSelected": "Please select a class",
    "noStudentSelected": "Please select a student"
  },
  "error": {
    "loadFailed": "Failed to load",
    "saveFailed": "Failed to save",
    "deleteFailed": "Failed to delete",
    "exportFailed": "Failed to export",
    "failedToCreate": "Failed to create",
    "failedToDelete": "Failed to delete",
    "retry": "Retry"
  },
  "widget": {
    "error": "Widget Error",
    "retry": "Retry",
    "loading": "Loading...",
    "block": "Widget",
    "loadFailed": "{title} failed to load",
    "defaultFallback": "Please retry or refresh the page",
    "retryAriaLabel": "Retry loading {title}",
    "loadingAriaLabel": "{title} is loading"
  },
  "chart": {
    "scorePercent": "Score (%)",
    "students": "Students",
    "averagePercent": "Average (%)",
    "passRatePercent": "Pass Rate (%)",
    "excellentPercent": "Excellent (%)",
    "average": "Average",
    "passRate": "Pass Rate",
    "classAverage": "Class Average"
  },
  "distribution": {
    "title": "Score Distribution",
    "descriptionEmpty": "Number of students in each score range (normalized to 0-100).",
    "descriptionNonEmpty": "{count} grade record(s) across score ranges.",
    "emptyTitle": "No distribution data",
    "emptyDescription": "Select a class and subject to view score distribution.",
    "ariaLabelEmpty": "Score distribution bar chart: no data",
    "ariaLabelNonEmpty": "Score distribution bar chart: {count} grade records across 5 score ranges",
    "tooltipStudents": "{count} student(s)",
    "tooltipOfTotal": "{percentage}% of total",
    "yourPosition": "Your position: {score} pts ({bucket} range)",
    "yourPositionAriaLabel": "Your position: latest score {score} pts, highlighted range"
  },
  "subjectComparison": {
    "descriptionEmpty": "Compare performance across subjects for the selected class.",
    "descriptionNonEmpty": "Average score and pass rate per subject (normalized to 0-100).",
    "emptyTitle": "No comparison data",
    "emptyDescription": "Select a class to compare subject performance.",
    "ariaLabelEmpty": "Subject comparison radar chart: no data",
    "ariaLabelNonEmpty": "Subject comparison radar chart: comparing average and pass rate across {count} subjects"
  },
  "classComparison": {
    "descriptionEmpty": "Compare average, pass rate, and excellent rate across classes.",
    "descriptionNonEmpty": "Average score, pass rate (>=60%), and excellent rate (>=85%) per class.",
    "emptyTitle": "No comparison data",
    "emptyDescription": "Select a grade and subject to compare classes.",
    "ariaLabelEmpty": "Class comparison bar chart: no data",
    "ariaLabelNonEmpty": "Class comparison bar chart: comparing average, pass rate, and excellent rate across {count} classes",
    "significanceTitle": "Significance Analysis",
    "significanceRange": "Max difference between classes: {range} points",
    "significanceHigh": "Significant difference",
    "significanceMedium": "Possible difference",
    "significanceLow": "No significant difference",
    "significanceHighHint": "The range is large and each class has sufficient sample size (>=30), so the performance gap is statistically meaningful.",
    "significanceMediumHint": "Some difference exists, but it may be affected by sample size or random fluctuation. Further analysis is recommended.",
    "significanceLowHint": "The range is small and class performance is close; the difference is not statistically meaningful.",
    "significanceAriaLabel": "Significance analysis: {level}",
    "significanceDetails": "View detailed analysis",
    "significanceTopClass": "Top class: {name} ({score} points)",
    "significanceBottomClass": "Bottom class: {name} ({score} points)",
    "significanceStats": "p = {pValue} · Cohen's d = {cohensD} ({effectSize})",
    "significanceMethod": "Welch's t-test: {significant}",
    "significantYes": "Statistically significant (p < 0.05)",
    "significantNo": "Not statistically significant (p >= 0.05)",
    "effectSize": {
      "negligible": "negligible",
      "small": "small",
      "medium": "medium",
      "large": "large"
    }
  },
  "trendChart": {
    "descriptionEmpty": "Score progression over time (normalized to 0-100).",
    "descriptionNonEmpty": "{label} · avg {average}%",
    "emptyTitle": "No trend data",
    "emptyDescription": "Select a class and subject to view the grade trend.",
    "ariaLabelEmpty": "Grade trend chart: no data",
    "ariaLabelNonEmpty": "Grade trend chart: {label}, average {average}%"
  },
  "trendCard": {
    "emptyDescription": "Your grade trend will appear here once records are added.",
    "ariaLabelEmpty": "Grade trend chart: no data",
    "ariaLabelNonEmpty": "Grade trend chart: {count} grade records",
    "rangeAriaLabel": "Select date range"
  },
  "rankingTrend": {
    "ariaLabelEmpty": "Ranking trend chart: no data",
    "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"
  },
  "page": {
    "list": {
      "description": "Manage student grade records.",
      "stats": "Statistics",
      "batchEntry": "Batch Entry",
      "enterGrades": "Enter Grades",
      "emptyTitle": "No grade records",
      "emptyDescription": "Start entering grades for your classes.",
      "emptyActionLabel": "Enter Grades",
      "recordUnit": "records"
    },
    "analytics": {
      "description": "Trend analysis, class comparison and score distribution.",
      "backToGrades": "Back to grades",
      "noClassesTitle": "No classes",
      "noClassesDescription": "You don't have any classes yet.",
      "trendTitle": "Grade Trend",
      "trendEmptyTitle": "No trend data",
      "trendEmptyDescription": "No grade trend to display with current filters.",
      "distributionTitle": "Score Distribution",
      "distributionEmptyTitle": "No distribution data",
      "distributionEmptyDescription": "No score distribution to display with current filters.",
      "subjectComparisonTitle": "Subject Comparison",
      "subjectComparisonEmptyTitle": "No subject comparison data",
      "subjectComparisonEmptyDescription": "No subject comparison to display with current filters.",
      "classComparisonTitle": "Class Comparison",
      "classComparisonEmptyTitle": "No class comparison data",
      "classComparisonEmptyDescription": "No class comparison to display with current filters."
    },
    "entry": {
      "title": "Batch Grade Entry",
      "description": "Select an exam from the question bank and enter scores per question, like filling in a spreadsheet.",
      "noExamsTitle": "No exams available",
      "noExamsDescription": "Please create exams and add questions in exam management first before entering grades."
    },
    "stats": {
      "description": "View class grade statistics and rankings.",
      "noClassesTitle": "No classes",
      "noClassesDescription": "You don't have any classes yet.",
      "noAccessTitle": "No accessible classes",
      "noAccessDescription": "You don't have permission to view any classes.",
      "exportLabel": "Export Grades"
    },
    "error": {
      "title": "Grades page failed to load",
      "description": "Sorry, an unexpected error occurred while loading the page. Please try again later.",
      "retry": "Retry"
    }
  },
  "schoolWide": {
    "gradeCount": "Grades",
    "classStudentInfo": "{classCount} classes · {studentCount} students",
    "averageScore": "Overall Average",
    "recordCount": "Based on {count} grade records",
    "passRate": "Pass Rate",
    "passLine": "Pass line 60%",
    "excellentRate": "Excellence Rate",
    "excellentLine": "Excellence line 85%",
    "comparisonTitle": "Grade Comparison",
    "comparisonDescription": "Average score, pass rate and excellence rate aggregated by grade.",
    "empty": "No grade data available",
    "columns": {
      "schoolGrade": "School / Grade",
      "classCount": "Classes",
      "studentCount": "Students",
      "recordCount": "Records",
      "average": "Average",
      "passRate": "Pass Rate",
      "excellentRate": "Excellence"
    }
  },
  "action": {
    "unknownSubject": "Unknown subject",
    "scoreEntered": "entered",
    "notificationTitle": "Grade entered: {title}",
    "studentNotification": "Your {subject} grade {score}. Please view details.",
    "parentNotification": "Your child's {subject} grade {score}. Please view details.",
    "missingExamId": "Missing exam ID",
    "missingClassId": "Missing class ID",
    "missingRecords": "Missing grade data",
    "missingRecordsData": "Missing grade data",
    "examNotFound": "Exam not found or no access",
    "examNoQuestions": "Exam has no questions, cannot enter grades",
    "examNoSubject": "Exam is not linked to a subject",
    "invalidFormData": "Invalid form data",
    "invalidId": "Invalid ID",
    "invalidQuery": "Invalid query parameters",
    "recordCreated": "Grade record created",
    "recordUpdated": "Grade record updated",
    "recordDeleted": "Grade record deleted",
    "recordsCreated": "Entered {count} grade records",
    "recordsDeletedCount": "Deleted {count} grade records",
    "recordsUndoneCount": "Undone {count} grade records",
    "noRecordsToUndo": "No records to undo",
    "noRecordsToDelete": "No records to delete",
    "cannotUndoMoreThan": "Cannot undo more than 500 records at once",
    "cannotDeleteMoreThan": "Cannot delete more than 500 records at once",
    "ownGradesOnly": "Can only view your own grades",
    "childrenGradesOnly": "Can only view your children's grades",
    "ownRecordsOnly": "You can only view your own grade records",
    "childrenRecordsOnly": "You can only view your children's grade records",
    "ownRankingTrendOnly": "You can only view your own ranking trend",
    "childrenRankingTrendOnly": "You can only view your children's ranking trend",
    "taughtClassesOnly": "You can only view records of classes you teach",
    "studentOnly": "This action is only available to students",
    "invalidJson": "Invalid grade data format",
    "exportOwnChildrenOnly": "Can only export your own children's grades",
    "classIdRequired": "Class ID is required for class export",
    "filenameDetail": "grade_records_{date}.xlsx",
    "filenameClassReport": "class_grade_report_{date}.xlsx",
    "errorExamNoQuestions": "Exam has no questions, cannot enter grades",
    "errorQuestionNotInExam": "Question {questionId} does not belong to exam {examId}",
    "scopeError": {
      "class_taught": "You can only access classes you teach",
      "class_members": "You can only access your own class",
      "denied": "Access denied for your scope"
    }
  },
  "anomaly": {
    "severityWarning": "Warning",
    "severityCritical": "Critical",
    "notificationTitle": "{subject} score anomaly alert",
    "notificationContent": "{subject} score shows a {severity} drop: latest {latestScore} pts, historical avg {historicalAverage} pts, dropped {drop} pts. Please follow up on the student's learning status."
  },
  "growthArchive": {
    "title": "Growth Archive",
    "description": "Spanning {years} academic years, {records} records, {subjects} subjects",
    "descriptionEmpty": "Longitudinal growth trend across academic years and semesters",
    "emptyTitle": "No growth archive data",
    "emptyDescription": "Grade records must be linked to an academic year before a growth archive can be generated.",
    "ariaLabelEmpty": "Growth archive chart: no data",
    "ariaLabelNonEmpty": "Growth archive chart: {count} academic year/semester data points",
    "averageScore": "Normalized average score",
    "overallAverage": "Overall avg {score}",
    "deltaUp": "Overall improvement of {delta} points",
    "deltaDown": "Overall decline of {delta} points",
    "deltaStable": "Scores remain stable",
    "statsAverage": "Avg: {score}",
    "statsPassRate": "Pass rate: {rate}%",
    "statsRecords": "{records} records · {subjects} subjects"
  },
  "knowledgePointMastery": {
    "title": "Knowledge Point Mastery",
    "description": "{count} knowledge points · avg mastery {avg}%",
    "descriptionEmpty": "Knowledge point mastery analysis powered by the diagnostic module",
    "emptyTitle": "No knowledge point mastery data",
    "emptyDescription": "Generate diagnostic reports in the diagnostic module before mastery data becomes available.",
    "ariaLabel": "Knowledge point mastery chart: {count} knowledge points",
    "averageMastery": "Average mastery",
    "viewDetail": "View diagnostic details",
    "tooltipMastery": "Mastery: {score}%",
    "tooltipStudents": "Mastered {mastered} / {total} students",
    "weakPointsTitle": "Weak knowledge points (top 3)",
    "weakPointsAriaLabel": "Weak knowledge points list"
  },
  "reportCard": {
    "title": "Term Report Card",
    "schoolName": "Smart Campus",
    "periodLabel": "Academic Year: {year} · Semester: {semester}",
    "allSemesters": "All Semesters",
    "studentName": "Student Name",
    "className": "Class",
    "classTeacher": "Class Teacher",
    "generatedAt": "Generated At",
    "gradesSectionTitle": "Subject Grades Detail",
    "summarySectionTitle": "Summary Statistics",
    "commentsTitle": "Teacher Comments",
    "commentsPlaceholder": "(Teacher comments to be filled in here)",
    "commentsAriaLabel": "Teacher comments area",
    "columnSubject": "Subject",
    "columnAssessment": "Assessment",
    "columnType": "Type",
    "columnScore": "Score",
    "columnRank": "Rank",
    "columnRemark": "Remark",
    "subjectAvg": "Avg {score}",
    "overallAverage": "Overall Average",
    "overallRank": "Class Rank",
    "passRate": "Pass Rate",
    "excellentRate": "Excellent Rate",
    "noRecords": "No records",
    "emptyGrades": "No grade records for the selected period.",
    "signatureClassTeacher": "Class Teacher Signature",
    "signatureParent": "Parent Signature",
    "signaturePrincipal": "Principal Signature",
    "footerNote": "This report card is auto-generated by the system · Generated on {date}",
    "ariaLabel": "Term report card for {name}",
    "backToGrades": "Back to Grades",
    "print": "Print / Save as PDF",
    "preparing": "Preparing print…",
    "errorPrint": "Print failed, please try again",
    "errorNavigate": "Failed to navigate to report card page",
    "openReportCard": "Open Report Card",
    "filterAcademicYear": "Academic Year",
    "filterSemester": "Semester",
    "filterAllAcademicYears": "All Academic Years",
    "filterAllSemesters": "All Semesters",
    "missingStudentTitle": "Missing Student Information",
    "missingStudentDescription": "Please access the report card page via the grades list.",
    "emptyTitle": "No Report Card Data",
    "emptyDescription": "No grade records match the current filter criteria. Please adjust filters and retry.",
    "loading": "Generating report card…",
    "errorTitle": "Loading Failed",
    "errorDescription": "Failed to load report card. Please try again later.",
    "retry": "Retry",
    "academicYearsCount": "{count} academic years available"
  },
  "excelImport": {
    "triggerButton": "Excel Import",
    "dialogTitle": "Bulk Import Grades",
    "dialogDescription": "Bulk import class grades via Excel file. Please download the template first, fill it in, then upload.",
    "step1Title": "Step 1: Download Import Template",
    "step1Description": "The template includes class student names as examples for accurate filling.",
    "downloadTemplate": "Download Template",
    "templateFilename": "grades_import_template_{date}.xlsx",
    "templateDownloaded": "Template downloaded",
    "step2Title": "Step 2: Fill in Entry Parameters",
    "step3Title": "Step 3: Upload Excel File",
    "assessmentTitle": "Assessment Title",
    "assessmentTitlePlaceholder": "e.g., 2026 Spring Midterm Exam",
    "fullScore": "Full Score",
    "examId": "Linked Exam ID (optional)",
    "examIdPlaceholder": "e.g., exam_xxx",
    "fileLabel": "Excel File",
    "fileHint": "Supports .xlsx / .xls, max 500 rows per upload",
    "startImport": "Start Import",
    "importing": "Importing…",
    "cancel": "Cancel",
    "resultTitle": "Import Result",
    "resultSuccess": "Successfully imported",
    "resultFailed": "Failed",
    "unmatchedStudents": "Unmatched students:",
    "columnRow": "Row",
    "columnStudentName": "Student Name",
    "columnScore": "Score",
    "columnErrors": "Errors",
    "moreErrors": "{count} more errors not shown",
    "successMessage": "Successfully imported {success} records, {failed} failed",
    "successAllImported": "All {count} records imported successfully",
    "successPartial": "Imported {success}, failed {failed}. See details.",
    "errorNoFile": "Please select an Excel file",
    "errorInvalidFormat": "Only .xlsx and .xls files are supported",
    "errorEmptyFile": "No data in file",
    "errorTooManyRows": "File contains {count} rows, exceeding the 500 row limit",
    "errorInvalidParams": "Parameter validation failed",
    "errorMissingFields": "Please fill in class, subject and assessment title",
    "errorSelectClass": "Please select a class first",
    "errorTemplateDownload": "Template download failed, please retry",
    "errorImport": "Import failed, please retry",
    "errorAllInvalid": "All {count} rows are invalid"
  },
  "collabLock": {
    "lockConflictTitle": "This class + subject + type is being edited by another teacher",
    "lockConflictDescription": "{teacherName} is entering grades. Please try again later or ask them to release the lock.",
    "lockConflictByYou": "You already hold this lock and may continue editing.",
    "lockConflictUnknownTeacher": "Unknown teacher",
    "acquired": "Editing lock acquired",
    "acquireFailed": "Failed to acquire editing lock",
    "renewed": "Editing lock renewed",
    "renewFailed": "Lock renewal failed, it may have been taken by another teacher",
    "released": "Editing lock released",
    "releaseFailed": "Failed to release editing lock",
    "expiredTitle": "Editing lock expired",
    "expiredDescription": "You have been inactive for too long. The editing lock has been automatically released. Please re-enter the page to avoid overwriting another teacher's edits.",
    "retryAcquire": "Retry acquiring lock",
    "lockInfoTooltip": "This editing session is protected by a lock. It auto-releases after 5 minutes of inactivity, preventing concurrent edits by other teachers.",
    "heartbeatError": "Heartbeat renewal failed. Please check your network and re-enter the page.",
    "noLockHolder": "No lock holder"
  },
  "appeal": {
    "title": "Grade Appeal",
    "description": "Submit an appeal if you disagree with a grade. The teacher will review and respond.",
    "submitAppeal": "Submit Appeal",
    "reasonLabel": "Appeal Reason",
    "reasonPlaceholder": "Please explain your appeal in detail (at least 10 characters)…",
    "expectedScoreLabel": "Expected Score (optional)",
    "expectedScorePlaceholder": "e.g., 85",
    "originalScoreLabel": "Original Score",
    "status": {
      "pending": "Pending Review",
      "approved": "Approved",
      "rejected": "Rejected",
      "withdrawn": "Withdrawn"
    },
    "reviewCommentLabel": "Review Comment",
    "adjustedScoreLabel": "Adjusted Score",
    "reviewerLabel": "Reviewer",
    "reviewedAtLabel": "Reviewed At",
    "createdAtLabel": "Appealed At",
    "withdraw": "Withdraw Appeal",
    "withdrawConfirm": "Are you sure you want to withdraw this appeal? This cannot be undone.",
    "reviewAppeal": "Review Appeal",
    "approve": "Approve",
    "reject": "Reject",
    "reviewCommentPlaceholder": "Please enter your review comment…",
    "adjustScoreHint": "Fill in to adjust the score, otherwise leave empty to keep original",
    "empty": "No appeals yet",
    "pendingEmpty": "No pending appeals for review",
    "gradeNotFound": "Grade record not found",
    "notYourGrade": "You can only appeal your own grades",
    "pendingExists": "This grade already has a pending appeal, please wait for review",
    "notFound": "Appeal not found",
    "outOfScope": "You are not authorized to review appeals for this class",
    "created": "Appeal submitted, please wait for teacher review",
    "approved": "Appeal approved, grade updated",
    "rejected": "Appeal rejected",
    "withdrawn": "Appeal withdrawn",
    "viewAppeals": "View Appeals",
    "appealFor": "{title} Appeal",
    "originalScoreSnapshot": "Score at Appeal Time",
    "currentScore": "Current Score"
  }
}
