From 9b64f7b30f3a0dcd900ba502227d01c629069346 Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Mon, 1 Jun 2026 13:58:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=88=E5=8A=A0=E8=BD=BD=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=86=8D=E5=8A=A0=E8=BD=BD=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/language/SysLanguageListDao.xml | 8 +++++-- cclqms-vue/src/i18n/i18n.js | 22 ++++++++++++++----- cclqms-vue/src/router/index.js | 9 ++++++-- cclqms-vue/src/views/common/login-new.vue | 6 +++-- cclqms-vue/src/views/common/login.vue | 6 +++-- .../src/views/main-navbar-update-language.vue | 16 +++++++++----- 6 files changed, 48 insertions(+), 19 deletions(-) diff --git a/cclqms-java/src/main/resources/mapper/language/SysLanguageListDao.xml b/cclqms-java/src/main/resources/mapper/language/SysLanguageListDao.xml index b8f4b2c..412dde7 100644 --- a/cclqms-java/src/main/resources/mapper/language/SysLanguageListDao.xml +++ b/cclqms-java/src/main/resources/mapper/language/SysLanguageListDao.xml @@ -10,6 +10,10 @@ FROM sys_language_list sl LEFT JOIN sys_object_language_list sol on (sol.language_id = sl.language_id) - WHERE sol.language_code = #{languageCode} + + + sol.language_code = #{languageCode} + + - \ No newline at end of file + diff --git a/cclqms-vue/src/i18n/i18n.js b/cclqms-vue/src/i18n/i18n.js index 125cc21..16c0b38 100644 --- a/cclqms-vue/src/i18n/i18n.js +++ b/cclqms-vue/src/i18n/i18n.js @@ -3,12 +3,24 @@ import Vue from 'vue' Vue.use(VueI18n) -const supportedLocales = ['cn', 'en'] -let locale = localStorage.getItem('locale') || 'cn' -if (!supportedLocales.includes(locale)) { - locale = 'cn' - localStorage.setItem('locale', locale) + +const localeAliasMap = { + cn: 'cn', + 'zh-cn': 'cn', + 'zh_cn': 'cn', + en: 'en', + 'en-us': 'en', + 'en_us': 'en' +} + +export function normalizeLocale (locale) { + const normalizedLocale = (locale || '').toString().trim().toLowerCase() + return localeAliasMap[normalizedLocale] || 'cn' } + +const locale = normalizeLocale(localStorage.getItem('locale')) +localStorage.setItem('locale', locale) + const i18n = new VueI18n({ locale: locale, // 语言标识 messages: { diff --git a/cclqms-vue/src/router/index.js b/cclqms-vue/src/router/index.js index 503540b..35f2991 100644 --- a/cclqms-vue/src/router/index.js +++ b/cclqms-vue/src/router/index.js @@ -9,7 +9,7 @@ import Router from 'vue-router' import http from '@/utils/httpRequest' import { isURL } from '@/utils/validate' import { clearLoginInfo } from '@/utils' -import i18n from '@/i18n/i18n' +import i18n, { normalizeLocale } from '@/i18n/i18n' Vue.use(Router) @@ -64,11 +64,16 @@ router.beforeEach((to, from, next) => { if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') { next() } else { + const menuLocale = normalizeLocale(i18n.locale) + if (i18n.locale !== menuLocale) { + i18n.locale = menuLocale + localStorage.setItem('locale', menuLocale) + } http({ url: http.adornUrl('/sys/menu/nav'), method: 'get', params: { - 'l': i18n.locale, //i18n.locale + 'l': menuLocale, menuType: "pc" } }).then(({data}) => { diff --git a/cclqms-vue/src/views/common/login-new.vue b/cclqms-vue/src/views/common/login-new.vue index 0dbf27e..fd5721a 100644 --- a/cclqms-vue/src/views/common/login-new.vue +++ b/cclqms-vue/src/views/common/login-new.vue @@ -73,6 +73,7 @@