index.ts 924 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import type { App } from 'vue';
  2. import type { LocaleSetupOptions, SupportedLanguagesType } from '@vben/locales';
  3. import {
  4. $t,
  5. setupI18n as coreSetup,
  6. loadLocalesMapFromDir,
  7. } from '@vben/locales';
  8. import { preferences } from '@vben/preferences';
  9. const modules = import.meta.glob('./langs/**/*.json');
  10. const localesMap = loadLocalesMapFromDir(
  11. /\.\/langs\/([^/]+)\/(.*)\.json$/,
  12. modules,
  13. );
  14. /**
  15. * 加载应用特有的语言包
  16. * 这里也可以改造为从服务端获取翻译数据
  17. * @param lang
  18. */
  19. async function loadMessages(lang: SupportedLanguagesType) {
  20. const appLocaleMessages = await localesMap[lang]?.();
  21. return appLocaleMessages?.default;
  22. }
  23. async function setupI18n(app: App, options: LocaleSetupOptions = {}) {
  24. await coreSetup(app, {
  25. defaultLocale: preferences.app.locale,
  26. loadMessages,
  27. missingWarn: !import.meta.env.PROD,
  28. ...options,
  29. });
  30. }
  31. export { $t, setupI18n };