From 1892c7bcb714e1c14b3d566affc516b3e04204b9 Mon Sep 17 00:00:00 2001 From: zhenhui <1276357500@qq.com> Date: Tue, 17 Mar 2026 15:04:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=87=E6=8D=A2=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E5=A4=B1=E8=B4=A5BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/core/layouts/art-header-bar/index.vue | 6 +++--- .../components/core/tables/art-table-header/index.vue | 11 ++++++++++- .../src/components/core/tables/art-table/index.vue | 5 ++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/saiadmin-artd/src/components/core/layouts/art-header-bar/index.vue b/saiadmin-artd/src/components/core/layouts/art-header-bar/index.vue index 4b62334..f3a3c87 100644 --- a/saiadmin-artd/src/components/core/layouts/art-header-bar/index.vue +++ b/saiadmin-artd/src/components/core/layouts/art-header-bar/index.vue @@ -178,7 +178,7 @@ import { useMenuStore } from '@/store/modules/menu' import AppConfig from '@/config' import { languageOptions } from '@/locales' - import { invalidatePageLocaleCache } from '@/locales/pageLocaleLoader' + import { invalidatePageLocaleCache, loadPageLocale } from '@/locales/pageLocaleLoader' import { mittBus } from '@/utils/sys' import { themeAnimation } from '@/utils/ui/animation' import { useCommon } from '@/hooks/core/useCommon' @@ -285,12 +285,12 @@ * 切换系统语言 * @param {LanguageEnum} lang - 目标语言类型 */ - const changeLanguage = (lang: LanguageEnum): void => { + const changeLanguage = async (lang: LanguageEnum): Promise => { if (locale.value === lang) return locale.value = lang userStore.setLanguage(lang) invalidatePageLocaleCache() - reload(50) + await loadPageLocale(router.currentRoute.value.path) } /** diff --git a/saiadmin-artd/src/components/core/tables/art-table-header/index.vue b/saiadmin-artd/src/components/core/tables/art-table-header/index.vue index 788c2b7..1eca8b4 100644 --- a/saiadmin-artd/src/components/core/tables/art-table-header/index.vue +++ b/saiadmin-artd/src/components/core/tables/art-table-header/index.vue @@ -90,7 +90,7 @@ :disabled="item.disabled" class="flex-1 min-w-0 [&_.el-checkbox__label]:overflow-hidden [&_.el-checkbox__label]:text-ellipsis [&_.el-checkbox__label]:whitespace-nowrap" >{{ - item.label || (item.type === 'selection' ? t('table.selection') : '') + getColumnDisplayLabel(item.label, item.type) }} @@ -173,6 +173,15 @@ (e: 'update:showSearchBar', value: boolean): void }>() + /** 列标题显示:table./page. 开头的 key 用 t() 翻译,随语言切换更新 */ + const getColumnDisplayLabel = (label: unknown, type?: string): string => { + if (type === 'selection') return t('table.selection') + if (label && typeof label === 'string' && (label.startsWith('table.') || label.startsWith('page.'))) { + return t(label) + } + return (label as string) || '' + } + /** * 获取列的显示状态 * 优先使用 visible 字段,如果不存在则使用 checked 字段 diff --git a/saiadmin-artd/src/components/core/tables/art-table/index.vue b/saiadmin-artd/src/components/core/tables/art-table/index.vue index ff4e24e..d11fcd7 100644 --- a/saiadmin-artd/src/components/core/tables/art-table/index.vue +++ b/saiadmin-artd/src/components/core/tables/art-table/index.vue @@ -311,9 +311,12 @@ /** 表头 label 为 table. 或 page. 开头的 i18n key 时自动翻译,切换语言后表头随动 */ const displayColumns = computed(() => { const list = props.columns || [] + const localeRef = i18n.global.locale as { value?: string } + const currentLocale = localeRef && typeof localeRef === 'object' && 'value' in localeRef ? localeRef.value : (i18n.global.locale as string) + void currentLocale return list.map((col) => { const label = col.label - if (label && typeof label === 'string' && (label.startsWith('table.') || label.startsWith('page.')) && i18n.global.te(label)) { + if (label && typeof label === 'string' && (label.startsWith('table.') || label.startsWith('page.'))) { return { ...col, label: $t(label) } } return col