[自动化] 前端国际化导出中英文excel文档

本文是根据自动扫描生成国际化文件后, 叠加的操作, 传送门:

国际化vue-i18n之i18next-scanner自动化使用教程_阿喵阿旺的博客-CSDN博客_i18next vue 

然后现在拿到的需求是需要导出一个excel文件给到产品或专业人士核对翻译是否准确, 最终效果如下:

 实现代码

// 安装依赖

npm install json2xls -D

const json2xls = require("json2xls");
const path = require("path");
const fs = require("fs");
const getPathInfo = (p) => path.parse(p);
/**
 * @description // 递归读取文件,类似于webpack的require.context()
 * @param {String} directory 文件目录
 * @param {Boolean} useSubdirectories 是否查询子目录,默认false
 * @param {array} extList 查询文件后缀,默认 ['.js']
 *
 */
function autoLoadFile(directory, useSubdirectories = false, extList = [".js"]) {
  const filesList = [];
  // 递归读取文件
  function readFileList(directory, useSubdirectories, extList) {
    const files = fs.readdirSync(directory);
    files.forEach((item) => {
      const fullPath = path.join(directory, item);
      const stat = fs.statSync(fullPath);
      if (stat.isDirectory() && useSubdirectories) {
        readFileList(path.join(directory, item), useSubdirectories, extList);
      } else {
        const info = getPathInfo(fullPath);
        extList.includes(info.ext) && filesList.push(fullPath);
      }
    });
  }
  readFileList(directory, useSubdirectories, extList);
  // 生成需要的对象
  const res = filesList.map((item) => ({
    path: item,
    data: require(item),
    ...getPathInfo(item),
  }));

  return res;
}
// 自动获取同目录下的json文件夹下的json文件
const fileList = autoLoadFile(path.join(__dirname, "./json"), true, [".json"]);



let data = []; // json2xls需要的数据格式: [{zh: "我是中文", en: "i am chinese"}]
fileList.forEach((_, i) => {
  // _.data = {Kxxxx:'语言'}
  for (const [key, val] of Object.entries(_.data)) {
    if (i === 0) {
      // 首次遍历新建对应键名
      data.push({ 键名: key, [_.name]: val });
    } else {
      // 非首次遍历匹配对应键名新增数据
      data.forEach((e) => {
        if (e["键名"] === key) {
          e[_.name] = val;
        }
      });
    }
  }
});

// 导出excel文件
fs.writeFileSync(
  "国际化.xlsx",
  json2xls(data),
  "binary"
);

生成命令

// 根目录package.json文件添加命令
"scripts": {
   "i18n2excel": "node src/i18n/json2Excel.js"
},

// 执行

npm run i18n2excel

项目根目录就能看到 国际化.xlsx 文件了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喜樂的CC

年龄大身体差但记得你的打赏~

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

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

打赏作者

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

抵扣说明:

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

余额充值