32 lines
869 B
TypeScript
32 lines
869 B
TypeScript
![]() |
import type { LocaleSetupOptions, SupportedLanguagesType } from '@vben/locales';
|
||
|
|
||
|
import type { App } from 'vue';
|
||
|
|
||
|
import { $t, setupI18n as coreSetup, loadLocalesMap } from '@vben/locales';
|
||
|
import { preferences } from '@vben/preferences';
|
||
|
|
||
|
const modules = import.meta.glob('./langs/*.json');
|
||
|
|
||
|
const localesMap = loadLocalesMap(modules);
|
||
|
|
||
|
/**
|
||
|
* 加载应用特有的语言包
|
||
|
* 这里也可以改造为从服务端获取翻译数据
|
||
|
* @param lang
|
||
|
*/
|
||
|
async function loadMessages(lang: SupportedLanguagesType) {
|
||
|
const appLocaleMessages = await localesMap[lang]();
|
||
|
return appLocaleMessages.default;
|
||
|
}
|
||
|
|
||
|
async function setupI18n(app: App, options: LocaleSetupOptions = {}) {
|
||
|
await coreSetup(app, {
|
||
|
defaultLocale: preferences.app.locale,
|
||
|
loadMessages,
|
||
|
missingWarn: !import.meta.env.PROD,
|
||
|
...options,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export { $t, loadMessages, setupI18n };
|