lsc 1 day ago
parent
commit
d8495c9174
4 changed files with 263 additions and 65 deletions
  1. 62 62
      src/components/pptEasyClass/dataBoard/teacher.vue
  2. 67 1
      src/lang/cn.json
  3. 67 1
      src/lang/en.json
  4. 67 1
      src/lang/hk.json

+ 62 - 62
src/components/pptEasyClass/dataBoard/teacher.vue

@@ -5,12 +5,12 @@
       <div class="nav-container">
         <!-- 左侧:返回按钮 + 班级选择 -->
         <div class="nav-left">
-          <button class="nav-back-btn" type="button" aria-label="返回" @click="handleBack">
+          <button class="nav-back-btn" type="button" :aria-label="lang.dbBack" @click="handleBack">
             <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
               <path d="M15 18l-6-6 6-6" />
             </svg>
           </button>
-          <span class="nav-title">班级</span>
+          <span class="nav-title">{{ lang.dbClass }}</span>
           <el-select
             v-model="selectedClass"
             size="mini"
@@ -28,12 +28,12 @@
 
         <!-- 右侧:操作按钮 -->
         <div class="nav-right">
-          <button type="button" class="nav-btn nav-btn-report" @click="handleStudentReport" v-show="false">学生报告</button>
+          <button type="button" class="nav-btn nav-btn-report" @click="handleStudentReport" v-show="false">{{ lang.dbStudentReport }}</button>
           <button type="button" class="nav-btn nav-btn-export" @click="handleExport">
             <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
               <path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3" />
             </svg>
-            <span>导出</span>
+            <span>{{ lang.dbExport }}</span>
           </button>
         </div>
       </div>
@@ -45,7 +45,7 @@
         <div class="overview-info">
           <div class="section-title-row">
             <div class="section-accent"></div>
-            <h2 class="section-heading">课程概况</h2>
+            <h2 class="section-heading">{{ lang.dbCourseOverview }}</h2>
           </div>
           <div class="course-info-block">
             <h1 class="course-name">{{ courseDetail.title }}</h1>
@@ -55,14 +55,14 @@
                   <path d="M22 10L12 5 2 10l10 5 10-5z" />
                   <path d="M6 12v5c0 1 2.5 3 6 3s6-2 6-3v-5" />
                 </svg>
-                <span class="meta-label">年级:</span>{{ grade }}
+                <span class="meta-label">{{ lang.dbGrade }}</span>{{ grade }}
               </div>
               <span class="meta-divider">|</span>
               <div class="course-meta-item" v-if="subject">
                 <svg class="meta-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                   <path d="M4 19.5A2.5 2.5 0 016.5 17H20M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z" />
                 </svg>
-                <span class="meta-label">学科:</span>{{ subject }}
+                <span class="meta-label">{{ lang.dbSubject }}</span>{{ subject }}
               </div>
             </div>
             <div class="course-extra-row">
@@ -70,14 +70,14 @@
                 <svg class="extra-icon" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                   <path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75M13 8a4 4 0 11-8 0 4 4 0 018 0z" />
                 </svg>
-                <span>班级: {{ getClassClassName }}</span>
+                <span>{{ lang.dbClassLabel }}{{ getClassClassName }}</span>
               </div>
               <div class="course-extra-item">
                 <svg class="extra-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                   <circle cx="12" cy="12" r="10" />
                   <path d="M12 6v6l4 2" />
                 </svg>
-                <span>上课时间: {{ classstime }}</span>
+                <span>{{ lang.dbClassTime }}{{ classstime }}</span>
               </div>
             </div>
           </div>
@@ -104,20 +104,20 @@
                 <path d="M2 3h6a4 4 0 014 4v14a3 3 0 00-3-3H2zM22 3h-6a4 4 0 00-4 4v14a3 3 0 013-3h7z" />
               </svg>
             </div>
-            <h2 class="card-title">课程概述</h2>
+            <h2 class="card-title">{{ lang.dbCourseSummary }}</h2>
           </div>
           <div class="card-body">
             <div class="paragraph">
-              <span class="strong">课程主题:</span>{{ courseSummary.theme }}
+              <span class="strong">{{ lang.dbCourseTheme }}</span>{{ courseSummary.theme }}
             </div>
             <div class="paragraph">
-              <span class="strong">教学目标:</span>
+              <span class="strong">{{ lang.dbTeachingGoals }}</span>
               <ul class="bullet-list">
                 <li v-for="(goal, i) in courseSummary.objectives" :key="i">{{ goal }}</li>
               </ul>
             </div>
             <div class="paragraph">
-              <span class="strong">主要环节:</span>{{ courseSummary.segments }}
+              <span class="strong">{{ lang.dbMainSegments }}</span>{{ courseSummary.segments }}
             </div>
           </div>
         </div>
@@ -130,7 +130,7 @@
                 <path d="M12 2l1.8 6L20 9.8l-6 1.8L12 18l-1.8-6.4L4 9.8l6.2-1.8z" />
               </svg>
             </div>
-            <h2 class="card-title">AI 教学智能诊断报告</h2>
+            <h2 class="card-title">{{ lang.dbAiDiagnosis }}</h2>
           </div>
           <ul class="ai-report-list relative-z">
             <li v-for="(item, i) in aiReport" :key="i" class="ai-report-item">
@@ -156,7 +156,7 @@
           <div class="task-card-header">
             <div class="section-title-row">
               <div class="section-accent"></div>
-              <h2 class="section-heading">任务概况明细</h2>
+              <h2 class="section-heading">{{ lang.dbTaskOverview }}</h2>
             </div>
           </div>
           <div class="table-scroll">
@@ -164,13 +164,13 @@
               <thead>
                 <tr>
                   <th class="th-num">#</th>
-                  <th>任务与工具</th>
-                  <th class="th-center">所在页码</th>
-                  <th class="th-center">提交率</th>
-                  <th class="th-center">正确率</th>
-                  <th class="th-center">互动次数</th>
-                  <th class="th-center">平均用时</th>
-                  <th>AI 智能洞察</th>
+                  <th>{{ lang.dbTaskAndTool }}</th>
+                  <th class="th-center">{{ lang.dbPage }}</th>
+                  <th class="th-center">{{ lang.dbSubmitRate }}</th>
+                  <th class="th-center">{{ lang.dbCorrectRate }}</th>
+                  <th class="th-center">{{ lang.dbInteractions }}</th>
+                  <th class="th-center">{{ lang.dbAvgTime }}</th>
+                  <th>{{ lang.dbAiInsight }}</th>
                 </tr>
               </thead>
               <tbody>
@@ -191,7 +191,7 @@
                     >{{ task.accuracy }}</span>
                     <span v-else class="accuracy-dash">{{ task.accuracy }}</span>
                   </td>
-                  <td class="td-center td-bold-700">{{ task.interactions }}次</td>
+                  <td class="td-center td-bold-700">{{ task.interactions }}{{ lang.dbTimes }}</td>
                   <td class="td-center td-medium">{{ task.avgTime }}</td>
                   <td class="td-insight">
                     <div class="insight-text">
@@ -212,7 +212,7 @@
           <div class="chart-card">
             <div class="section-title-row">
               <div class="section-accent"></div>
-              <h3 class="section-heading">参与度分层</h3>
+              <h3 class="section-heading">{{ lang.dbParticipation }}</h3>
             </div>
             <div class="chart-wrapper">
               <div ref="performanceChart" class="echart-canvas"></div>
@@ -224,11 +224,11 @@
             <div class="student-table-header">
               <div class="section-title-row">
                 <div class="section-accent"></div>
-                <h3 class="section-heading">学生详情矩阵</h3>
+                <h3 class="section-heading">{{ lang.dbStudentMatrix }}</h3>
               </div>
               <el-input
                 v-model="searchKeyword"
-                placeholder="搜索学生..."
+                :placeholder="lang.dbSearchStudent"
                 size="small"
                 class="search-input"
                 clearable
@@ -246,15 +246,15 @@
                 <thead>
                   <tr>
                     <th class="th-num">#</th>
-                    <th>姓名</th>
+                    <th>{{ lang.dbName }}</th>
                     <th>
                       <div class="th-sortable">
-                        任务完成度
+                        {{ lang.dbTaskCompletion }}
                       </div>
                     </th>
-                    <th class="th-center">综合正确率</th>
-                    <th class="th-center">AI对话轮次</th>
-                    <th class="th-center">点赞/被赞</th>
+                    <th class="th-center">{{ lang.dbOverallCorrect }}</th>
+                    <th class="th-center">{{ lang.dbAiChatRounds }}</th>
+                    <th class="th-center">{{ lang.dbLikes }}</th>
                     <!-- <th class="th-center">操作</th> -->
                   </tr>
                 </thead>
@@ -272,7 +272,7 @@
                           <svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor">
                             <path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z M12 9v4M12 17h.01" />
                           </svg>
-                          关注
+                          {{ lang.dbFocus }}
                         </span>
                       </div>
                     </td>
@@ -285,7 +285,7 @@
                       </div>
                     </td>
                     <td :class="['td-center', student.attention ? 'td-correct-red' : 'td-extrabold']">{{ student.correctRate }}</td>
-                    <td class="td-center td-bold-700">{{ student.aiRounds }} 轮</td>
+                    <td class="td-center td-bold-700">{{ student.aiRounds }}{{ lang.dbRoundUnit }}</td>
                     <td class="td-center td-medium">{{ student.likes }}</td>
                     <!-- <td class="td-center">
                       <button class="report-btn" type="button" @click="handleStudentReportRow(student)">
@@ -299,7 +299,7 @@
                     </td> -->
                   </tr>
                   <tr v-if="filteredStudents.length === 0">
-                    <td colspan="7" class="empty-row">无匹配学生</td>
+                    <td colspan="7" class="empty-row">{{ lang.dbNoMatchStudent }}</td>
                   </tr>
                 </tbody>
               </table>
@@ -334,11 +334,11 @@ export default {
       searchKeyword: '',
       chartInstance: null,
       kpis: [
-        { value: '0', suffix: '', label: '出勤率', sub: '(0/0人)', color: '#F97316' },
-        { value: '0', suffix: '', label: '平均提交率', sub: '(0次提交)', color: '#10B981' },
-        { value: '0', suffix: '', label: '平均正确率', sub: '(最高0%·最低0%)', color: '#10B981' },
-        { value: '0', suffix: '轮', label: 'AI 轮次', sub: '(最多0·最少0)', color: '#3B82F6' },
-        { value: '0', suffix: '', label: '总互动量', sub: '(总点赞数)', color: '#EC4899' }
+        { value: '0', suffix: '', label: this.lang.dbAttendance, sub: `(0/0${this.lang.dbPeopleUnit})`, color: '#F97316' },
+        { value: '0', suffix: '', label: this.lang.dbAvgSubmitRate, sub: `(0${this.lang.dbSubmitCountUnit})`, color: '#10B981' },
+        { value: '0', suffix: '', label: this.lang.dbAvgCorrectRate, sub: `(${this.lang.dbHighest}0%·${this.lang.dbLowest}0%)`, color: '#10B981' },
+        { value: '0', suffix: this.lang.dbRoundUnit, label: this.lang.dbAiRounds, sub: `(${this.lang.dbMax}0·${this.lang.dbMin}0)`, color: '#3B82F6' },
+        { value: '0', suffix: '', label: this.lang.dbTotalInteractions, sub: `(${this.lang.dbTotalLikes})`, color: '#EC4899' }
       ],
       courseSummary: {
         theme: '探索人工智能的起源、核心技术与未来趋势,建立对AI基础概念的准确认知。',
@@ -412,7 +412,7 @@ export default {
         // { id: 5, name: '杨浩宇', attention: true, tasksDone: 7, tasksTotal: 7, correctRate: '76%', aiRounds: 7, likes: '2/1' }
       ],
       chartData: {
-        labels: ['高频参与', '中等参与', '低频参与'],
+        labels: [this.lang.dbHighFreq, this.lang.dbMidFreq, this.lang.dbLowFreq],
         values: [0, 0, 0],
         colors: ['#10B981', '#60A5FA', '#F43F5E']
       },
@@ -425,15 +425,15 @@ export default {
       works: [],
       likesArray: [],
       taskTool: {
-        45: '选择题', 
-        15: '问答题', 
-        73: 'h5网页', 
-        72: '应用中心', 
-        78: '投票', 
-        79: '拍照', 
-        831: 'Kwl表格', 
-        832: '六顶思考帽', 
-        84: '文件上传'
+        45: this.lang.dbTool45,
+        15: this.lang.dbTool15,
+        73: this.lang.dbTool73,
+        72: this.lang.dbTool72,
+        78: this.lang.dbTool78,
+        79: this.lang.dbTool79,
+        831: this.lang.dbTool831,
+        832: this.lang.dbTool832,
+        84: this.lang.dbTool84
       },
       isAi: [45, 15, 72, 831, 832]
     };
@@ -498,7 +498,7 @@ export default {
               left: 'center',
               top: '55%',
               style: {
-                text: '均参与度',
+                text: this.lang.dbAvgParticipation,
                 fontSize: 12,
                 fill: '#9CA3AF',
                 textAlign: 'center'
@@ -517,7 +517,7 @@ export default {
           },
           series: [
             {
-              name: '参与度分层',
+              name: this.lang.dbParticipation,
               type: 'pie',
               radius: ['58%', '75%'],
               center: ['50%', '45%'],
@@ -575,7 +575,7 @@ export default {
     handleExport() {
       // 只截取主内容区域,不包含顶部导航栏
       const el = this.$el.querySelector('.main-content') || this.$el;
-      this.$message.info('正在生成PDF,请稍候...');
+      this.$message.info(this.lang.dbGeneratingPdf);
       try {
         const html2canvas = require('html2canvas');
         const fn = html2canvas.default || html2canvas;
@@ -615,17 +615,17 @@ export default {
               format: [imgWidth / 2, imgHeight / 2]
             });
             pdf.addImage(imgData, 'PNG', 0, 0, imgWidth / 2, imgHeight / 2);
-            pdf.save('教学分析面板.pdf');
-            this.$message.success('PDF已导出');
+            pdf.save(this.lang.dbPdfFilename + '.pdf');
+            this.$message.success(this.lang.dbExportSuccess);
           }).catch((e) => {
             saved.forEach(s => { s.el.style.overflow = s.overflow; s.el.style.overflowX = s.overflowX; s.el.style.overflowY = s.overflowY; s.el.style.maxHeight = s.maxHeight; });
             console.log(e);
-            this.$message.error('导出失败');
+            this.$message.error(this.lang.dbExportFailed);
           });
         }, 100);
       } catch(e) {
         console.log(e);
-        this.$message.error('加载导出模块失败');
+        this.$message.error(this.lang.dbLoadModuleFailed);
       }
     },
     handleStudentReportRow(row) {
@@ -653,7 +653,7 @@ export default {
         const totalStudents = this.students.length || 1;
         const attendanceRate = attendanceCount / totalStudents;
         this.kpis[0].value = Math.round(attendanceRate * 100) + '%';
-        this.kpis[0].sub = `(${attendanceCount}/${this.students.length}人)`;
+        this.kpis[0].sub = `(${attendanceCount}/${this.students.length}${this.lang.dbPeopleUnit})`;
         let tasks = []
         // 平均提交率
         let pptSlides = this.pptJSON.slides || [];
@@ -715,7 +715,7 @@ export default {
         const totalWorks = this.works.length;
         const submitRate = totalExpectedSubmissions > 0 ? Math.round((totalWorks / totalExpectedSubmissions) * 100) : 0;
         this.kpis[1].value = submitRate + '%';
-        this.kpis[1].sub = `(${totalWorks}次提交)`;
+        this.kpis[1].sub = `(${totalWorks}${this.lang.dbSubmitCountUnit})`;
         
         // AI 轮次
         this.kpis[3].value = aiLun.length;
@@ -734,12 +734,12 @@ export default {
           aiMax = Math.max(...roundsList);
           aiMin = Math.min(...roundsList);
         }
-        this.kpis[3].sub = `(最多${aiMax}轮/最少${aiMin}轮)`;
+        this.kpis[3].sub = `(${this.lang.dbMax}${aiMax}${this.lang.dbRoundUnit}/${this.lang.dbMin}${aiMin}${this.lang.dbRoundUnit})`;
 
         // 总点赞数
         const totalLikes = this.likesArray.length;
         this.kpis[4].value = totalLikes;
-        this.kpis[4].sub = `(${totalLikes}人点赞)`;
+        this.kpis[4].sub = `(${totalLikes}${this.lang.dbLikeCountUnit})`;
         
         // 任务概况统计
         console.log(tasks);
@@ -835,7 +835,7 @@ export default {
           const studentRates = Object.values(studentAccuracyMap).map(s =>
             s.total > 0 ? Math.round(s.correct / s.total * 100) : 0
           );
-          this.kpis[2].sub = `(最高${Math.max(...studentRates)}%·最低${Math.min(...studentRates)}%)`;
+          this.kpis[2].sub = `(${this.lang.dbHighest}${Math.max(...studentRates)}%·${this.lang.dbLowest}${Math.min(...studentRates)}%)`;
         }
 
         // 构建学生详情数据
@@ -868,7 +868,7 @@ export default {
           return {
             ...s,
             id: uid,
-            name: s.name || s.username || '未知',
+            name: s.name || s.username || this.lang.dbUnknown,
             tasksDone: studentTasks.size,
             tasksTotal: totalTasks,
             correctRate: correctRate,

+ 67 - 1
src/lang/cn.json

@@ -913,5 +913,71 @@
   "ssLinkNote": "注:课程识别码仅当天有效,每日重新生成",
   "ssTeachCode": "授课识别码",
   "ssShareCourse": "分享课程",
-  "ssShareCourseTip": "该链接无须登录可查看课程内容(PPT、工具等),不包含学生的提交结果。"
+  "ssShareCourseTip": "该链接无须登录可查看课程内容(PPT、工具等),不包含学生的提交结果。",
+  "dbBack": "返回",
+  "dbClass": "班级",
+  "dbStudentReport": "学生报告",
+  "dbExport": "导出",
+  "dbCourseOverview": "课程概况",
+  "dbGrade": "年级:",
+  "dbSubject": "学科:",
+  "dbClassLabel": "班级: ",
+  "dbClassTime": "上课时间: ",
+  "dbCourseSummary": "课程概述",
+  "dbCourseTheme": "课程主题:",
+  "dbTeachingGoals": "教学目标:",
+  "dbMainSegments": "主要环节:",
+  "dbAiDiagnosis": "AI 教学智能诊断报告",
+  "dbTaskOverview": "任务概况明细",
+  "dbTaskAndTool": "任务与工具",
+  "dbPage": "所在页码",
+  "dbSubmitRate": "提交率",
+  "dbCorrectRate": "正确率",
+  "dbInteractions": "互动次数",
+  "dbAvgTime": "平均用时",
+  "dbAiInsight": "AI 智能洞察",
+  "dbTimes": "次",
+  "dbParticipation": "参与度分层",
+  "dbStudentMatrix": "学生详情矩阵",
+  "dbSearchStudent": "搜索学生...",
+  "dbName": "姓名",
+  "dbTaskCompletion": "任务完成度",
+  "dbOverallCorrect": "综合正确率",
+  "dbAiChatRounds": "AI对话轮次",
+  "dbLikes": "点赞/被赞",
+  "dbRoundUnit": "轮",
+  "dbFocus": "关注",
+  "dbNoMatchStudent": "无匹配学生",
+  "dbAttendance": "出勤率",
+  "dbAvgSubmitRate": "平均提交率",
+  "dbAvgCorrectRate": "平均正确率",
+  "dbAiRounds": "AI 轮次",
+  "dbTotalInteractions": "总互动量",
+  "dbPeopleUnit": "人",
+  "dbSubmitCountUnit": "次提交",
+  "dbMax": "最多",
+  "dbMin": "最少",
+  "dbHighest": "最高",
+  "dbLowest": "最低",
+  "dbLikeCountUnit": "人点赞",
+  "dbTotalLikes": "总点赞数",
+  "dbAvgParticipation": "均参与度",
+  "dbHighFreq": "高频参与",
+  "dbMidFreq": "中等参与",
+  "dbLowFreq": "低频参与",
+  "dbTool45": "选择题",
+  "dbTool15": "问答题",
+  "dbTool73": "h5网页",
+  "dbTool72": "应用中心",
+  "dbTool78": "投票",
+  "dbTool79": "拍照",
+  "dbTool831": "Kwl表格",
+  "dbTool832": "六顶思考帽",
+  "dbTool84": "文件上传",
+  "dbGeneratingPdf": "正在生成PDF,请稍候...",
+  "dbExportSuccess": "PDF已导出",
+  "dbExportFailed": "导出失败",
+  "dbLoadModuleFailed": "加载导出模块失败",
+  "dbPdfFilename": "教学分析面板",
+  "dbUnknown": "未知"
 }

+ 67 - 1
src/lang/en.json

@@ -913,5 +913,71 @@
   "ssLinkNote": "Note: Course identification code is only valid for the day, regenerated daily.",
   "ssTeachCode": "Teaching Code",
   "ssShareCourse": "Share Course",
-  "ssShareCourseTip": "This link can be viewed without login and contains course content (PPT, tools, etc.), but does not include student submissions."
+  "ssShareCourseTip": "This link can be viewed without login and contains course content (PPT, tools, etc.), but does not include student submissions.",
+  "dbBack": "Back",
+  "dbClass": "Class",
+  "dbStudentReport": "Student Report",
+  "dbExport": "Export",
+  "dbCourseOverview": "Course Overview",
+  "dbGrade": "Grade: ",
+  "dbSubject": "Subject: ",
+  "dbClassLabel": "Class: ",
+  "dbClassTime": "Class Time: ",
+  "dbCourseSummary": "Course Summary",
+  "dbCourseTheme": "Theme: ",
+  "dbTeachingGoals": "Objectives: ",
+  "dbMainSegments": "Main Segments: ",
+  "dbAiDiagnosis": "AI Teaching Diagnosis Report",
+  "dbTaskOverview": "Task Overview",
+  "dbTaskAndTool": "Task & Tool",
+  "dbPage": "Page",
+  "dbSubmitRate": "Submission Rate",
+  "dbCorrectRate": "Accuracy",
+  "dbInteractions": "Interactions",
+  "dbAvgTime": "Avg. Time",
+  "dbAiInsight": "AI Insight",
+  "dbTimes": " times",
+  "dbParticipation": "Participation Levels",
+  "dbStudentMatrix": "Student Details",
+  "dbSearchStudent": "Search students...",
+  "dbName": "Name",
+  "dbTaskCompletion": "Task Completion",
+  "dbOverallCorrect": "Overall Accuracy",
+  "dbAiChatRounds": "AI Chat Rounds",
+  "dbLikes": "Likes/Liked",
+  "dbRoundUnit": " rounds",
+  "dbFocus": "Focus",
+  "dbNoMatchStudent": "No matching students",
+  "dbAttendance": "Attendance",
+  "dbAvgSubmitRate": "Avg. Submission",
+  "dbAvgCorrectRate": "Avg. Accuracy",
+  "dbAiRounds": "AI Rounds",
+  "dbTotalInteractions": "Total Interactions",
+  "dbPeopleUnit": " people",
+  "dbSubmitCountUnit": " submissions",
+  "dbMax": "Max ",
+  "dbMin": "Min ",
+  "dbHighest": "Highest ",
+  "dbLowest": "Lowest ",
+  "dbLikeCountUnit": " likes",
+  "dbTotalLikes": "Total Likes",
+  "dbAvgParticipation": "Avg. Participation",
+  "dbHighFreq": "High Frequency",
+  "dbMidFreq": "Medium Frequency",
+  "dbLowFreq": "Low Frequency",
+  "dbTool45": "Multiple Choice",
+  "dbTool15": "Q&A",
+  "dbTool73": "H5 Page",
+  "dbTool72": "App Center",
+  "dbTool78": "Vote",
+  "dbTool79": "Photo",
+  "dbTool831": "KWL Chart",
+  "dbTool832": "Six Thinking Hats",
+  "dbTool84": "File Upload",
+  "dbGeneratingPdf": "Generating PDF, please wait...",
+  "dbExportSuccess": "PDF exported",
+  "dbExportFailed": "Export failed",
+  "dbLoadModuleFailed": "Failed to load export module",
+  "dbPdfFilename": "Teaching Analysis Panel",
+  "dbUnknown": "Unknown"
 }

+ 67 - 1
src/lang/hk.json

@@ -913,5 +913,71 @@
   "ssLinkNote": "註:課程識別碼僅當天有效,每日重新生成",
   "ssTeachCode": "授課識別碼",
   "ssShareCourse": "分享課程",
-  "ssShareCourseTip": "該鏈接無須登錄可查看課程內容(PPT、工具等),不包含學生的提交結果。"
+  "ssShareCourseTip": "該鏈接無須登錄可查看課程內容(PPT、工具等),不包含學生的提交結果。",
+  "dbBack": "返回",
+  "dbClass": "班級",
+  "dbStudentReport": "學生報告",
+  "dbExport": "導出",
+  "dbCourseOverview": "課程概況",
+  "dbGrade": "年級:",
+  "dbSubject": "學科:",
+  "dbClassLabel": "班級: ",
+  "dbClassTime": "上課時間: ",
+  "dbCourseSummary": "課程概述",
+  "dbCourseTheme": "課程主題:",
+  "dbTeachingGoals": "教學目標:",
+  "dbMainSegments": "主要環節:",
+  "dbAiDiagnosis": "AI 教學智能診斷報告",
+  "dbTaskOverview": "任務概況明細",
+  "dbTaskAndTool": "任務與工具",
+  "dbPage": "所在頁碼",
+  "dbSubmitRate": "提交率",
+  "dbCorrectRate": "正確率",
+  "dbInteractions": "互動次數",
+  "dbAvgTime": "平均用時",
+  "dbAiInsight": "AI 智能洞察",
+  "dbTimes": "次",
+  "dbParticipation": "參與度分層",
+  "dbStudentMatrix": "學生詳情矩陣",
+  "dbSearchStudent": "搜索學生...",
+  "dbName": "姓名",
+  "dbTaskCompletion": "任務完成度",
+  "dbOverallCorrect": "綜合正確率",
+  "dbAiChatRounds": "AI對話輪次",
+  "dbLikes": "點讚/被讚",
+  "dbRoundUnit": "輪",
+  "dbFocus": "關注",
+  "dbNoMatchStudent": "無匹配學生",
+  "dbAttendance": "出勤率",
+  "dbAvgSubmitRate": "平均提交率",
+  "dbAvgCorrectRate": "平均正確率",
+  "dbAiRounds": "AI 輪次",
+  "dbTotalInteractions": "總互動量",
+  "dbPeopleUnit": "人",
+  "dbSubmitCountUnit": "次提交",
+  "dbMax": "最多",
+  "dbMin": "最少",
+  "dbHighest": "最高",
+  "dbLowest": "最低",
+  "dbLikeCountUnit": "人點讚",
+  "dbTotalLikes": "總點讚數",
+  "dbAvgParticipation": "均參與度",
+  "dbHighFreq": "高頻參與",
+  "dbMidFreq": "中等參與",
+  "dbLowFreq": "低頻參與",
+  "dbTool45": "選擇題",
+  "dbTool15": "問答題",
+  "dbTool73": "h5網頁",
+  "dbTool72": "應用中心",
+  "dbTool78": "投票",
+  "dbTool79": "拍照",
+  "dbTool831": "Kwl表格",
+  "dbTool832": "六頂思考帽",
+  "dbTool84": "文件上傳",
+  "dbGeneratingPdf": "正在生成PDF,請稍候...",
+  "dbExportSuccess": "PDF已導出",
+  "dbExportFailed": "導出失敗",
+  "dbLoadModuleFailed": "加載導出模塊失敗",
+  "dbPdfFilename": "教學分析面板",
+  "dbUnknown": "未知"
 }