VUE项目中国际化按模块添加json

VUE项目中获取文件夹下面的文件内容

需求

通过自动化程序生成的json文件多个json文件,需要将其合并并使用i18n

实现思路

将所有的语言文件放在一个文件夹中,通过js脚本将其内容拼接成一个json文件,然后在生成 i18n多语言化;

代码目录

在这里插入图片描述

代码

import { createI18n } from 'vue-i18n';
const modulesFiles = require.context("./locals", true, /\.json$/);
const languageModules = modulesFiles.keys().reduce((modules, modulePath) => {
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1");
  const pathArr = moduleName.split("/");
  const pathLen = pathArr.length - 1;
  let resultItem = modules;
  pathArr.map((pItem, pIndex) => {
    if(pIndex < pathLen) {
        if(!resultItem[pItem]) {
            resultItem[pItem] = {}
        }
        resultItem = resultItem[pItem]
    } else {
        resultItem[pItem] = modulesFiles(modulePath)
    }
  })
  return modules;
}, {});

const messages = languageModules
const i18n = createI18n({
  locale: 'ja',
  messages
})

export default i18n

代码说明

这里通过使用require.context 获取文件夹 locals 下的所有.json文件,并将其拼成一个json文件,然后创建i18n。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陌默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值