提交 | 用户 | age
|
4d2fb0
|
1 |
import type { LocaleType } from '#/config'; |
d67772
|
2 |
|
99ac30
|
3 |
import { set } from 'lodash-es'; |
V |
4 |
|
d67772
|
5 |
export const loadLocalePool: LocaleType[] = []; |
V |
6 |
|
|
7 |
export function setHtmlPageLang(locale: LocaleType) { |
|
8 |
document.querySelector('html')?.setAttribute('lang', locale); |
|
9 |
} |
|
10 |
|
|
11 |
export function setLoadLocalePool(cb: (loadLocalePool: LocaleType[]) => void) { |
|
12 |
cb(loadLocalePool); |
|
13 |
} |
|
14 |
|
99ac30
|
15 |
export function genMessage(langs: Record<string, Record<string, any>>, prefix = 'lang') { |
V |
16 |
const obj: Recordable = {}; |
|
17 |
|
|
18 |
Object.keys(langs).forEach((key) => { |
f6cef1
|
19 |
const langFileModule = langs[key].default; |
V |
20 |
let fileName = key.replace(`./${prefix}/`, '').replace(/^\.\//, ''); |
|
21 |
const lastIndex = fileName.lastIndexOf('.'); |
|
22 |
fileName = fileName.substring(0, lastIndex); |
|
23 |
const keyList = fileName.split('/'); |
|
24 |
const moduleName = keyList.shift(); |
99ac30
|
25 |
const objKey = keyList.join('.'); |
f6cef1
|
26 |
|
V |
27 |
if (moduleName) { |
|
28 |
if (objKey) { |
|
29 |
set(obj, moduleName, obj[moduleName] || {}); |
|
30 |
set(obj[moduleName], objKey, langFileModule); |
|
31 |
} else { |
|
32 |
set(obj, moduleName, langFileModule || {}); |
|
33 |
} |
99ac30
|
34 |
} |
V |
35 |
}); |
|
36 |
return obj; |
|
37 |
} |