helper.ts 1.1 KB

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