Vue I18n复数与链接消息在Heroku生产环境无法解析问题
Nuxt3 + vue-i18n 生产环境(Heroku)复数/链接本地化消息无法解析
开发环境中已成功集成vue-i18n,所有功能运行正常,但部署到Heroku生产环境后,所有使用复数(Pluralization)或链接本地化消息(Linked Locale Messages)的内容均无法被解析,直接显示完整的本地化消息字符串。
技术栈
- vue-i18n 9.2.2
- Nuxt3
- VueJS 3
- Vite
- @intlify/unplugin-vue-i18n 插件
相关配置
Nuxt3配置文件(nuxt.config.ts)
import { defineNuxtConfig } from 'nuxt' import { resolve, dirname } from 'node:path' import { fileURLToPath } from 'url' import VueI18nVitePlugin from '@intlify/unplugin-vue-i18n/vite' export default defineNuxtConfig({ ... vite: { plugins: [ VueI18nVitePlugin({ include: [ resolve(dirname(fileURLToPath(import.meta.url)), './locales/*.json') ] }) ] }, ... });
vue-i18n的Nuxt插件(plugins/vue-i18n.ts)
import { createI18n } from 'vue-i18n' import fr from '~/locales/fr.json' import en from '~/locales/en.json' // DOC I18N : https://www.i18next.com/translation-function/essentials export default defineNuxtPlugin(({ vueApp }) => { const i18n = createI18n({ legacy: false, allowComposition: true, globalInjection: true, locale: 'fr', fallbackLocale: 'en', messages: { 'en': en, 'fr': fr, } }); vueApp.use(i18n); })
本地化文件示例
locales/fr.json
{ "test": "Zero test | Un test | {n} tests", "testnested": { "nestedvalue": "Zero sous-test | Un sous-test | {n} sous-tests" }, ... }
locales/en.json
{ "test": "Zero test | One test | {n} tests", "testnested": { "nestedvalue": "Zero sub-test | Un sub-test | {n} sub-tests" }, ... }
Vue模板使用示例
<p> -- TEST ROOT --<br /> {{ $t('test', 0) }}<br /> {{ $t('test', 1) }}<br /> {{ $t('test', 2) }}<br /> <br /> -- TEST NESTED --<br /> {{ $t('testnested.nestedvalue', 0) }}<br /> {{ $t('testnested.nestedvalue', 1) }}<br /> {{ $t('testnested.nestedvalue', 2) }}<br /> </p>
本地环境可正常解析复数与链接消息,但部署到Heroku生产环境后,内容直接显示原字符串。已查阅相关旧资料但未找到适配方案,怀疑是Vite打包环节存在问题。
请问我哪里配置出错了?若配置无问题,我应该在vue-i18n仓库还是@intlify/vite-plugin-vue-i18n仓库提交Bug报告?
内容的提问来源于stack exchange,提问作者Guillaume Prévost
相关产品推荐
相关产品推荐

