From 391142223f17229d6fe487877176bfce40dbfd93 Mon Sep 17 00:00:00 2001 From: "ex_zhangwenlei@exiot.cmcc" <15196725410@139.com> Date: Fri, 22 Nov 2024 14:53:36 +0800 Subject: [PATCH] feat: i18n,add en and zh-cn language. --- public/personListTemplate-en.xlsx | Bin 0 -> 10584 bytes public/{readme-zh-cn.md => readme-zhCn.md} | 0 public/人口登记表-en.xlsx | Bin 10859 -> 0 bytes src/components/DaiysuiTable/index.vue | 4 +- .../NumberSeparate/EditSeparateDialog.vue | 8 ++-- src/components/PlayMusic/index.vue | 5 +- src/locales/en.ts | 40 +++++++++++++++- src/locales/i18n.ts | 11 +++-- src/locales/zhCn.ts | 43 ++++++++++++++++- src/store/globalConfig.ts | 10 ++-- src/views/Config/Global/FaceConfig.vue | 14 +++--- src/views/Config/Global/ImageConfig.vue | 6 +-- src/views/Config/Person/PersonAll.vue | 44 +++++++++--------- src/views/Config/Person/PersonAlready.vue | 33 +++++++------ src/views/Config/Prize/PrizeConfig.vue | 19 +++----- src/views/Config/Readme/index.vue | 3 +- src/views/Home/PrizeList.vue | 43 ++++++++--------- src/views/Home/index.vue | 22 +++++---- 18 files changed, 189 insertions(+), 116 deletions(-) create mode 100644 public/personListTemplate-en.xlsx rename public/{readme-zh-cn.md => readme-zhCn.md} (100%) delete mode 100644 public/人口登记表-en.xlsx diff --git a/public/personListTemplate-en.xlsx b/public/personListTemplate-en.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3f45427eaf03aaeff8802139ee45d66f3802fc5a GIT binary patch literal 10584 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 L9Qi!;Z@>Nzj`R#g diff --git a/src/components/DaiysuiTable/index.vue b/src/components/DaiysuiTable/index.vue index bbf3377..8d6f3ba 100644 --- a/src/components/DaiysuiTable/index.vue +++ b/src/components/DaiysuiTable/index.vue @@ -35,7 +35,7 @@ const actionsColumns = computed(() => { {{ item.label }} - 操作 + {{ $t('table.operation') }} @@ -56,7 +56,7 @@ const actionsColumns = computed(() => { - 暂无数据 + {{ $t('table.noneData') }} diff --git a/src/components/NumberSeparate/EditSeparateDialog.vue b/src/components/NumberSeparate/EditSeparateDialog.vue index 1791d6a..5da4b18 100644 --- a/src/components/NumberSeparate/EditSeparateDialog.vue +++ b/src/components/NumberSeparate/EditSeparateDialog.vue @@ -74,12 +74,12 @@ onMounted(() => { diff --git a/src/locales/en.ts b/src/locales/en.ts index 9ae88ef..67e7a15 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -51,9 +51,11 @@ export default { identity:'Identity', isLucky:'Is Lucky', operation:'Operation', + setLuckyNumber:'Set Lucky Number', luckyPeopleNumber:'Lucky People Number', detail:'Detail', + noneData:'No Data', // prize configuration fullParticipation:'FullParticipation', numberParticipants:'NumberParticipants', @@ -75,6 +77,7 @@ export default { highlightColor:'HighLight Color', patternSetting:'Pattern Setting', alwaysDisplay:'Always Display Prize List', + selectPicture:'Select a Picture' }, dialog:{ titleTip:'Tip!', @@ -103,7 +106,42 @@ export default { edit:'Edit', delete:'Delete' }, - + error:{ + require:'required field', + requireNumber:'please enter a number', + minNumber1:'the minimum is 1', + maxNumber100:'the maximum is 100', + uploadSuccess:'Upload Success', + uploadFail:'Upload Failed', + notImage:'Not Image', + personIsAllDone:'All Person Is Done', + personNotEnough:'Person Is Not Enough', + noInfoAndImport:'No Info and import it', + useDefault:'Use Default Data', + completeInformation:'Please provide complete information' + }, + placeHolder:{ + enterTitle:'Enter Title', + name:'Name', + winnerCount:'Lucky Person Count', + }, + data:{ + yes:'Yes', + no:'No', + number:'Number', + isWin:'isWin', + department:'Department', + name:'Name', + identity:'Identity', + prizeName:'Prize Name', + prizeTime:'Prize Time', + operation:'Operation', + delete:'Delete', + removePerson:'Remove the Person', + defaultTitle:'The Prelude to the Six Ministries of the Ming Dynasty Cabinet', + xlsxName:'personListTemplate-en.xlsx', + readmeName:'readme-en.md' + }, footer:{ 'self-reflection':'Turn inward and examine yourself when you encounter difficulties in life.', 'thiefEasy':'Thief difficult mountain thief easily, breaking heart.' diff --git a/src/locales/i18n.ts b/src/locales/i18n.ts index 101c8a1..7659795 100644 --- a/src/locales/i18n.ts +++ b/src/locales/i18n.ts @@ -7,18 +7,21 @@ export type Language='en'|'zhCn' export const languageList=[ { key:'zhCn', - name:'中文' + name:'中文', + flag:'zh-cn' }, { key:'en', - name:'English' + name:'English', + flag:'en-us' } ] +export const browserLanguage=navigator.language.toLowerCase().indexOf('zh')>=0?'zhCn':'en'; +const globalConfig=JSON.parse(localStorage.getItem('globalConfig')||'{}').globalConfig||{} // 创建i18n const i18n = createI18n({ - locale: JSON.parse(localStorage.getItem("globalConfig")?localStorage.getItem("globalConfig") as string:"{globalConfig:{language:'zhCn'}}").globalConfig.language || "zhCn", // 语言标识 + locale: globalConfig.language||browserLanguage, globalInjection: true, // 全局注入,可以直接使用$t - // 处理报错: Uncaught (in promise) SyntaxError: Not available in legacy mode (at message-compiler.esm-bundler.js:54:19) legacy:false, messages: { zhCn, diff --git a/src/locales/zhCn.ts b/src/locales/zhCn.ts index 7a31787..e5006ca 100644 --- a/src/locales/zhCn.ts +++ b/src/locales/zhCn.ts @@ -22,7 +22,9 @@ export default { reset: '重置', play: '播放', setLayout:'重设布局', - close:'关闭' + close:'关闭', + noInfoAndImport:'暂无人员信息,前往导入', + useDefault:'使用默认数据' }, sidebar:{ personConfiguration:'人员配置', @@ -51,9 +53,11 @@ export default { identity:'身份', isLucky:'是否中奖', operation:'操作', + setLuckyNumber:'设置中奖人数', luckyPeopleNumber:'中奖人数', detail:'详细信息', + noneData:'暂无数据', // prize configuration fullParticipation:'全员参加', numberParticipants:'抽奖人数', @@ -75,6 +79,7 @@ export default { highlightColor:'高亮颜色', patternSetting:'图案设置', alwaysDisplay:'常显奖项列表', + selectPicture:'选择一张图片' }, dialog:{ titleTip:'提示!', @@ -103,7 +108,41 @@ export default { edit:'编辑', delete:'删除' }, - + error:{ + require:'必填项', + requireNumber:'请输入数字', + minNumber1:'最小为1', + maxNumber100:'最大为100', + uploadSuccess:'上传成功', + uploadFail:'上传失败', + notImage:'不是图片', + personIsAllDone:'抽奖抽完了', + personNotEnough:'抽奖人数不足', + startDraw:'现在抽取{count}{leftover}人', + completeInformation:'请填写完整信息' + }, + placeHolder:{ + enterTitle:'输入标题', + name:'名称', + winnerCount:'中奖人数', + }, + data:{ + yes:'是', + no:'否', + number:'编号', + isWin:'是否中奖', + department:'部门', + name:'姓名', + identity:'身份', + prizeName:'获奖', + prizeTime:'获奖时间', + operation:'操作', + delete:'删除', + removePerson:'移入未中奖名单', + defaultTitle:'大明内阁六部御前奏对', + xlsxName:'人口登记表-zhCn.xlsx', + readmeName:'readme-zhCn.md' + }, footer:{ 'self-reflection':'行有不得,反求诸己', 'thiefEasy':'破山中贼易,破心中贼难' diff --git a/src/store/globalConfig.ts b/src/store/globalConfig.ts index 9a953e3..b6bcfe2 100644 --- a/src/store/globalConfig.ts +++ b/src/store/globalConfig.ts @@ -1,7 +1,7 @@ import { defineStore } from 'pinia'; import { defaultMusicList, defaultImageList, defaultPatternList } from './data' import { IMusic, IImage } from '@/types/storeType'; -import i18n,{Language} from '@/locales/i18n' +import i18n,{browserLanguage} from '@/locales/i18n' // import { IPrizeConfig } from '@/types/storeType'; export const useGlobalConfig = defineStore('global', { state() { @@ -9,8 +9,8 @@ export const useGlobalConfig = defineStore('global', { globalConfig: { rowCount: 17, isSHowPrizeList: true, - topTitle: '大明内阁六部御前奏对', - language:'zhCn', + topTitle: i18n.global.t('data.defaultTitle'), + language:browserLanguage, theme: { name: 'dracula', detail: { primary: '#0f5fd3' }, @@ -223,8 +223,8 @@ export const useGlobalConfig = defineStore('global', { this.globalConfig = { rowCount: 17, isSHowPrizeList: true, - topTitle: '大明内阁六部御前奏对', - language: 'zhCn', + topTitle: i18n.global.t('data.defaultTitle'), + language: browserLanguage, theme: { name: 'dracula', detail: { primary: '#0f5fd3' }, diff --git a/src/views/Config/Global/FaceConfig.vue b/src/views/Config/Global/FaceConfig.vue index 6e0f5da..e20336f 100644 --- a/src/views/Config/Global/FaceConfig.vue +++ b/src/views/Config/Global/FaceConfig.vue @@ -10,7 +10,7 @@ import 'vue3-colorpicker/style.css'; import { isRgbOrRgba, isHex } from '@/utils/color' import PatternSetting from './components/PatternSetting.vue' import {languageList} from '@/locales/i18n' -import {Language} from '@/locales/i18n' +import i18n from '@/locales/i18n' const globalConfig = useStore().globalConfig const personConfig = useStore().personConfig const prizeConfig= useStore().prizeConfig @@ -44,11 +44,11 @@ const formErr = ref({ const schema = zod.object({ rowCount: zod.number({ - required_error: '必填项', - invalid_type_error: '必须填入数字', + required_error: i18n.global.t('error.require'), + invalid_type_error: i18n.global.t('error.requireNumber'), }) - .min(1, '最小为1') - .max(100, '最大为100') + .min(1, i18n.global.t('error.minNumber1')) + .max(100, i18n.global.t('error.maxNumber100')) // 格式化 @@ -169,7 +169,7 @@ onMounted(() => {
-

全局配置

+

{{$t('viewTitle.globalSetting')}}

@@ -178,7 +178,7 @@ onMounted(() => {
{{$t('table.title')}}
-
diff --git a/src/views/Config/Global/ImageConfig.vue b/src/views/Config/Global/ImageConfig.vue index 968efa4..4674e17 100644 --- a/src/views/Config/Global/ImageConfig.vue +++ b/src/views/Config/Global/ImageConfig.vue @@ -69,13 +69,13 @@ watch(() => imgUploadToast.value, (val) => {