From 20f64b54d55603a63bbae959dbf3112de8a96c5f Mon Sep 17 00:00:00 2001 From: LiuHao <liuhaoai545@gmail> Date: 星期三, 19 四月 2023 11:05:30 +0800 Subject: [PATCH] fix 修改国际化文件名称不规范问题,增加reqeust 国际化配置 --- src/lang/index.ts | 14 +++--- src/store/modules/app.ts | 16 +++++--- src/lang/zh_CN.ts | 0 src/utils/request.ts | 6 ++- src/components/LangSelect/index.vue | 17 ++++---- src/lang/en_US.ts | 0 src/utils/i18n.ts | 8 +++- 7 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/components/LangSelect/index.vue b/src/components/LangSelect/index.vue index 298e5dd..a30a2f6 100644 --- a/src/components/LangSelect/index.vue +++ b/src/components/LangSelect/index.vue @@ -5,8 +5,8 @@ </div> <template #dropdown> <el-dropdown-menu> - <el-dropdown-item :disabled="appStore.language === 'zh-cn'" command="zh-cn"> 涓枃 </el-dropdown-item> - <el-dropdown-item :disabled="appStore.language === 'en'" command="en"> English </el-dropdown-item> + <el-dropdown-item :disabled="appStore.language === 'zh_CN'" command="zh_CN"> 涓枃 </el-dropdown-item> + <el-dropdown-item :disabled="appStore.language === 'en_US'" command="en_US"> English </el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> @@ -20,14 +20,15 @@ const appStore = useAppStore(); const { locale } = useI18n(); -function handleLanguageChange(lang: string) { + +const message: any = { + zh_CN: '鍒囨崲璇█鎴愬姛锛�', + en_US: 'Switch Language Successful!', +} +const handleLanguageChange = (lang: string) => { locale.value = lang; appStore.changeLanguage(lang); - if (lang == 'en') { - ElMessage.success('Switch Language Successful!'); - } else { - ElMessage.success('鍒囨崲璇█鎴愬姛锛�'); - } + ElMessage.success(message[lang] || '鍒囨崲璇█鎴愬姛锛�'); } </script> diff --git a/src/lang/en.ts b/src/lang/en_US.ts similarity index 100% rename from src/lang/en.ts rename to src/lang/en_US.ts diff --git a/src/lang/index.ts b/src/lang/index.ts index 8fdf19e..f8c0801 100644 --- a/src/lang/index.ts +++ b/src/lang/index.ts @@ -2,16 +2,16 @@ import { createI18n } from 'vue-i18n'; // 鏈湴璇█鍖� -import enLocale from './en'; -import zhCnLocale from './zh-cn'; +import enUSLocale from './en_US'; +import zhCNLocale from './zh_CN'; import Cookies from 'js-cookie'; const messages = { - 'zh-cn': { - ...zhCnLocale + zh_CN: { + ...zhCNLocale }, - en: { - ...enLocale + en_US: { + ...enUSLocale } }; @@ -33,7 +33,7 @@ return locale; } } - return 'zh-cn'; + return 'zh_CN'; }; const i18n = createI18n({ diff --git a/src/lang/zh-cn.ts b/src/lang/zh_CN.ts similarity index 100% rename from src/lang/zh-cn.ts rename to src/lang/zh_CN.ts diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts index 1fb8337..90a4d0e 100644 --- a/src/store/modules/app.ts +++ b/src/store/modules/app.ts @@ -1,6 +1,6 @@ import Cookies from 'js-cookie'; -import zhCn from 'element-plus/es/locale/lang/zh-cn'; -import en from 'element-plus/es/locale/lang/en'; +import zhCN from 'element-plus/es/locale/lang/zh-cn'; +import enUS from 'element-plus/es/locale/lang/en'; export const useAppStore = defineStore('app', () => { const sidebarStatus = Cookies.get('sidebarStatus'); @@ -11,14 +11,18 @@ }); const device = ref<string>('desktop'); const size = ref(Cookies.get('size') || 'default'); + // 璇█ const language = ref(Cookies.get('language')); + const languageObj: any = { + en_US: enUS, + zh_CN: zhCN + }; const locale = computed(() => { - if (language.value == 'en') { - return en; - } else { - return zhCn; + if (!language.value) { + return zhCN; } + return languageObj[language.value]; }); const toggleSideBar = (withoutAnimation?: boolean) => { diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts index 481010a..ab77af0 100644 --- a/src/utils/i18n.ts +++ b/src/utils/i18n.ts @@ -1,8 +1,12 @@ // translate router.meta.title, be used in breadcrumb sidebar tagsview import i18n from '@/lang/index'; -export const translateRouteTitleI18n = (title: string): string => { - // 鍒ゆ柇鏄惁瀛樺湪鍥介檯鍖栭厤缃紝濡傛灉娌℃湁鍘熺敓杩斿洖 +/** + * 鑾峰彇鍥介檯鍖栬矾鐢憋紝濡傛灉涓嶅瓨鍦ㄥ垯鍘熺敓杩斿洖 + * @param title 璺敱鍚嶇О + * @returns {string} + */ +export const translateRouteTitle = (title: string): string => { const hasKey = i18n.global.te('route.' + title); if (hasKey) { const translatedTitle = i18n.global.t('route.' + title); diff --git a/src/utils/request.ts b/src/utils/request.ts index af73926..d5fac4e 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -7,14 +7,13 @@ import { errorCode } from '@/utils/errorCode'; import { LoadingInstance } from 'element-plus/es/components/loading/src/loading'; import FileSaver from 'file-saver'; +import { getLanguage } from '@/lang'; let downloadLoadingInstance: LoadingInstance; // 鏄惁鏄剧ず閲嶆柊鐧诲綍 export const isRelogin = { show: false }; axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'; -// 瀵瑰簲鍥介檯鍖栬祫婧愭枃浠跺悗缂� -axios.defaults.headers['Content-Language'] = 'zh_CN'; // 鍒涘缓 axios 瀹炰緥 const service = axios.create({ baseURL: import.meta.env.VITE_APP_BASE_API, @@ -24,6 +23,9 @@ // 璇锋眰鎷︽埅鍣� service.interceptors.request.use( (config: InternalAxiosRequestConfig) => { + // 瀵瑰簲鍥介檯鍖栬祫婧愭枃浠跺悗缂� + config.headers['Content-Language'] = getLanguage(); + const isToken = (config.headers || {}).isToken === false; // 鏄惁闇�瑕侀槻姝㈡暟鎹噸澶嶆彁浜� const isRepeatSubmit = (config.headers || {}).repeatSubmit === false; -- Gitblit v1.9.3