Ver Fonte

国际化

dusenyao há 3 anos atrás
pai
commit
4ee65df951

+ 3 - 3
.vscode/vue.code-snippets

@@ -16,11 +16,11 @@
 	// 	"description": "Log output to console"
 	// }
 	"i18n-html": {
-		"prefix": "hi18n",
+		"prefix": "i18n-h",
 		"body": "{{ \\$t('Key$0') }}"
 	},
-	"i18n js": {
-		"prefix": "ji18n",
+	"i18n-js": {
+		"prefix": "i18n-j",
 		"body": "this.\\$i18n.t('Key$0')"
 	}
 }

Diff do ficheiro suprimidas por serem muito extensas
+ 302 - 146
package-lock.json


+ 11 - 11
package.json

@@ -3,7 +3,7 @@
   "version": "0.1.0",
   "description": "全球中文学习系统 教学系统 Web端",
   "scripts": {
-    "serve": "vue-cli-service serve",
+    "dev": "vue-cli-service serve",
     "build": "vue-cli-service build",
     "build:stage": "vue-cli-service build --mode staging",
     "build:report": "vue-cli-service build --report",
@@ -15,9 +15,9 @@
   "dependencies": {
     "ailp-book-question-ui": "file:../ailp-book-question-ui-0.1.1.tgz",
     "awe-dnd": "^0.3.4",
-    "axios": "^0.25.0",
-    "book-ui": "file:../book-ui-0.2.24.tgz",
-    "core-js": "^3.20.3",
+    "axios": "^0.26.0",
+    "book-ui": "file:../book-ui-0.2.25.tgz",
+    "core-js": "^3.21.0",
     "dayjs": "^1.10.7",
     "element-ui": "^2.15.6",
     "gcls-book-question-ui": "file:../gcls-book-question-ui-0.1.0.tgz",
@@ -34,8 +34,8 @@
     "vuex": "^3.6.2"
   },
   "devDependencies": {
-    "@babel/core": "^7.16.12",
-    "@babel/eslint-parser": "^7.16.5",
+    "@babel/core": "^7.17.2",
+    "@babel/eslint-parser": "^7.17.0",
     "@babel/preset-env": "^7.16.11",
     "@rushstack/eslint-patch": "^1.1.0",
     "@vue/cli-plugin-babel": "~4.5.15",
@@ -46,24 +46,24 @@
     "@vue/cli-service": "~4.5.15",
     "@vue/eslint-config-prettier": "^7.0.0",
     "@vue/test-utils": "^1.3.0",
-    "babel-jest": "^27.4.6",
+    "babel-jest": "^27.5.1",
     "babel-loader": "^8.2.3",
     "babel-plugin-dynamic-import-node": "^2.3.3",
     "compression-webpack-plugin": "^6.1.1",
     "eslint": "^7.32.0",
     "eslint-plugin-prettier": "^4.0.0",
-    "eslint-plugin-vue": "^8.3.0",
+    "eslint-plugin-vue": "^8.4.1",
     "html-webpack-plugin": "^5.3.1",
-    "postcss": "^8.4.5",
+    "postcss": "^8.4.6",
     "postcss-html": "^1.3.0",
     "prettier": "2.5.1",
-    "sass": "^1.49.0",
+    "sass": "^1.49.7",
     "sass-loader": "^10.2.0",
     "script-ext-html-webpack-plugin": "^2.1.5",
     "stylelint": "^14.0.1",
     "stylelint-config-prettier": "^9.0.3",
     "stylelint-config-recess-order": "^3.0.0",
-    "stylelint-config-recommended-vue": "^1.1.0",
+    "stylelint-config-recommended-vue": "^1.3.0",
     "stylelint-config-sass-guidelines": "^9.0.1",
     "stylelint-config-standard-scss": "^3.0.0",
     "stylelint-declaration-block-no-ignored-properties": "^2.5.0",

+ 2 - 2
src/components/StepBar.vue

@@ -38,14 +38,14 @@ export default {
   },
   created() {
     this.updateWordPack({
-      word_key_list: ['Key264', 'Key275', 'Key265', 'Key282', 'Key263']
+      word_key_list: ['Key264', 'Key275', 'Key265', 'Key282', 'Key263', 'Key623']
     });
   },
   methods: {
     stepName(num) {
       if (num === this.stepNumber) return this.$i18n.t('Key282');
       if (num > this.stepNumber) return this.$i18n.t('Key263');
-      if (num < this.stepNumber) return '已完成';
+      if (num < this.stepNumber) return this.$i18n.t('Key623');
     }
   }
 };

+ 17 - 4
src/components/live/CurMaterial.vue

@@ -10,7 +10,7 @@
       <span class="dialog-header-title">
         {{
           isCurMaterial
-            ? `当前推送资料 - ${material_name}`
+            ? `${$t('Key637')} - ${material_name}`
             : `${$t('Key274')} - ${material_type === 'COURSEWARE' ? $t('Key309') : $t('Key244')} - ${material_name}`
         }}
       </span>
@@ -214,7 +214,20 @@ export default {
     this.getCurMaterialSent();
 
     this.updateWordPack({
-      word_key_list: ['Key274', 'Key309', 'Key244', 'Key320', 'Key321', 'Key194', 'Key195', 'Key82', 'Key333', 'Key323']
+      word_key_list: [
+        'Key274',
+        'Key309',
+        'Key244',
+        'Key320',
+        'Key321',
+        'Key194',
+        'Key195',
+        'Key82',
+        'Key333',
+        'Key323',
+        'Key623',
+        'Key637'
+      ]
     });
   },
   beforeDestroy() {
@@ -380,7 +393,7 @@ export default {
         }
       })
         .then(() => {
-          this.$message.success('已完成');
+          this.$message.success(this.$i18n.t('Key623'));
           this.dialogMaterialClose();
         })
         .finally(() => {
@@ -402,7 +415,7 @@ export default {
         exam_answer: this.exam_answer
       })
         .then(() => {
-          this.$message.success('已完成');
+          this.$message.success(this.$i18n.t('Key623'));
           this.dialogMaterialClose();
         })
         .finally(() => {

+ 15 - 3
src/components/payment/Audit.vue

@@ -50,7 +50,7 @@
       :show-close="false"
     >
       <div>
-        申请已经提交,请留意系统通知或在 <a class="jump" @click="goPersonal">个人中心-订单管理</a> 页面查询审核结果。
+        {{ $t('Key629') }} <a class="jump" @click="goPersonal">{{ $t('Key8') }}-{{ $t('Key65') }}</a> {{ $t('Key630') }}
       </div>
       <div slot="footer">
         <el-button type="primary" @click="visible = false">
@@ -101,7 +101,19 @@ export default {
   },
   created() {
     this.updateWordPack({
-      word_key_list: ['Key53', 'Key54', 'Key55', 'Key56', 'Key57', 'Key94']
+      word_key_list: [
+        'Key53',
+        'Key54',
+        'Key55',
+        'Key56',
+        'Key57',
+        'Key94',
+        'Key629',
+        'Key630',
+        'Key8',
+        'Key65',
+        'Key631'
+      ]
     });
   },
   // 方法集合
@@ -112,7 +124,7 @@ export default {
         course_id: this.goodsId, // 课程 ID
         discount_code: this.discount_code // 优惠码 (目前暂时没有用到)
       }).then(() => {
-        this.$message.success('申请加入课程成功');
+        this.$message.success(this.$i18n.t('Key631'));
         this.visible = true;
       });
     },

+ 11 - 4
src/views/live/student/index.vue

@@ -101,7 +101,7 @@
             <el-input
               v-model="msg"
               :disabled="!roomData.allow_chat"
-              :placeholder="roomData.allow_chat ? $t('Key410') : '已全体禁言'"
+              :placeholder="roomData.allow_chat ? $t('Key410') : $t('Key640')"
               maxlength="400"
               @keydown.enter.native="sendMsg"
             >
@@ -345,7 +345,14 @@ export default {
         'Key445',
         'Key446',
         'Key403',
-        'Key456'
+        'Key456',
+        'Key640',
+        'Key633',
+        'Key632',
+        'Key641',
+        'Key642',
+        'Key643',
+        'Key644'
       ]
     });
   },
@@ -474,7 +481,7 @@ export default {
           video_mode: this.roomInfo.video_mode
         });
         this.handsDown();
-        return this.$message.warning(`当前没有设置${this.roomInfo.video_mode === 1 ? '视频' : '音频'}设备`);
+        return this.$message.warning(this.roomInfo.video_mode === 1 ? this.$i18n.t('Key641') : this.$i18n.t('Key642'));
       }
 
       common.inviteAccept({
@@ -484,7 +491,7 @@ export default {
         },
         fail: data => {
           console.log('接受邀请失败', data);
-          this.$message.warning(`接受邀请失败 ${data.errorMsg}`);
+          this.$message.warning(`${this.$i18n.t('Key643')} ${data.errorMsg}`);
           this.callLoading = false;
         }
       });

+ 2 - 2
src/views/live/student/live.js

@@ -179,7 +179,7 @@ export function initListener(vue) {
     console.log('直播已关闭', str);
     Message({
       type: 'success',
-      message: '直播已关闭'
+      message: i18n.t('Key644')
     });
     vue.liveStat = false;
   });
@@ -322,7 +322,7 @@ export function initListener(vue) {
   rtc.on('allowChatChange', ({ settings }) => {
     Message({
       type: 'success',
-      message: `已${settings.allow_chat ? '关闭' : '开启'}全体禁言`
+      message: settings.allow_chat ? i18n.t('Key633') : i18n.t('Key632')
     });
   });
 

+ 4 - 4
src/views/live/teacher/group.js

@@ -80,10 +80,10 @@ export function initListener(vue) {
   // 教师 必须在加入房间成功的事件回调里创建本地流
   rtc.on('conference_join', () => {
     console.log('加入房间成功');
-    // Message({
-    //   message: '加入房间成功',
-    //   type: 'success'
-    // });
+    Message({
+      message: i18n.t('Key645'),
+      type: 'success'
+    });
 
     rtc.handsUp({
       success: str => {

+ 2 - 1
src/views/live/teacher/group.vue

@@ -313,7 +313,8 @@ export default {
         'Key417',
         'Key443',
         'Key402',
-        'Key403'
+        'Key403',
+        'Key645'
       ]
     });
   },

+ 3 - 1
src/views/live/teacher/index.vue

@@ -464,7 +464,9 @@ export default {
         'Key452',
         'Key453',
         'Key454',
-        'Key455'
+        'Key455',
+        'Key632',
+        'Key633'
       ]
     });
   },

+ 1 - 1
src/views/live/teacher/live.js

@@ -329,7 +329,7 @@ export function initListener(vue) {
   rtc.on('allowChatChange', ({ settings }) => {
     Message({
       type: 'success',
-      message: `已${settings.allow_chat ? '关闭' : '开启'}全体禁言`
+      message: settings.allow_chat ? i18n.t('Key633') : i18n.t('Key632')
     });
   });
 

+ 6 - 4
src/views/main/TaskList.vue

@@ -88,7 +88,7 @@
               <span class="cs-item-name">
                 {{ cs_item_name }} - {{ name }}
                 <span v-if="teaching_type === 10" class="enter-live" @click.stop="taskLink(teaching_type, id)">
-                  进入直播间 >
+                  {{ $t('Key616') }} >
                 </span>
               </span>
               <span
@@ -171,7 +171,9 @@ export default {
         'key294',
         'Key289',
         'Key310',
-        'Key311'
+        'Key311',
+        'Key616',
+        'Key635'
       ]
     });
   },
@@ -238,7 +240,7 @@ export default {
       let userType = this.$store.state.user.user_type;
       GetMyBookBuyStatus_CurTaskCoursewareBook({ task_id }).then(({ is_buy_all }) => {
         if (is_buy_all === 'false' && userType === 'STUDENT') {
-          return this.$message.warning('您还未购买任务关联课件的所有相关教材,请购买');
+          return this.$message.warning(this.$i18n.t('Key635'));
         }
 
         if (type === 10) {
@@ -260,7 +262,7 @@ export default {
       GetMyBookBuyStatus_CurTaskCoursewareBook({ task_id }).then(({ is_buy_all }) => {
         const userType = this.$store.state.user.user_type;
         if (is_buy_all === 'false' && userType === 'STUDENT') {
-          return this.$message.warning('您还未购买任务关联课件的所有相关教材,请购买');
+          return this.$message.warning(this.$i18n.t('Key635'));
         }
         this.$router.push(`/task_detail/${userType === 'STUDENT' ? 'student' : 'teacher'}/${task_id}`);
       });

+ 8 - 4
src/views/main/TemplateList.vue

@@ -138,7 +138,11 @@ export default {
         'Key129',
         'Key217',
         'Key286',
-        'Key253'
+        'Key253',
+        'Key620',
+        'Key621',
+        'Key622',
+        'Key638'
       ]
     });
     this.queryCourseList();
@@ -170,21 +174,21 @@ export default {
         if (is_has_popedom === 'true') {
           return this.$router.push(`/create_course_step_table/course_info?id=${id}&is_template=true`);
         }
-        this.$message.warning('您没有编辑该模板的权限');
+        this.$message.warning(this.$i18n.t('Key620'));
       });
     },
 
     releaseCourse(course_id, is_release) {
       ReleaseCourse({ course_id, is_release }).then(() => {
         this.queryCourseList();
-        this.$message.success(`${is_release ? '' : '取消'}发布课程成功`);
+        this.$message.success(is_release ? this.$i18n.t('Key621') : this.$i18n.t('Key622'));
       });
     },
 
     deleteCourse(id) {
       DeleteCourse({ id }).then(() => {
         this.queryCourseList();
-        this.$message.success('删除课程成功');
+        this.$message.success(this.$i18n.t('Key638'));
       });
     },
 

+ 19 - 5
src/views/main/curricula_list/student.vue

@@ -42,17 +42,19 @@
     <div class="curricula-student-container">
       <div class="curricula-student-container-title">
         <div>
-          <span class="tip"> 你也可以去 <a @click="goLearningCenter">学习中心</a> 选择更多的课程。 </span>
+          <span class="tip">
+            {{ $t('Key627') }} <a @click="goLearningCenter">{{ $t('Key7') }}</a> {{ $t('Key628') }}
+          </span>
         </div>
       </div>
       <div class="curricula-student-container-list">
         <el-table :data="courseList">
           <el-table-column prop="course_name" :label="$t('Key203')" width="300" />
-          <el-table-column label="课程教师" prop="teacher_name_desc" width="360" />
+          <el-table-column :label="$t('Key617')" prop="teacher_name_desc" width="360" />
           <el-table-column :label="$t('Key250')" width="280">
             <template slot-scope="{ row }"> <i class="el-icon-date" /> {{ row.date_space_view_text }} </template>
           </el-table-column>
-          <el-table-column label="完成状态" width="140">
+          <el-table-column :label="$t('Key614')" width="140">
             <template slot-scope="{ row }">
               <span class="status-name" :style="{ 'background-color': statusColor(row.finish_status) }" />
               <span :style="{ color: statusColor(row.finish_status) }">
@@ -60,7 +62,7 @@
               </span>
             </template>
           </el-table-column>
-          <el-table-column label="购买状态">
+          <el-table-column :label="$t('Key615')">
             <template slot-scope="{ row }">
               <span>{{ row.buy_status_name }}</span>
             </template>
@@ -113,7 +115,19 @@ export default {
   },
   created() {
     this.updateWordPack({
-      word_key_list: ['Key131', 'Key295', 'Key168', 'Key203', 'Key250']
+      word_key_list: [
+        'Key131',
+        'Key295',
+        'Key168',
+        'Key203',
+        'Key250',
+        'Key614',
+        'Key615',
+        'Key617',
+        'Key627',
+        'Key628',
+        'Key7'
+      ]
     });
     this.initData();
   },

+ 8 - 4
src/views/main/curricula_list/teacher.vue

@@ -141,7 +141,11 @@ export default {
         'key279',
         'Key94',
         'Key83',
-        'Key361'
+        'Key361',
+        'Key638',
+        'Key639',
+        'Key621',
+        'Key622'
       ]
     });
     this.queryMyCourseList();
@@ -196,18 +200,18 @@ export default {
     releaseCourse(course_id, is_release) {
       ReleaseCourse({ course_id, is_release }).then(() => {
         this.queryMyCourseList();
-        this.$message.success(`${is_release ? '' : '取消'}发布课程成功`);
+        this.$message.success(is_release ? this.$i18n.t('Key621') : this.$i18n.t('Key622'));
       });
     },
 
     deleteCourse(id) {
-      this.$confirm('您确定要删除该课程吗?', this.$i18n.t('Key361'), {
+      this.$confirm(this.$i18n.t('Key639'), this.$i18n.t('Key361'), {
         confirmButtonText: this.$i18n.t('Key94'),
         cancelButtonText: this.$i18n.t('Key83'),
         type: 'warning'
       }).then(() => {
         DeleteCourse({ id }).then(() => {
-          this.$message.success('删除课程成功');
+          this.$message.success(this.$i18n.t('Key638'));
           this.queryMyCourseList();
         });
       });

+ 4 - 2
src/views/task_details/teacher/index.vue

@@ -194,7 +194,9 @@ export default {
         'Key338',
         'Key324',
         'Key325',
-        'Key278'
+        'Key278',
+        'Key618',
+        'Key619'
       ]
     });
     GetTaskInfo({
@@ -309,7 +311,7 @@ export default {
     buttonName() {
       let list = this.student_list;
       if (list.length <= 0) return '';
-      return list[list.length - 1].student_id === this.curStudentId ? '上一个' : '下一个';
+      return list[list.length - 1].student_id === this.curStudentId ? this.$i18n.t('Key618') : this.$i18n.t('Key619');
     },
 
     remarkTaskStudentExecuteInfo_Teacher() {

+ 3 - 2
src/views/teacher/create_course/step_table/CreateTask.vue

@@ -416,7 +416,8 @@ export default {
         'Key363',
         'Key364',
         'Key365',
-        'Key366'
+        'Key366',
+        'Key636'
       ]
     });
   },
@@ -549,7 +550,7 @@ export default {
         });
       }
       if (type === 'delete') {
-        this.$confirm('您确定要删除该任务吗?', this.$i18n.t('Key361'), {
+        this.$confirm(this.$i18n.t('Key636'), this.$i18n.t('Key361'), {
           confirmButtonText: this.$i18n.t('Key94'),
           cancelButtonText: this.$i18n.t('Key83'),
           type: 'warning'

+ 3 - 2
src/views/teacher/create_course/step_table/NewTask.vue

@@ -165,7 +165,7 @@
                 </div>
               </el-form-item>
 
-              <el-form-item label="任务模式">
+              <el-form-item :label="$t('Key634')">
                 <el-radio v-for="item in mode_list" :key="item.code" v-model="courseForm.task_mode" :label="item.code">
                   {{ item.name }}
                 </el-radio>
@@ -357,7 +357,8 @@ export default {
         'Key94',
         'Key382',
         'Key384',
-        'Key385'
+        'Key385',
+        'Key634'
       ]
     });
   },

+ 19 - 16
src/views/teacher/student_list/index.vue

@@ -117,7 +117,20 @@ export default {
   created() {
     this.queryCourseStudentList();
     this.updateWordPack({
-      word_key_list: ['Key131', 'Key299', 'Key298', 'Key296', 'Key303', 'Key304', 'Key305', 'Key306', 'Key307']
+      word_key_list: [
+        'Key131',
+        'Key299',
+        'Key298',
+        'Key296',
+        'Key303',
+        'Key304',
+        'Key305',
+        'Key306',
+        'Key307',
+        'Key624',
+        'Key625',
+        'Key626'
+      ]
     });
   },
   methods: {
@@ -163,16 +176,16 @@ export default {
     },
 
     sendMessageToCourseStudent(content) {
-      let loading = this.$loading('发送消息中...');
+      let loading = this.$loading(this.$i18n.t('Key624'));
       SendMessageToCourseStudent({
         course_id: this.course_id,
         content,
         type: this.type,
         student_id: this.student_id
       })
-        .then(({ message_count }) => {
+        .then(() => {
           this.visible = false;
-          this.$message.success(`已成功发送${message_count}条消息`);
+          this.$message.success(this.$i18n.t('Key626'));
         })
         .finally(() => {
           loading.close();
@@ -181,7 +194,7 @@ export default {
 
     auditCourseStudent(course_student_id, is_audited) {
       AuditCourseStudent({ course_student_id, is_audited }).then(() => {
-        this.$message.success('审核课程学员成功!');
+        this.$message.success(this.$i18n.t('Key625'));
         this.queryCourseStudentList();
       });
     }
@@ -257,7 +270,7 @@ export default {
       min-height: calc(100vh - 343px);
       margin-top: 0;
 
-      .el-table__header {
+      ::v-deep .el-table__header {
         display: none;
       }
 
@@ -286,13 +299,3 @@ export default {
   }
 }
 </style>
-
-<style lang="scss">
-.student-list {
-  .student-table {
-    .el-table__header {
-      display: none;
-    }
-  }
-}
-</style>

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff