mirror of
https://github.com/chatopera/cosin.git
synced 2025-08-01 16:38:02 +08:00
fix: get valid locale from url param or localstorage
Signed-off-by: Kaifuny <superbiger.github@gmail.com>
This commit is contained in:
parent
ef930404a1
commit
e7538dc395
@ -27,6 +27,7 @@ const dropdownMenus = [
|
||||
]
|
||||
|
||||
// TODO 根据 url 设置当前选中的导航
|
||||
|
||||
const current = ref<string>(ROUTE_NAME.DASHBOARD_INDEX)
|
||||
const router = useRouter()
|
||||
</script>
|
||||
@ -63,7 +64,7 @@ const router = useRouter()
|
||||
trigger="hover"
|
||||
>
|
||||
<div class="hover: text-green-600 hover:underline cursor-pointer">
|
||||
{{ $i18n.locale }}
|
||||
{{ $t($i18n.locale) }}
|
||||
</div>
|
||||
</n-popselect>
|
||||
</div>
|
||||
|
@ -4,6 +4,6 @@ import { ComponentCustomProperties } from './shims-vue-global.d';
|
||||
declare module "vue" {
|
||||
export interface ComponentCustomProperties {
|
||||
$t: (key: string) => string;
|
||||
$i18n: { locale: typeof locales };
|
||||
$i18n: { locale: string };
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,21 @@ import _ from 'lodash-es'
|
||||
* 语言支持类型
|
||||
*/
|
||||
export const locales: string[] = ['zh-CN', 'en-US']
|
||||
|
||||
export const defaultLocale = 'zh-CN'
|
||||
const localPathPrefix = './locales/'
|
||||
|
||||
const getValidLocale = (defaults: string = defaultLocale): string => {
|
||||
const locale = window.localStorage.getItem('locale')
|
||||
if (locale && locales.includes(locale)) {
|
||||
return locale
|
||||
}
|
||||
const param = new URLSearchParams(window.location.search).get('lang')
|
||||
if (param && locales.includes(param)) {
|
||||
return param
|
||||
}
|
||||
return defaults
|
||||
}
|
||||
|
||||
const mergedLocalMessage = Object.entries(
|
||||
import.meta.glob('./locales/**/*.json', { eager: true })
|
||||
).reduce(
|
||||
@ -35,10 +47,10 @@ const mergedLocalMessage = Object.entries(
|
||||
|
||||
const i18n = createI18n({
|
||||
legacy: false,
|
||||
locale: 'zh-CN',
|
||||
locale: getValidLocale(defaultLocale),
|
||||
messages: mergedLocalMessage,
|
||||
globalInjection: true,
|
||||
fallbackLocale: 'zh-CN',
|
||||
fallbackLocale: defaultLocale,
|
||||
})
|
||||
|
||||
const install = (app: App) => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user