打开AdminJS日新的目标 · 2 月更文考验

lxf2023-03-09 08:42:01

项目必须中英。可是早期缺乏必须的基本建设,并没有i18n自动化技术产生的专用工具。全是开发设计当遇到的时候我们去谷歌在线翻译。精不精准不能保证,可是确保可以实现中英文转换的功效。

直到有一天,商品手里拿着一份xlsx的报表跟我说,这也是一个团队专业的翻译,需要我把全局性英语也给更换了。

打开AdminJS日新的目标 · 2 月更文考验

通过三年的研发,现今中英关键词已有3000好几条了。并且xlsx报表之类的关键词不仅包括我们自己的新项目,就意味着,我还要一个个对比。从中找到大家工程项目的关键词。如下图所示这种报表。

打开AdminJS日新的目标 · 2 月更文考验

手动式来改动根本不可能。只有分析一下我们怎样应用node完成将xlsx报表全自动转换出目标,并载入js得更加作用。

难题非常明确。

我们应该:

  1. 分析exel报表
  2. 将分析得到的结果转换成我们了解的数据类型,然后跟已有的i18n文档进行比较
  3. 将比照以后得到的结果载入js文档之中

分析xlsx文档我们应该用到node-xlse包。 它分析出去文档如下图所示,是一个二维数组。

打开AdminJS日新的目标 · 2 月更文考验

这其中的name是现阶段报表的名称,这是并不需要的。大家只是更需要的是第一个目标里的data二维数组。

因此现阶段就会有如下所示编码:

const xlsx = require('node-xlsx').default
const content = xlsx.parse('./xlsxToJs.xlsx')


const targetContent = new Map()

try {
  content[0].data.forEach(item => {
    targetContent.set(item[0], item[1])
  })
} catch(e) {
  console.log(e)
}

拿到分析的信息,咱们就可将其载入到JS中奖了。当他们想要对读取文件进行任何得比较情况下,该循环中进行对比就能。

写入文件,我们应该用到fs库,它接纳一个字符串数组。也就有了如下所示编码:

const fs = require('fs')
const data = 'let data = '   JSON.stringify(Object.fromEntries(targetContent.entries()))
fs.writeFile('xlsx.js', data, (err) => {
  if (err) {
    throw err
  }

  console.log("JSON data is saved.")
})

输出xlsx.js内容如下:

let data = {
  "键名": "健值",
  "登录":"loginIn",
  "撤出": "exit",
  "安全性": "safe",
  "大家是什么意思": "what is nam"
}

这就是我们应该应用过的目标。编码非常简单,我也没对node的核心fs进行任何表述,这也是下一篇内容。这就是我们临时性处理i18n的方法。不过想要彻底的解决这些问题,让开发者无需再手动式的翻译成中文,这一是一个锲子。我能在之后的文章内容输出。

“打开AdminJS成长之路!这个是我参加「AdminJS日新的目标 · 2 月更文考验」第 13 天,查看更多活动规则”