现象:开发环境正常但生产环境显示原始key(如message.hello
)
原因:构建工具(如Vite/Rollup)可能启用了代码压缩(如terser
),破坏了Vue I18n的运行时解析逻辑
解决方案:
在构建配置中禁用i18n
相关代码的压缩:
// vite.config.js
export default {
build: {
terserOptions: {
keep_classnames: true,
keep_fnames: /MessageCompiler/
}
}
}
现象:生产环境未加载完整的语言包
排查:
en.json
/zh-CN.json
)确认语言包路径配置正确:
// 生产环境需要绝对路径
createI18n({
legacy: false,
locale: 'en',
messages: {
en: () => import('/src/locales/en.json'), // 确保路径正确
zh: () => import('/src/locales/zh-CN.json')
}
})
现象:当翻译缺失时直接显示key
修复:明确配置fallback语言:
createI18n({
legacy: false,
fallbackLocale: 'en', // 指定默认fallback语言
missingWarn: false,
fallbackWarn: false
})
排查步骤:
检查是否使用正确的Vue3兼容版本:
npm install vue-i18n@^9.0.0 --force # 推荐稳定版
查看官方已知问题:
vue-i18n v12 Alpha Issue #1456
生产环境日志:
// main.js
const i18n = createI18n({ /* ... */ })
app.use(i18n).mount('#app')
// 直接输出调试
console.log(i18n.global.t('message.hello'))
npm run build
后检查dist/assets
目录中的语言文件是否被正确打包。把版本号由
"vue-i18n": "^9.14.3",
改为
"vue-i18n": "9.14.3",
后
npm install
而后正常。
问题出在^12.0.0-alpha.2
这个版本导致不能正常渲染出中英文。
5 回答730 阅读
1 回答2.4k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
4 回答581 阅读✓ 已解决
5 回答2.2k 阅读
2 回答1.3k 阅读✓ 已解决
降低到稳定的版本^9.1.9,试一下。