Преглед изворни кода

```
feat(workflow): 添加工作流创建页面国际化支持

- 在FileUploader组件中使用国际化文本替换硬编码中文
- 为en.js和zh-CN.js添加新的国际化词条,包括文件上传、
工作流标题、描述、价格设置等相关文本
- 在LearnNote页面中使用国际化文本替换课程笔记列表标题
- 完成WorkflowAdd页面的国际化改造,包括表单标签、
占位符、提示文本等
- 添加表单验证消息的国际化支持
```

zhangningning пре 1 месец
родитељ
комит
4f54ccbdcd
5 измењених фајлова са 74 додато и 28 уклоњено
  1. 1 1
      src/components/FileUploader.vue
  2. 23 0
      src/locales/en.js
  3. 23 0
      src/locales/zh-CN.js
  4. 1 1
      src/pages/LearnNote/LearnNote.vue
  5. 26 26
      src/pages/WorkflowAdd.vue

+ 1 - 1
src/components/FileUploader.vue

@@ -30,7 +30,7 @@
       <template v-if="drag">
       <template v-if="drag">
         <el-icon class="el-icon--upload"><upload-filled /></el-icon>
         <el-icon class="el-icon--upload"><upload-filled /></el-icon>
         <div class="el-upload__text">
         <div class="el-upload__text">
-          将文件拖到此处,或 <em>点击上传</em>
+          {{$t('common.dragUpload')}} <em>{{$t('common.clickUpload')}}</em>
         </div>
         </div>
         <template v-if="tip" class="el-upload__tip">{{ tip }}</template>
         <template v-if="tip" class="el-upload__tip">{{ tip }}</template>
       </template>
       </template>

+ 23 - 0
src/locales/en.js

@@ -91,6 +91,12 @@ export default {
     Detail:"Detail",
     Detail:"Detail",
     free:"Free",
     free:"Free",
     currentPrice:"Current Price",
     currentPrice:"Current Price",
+    learnNoteList:"Course Notes List",
+    maxSize:"Max Size",
+    clickUpload:"Click Upload",
+    dragUpload:"Drag Upload",
+    basicInfo:"Basic Info",
+    coverImage:"Cover Image",
   },
   },
   login: {
   login: {
     smsLogin: 'SMS Login',
     smsLogin: 'SMS Login',
@@ -127,6 +133,23 @@ export default {
     publishSuccess: 'Publish Success',
     publishSuccess: 'Publish Success',
     demandStatusSignUping: 'Sign Uping',
     demandStatusSignUping: 'Sign Uping',
     demandStatusEnded: 'Ended',
     demandStatusEnded: 'Ended',
+    fileUpload: 'File Upload',
+    supportFormat: 'Support Format',
+    workflowFileUploadTip: "Please upload JSON, YAML, ZIP format files, max size 10MB",
+    placeholderWorkflowFileUpload:"Please upload workflow file",
+    workflowTitle:"Workflow Title",
+    placeholderWorkflowTitle:"Please input workflow title",
+    workflowCategory:"Workflow Category",
+    placeholderWorkflowCategory:"Please select workflow category",
+    workflowDescription:"Workflow Description",
+    placeholderWorkflowDescription:"Please input workflow description",
+    placeholderCoverImageUpload:"Please upload cover image",
+    supportBatchUpload:"Support batch upload files, max 5 files",
+    priceSetting:"Price Setting",
+    paySetting:"Pay Setting",
+    paySettingTip:"Pay (Users need to pay to use)",
+    freeSettingTip:"Free (All users can use for free)",
+    placeholderPrice:"Please input boom mibit quantity",
   },
   },
   personalCenter:{
   personalCenter:{
     personalCenter: 'Personal Center',
     personalCenter: 'Personal Center',

+ 23 - 0
src/locales/zh-CN.js

@@ -95,6 +95,12 @@ export default {
     Detail:"详情",
     Detail:"详情",
     free:"免费",
     free:"免费",
     currentPrice:"当前价格",
     currentPrice:"当前价格",
+    learnNoteList:"课程笔记列表",
+    maxSize:"最大",
+    clickUpload:"点击上传",
+    dragUpload:"将文件拖到此处,或",
+    basicInfo:"基本信息",
+    coverImage:"封面图",
   },
   },
   login: {
   login: {
     smsLogin: '短信登录',
     smsLogin: '短信登录',
@@ -130,6 +136,23 @@ export default {
     publishSuccess: '发布成功',
     publishSuccess: '发布成功',
     demandStatusSignUping: '报名中',
     demandStatusSignUping: '报名中',
     demandStatusEnded: '已结束',
     demandStatusEnded: '已结束',
+    fileUpload: '文件上传',
+    supportFormat: '支持格式',
+    workflowFileUploadTip: "请上传JSON、YAML、ZIP格式的文件,最大10MB",
+    placeholderWorkflowFileUpload:"请上传工作流文件",
+    workflowTitle:"工作流标题",
+    placeholderWorkflowTitle:"请输入工作流标题",
+    workflowCategory:"工作流类型",
+    placeholderWorkflowCategory:"请选择工作流类型",
+    workflowDescription:"工作流描述",
+    placeholderWorkflowDescription:"请输入工作流描述",
+    placeholderCoverImageUpload:"请上传封面图",
+    supportBatchUpload:"支持批量上传文件,最多只能上传 5 份文件",
+    priceSetting:"价格设置",
+    paySetting:"付费设置",
+    paySettingTip:"付费(用户需付费后使用)",
+    freeSettingTip:"免费(所有用户可免费数据)",
+    placeholderPrice:"请输入暴米币数量",
   },
   },
   personalCenter:{
   personalCenter:{
     personalCenter: '个人中心',
     personalCenter: '个人中心',

+ 1 - 1
src/pages/LearnNote/LearnNote.vue

@@ -6,7 +6,7 @@
         <div class="padding16 bg_color_fff border_radius_10 box_shadow_card">
         <div class="padding16 bg_color_fff border_radius_10 box_shadow_card">
           <div class="gap10">
           <div class="gap10">
             <div class="line_vertical"></div>
             <div class="line_vertical"></div>
-            <div class="font_size20 bold">课程笔记列表</div>
+            <div class="font_size20 bold">{{$t('common.learnNoteList')}} </div>
           </div>
           </div>
           <div class="flex-between mt10 course_List cursor-pointer" 
           <div class="flex-between mt10 course_List cursor-pointer" 
           @click="selectedItem = item"
           @click="selectedItem = item"

+ 26 - 26
src/pages/WorkflowAdd.vue

@@ -5,8 +5,8 @@
       <div class="padding16 bg_color_fff border_radius_10 box_shadow_card">
       <div class="padding16 bg_color_fff border_radius_10 box_shadow_card">
         <div class="gap10">
         <div class="gap10">
           <div class="line_vertical"></div>
           <div class="line_vertical"></div>
-          <div class="font_size20 bold"><span class="color_required font_size16">*</span>文件上传</div>
-          <div class="gray999 font_size14">支持格式:JSON、YAML、ZIP(最大10MB)</div>
+          <div class="font_size20 bold"><span class="color_required font_size16">*</span>{{$t('workflowTrade.fileUpload')}}</div>
+          <div class="gray999 font_size14">{{$t('workflowTrade.supportFormat')}}:JSON、YAML、ZIP({{$t('common.maxSize')}}10MB)</div>
         </div>
         </div>
         <div class="mt10">
         <div class="mt10">
           <el-form-item label="" prop="workflowFile">
           <el-form-item label="" prop="workflowFile">
@@ -19,7 +19,7 @@
               :auto-upload="true"
               :auto-upload="true"
               :drag="true"
               :drag="true"
               v-model="files"
               v-model="files"
-              tip="请上传JSON、YAML、ZIP格式的文件,最大10MB"
+              :tip="$t('workflowTrade.workflowFileUploadTip')"
             />
             />
           </el-form-item>
           </el-form-item>
         </div>
         </div>
@@ -27,17 +27,17 @@
       <div class="padding16 bg_color_fff border_radius_10 mt10 box_shadow_card">
       <div class="padding16 bg_color_fff border_radius_10 mt10 box_shadow_card">
         <div class="gap10">
         <div class="gap10">
           <div class="line_vertical"></div>
           <div class="line_vertical"></div>
-          <div class="font_size20 bold">基本信息</div>
+          <div class="font_size20 bold">{{$t('common.basicInfo')}}</div>
         </div>
         </div>
         <div class="mt10">
         <div class="mt10">
-          <el-form-item label="工作流标题" prop="workflowTitle">
-            <el-input v-model="ruleForm.workflowTitle" placeholder="请输入工作流标题"  maxlength="50"/>
+          <el-form-item :label="$t('workflowTrade.workflowTitle')" prop="workflowTitle">
+            <el-input v-model="ruleForm.workflowTitle" :placeholder="$t('workflowTrade.placeholderWorkflowTitle')"  maxlength="50"/>
           </el-form-item>
           </el-form-item>
-          <el-form-item label="工作流类型" prop="categoryId3">
+          <el-form-item :label="$t('workflowTrade.workflowCategory')" prop="categoryId3">
             <el-cascader 
             <el-cascader 
               v-model="categoryIdList"
               v-model="categoryIdList"
               :options="categoryListTree"
               :options="categoryListTree"
-              placeholder="请选择工作流类型"
+              :placeholder="$t('workflowTrade.placeholderWorkflowCategory')"
               style="width:100%"
               style="width:100%"
               :props="{
               :props="{
                 label: 'categoryName',
                 label: 'categoryName',
@@ -46,10 +46,10 @@
               }"
               }"
             />
             />
           </el-form-item>
           </el-form-item>
-          <el-form-item label="工作流描述" prop="description">
-            <el-input type="textarea" v-model="ruleForm.description" placeholder="请输入工作流描述"  maxlength="500" show-word-limit/>
+          <el-form-item :label="$t('workflowTrade.workflowDescription')" prop="description">
+            <el-input type="textarea" v-model="ruleForm.description" :placeholder="$t('workflowTrade.placeholderWorkflowDescription')"  maxlength="500" show-word-limit/>
           </el-form-item>
           </el-form-item>
-          <el-form-item label="封面图" prop="coverImage">
+          <el-form-item :label="$t('common.coverImage')" prop="coverImage">
             <!-- 图片类型 -->
             <!-- 图片类型 -->
             <FileUploader
             <FileUploader
               ref="fileUploader"
               ref="fileUploader"
@@ -67,8 +67,8 @@
               @progress="handleUploadProgress"
               @progress="handleUploadProgress"
             />
             />
           </el-form-item>
           </el-form-item>
-          <el-form-item label="工作流预览">
-            <div>支持批量上传文件,文件格式不限,最多只能上传 5 份文件</div>
+          <el-form-item :label="$t('common.workflowPreview')">
+            <div>{{$t('workflowTrade.supportBatchUpload')}}</div>
             <!-- 图片类型 -->
             <!-- 图片类型 -->
             <FileUploader
             <FileUploader
               ref="fileUploader"
               ref="fileUploader"
@@ -86,7 +86,7 @@
               @progress="handleUploadProgress"
               @progress="handleUploadProgress"
             />
             />
           </el-form-item>
           </el-form-item>
-          <el-form-item label="详情" prop="workflowContent">
+          <el-form-item :label="$t('common.Detail')" prop="workflowContent">
             <BlockNoteEditor v-model="editorContent" :editable="true" class="border"/>
             <BlockNoteEditor v-model="editorContent" :editable="true" class="border"/>
           </el-form-item>
           </el-form-item>
         </div>
         </div>
@@ -94,23 +94,23 @@
       <div class="padding16 bg_color_fff border_radius_10 mt10 box_shadow_card">
       <div class="padding16 bg_color_fff border_radius_10 mt10 box_shadow_card">
         <div class="gap10 mb20">
         <div class="gap10 mb20">
           <div class="line_vertical"></div>
           <div class="line_vertical"></div>
-          <div class="font_size20 bold">价格设置</div>
+          <div class="font_size20 bold">{{$t('workflowTrade.priceSetting')}}</div>
         </div>
         </div>
        
        
-        <el-form-item label="付费设置" style="width: 500px">
+        <el-form-item :label="$t('workflowTrade.paySetting')" style="width: 600px">
           <div class="gap20 mt10 mb20">
           <div class="gap20 mt10 mb20">
             <div class="payType gap10" @click="workflowPriceType = 'pay'" 
             <div class="payType gap10" @click="workflowPriceType = 'pay'" 
             :class="{'active': workflowPriceType === 'pay'}">
             :class="{'active': workflowPriceType === 'pay'}">
               <div class="checkType"></div>
               <div class="checkType"></div>
-              <div>付费(用户需付费后使用)</div>
+              <div>{{$t('workflowTrade.paySettingTip')}}</div>
             </div>
             </div>
             <div class="payType gap10" @click="workflowPriceType = 'free';ruleForm.workflowPrice=''" 
             <div class="payType gap10" @click="workflowPriceType = 'free';ruleForm.workflowPrice=''" 
             :class="{'active': workflowPriceType === 'free'}">
             :class="{'active': workflowPriceType === 'free'}">
               <div class="checkType"></div>
               <div class="checkType"></div>
-              <div>免费(所有用户可免费数据)</div>
+              <div>{{$t('workflowTrade.freeSettingTip')}}</div>
             </div>
             </div>
           </div>
           </div>
-          <el-input v-model="ruleForm.workflowPrice" placeholder="请输入暴米币数量"  maxlength="50" type="number" v-if="workflowPriceType === 'pay'">
+          <el-input v-model="ruleForm.workflowPrice" :placeholder="$t('workflowTrade.placeholderPrice')"  maxlength="50" type="number" v-if="workflowPriceType === 'pay'">
             <template #append>{{$t('common.baomibi')}}</template>
             <template #append>{{$t('common.baomibi')}}</template>
           </el-input>
           </el-input>
         </el-form-item>
         </el-form-item>
@@ -118,11 +118,11 @@
       <div class="mt20">
       <div class="mt20">
         <el-button type="primary" class="font_size16 gradient" @click="submitForm"  size="large">
         <el-button type="primary" class="font_size16 gradient" @click="submitForm"  size="large">
           <el-icon><Promotion /></el-icon>
           <el-icon><Promotion /></el-icon>
-          <span class="ml10">发布工作流</span>
+          <span class="ml10">{{$t('common.publishWorkflow')}}</span>
         </el-button>
         </el-button>
         <el-button class="font_size16" @click="goBack"  size="large">
         <el-button class="font_size16" @click="goBack"  size="large">
           <el-icon><Close /></el-icon>
           <el-icon><Close /></el-icon>
-          <span class="ml10">取消</span>
+          <span class="ml10">{{$t('common.cancel')}}</span>
         </el-button>
         </el-button>
       </div>
       </div>
     </el-form>
     </el-form>
@@ -191,19 +191,19 @@ watchEffect(() => {
 // 校验规则
 // 校验规则
 const rules = reactive({
 const rules = reactive({
   workflowFile: [
   workflowFile: [
-    { required: true, message: '请上传工作流文件', trigger: 'change' },
+    { required: true, message: t('workflowTrade.placeholderWorkflowFileUpload'), trigger: 'change' },
   ],
   ],
   workflowTitle: [
   workflowTitle: [
-    { required: true, message: '请输入工作流标题', trigger: 'blur' },
+    { required: true, message: t('workflowTrade.placeholderWorkflowTitle'), trigger: 'blur' },
   ],
   ],
   categoryId3: [
   categoryId3: [
-    { required: true, message: '请输入工作流类型', trigger: 'blur' },
+    { required: true, message: t('workflowTrade.placeholderWorkflowCategory'), trigger: 'blur' },
   ],
   ],
   description: [
   description: [
-    { required: true, message: '请输入工作流描述', trigger: 'blur' },
+    { required: true, message: t('workflowTrade.placeholderWorkflowDescription'), trigger: 'blur' },
   ],
   ],
   coverImage: [
   coverImage: [
-    { required: true, message: '请上传封面图', trigger: 'change' },
+    { required: true, message: t('workflowTrade.placeholderCoverImageUpload'), trigger: 'change' },
   ],
   ],
   workflowContent: [
   workflowContent: [
     { required: true, message: '请输入工作流详情内容', trigger: 'change' },
     { required: true, message: '请输入工作流详情内容', trigger: 'change' },