json文件缺少的语言key的检测

该篇文章介绍了如何使用Node.js的文件系统模块和lodash库,通过比较不同语言的json文件,找出与简体中文版本中缺失的翻译键,以确保多语言项目的完整性。
摘要由CSDN通过智能技术生成

需求

在做多语言的项目的时候,需要对当前不同语言的key的差异进行对比并且找出缺少key的语言和具体的语言key
通过node的文件读取能力进行需求的实现

const fs = require('fs')
const path = require('path');
const lodash = require('lodash');
// 目的是找出多语言文件中跟简体中文相比,不同的语言json文件中缺少的不同的语言key
// 读取简体中文的所有的key

const allKeys = {}
const resultObj= {}
const SIMPLE = 'ZH' // 目标语言为中文简体
const filePath = path.resolve(__dirname,'../locales') // 文件夹路径


function compareKeys(){
    // 读取src/locales的所有的json文件
    const files = fs.readdirSync(filePath) || []
    // 遍历读取文件的内容
    files.map((file)=>{
        const data = fs.readFileSync(path.resolve(filePath,file), 'utf8')
        const result = JSON.parse(data)
        allKeys[result['lang']] = Object.keys(result)
    })

    // 开始比较每种key对应的长度,当有长度不同的语言key的时候,找出对应的语言并且找出key
    const length = allKeys[SIMPLE].length
    for (const key in allKeys) {
        if (Object.hasOwnProperty.call(allKeys, key)) {
            const elementArr = allKeys[key] || [];
            if(elementArr.length !== length){
                // 找出两个数组中的差异项目
                const sourceArr = allKeys[SIMPLE]
                const different = sourceArr.filter(item=>!elementArr.includes(item))
                resultObj[key] = different
            }
        }
    }
    // 如果resultObj不为空。那么禁止eslint提交代码
    if(!lodash.isEmpty(resultObj)){
        throw new Error(`*****国际化缺少的语言key*****${JSON.stringify(resultObj)}`)
    }else{
        console.log('*****国际化语言key检测完成*****',resultObj)
    }
}
compareKeys()

package.json文件的执行

"compare":"node ./src/utils/compare_keys.js",
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值