vue 多语言 外挂 JSON文件?

需求: 需要将多语言JSON文件外挂, 翻译人员将翻译好的多语言文件替换对应文件 前端不需要在打包更新 即可看到效果

之前的处理方案, 之前多语言文件是 JS 格式 定义了一个全局变量 image.png 如 ZHJSON 然后在 index.html 中引入 image.png 然后i18n注册词条用的是全局变量 image.png。按照这种方案可以实现 替换掉public/lang 下的语言包即可实现 刷新页面看到词条变化 无需打包更新

现在多语言文件需要是 JSON 文件 求问 index.html 里怎么引入对应多语言JSON文件 既可实现需求??

阅读 4.1k
4 个回答

可以尝试使用 Vue I18n延迟加载翻译 功能,将 json 文件放在 public 目录下然后动态 import() 即可。

const messages = await import("/public/locales/zh.json");

或者可以通过网络请求获取 json 文件

const response = await fetch("/public/locales/zh.json");
const messages = await response.json();

题主是用的 i18n 吧?直接导入 json 就行了

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

Vue.use(VueI18n)

const i18n = new VueI18n({
  locale: 'zh',
  messages: {
    en: require('./locales/en.json'),
    zh: require('./locales/zh.json')
  }
})

new Vue({
  i18n,
}).$mount('#app')
en: await (await fetch('/path/to/en.json')).json()

把 JSON 当作数据,动态加载就好了,甚至可以根据用户的个性化选项,或者浏览器默认语言来选择加载的语言资源(每种语言一个 JSON)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏