Browse Source

perf: optimize i18n to add the initial locale to the locale pool during initialization (#577)

江麻妞 4 years ago
parent
commit
ae3f8329c2
2 changed files with 9 additions and 0 deletions
  1. 5 0
      src/locales/setupI18n.ts
  2. 4 0
      src/locales/useLocale.ts

+ 5 - 0
src/locales/setupI18n.ts

@@ -3,6 +3,7 @@ import type { I18n, I18nOptions } from 'vue-i18n';
 
 import { createI18n } from 'vue-i18n';
 
+import { setLoadLocalePool } from './useLocale';
 import { localeSetting } from '/@/settings/localeSetting';
 import { useLocaleStoreWithOut } from '/@/store/modules/locale';
 
@@ -16,6 +17,10 @@ async function createI18nOptions(): Promise<I18nOptions> {
   const defaultLocal = await import(`./lang/${locale}.ts`);
   const message = defaultLocal.default?.message ?? {};
 
+  setLoadLocalePool((loadLocalePool) => {
+    loadLocalePool.push(locale);
+  });
+
   return {
     legacy: false,
     locale,

+ 4 - 0
src/locales/useLocale.ts

@@ -17,6 +17,10 @@ interface LangModule {
 
 const loadLocalePool: LocaleType[] = [];
 
+export function setLoadLocalePool(cb: (loadLocalePool: LocaleType[]) => void) {
+  cb(loadLocalePool);
+}
+
 function setI18nLanguage(locale: LocaleType) {
   const localeStore = useLocaleStoreWithOut();