解释buildToDist:
在vite环境中执行插件后会生成翻译配置文件。但是如果您直接构建它,项目会先生成翻译配置文件。但翻译配置文件不会立即打包到主包中,您可能需要再次打包。
因此,提供了buildToDist选项,当创建翻译配置文件时,它将主动将翻译配置文件打包进主包,缺陷是您的打包文件可能有两份翻译配置文件
配置
Vue
vite.config.js 配置
import { defineConfig } from 'vite'
import vuePluginsAutoI18n from "vite-plugin-auto-i18n";
import createVuePlugin from '@vitejs/plugin-vue';
// 注:vite-plugin-auto-i18n 只处理脚本文件因此对于.vue等类型文件,需要vuePlugin进行解析
const vuePlugin = createVuePlugin({
include: [/\.vue$/],
// 注:plugin-vue 对于静态节点默认不解析,因此这里需要下述配置
template: {
compilerOptions: {
hoistStatic: false,
cacheHandlers: false,
}
}
})
export default defineConfig({
plugins: [
vuePlugin,
vuePluginsAutoI18n({
option:{
globalPath: './lang', // 配置文件生成位置
namespace: 'lang', // 命名空间
targetLangList: ['en', 'ko', 'ja'], // 翻译目标语言
originLang: 'zh-cn', // 翻译源语言
distPath: './dist/assets', // 打包后生成文件位置
distKey: 'index', // 打包后主文件名称
}
}),
]
});
import '../../lang/index'
import langJSON from '../../lang/index.json'
const langMap = {
zhcn: window?.lang?.zhcn || _getJSONKey('zhcn', langJSON),
en: window?.lang?.en || _getJSONKey('en', langJSON),
ko: window?.lang?.ko || _getJSONKey('ko', langJSON),
ja: window?.lang?.ja || _getJSONKey('ja', langJSON),
}
const lang = window.localStorage.getItem('lang') || 'zhcn'
window.$t.locale(langMap[lang], 'lang')