import { setupI18n, autoLoadI18n } from '@crami/locale';
import { STORAGE_LANG_KEY } from '@/store/mutation-type';
import { localStorage } from '@/utils/local-storage';
import { defaultLang, langMap } from '../locales';

export function createLanguageGuard(router: any, app: any): void {
  const lang = localStorage.get(STORAGE_LANG_KEY, defaultLang);
  setupI18n(app, {
    messages: {},
    locale: langMap[lang],
    missingWarn: false,
    fallbackWarn: false,
    // 如果不需要国际化，可以打开如下两个配置，取消控制台的警告
    silentTranslationWarn: true,
    silentFallbackWarn: true,
    // 配置多语言模块加载信息
    loadLocalePool: [
      // 全局配置
      {
        name: 'home',
        type: 'global',
        requestType: 'ts',
        glob: import.meta.glob('/src/locales/lang/*.ts'),
        // url: 'http://10.0.59.229:7300/mock/6233025aec91f63c580c0589/example/locale/global',
        // // 全局替换规则
        // urlRule: '{lang}',
      },
      // 注意： type为part的配置项，name值需要与模块路由的name保持一致

      {
        name: 'login',
        type: 'part',
        requestType: 'ts',
        glob: import.meta.glob('/src/views/platform/User/locales/*.ts'),
      },
    ],
  });

  // 使用router的路由守卫进行多语言的自动加载
  router.beforeEach(async (to, before, next) => {
    await autoLoadI18n(to.name as string);
    // await autoLoadI18n({ name: 'Message' });
    next();
  });
}
