基于node的中英文翻译同步与排序

上一篇用java写的感觉paojava代码还要配置环境以及安装jar包,不如直接跑node,直接贴代码。

let fs = require("fs");
class TakeJson{
    static compileStirng(key, string) {
		return "\"" + key + "\"" + string;
	}
    constructor(url){
        this.baseUrl = url;
        this.inputStream = {};
        this.outpuntStream = {};
        this.inputPutFile = this.baseUrl + '/zh-cn.json';
        this.outPutFile = this.baseUrl + '/en.json';
        this.sortedKey = [];
        this.computeFile();
    }
    async computeFile(){
        try {
            const input = await this.computeInputStream(this.baseUrl);
            const output = await this.computeInputStream(this.outPutFile);
            fs.writeFile(this.inputPutFile, this.compile(this.inputStream = JSON.parse(input), this.sortKey()), this.getError);
            fs.writeFile(this.outPutFile, this.compile(this.outpuntStream = JSON.parse(output), this.sortKey()), this.getError);
        } catch (error) {
            console.log(error)
        }
    }
    getError(err) {
        if (err) {
            return console.error(err);
        }
        console.log("数据写入成功!");
    }
    sortKey(){
        this.sortedKey = Object.keys(this.inputStream);
        return this.sortedKey.sort((a, b) => {
            if(a > b) {
                return 1;
            }
            if(a == b) {
                return 0;
            }
            return -1;
        });
    }
    computeInputStream (url) {
        const that = this;
        const promise = new Promise(function(resolve, reject){
            fs.readFile(url, function(error, data){
                if(error) {
                    resolve('{"en": "english"}');
                }else {
                    resolve(data.toString());
                }
            });
        });
        return promise;
    }
    compile(stream, keys) {
        let outJson = "{\n  ";
        keys.map((key, index) => {
            outJson += TakeJson.compileStirng(key, ": ") + TakeJson.compileStirng(stream[key] ? stream[key] : '', ",\n  "); 
        });
        outJson += "}";
        return outJson.replace(",\n  }", "\n}");
    }
}
new TakeJson('F:/数据simple');
//直接放文件路径就可以了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值