Forráskód Böngészése

1. 添加国际化

Cee Yang 3 éve
szülő
commit
34cfa7b3a0
7 módosított fájl, 1136 hozzáadás és 21 törlés
  1. 270 0
      i18n/en.js
  2. 16 0
      i18n/index.js
  3. 268 0
      i18n/zh.js
  4. 16 17
      main.js
  5. 557 0
      package-lock.json
  6. 5 0
      package.json
  7. 4 4
      pages/login/index.vue

+ 270 - 0
i18n/en.js

@@ -0,0 +1,270 @@
+const en = {
+  "appTitle": "i2School",
+  "appVersion": "Version",
+
+  "update_tips": "Update Tips",
+  "update_now": "Update Now",
+  "downloading": "Downloading...",
+
+  "pageErrTips": "Tips",
+  "pageErrDesc": "Internal Error,Please Click Back",
+  "loadFailure": "Load Failure",
+  "noData": "No Data",
+  "unconnectedNetwork": "Unconnected Network",
+  "connectTimeout": "Connect Timeout",
+  "serverError": "Server Error",
+  "loginTimeOut": "System timeout, Please click OK to login again",
+  "ok": "OK",
+  "back": "back",
+  "clickToReload": "Click to reload",
+  "anErrorOccurred": "An error occurred",
+  "feedbackAuditedHint": "The feedback has been audited and can not be modified",
+  "homeworkAuditedHint": "The homework has been audited and can not be modified",
+  "noPermission": "You do not have permission to operate",
+  "loggingIn": "logging...",
+  "waiting": "waiting...",
+  "loading": "loading...",
+  "uploading": "uploading",
+  "compressing": "compressing",
+  "uploadFailed": "upload failed",
+  "addSussed": "Added successfully",
+  "addFailure": "Add failed",
+  "modifySussed": "Modified successfully",
+  "modifyFailure": "Modify failed",
+  "auditSussed": "Audit successfully",
+  "auditFailure": "Audit failed",
+  "publishSussed": "Published successfully",
+  "publishFailure": "Published failed",
+  "passwordVerify": "The length is between 6 and 18 and can only contain letters, numbers and underscores",
+  "inconsistentPasswords": "Inconsistent passwords",
+  "starEmpty":"Star rating can not be empty",
+  "phoneError":"Phone number error",
+
+  "name": "Name",
+  "phone": "Phone",
+  "contactWay":"Contact Way",
+  "remark":"Remark",
+  "submit": "Submit",
+  "confirm": "Confirm",
+  "publish": "Publish",
+  "save": "Save",
+  "pleaseInput": "Please Input ",
+  "pleaseEnter": "Please Enter ",
+
+  "year": "Year",
+  "month": "Month",
+  "day": "Day",
+  "hour": "Hour",
+  "minute": "Minute",
+  "second": "Second",
+  "sun": "Sun",
+  "mon": "Mon",
+  "tue": "Tue",
+  "wed": "Wed",
+  "thu": "Thu",
+  "fri": "Fri",
+  "sat": "Sat",
+  "sunWeek": "Sunday",
+  "monWeek": "Monday",
+  "tueWeek": "Tuesday",
+  "wedWeek": "Wednesday",
+  "thuWeek": "Thursday",
+  "friWeek": "Friday",
+  "satWeek": "Saturday",
+
+  "select": "Select",
+  "delete": "Delete",
+  "pleaseChoose": "Please Choose",
+  "cancel": "Cancel",
+  "shot": "Shot",
+  "photos": "Photos",
+  "camera": "Camera",
+  "picture": "Picture",
+  "video": "Video",
+  "voice": "Voice",
+  "addPictures": "Add Pictures",
+  "addVideos": "Add Videos",
+  "addVoice": "Add Voice",
+  "rerecord": "Rerecord",
+  "clickStartRecord": "Click Start Record",
+  "clickFinishRecord": "Click Finish Record",
+  "clickPreview": "Click Preview",
+
+  "login": "Login",
+  "FT":"Foreign Teacher",
+  "TA": "TA Teaching Advisor",
+  "userName": "User Name",
+  "password": "Password",
+  "switchLanguage": "切换至中文",
+  "forgetPassword": "Forget Password?",
+  "logIn": "log In",
+  "loginFailure": "Login Failure",
+  "userPasswordError": "User Name Or Password Incorrect",
+
+  "calendar": "Calendar",
+  "message": "Message",
+  "statistics": "Statistics",
+  "me": "Me",
+
+  "classInteraction": "Class Interaction",
+  "notification": "Notification",
+
+  "student": "Student",
+  "teacher": "Teacher",
+  "onGoing": "On-going",
+  "finished": "Finished",
+  "absence": "Absence",
+
+  "attendanceSituation": "Attendance Situation",
+  "attendanceExpected": "Attendance Expected",
+  "attendancePresent": "Attendance Present",
+  "classAttendance": "Class Attendance",
+  "lessonAttendance": "Lesson Attendance",
+  "ftAttendanceSituation": "FT Attendance Situation",
+  "stAttendanceSituation": "Attendance Situation",
+  "attendanceStatus": "Attendance Status",
+  "countedOrNot": "Counted Or Not",
+  "kqAttend": "Attend",
+  "kqLate": "Late",
+  "kqAbsence": "Absence",
+  "kqLeave": "Leave",
+  "kqCancel": "Cancel",
+  "kqCounted": "Counted",
+  "kqNOCounted": "Not Counted",
+  "notCountedReason": "Not Counted Reason",
+  "pleaseEnterCancelReason": "Please Enter Cancel Reason",
+  "pleaseChooseAttendance": "Please Choose Attendance Status",
+  "kqSickLeave": "Sick Leave",
+  "kqCasualLeave": "Casual Leave",
+  "kqTAAnnualLeave": "TA Annual Leave",
+  "kqTASickLeave": "TA Sick Leave",
+  "kqTACasualLeave": "TA Casual Leave",
+  "kqOtherLeave": "Other",
+
+  "pass": "Pass",
+  "unPass": "UnPass",
+  "hint": "Hint",
+  "areYouSure": "Are you sure?",
+  "sure": "Sure",
+  "reasonsRefusal": "Please enter the reasons for refusal",
+  "reason": "reason",
+
+  "position": "Position",
+  "email": "Email",
+  "contactPhone": "Phone",
+  "city": "City",
+  "campus": "Campus",
+  "department": "Department",
+  "referralList": "Referral List",
+  "renewList": "Renew List",
+  "onProcessingList": "On Processing List",
+  "auditList": "Audit List",
+  "setting": "Setting",
+  "changePassword": "Change Password",
+  "aboutUs": "About Us",
+  "mineFeedback": "Feedback",
+  "logOut": "Log Out",
+  "oldPassword": "Old Password",
+  "newPassword": "New Password",
+  "confirmPassword": "Confirm Password",
+  "personalInfo": "Personal Info",
+
+  "lessonDetail": "Lesson Detail",
+  "classId": "Class ID",
+  "textBook": "Text Book",
+  "lessonDate": "Date",
+  "lessonTime": "Time",
+  "ft": "FT",
+  "lessonClass":"Class",
+  "classroom":"Classroom",
+  "attendance": "Attendance",
+  "addLessonRecord": "Add Lesson Record",
+  "addLessonContent": "Add Lesson Content",
+  "addLessonFeedback": "Add Lesson Feedback",
+  "addLessonHomework": "Add Lesson Homework",
+  "editLessonRecord": "Modify Lesson Record",
+  "editLessonContent": "Modify Lesson Content",
+  "editLessonFeedback": "Modify Lesson Feedback",
+  "editLessonHomework": "Modify Lesson Homework",
+  "add": "Add",
+  "edit": "Edit",
+  "lessonRecord": "Lesson Record",
+  "lessonContent": "Lesson Content",
+  "lessonFeedback": "Lesson Feedback",
+  "lessonHomework": "Lesson Homework",
+  "classRecord": "Class Record",
+  "studentRecord": "Student Record",
+  "classContent": "class Content",
+  "studentContent": "Student Content",
+  "classFeedback": "Class Feedback",
+  "studentFeedback": "Student Feedback",
+  "classHomework": "Class Homework",
+  "studentHomework": "Student Homework",
+  "homeworkInstruction": "Homework Instruction",
+  "homeworkRequirements": "Homework Requirements",
+  "pleaseChooseStudent": "Please select students",
+  "pleaseChooseClass": "Please select a class",
+  "sHomework": "'s Homework",
+  "homework": "Homework",
+  "completed": "Completed",
+  "unCompleted": "Uncompleted",
+  "cancelReason": "Cancel Reason",
+  "feedback": "Feedback",
+  "Completed": "Completed",
+  "Uncompleted": "Uncompleted",
+  "Assigned": "Assigned",
+  "Unassigned": "Unassigned",
+
+  "studentInfo": "Student Info",
+  "lessonPeriodInfo": "Lesson Period Info",
+  "totalLessonPeriod": "Total\nLesson Period",
+  "languageLessonPeriod": "Language\nLesson Period",
+  "PBLLessonPeriod": "PBL\nLesson Period",
+  "studentsIntention": "Student Intention",
+  "followUp": "Follow Up",
+  "notIntention": "Not Intention",
+  "lesson": "Lesson",
+  "pleaseEnterReason": "Please Enter Reason",
+  "audit": "Audit",
+  "audited": "Audited",
+  "unAudited": "UnAudited",
+  "time": "Time",
+  "timeSetting": "Time Setting",
+  "startTime": "Start Time",
+  "endTime": "End Time",
+
+  "feedbackAudit": "Feedback Audit",
+  "addHomeworkAudit": "Add Homework Audit",
+  "correctAudit": "Correct Audit",
+
+  "studentAnswer": "Student's Answer",
+  "teacherCorrection": "Teacher's Correction",
+  "refusalReason": "Refusal reason",
+  "homeworkEvaluation": "Homework Evaluation",
+  "addEvaluationContent": "Please Enter Homework Evaluation Content",
+  "homeworkCorrect": "Homework Correct",
+  "correct": "Correct",
+
+  "selectStudent": "Select Student",
+  "selectClass": "Select Class",
+  "selectAll": "select all",
+  "cancelAll": "Cancel all",
+  "see": "see",
+  "hear": "hear",
+  "say": "say",
+  "read": "read",
+  "write": "write",
+  "comprehensionSkills": "Comprehension Skills",
+
+  "notificationDetail": "Notification Detail",
+  "notificationTitleHint": "Please enter a notification title",
+  "notificationContentHint": "Please enter notification content",
+  "receiveClass": "Class",
+  "notificationClass": "Class",
+
+  "hintMsgByPageExit": "Are you sure you want to exit?",
+  "saveAndExit": "Save and exit",
+  "exit": "Exit",
+  "expand": "Expand"
+}
+export default en;

+ 16 - 0
i18n/index.js

@@ -0,0 +1,16 @@
+import en from './en.js'
+import zh from './zh.js'
+import VueI18n from 'vue-i18n'
+import Vue from 'vue'
+
+Vue.use(VueI18n)
+
+const i18n = new VueI18n({
+	locale: 'zh',
+	messages: {
+		'zh': zh,
+		'en': en
+	}
+})
+
+export default i18n

+ 268 - 0
i18n/zh.js

@@ -0,0 +1,268 @@
+const cn = {
+  "appTitle": "i2School",
+  "appVersion": "版本号",
+
+  "update_tips": "发现新版本",
+  "update_now": "立即更新",
+  "downloading": "正在后台下载...",
+
+  "pageErrTips": "操作提示",
+  "pageErrDesc": "当前网络不稳定,点击屏幕返回",
+  "loadFailure": "加载失败",
+  "noData": "暂无数据",
+  "unconnectedNetwork": "未连接网络",
+  "connectTimeout": "连接超时",
+  "serverError": "服务器发生错误",
+  "loginTimeOut": "登录超时,请重新登录",
+  "ok": "好的",
+  "back": "返回",
+  "clickToReload": "点击重新加载",
+  "anErrorOccurred": "出现错误了",
+  "feedbackAuditedHint": "该反馈已经通过审核,不能修改",
+  "homeworkAuditedHint": "该作业已经通过审核,不能修改",
+  "noPermission": "没有操作权限",
+  "loggingIn": "登录中...",
+  "waiting": "等待中...",
+  "loading": "加待中...",
+  "uploading": "上传中",
+  "compressing": "压缩中",
+  "uploadFailed": "上传失败",
+  "addSussed": "添加成功",
+  "addFailure": "添加失败",
+  "modifySussed": "修改成功",
+  "modifyFailure": "修改失败",
+  "auditSussed": "审核成功",
+  "auditFailure": "审核失败",
+  "publishSussed": "发布成功",
+  "publishFailure": "发布失败",
+  "passwordVerify": "长度在6~18之间,只能包含字母、数字和下划线",
+  "inconsistentPasswords": "密码不一致",
+  "starEmpty":"星级评价不能为空",
+  "phoneError":"手机号错误",
+
+  "year": "年",
+  "month": "月",
+  "day": "日",
+  "hour": "时",
+  "minute": "分",
+  "second": "秒",
+  "sun": "日",
+  "mon": "一",
+  "tue": "二",
+  "wed": "三",
+  "thu": "四",
+  "fri": "五",
+  "sat": "六",
+  "sunWeek": "星期日",
+  "monWeek": "星期一",
+  "tueWeek": "星期二",
+  "wedWeek": "星期三",
+  "thuWeek": "星期四",
+  "friWeek": "星期五",
+  "satWeek": "星期六",
+
+  "name": "姓名",
+  "phone": "手机号",
+  "contactWay":"联系方式",
+  "remark":"备注",
+  "submit": "提交",
+  "confirm": "确定",
+  "publish": "发布",
+  "save": "保存",
+  "pleaseInput": "请输入",
+  "pleaseEnter": "请填写",
+
+  "login": "登录",
+  "FT":"Foreign Teacher",
+  "TA": "TA 教学督导",
+  "userName": "用户名",
+  "password": "密码",
+  "switchLanguage": "Switch To English",
+  "forgetPassword": "忘记密码?",
+  "logIn": "立即登录",
+  "loginFailure": "登录失败",
+  "userPasswordError": "用户名或密码错误",
+
+  "select": "选择",
+  "delete": "删除",
+  "pleaseChoose": "请选择",
+  "cancel": "取消",
+  "shot": "拍摄",
+  "photos": "相册",
+  "camera": "相机",
+  "picture": "图片",
+  "video": "视频",
+  "voice": "语音",
+  "addPictures": "添加图片",
+  "addVideos": "添加视频",
+  "addVoice": "添加语音",
+  "rerecord": "重录",
+  "clickStartRecord": "点击开始录音",
+  "clickFinishRecord": "点击结束录音",
+  "clickPreview": "点击预览",
+
+  "calendar": "日程",
+  "message": "消息",
+  "statistics": "统计",
+  "me": "我的",
+
+  "classInteraction": "课堂互动",
+  "notification": "通知",
+
+  "student": "学员",
+  "onGoing": "未上完课",
+  "finished": "已上课",
+  "absence": "未上课",
+
+  "attendanceSituation": "考勤情况",
+  "attendanceExpected": "学员应到",
+  "attendancePresent": "学员实到",
+  "classAttendance": "班级考勤",
+  "lessonAttendance": "课程考勤状态",
+  "ftAttendanceSituation": "老师到课详情",
+  "stAttendanceSituation": "学生到课详情",
+  "attendanceStatus": "考勤状态",
+  "countedOrNot": "是否算课时",
+  "kqAttend": "正常上课",
+  "kqLate": "迟到",
+  "kqAbsence": "缺勤",
+  "kqLeave": "请假",
+  "kqCancel": "班级取消",
+  "kqCounted": "算课时",
+  "kqNOCounted": "不算课时",
+  "notCountedReason": "不算课时原因",
+  "pleaseEnterCancelReason": "请填写取消原因",
+  "pleaseChooseAttendance": "选择考勤状态",
+  "kqSickLeave": "病假",
+  "kqCasualLeave": "事假",
+  "kqTAAnnualLeave": "外教年假",
+  "kqTASickLeave": "外教病假",
+  "kqTACasualLeave": "外教事假",
+  "kqOtherLeave": "其他",
+
+  "pass": "审核通过",
+  "unPass": "审核不通过",
+  "hint": "提示",
+  "areYouSure": "你确定吗?",
+  "sure": "确定",
+  "reasonsRefusal": "请输入不通过原因",
+  "reason": "原因",
+
+  "position": "角色",
+  "email": "电子邮箱",
+  "contactPhone": "联系电话",
+  "city": "城市",
+  "campus": "校区",
+  "department": "所属事业部",
+  "referralList": "老推列表",
+  "renewList": "续费列表",
+  "onProcessingList": "待审核列表",
+  "auditList": "审核列表",
+  "setting": "设置",
+  "changePassword": "修改密码",
+  "aboutUs": "关于我们",
+  "mineFeedback": "意见反馈",
+  "logOut": "退出账号",
+  "oldPassword": "旧密码",
+  "newPassword": "新密码",
+  "confirmPassword": "确认密码",
+  "personalInfo": "个人资料",
+
+  "lessonDetail": "课堂详情",
+  "classId": "班号",
+  "textBook": "教材",
+  "lessonDate": "上课日期",
+  "lessonTime": "上课时间",
+  "ft": "外教",
+  "lessonClass":"班级",
+  "classroom":"教室",
+  "attendance": "学员到课情况",
+  "addLessonRecord": "添加课堂实录",
+  "addLessonContent": "添加课堂内容",
+  "addLessonFeedback": "添加课堂反馈",
+  "addLessonHomework": "添加课后作业",
+  "editLessonRecord": "修改课堂实录",
+  "editLessonContent": "修改课堂内容",
+  "editLessonFeedback": "修改课堂反馈",
+  "editLessonHomework": "修改课后作业",
+  "add": "添加",
+  "edit": "修改",
+  "lessonRecord": "课堂实录",
+  "lessonContent": "课堂内容",
+  "lessonFeedback": "课堂反馈",
+  "lessonHomework": "课后作业",
+  "classRecord": "班级实录",
+  "studentRecord": "学员实录",
+  "classContent": "班级内容",
+  "studentContent": "学员内容",
+  "classFeedback": "班级反馈",
+  "studentFeedback": "学员反馈",
+  "classHomework": "班级作业",
+  "studentHomework": "学员作业",
+  "homeworkInstruction": "作业说明",
+  "homeworkRequirements": "作业要求",
+  "pleaseChooseStudent": "请选择学员",
+  "pleaseChooseClass": "请选择班级",
+  "sHomework": "的作业",
+  "homework": "作业",
+  "completed": "已添加",
+  "unCompleted": "未添加",
+  "cancelReason": "取消原因",
+  "feedback": "反馈",
+  "Completed": "课堂已反馈",
+  "Uncompleted": "课堂待反馈",
+  "Assigned": "作业已部署",
+  "Unassigned": "作业待部署",
+
+  "studentInfo": "学员信息",
+  "lessonPeriodInfo": "课时信息",
+  "totalLessonPeriod": "剩余课时",
+  "languageLessonPeriod": "语言课时",
+  "PBLLessonPeriod": "PBL课时",
+  "studentsIntention": "学员意向",
+  "followUp": "跟进",
+  "notIntention": "无意向",
+  "lesson": "节",
+  "pleaseEnterReason": "请填写原因",
+  "audit": "审核",
+  "audited": "已审核",
+  "unAudited": "未审核",
+  "time": "时间区间",
+  "timeSetting": "选择时间区间",
+  "startTime": "开始时间",
+  "endTime": "结束时间",
+
+  "feedbackAudit": "反馈审核",
+  "addHomeworkAudit": "作业添加审核",
+  "correctAudit": "作业批改审核",
+  "studentAnswer": "学员作答",
+  "teacherCorrection": "教师批改",
+  "refusalReason": "未通过原因",
+  "homeworkEvaluation": "作业评分",
+  "addEvaluationContent": "请输入作业批改内容",
+  "homeworkCorrect": "批改作业",
+  "correct": "批改",
+
+  "selectStudent": "选择学员",
+  "selectClass": "选择班级",
+  "selectAll": "全选",
+  "cancelAll": "全取消",
+  "see": "看",
+  "hear": "听",
+  "say": "说",
+  "read": "读",
+  "write": "写",
+  "comprehensionSkills": "综合能力",
+
+  "notificationDetail": "通知详情",
+  "notificationTitleHint": "请输入通知标题",
+  "notificationContentHint": "请输入通知内容",
+  "receiveClass": "接收班级",
+  "notificationClass": "通知班级",
+
+  "hintMsgByPageExit": "确定要退出吗?",
+  "saveAndExit": "保存后退出",
+  "exit": "直接退出",
+  "expand": "展开"
+}
+export default cn;

+ 16 - 17
main.js

@@ -1,27 +1,26 @@
 import App from './App'
+import Vue from 'vue'
+
 import cuCustom from './colorui/components/cu-custom.vue'
 import uView from '@/uni_modules/uview-ui'
+import i18n from './i18n/index.js'
+
 
-// #ifndef VUE3
-import Vue from 'vue'
 Vue.component('cu-custom',cuCustom)
 Vue.use(uView)
+// const i18n = new VueI18n({
+//     // locale: localStorage.getItem('lang') || 'zn',
+// 		locale: 'zh',
+//     messages: {
+//         'zh': require('./i18n/zh.js'), //自定义的中文文件
+//         'en': require('./i18n/en.js')  //自定义的英文文件
+//     }
+// })
 Vue.config.productionTip = false
 App.mpType = 'app'
-const app = new Vue({
+const app = new Vue({
+		i18n,
     ...App
-})
+})
+// app.use(i18n)
 app.$mount()
-// #endif
-
-// #ifdef VUE3
-import { createSSRApp } from 'vue'
-Vue.component('cu-custom',cuCustom)
-Vue.use(uView)
-export function createApp() {
-  const app = createSSRApp(App)
-  return {
-    app
-  }
-}
-// #endif

+ 557 - 0
package-lock.json

@@ -0,0 +1,557 @@
+{
+  "name": "i2School-employee-2.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "dependencies": {
+        "vue-i18n": "^9.2.0-beta.25"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.16.6",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz",
+      "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==",
+      "peer": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@intlify/core-base": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.0-beta.25.tgz",
+      "integrity": "sha512-ReJ1qytJQ1pD3YIM474MFzAFIA/MNO3LiIogXQslK89WVFxCklAQOQQOe075AMAi90ng+fZM4/bp6hslQgjn4w==",
+      "dependencies": {
+        "@intlify/devtools-if": "9.2.0-beta.25",
+        "@intlify/message-compiler": "9.2.0-beta.25",
+        "@intlify/shared": "9.2.0-beta.25",
+        "@intlify/vue-devtools": "9.2.0-beta.25"
+      },
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/@intlify/devtools-if": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.0-beta.25.tgz",
+      "integrity": "sha512-iqBKiQ4rRP0xbbkq00o/TmfmsEBQulnCMO8JuZ5kBBroXqwyp65dQ6DbwojjP+TG0ON5IFKL39JntF96sin1LQ==",
+      "dependencies": {
+        "@intlify/shared": "9.2.0-beta.25"
+      },
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/@intlify/message-compiler": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.0-beta.25.tgz",
+      "integrity": "sha512-/YMG6LmQLvD8uHCJvWLaK0t8exYbek3ya4BZZ99AcM5+JC/JRdLIK8WiVJnGpfrvleQArxvHed4GokS+oWZ5rQ==",
+      "dependencies": {
+        "@intlify/shared": "9.2.0-beta.25",
+        "source-map": "0.6.1"
+      },
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/@intlify/shared": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.0-beta.25.tgz",
+      "integrity": "sha512-I2L05aWh0azr5KwQjLV7gMTN0SrdglgMAfpJniT53Pvvc8l+OTs8IEhdPCQwsbgOravpWt14O7m3deOzw3ln6w==",
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/@intlify/vue-devtools": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.0-beta.25.tgz",
+      "integrity": "sha512-47rmZmrM1FihTWQkixgYu3lOCBpT1NyGfYSxSYnUw1s2Ky8w84S81nYmbus2GZjfj/zAovkKyRNclETVTy6O2Q==",
+      "dependencies": {
+        "@intlify/core-base": "9.2.0-beta.25",
+        "@intlify/shared": "9.2.0-beta.25"
+      },
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.26.tgz",
+      "integrity": "sha512-N5XNBobZbaASdzY9Lga2D9Lul5vdCIOXvUMd6ThcN8zgqQhPKfCV+wfAJNNJKQkSHudnYRO2gEB+lp0iN3g2Tw==",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.16.4",
+        "@vue/shared": "3.2.26",
+        "estree-walker": "^2.0.2",
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.26.tgz",
+      "integrity": "sha512-smBfaOW6mQDxcT3p9TKT6mE22vjxjJL50GFVJiI0chXYGU/xzC05QRGrW3HHVuJrmLTLx5zBhsZ2dIATERbarg==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-core": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.26.tgz",
+      "integrity": "sha512-ePpnfktV90UcLdsDQUh2JdiTuhV0Skv2iYXxfNMOK/F3Q+2BO0AulcVcfoksOpTJGmhhfosWfMyEaEf0UaWpIw==",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.26",
+        "@vue/compiler-dom": "3.2.26",
+        "@vue/compiler-ssr": "3.2.26",
+        "@vue/reactivity-transform": "3.2.26",
+        "@vue/shared": "3.2.26",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7",
+        "postcss": "^8.1.10",
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.26.tgz",
+      "integrity": "sha512-2mywLX0ODc4Zn8qBoA2PDCsLEZfpUGZcyoFRLSOjyGGK6wDy2/5kyDOWtf0S0UvtoyVq95OTSGIALjZ4k2q/ag==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.0.0-beta.21.1",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.21.1.tgz",
+      "integrity": "sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw=="
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.26.tgz",
+      "integrity": "sha512-h38bxCZLW6oFJVDlCcAiUKFnXI8xP8d+eO0pcDxx+7dQfSPje2AO6M9S9QO6MrxQB7fGP0DH0dYQ8ksf6hrXKQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.26.tgz",
+      "integrity": "sha512-XKMyuCmzNA7nvFlYhdKwD78rcnmPb7q46uoR00zkX6yZrUmcCQ5OikiwUEVbvNhL5hBJuvbSO95jB5zkUon+eQ==",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.26",
+        "@vue/shared": "3.2.26",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.26.tgz",
+      "integrity": "sha512-BcYi7qZ9Nn+CJDJrHQ6Zsmxei2hDW0L6AB4vPvUQGBm2fZyC0GXd/4nVbyA2ubmuhctD5RbYY8L+5GUJszv9mQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.26.tgz",
+      "integrity": "sha512-dY56UIiZI+gjc4e8JQBwAifljyexfVCkIAu/WX8snh8vSOt/gMSEGwPRcl2UpYpBYeyExV8WCbgvwWRNt9cHhQ==",
+      "peer": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.2.26",
+        "@vue/shared": "3.2.26",
+        "csstype": "^2.6.8"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.26.tgz",
+      "integrity": "sha512-Jp5SggDUvvUYSBIvYEhy76t4nr1vapY/FIFloWmQzn7UxqaHrrBpbxrqPcTrSgGrcaglj0VBp22BKJNre4aA1w==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-ssr": "3.2.26",
+        "@vue/shared": "3.2.26"
+      },
+      "peerDependencies": {
+        "vue": "3.2.26"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.26.tgz",
+      "integrity": "sha512-vPV6Cq+NIWbH5pZu+V+2QHE9y1qfuTq49uNWw4f7FDEeZaDU2H2cx5jcUZOAKW7qTrUS4k6qZPbMy1x4N96nbA==",
+      "peer": true
+    },
+    "node_modules/csstype": {
+      "version": "2.6.19",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz",
+      "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==",
+      "peer": true
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "peer": true
+    },
+    "node_modules/magic-string": {
+      "version": "0.25.7",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "peer": true,
+      "dependencies": {
+        "sourcemap-codec": "^1.4.4"
+      }
+    },
+    "node_modules/nanoid": {
+      "version": "3.1.30",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
+      "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
+      "peer": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "peer": true
+    },
+    "node_modules/postcss": {
+      "version": "8.4.5",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
+      "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
+      "peer": true,
+      "dependencies": {
+        "nanoid": "^3.1.30",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.1"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
+      "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "peer": true
+    },
+    "node_modules/vue": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.26.tgz",
+      "integrity": "sha512-KD4lULmskL5cCsEkfhERVRIOEDrfEL9CwAsLYpzptOGjaGFNWo3BQ9g8MAb7RaIO71rmVOziZ/uEN/rHwcUIhg==",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.2.26",
+        "@vue/compiler-sfc": "3.2.26",
+        "@vue/runtime-dom": "3.2.26",
+        "@vue/server-renderer": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "node_modules/vue-i18n": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.0-beta.25.tgz",
+      "integrity": "sha512-l/A5W5KLuwnI5NHOV0WQrF79BwVku83ed7wHmq5NLm/Uofmsc8qmgJ95zw8EK3fmSBzb3F1NbjxxK2DZcg8c/g==",
+      "dependencies": {
+        "@intlify/core-base": "9.2.0-beta.25",
+        "@intlify/shared": "9.2.0-beta.25",
+        "@intlify/vue-devtools": "9.2.0-beta.25",
+        "@vue/devtools-api": "^6.0.0-beta.13"
+      },
+      "engines": {
+        "node": ">= 12"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    }
+  },
+  "dependencies": {
+    "@babel/parser": {
+      "version": "7.16.6",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz",
+      "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==",
+      "peer": true
+    },
+    "@intlify/core-base": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.0-beta.25.tgz",
+      "integrity": "sha512-ReJ1qytJQ1pD3YIM474MFzAFIA/MNO3LiIogXQslK89WVFxCklAQOQQOe075AMAi90ng+fZM4/bp6hslQgjn4w==",
+      "requires": {
+        "@intlify/devtools-if": "9.2.0-beta.25",
+        "@intlify/message-compiler": "9.2.0-beta.25",
+        "@intlify/shared": "9.2.0-beta.25",
+        "@intlify/vue-devtools": "9.2.0-beta.25"
+      }
+    },
+    "@intlify/devtools-if": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.0-beta.25.tgz",
+      "integrity": "sha512-iqBKiQ4rRP0xbbkq00o/TmfmsEBQulnCMO8JuZ5kBBroXqwyp65dQ6DbwojjP+TG0ON5IFKL39JntF96sin1LQ==",
+      "requires": {
+        "@intlify/shared": "9.2.0-beta.25"
+      }
+    },
+    "@intlify/message-compiler": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.0-beta.25.tgz",
+      "integrity": "sha512-/YMG6LmQLvD8uHCJvWLaK0t8exYbek3ya4BZZ99AcM5+JC/JRdLIK8WiVJnGpfrvleQArxvHed4GokS+oWZ5rQ==",
+      "requires": {
+        "@intlify/shared": "9.2.0-beta.25",
+        "source-map": "0.6.1"
+      }
+    },
+    "@intlify/shared": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.0-beta.25.tgz",
+      "integrity": "sha512-I2L05aWh0azr5KwQjLV7gMTN0SrdglgMAfpJniT53Pvvc8l+OTs8IEhdPCQwsbgOravpWt14O7m3deOzw3ln6w=="
+    },
+    "@intlify/vue-devtools": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.0-beta.25.tgz",
+      "integrity": "sha512-47rmZmrM1FihTWQkixgYu3lOCBpT1NyGfYSxSYnUw1s2Ky8w84S81nYmbus2GZjfj/zAovkKyRNclETVTy6O2Q==",
+      "requires": {
+        "@intlify/core-base": "9.2.0-beta.25",
+        "@intlify/shared": "9.2.0-beta.25"
+      }
+    },
+    "@vue/compiler-core": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.26.tgz",
+      "integrity": "sha512-N5XNBobZbaASdzY9Lga2D9Lul5vdCIOXvUMd6ThcN8zgqQhPKfCV+wfAJNNJKQkSHudnYRO2gEB+lp0iN3g2Tw==",
+      "peer": true,
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/shared": "3.2.26",
+        "estree-walker": "^2.0.2",
+        "source-map": "^0.6.1"
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.26.tgz",
+      "integrity": "sha512-smBfaOW6mQDxcT3p9TKT6mE22vjxjJL50GFVJiI0chXYGU/xzC05QRGrW3HHVuJrmLTLx5zBhsZ2dIATERbarg==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-core": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.26.tgz",
+      "integrity": "sha512-ePpnfktV90UcLdsDQUh2JdiTuhV0Skv2iYXxfNMOK/F3Q+2BO0AulcVcfoksOpTJGmhhfosWfMyEaEf0UaWpIw==",
+      "peer": true,
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.26",
+        "@vue/compiler-dom": "3.2.26",
+        "@vue/compiler-ssr": "3.2.26",
+        "@vue/reactivity-transform": "3.2.26",
+        "@vue/shared": "3.2.26",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7",
+        "postcss": "^8.1.10",
+        "source-map": "^0.6.1"
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.26.tgz",
+      "integrity": "sha512-2mywLX0ODc4Zn8qBoA2PDCsLEZfpUGZcyoFRLSOjyGGK6wDy2/5kyDOWtf0S0UvtoyVq95OTSGIALjZ4k2q/ag==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-dom": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "@vue/devtools-api": {
+      "version": "6.0.0-beta.21.1",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.21.1.tgz",
+      "integrity": "sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw=="
+    },
+    "@vue/reactivity": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.26.tgz",
+      "integrity": "sha512-h38bxCZLW6oFJVDlCcAiUKFnXI8xP8d+eO0pcDxx+7dQfSPje2AO6M9S9QO6MrxQB7fGP0DH0dYQ8ksf6hrXKQ==",
+      "peer": true,
+      "requires": {
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.26.tgz",
+      "integrity": "sha512-XKMyuCmzNA7nvFlYhdKwD78rcnmPb7q46uoR00zkX6yZrUmcCQ5OikiwUEVbvNhL5hBJuvbSO95jB5zkUon+eQ==",
+      "peer": true,
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.26",
+        "@vue/shared": "3.2.26",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7"
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.26.tgz",
+      "integrity": "sha512-BcYi7qZ9Nn+CJDJrHQ6Zsmxei2hDW0L6AB4vPvUQGBm2fZyC0GXd/4nVbyA2ubmuhctD5RbYY8L+5GUJszv9mQ==",
+      "peer": true,
+      "requires": {
+        "@vue/reactivity": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.26.tgz",
+      "integrity": "sha512-dY56UIiZI+gjc4e8JQBwAifljyexfVCkIAu/WX8snh8vSOt/gMSEGwPRcl2UpYpBYeyExV8WCbgvwWRNt9cHhQ==",
+      "peer": true,
+      "requires": {
+        "@vue/runtime-core": "3.2.26",
+        "@vue/shared": "3.2.26",
+        "csstype": "^2.6.8"
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.26.tgz",
+      "integrity": "sha512-Jp5SggDUvvUYSBIvYEhy76t4nr1vapY/FIFloWmQzn7UxqaHrrBpbxrqPcTrSgGrcaglj0VBp22BKJNre4aA1w==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-ssr": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.26.tgz",
+      "integrity": "sha512-vPV6Cq+NIWbH5pZu+V+2QHE9y1qfuTq49uNWw4f7FDEeZaDU2H2cx5jcUZOAKW7qTrUS4k6qZPbMy1x4N96nbA==",
+      "peer": true
+    },
+    "csstype": {
+      "version": "2.6.19",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz",
+      "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==",
+      "peer": true
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "peer": true
+    },
+    "magic-string": {
+      "version": "0.25.7",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "peer": true,
+      "requires": {
+        "sourcemap-codec": "^1.4.4"
+      }
+    },
+    "nanoid": {
+      "version": "3.1.30",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
+      "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
+      "peer": true
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "peer": true
+    },
+    "postcss": {
+      "version": "8.4.5",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
+      "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
+      "peer": true,
+      "requires": {
+        "nanoid": "^3.1.30",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.1"
+      }
+    },
+    "source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+    },
+    "source-map-js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
+      "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
+      "peer": true
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "peer": true
+    },
+    "vue": {
+      "version": "3.2.26",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.26.tgz",
+      "integrity": "sha512-KD4lULmskL5cCsEkfhERVRIOEDrfEL9CwAsLYpzptOGjaGFNWo3BQ9g8MAb7RaIO71rmVOziZ/uEN/rHwcUIhg==",
+      "peer": true,
+      "requires": {
+        "@vue/compiler-dom": "3.2.26",
+        "@vue/compiler-sfc": "3.2.26",
+        "@vue/runtime-dom": "3.2.26",
+        "@vue/server-renderer": "3.2.26",
+        "@vue/shared": "3.2.26"
+      }
+    },
+    "vue-i18n": {
+      "version": "9.2.0-beta.25",
+      "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.0-beta.25.tgz",
+      "integrity": "sha512-l/A5W5KLuwnI5NHOV0WQrF79BwVku83ed7wHmq5NLm/Uofmsc8qmgJ95zw8EK3fmSBzb3F1NbjxxK2DZcg8c/g==",
+      "requires": {
+        "@intlify/core-base": "9.2.0-beta.25",
+        "@intlify/shared": "9.2.0-beta.25",
+        "@intlify/vue-devtools": "9.2.0-beta.25",
+        "@vue/devtools-api": "^6.0.0-beta.13"
+      }
+    }
+  }
+}

+ 5 - 0
package.json

@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "vue-i18n": "^9.2.0-beta.25"
+  }
+}

+ 4 - 4
pages/login/index.vue

@@ -11,8 +11,8 @@
 		<!-- 登录框 -->
 		<view class="login-card cu-card padding radius shadow bg-white">
 			<view class="flex padding-tb justify-between">
-				<view class="u-border-bottom text-xl text-red">用户登录</view>
-				<view class="text-xl" @click="changeToEnglish">Switch To English</view>
+				<view class="u-border-bottom text-xl text-red"> {{ $t('login') }} </view>
+				<view class="text-xl" @click="changeToEnglish"> {{ $t('switchLanguage') }} </view>
 			</view>
 			
 			<!-- 输入框 -->
@@ -25,7 +25,7 @@
 			<u-gap height="40"/>
 			<button class="cu-btn block bg-red margin-tb-sm lg radio" @click="startLogin">
 				<text v-show="loading" class="cuIcon-loading2 cuIconfont-spin"></text>
-				<text>加载</text>
+				<text> {{ $t('logIn') }} </text>
 			</button>
 			
 			<!-- 隐私政策 -->
@@ -52,7 +52,7 @@
 				loading: false,
 				loginStr: '登录',
 				user: {
-					account: '2333',
+					account: '2333333',
 					password: '123456',
 				},
 				animation: '',