Skip to content

Commit 8208257

Browse files
committed
refactor: update the value of locale
1 parent ecfaa79 commit 8208257

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vue3-varlet-mobile",
33
"type": "module",
44
"version": "1.0.0",
5-
"packageManager": "pnpm@9.1.1",
5+
"packageManager": "pnpm@9.1.2",
66
"description": "Vue + Vite H5 Starter Template",
77
"license": "MIT",
88
"scripts": {

src/utils/i18n.ts

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,42 @@ import messages from '@intlify/unplugin-vue-i18n/messages'
88
import { Locale } from '@varlet/ui'
99
import type { PickerColumnOption } from '@varlet/ui'
1010

11-
export const i18n = createI18n({
12-
locale: localStorage.getItem('language') || navigator.language,
13-
fallbackLocale: 'zhCN',
14-
messages,
15-
})
11+
/** Default language pack name */
12+
const FALLBACK_LOCALE = 'zh-CN'
1613

1714
/** i18n picker columns */
1815
export const languageColumns: PickerColumnOption[] = [
1916
{ text: '简体中文', value: 'zh-CN' },
2017
{ text: 'English', value: 'en-US' },
2118
]
2219

20+
/** Gets the language pack name for the current language */
21+
function getI18nLocale() {
22+
const locale = localStorage.getItem('language') || navigator.language
23+
for (const l of languageColumns) {
24+
const value = l.value as string
25+
if (value === locale)
26+
return locale // A language pack for the current language exists
27+
else if (value.indexOf(locale) === 0)
28+
return value // A language pack that exists in any locale of the current language
29+
}
30+
return FALLBACK_LOCALE // Use the default language pack
31+
}
32+
33+
export const i18n = createI18n({
34+
locale: getI18nLocale(),
35+
legacy: false,
36+
messages,
37+
})
38+
2339
/** Current language */
2440
export const locale = computed({
2541
get() {
26-
return (i18n.global.locale as unknown as Ref<string>).value
42+
return i18n.global.locale.value
2743
},
2844
set(language: string) {
29-
localStorage.setItem('language', language);
30-
(i18n.global.locale as unknown as Ref<string>).value = language
45+
localStorage.setItem('language', language)
46+
i18n.global.locale.value = language
3147
Locale.use(language)
3248
},
3349
})

0 commit comments

Comments
 (0)