1
0

index.ts 872 B

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