You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js项目构建时如何排除不需要的vue-i18n多语言包适配不同部署服务器

解决方案

该需求完全可以实现,可通过环境变量区分构建目标、过滤语言包加载、配合vue-i18n插件配置三个步骤完成,最终实现两个构建版本分别仅包含对应语言的翻译内容,无冗余资源。

步骤1:新增环境变量配置文件

在项目根目录下新增两个构建专用的环境变量文件:

  • .env.build-en(英文版本构建用)
VUE_APP_LANG = 'en'
VUE_APP_I18N_FALLBACK_LOCALE = 'en'
  • .env.build-sv(瑞典语版本构建用)
VUE_APP_LANG = 'sv'
VUE_APP_I18N_FALLBACK_LOCALE = 'sv'

步骤2:新增构建命令

修改package.json的scripts字段,新增两个对应语言的构建命令:

"scripts": {
  // 保留原有其他命令,新增如下两行
  "build:en": "vue-cli-service build --mode build-en",
  "build:sv": "vue-cli-service build --mode build-sv"
}

后续构建对应版本时,执行对应命令即可:

  • 服务器1部署包执行:npm run build:en
  • 服务器2部署包执行:npm run build:sv

步骤3:修改语言包加载逻辑,过滤非目标语言

修改你的i18n配置文件,调整loadLocaleMessages函数,只加载和当前构建目标一致的语言包:

import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)

function loadLocaleMessages () {
  // 取当前构建的目标语言
  const targetLang = process.env.VUE_APP_LANG || 'en'
  const locales = require.context('@/locales', true, /[A-Za-z0-9-_,\s]+\.json$/i)
  const messages = {}
  locales.keys().forEach(key => {
     const matched = key.match(/([A-Za-z0-9-_]+)\./i)
     if (matched && matched.length > 1) {
       const locale = matched[1]
       // 仅加载目标语言的配置文件,其他语言直接跳过不打包
       if (locale === targetLang) {
         messages[locale] = locales(key)
       }
     }
   })
  return messages
}

export default new VueI18n({
  locale: process.env.VUE_APP_LANG || 'en',
  fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
  messages: loadLocaleMessages(),
  silentFallbackWarn: true
})

步骤4:修改vue.config.js配置,剥离单文件组件内的冗余翻译

在pluginOptions.i18n配置中新增includeLocales字段,指定仅打包当前目标语言的单文件组件内翻译内容,自动剔除其他语言的翻译块:

pluginOptions: {
  i18n: {
    locale: process.env.VUE_APP_LANG,
    fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE,
    localeDir: "locales",
    enableInSFC: true,
    // 新增配置:仅包含当前构建的目标语言
    includeLocales: [process.env.VUE_APP_LANG]
  },
},

效果验证

构建完成后可检查打包后的静态资源文件,英文版本中不会出现任何瑞典语翻译内容,瑞典语版本也不会出现英文翻译内容,完全符合两台服务器的部署要求。

内容的提问来源于stack exchange,提问作者mrcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:54:02