新增前端vue
This commit is contained in:
37
web-vue/packages/core/locales/helper.ts
Normal file
37
web-vue/packages/core/locales/helper.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { LocaleType } from '@jeesite/types/config';
|
||||
|
||||
import { set } from 'lodash-es';
|
||||
|
||||
export const loadLocalePool: LocaleType[] = [];
|
||||
|
||||
export function setHtmlPageLang(locale: LocaleType) {
|
||||
document.querySelector('html')?.setAttribute('lang', locale);
|
||||
}
|
||||
|
||||
export function setLoadLocalePool(cb: (loadLocalePool: LocaleType[]) => void) {
|
||||
cb(loadLocalePool);
|
||||
}
|
||||
|
||||
export function genMessage(langs: Record<string, Record<string, any>>, prefix = 'lang') {
|
||||
const obj: Recordable = {};
|
||||
|
||||
Object.keys(langs).forEach((key) => {
|
||||
const langFileModule = langs[key].default;
|
||||
let fileName = key.replace(`./${prefix}/`, '').replace(/^\.\//, '');
|
||||
const lastIndex = fileName.lastIndexOf('.');
|
||||
fileName = fileName.substring(0, lastIndex);
|
||||
const keyList = fileName.split('/');
|
||||
const moduleName = keyList.shift();
|
||||
const objKey = keyList.join('.');
|
||||
|
||||
if (moduleName) {
|
||||
if (objKey) {
|
||||
set(obj, moduleName, obj[moduleName] || {});
|
||||
set(obj[moduleName], objKey, langFileModule);
|
||||
} else {
|
||||
set(obj, moduleName, langFileModule || {});
|
||||
}
|
||||
}
|
||||
});
|
||||
return obj;
|
||||
}
|
||||
Reference in New Issue
Block a user