From f8fbbe4b9afd97f2b0fc74a03e411caf975f49da Mon Sep 17 00:00:00 2001 From: LH_R Date: Tue, 17 Jun 2025 21:19:51 +0800 Subject: [PATCH] feat(ui): i18n - init language add getSystemLanguage request --- cmdb-ui/src/App.vue | 26 ++++++++++++++++++++++++-- cmdb-ui/src/api/system.js | 8 ++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 cmdb-ui/src/api/system.js diff --git a/cmdb-ui/src/App.vue b/cmdb-ui/src/App.vue index d60977f..cb14e00 100644 --- a/cmdb-ui/src/App.vue +++ b/cmdb-ui/src/App.vue @@ -12,6 +12,7 @@ import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN' import enUS from 'ant-design-vue/lib/locale-provider/en_US' import { AppDeviceEnquire } from '@/utils/mixin' import { debounce } from './utils/util' +import { getSystemLanguage } from '@/api/system.js' import { h } from 'snabbdom' import { DomEditor, Boot } from '@wangeditor/editor' @@ -45,8 +46,7 @@ export default { }, }, created() { - this.SET_LOCALE(localStorage.getItem('ops_locale') || 'zh') - this.$i18n.locale = localStorage.getItem('ops_locale') || 'zh' + this.initLanguage() this.timer = setInterval(() => { this.setTime(new Date().getTime()) }, 1000) @@ -200,6 +200,28 @@ export default { this.alive = true }) }, + async initLanguage() { + let saveLocale = localStorage.getItem('ops_locale') + if (!saveLocale) { + let requestLanguage = '' + try { + const languageRes = await getSystemLanguage() + requestLanguage = languageRes?.language || '' + } catch (e) { + console.error('getSystemLanguage error:', e) + } + + // request language variable || user local system language + const userLanguage = requestLanguage || navigator.language || navigator.userLanguage + if (userLanguage.includes('zh')) { + saveLocale = 'zh' + } else { + saveLocale = 'en' + } + } + this.SET_LOCALE(saveLocale) + this.$i18n.locale = saveLocale + } }, } diff --git a/cmdb-ui/src/api/system.js b/cmdb-ui/src/api/system.js new file mode 100644 index 0000000..466ff37 --- /dev/null +++ b/cmdb-ui/src/api/system.js @@ -0,0 +1,8 @@ +import { axios } from '@/utils/request' + +export function getSystemLanguage() { + return axios({ + url: '/common-setting/v1/system/language', + method: 'get', + }) +}