找到了github上的issue,修改vite相关配置: https://github.com/intlify/vue-i18n-next/issues/1059
可是我不想切换到vite,直接修改国际化结果:
const i18n = createI18n({
locale: sessionStorage.getItem('lang') === 'en' ? 'en' : 'zh',
messages,
silentTranslationWarn: true,
});
const modifyI18nResults = i18nObj => {
const _t = i18nObj.global.t;
i18nObj.global.t = (...params) => {
let results = _t(...params);
const format = params[1];
if (!format || format.constructor !== Object) {
return results;
}
for (let [key, value] of Object.entries(format)) {
results = results.replace(new RegExp(`{${key}}`, 'g'), value);
}
return results;
};
};
modifyI18nResults(i18n);
export const app = createApp(App);
app.use(i18n);
对应的vue.config.js里增加:
resolve: {
alias: process.env.NODE_ENV === 'production'
? {
'@': resolve('src'),
'vue-i18n': 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js',
}
: {
'@': resolve('src'),
},
},