mirror of
				https://github.com/louislam/uptime-kuma.git
				synced 2025-11-04 13:46:13 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Need to use es6 to read language files
 | 
						|
 | 
						|
import fs from "fs";
 | 
						|
import path from "path";
 | 
						|
import util from "util";
 | 
						|
 | 
						|
// https://stackoverflow.com/questions/13786160/copy-folder-recursively-in-node-js
 | 
						|
/**
 | 
						|
 * Look ma, it's cp -R.
 | 
						|
 * @param {string} src  The path to the thing to copy.
 | 
						|
 * @param {string} dest The path to the new copy.
 | 
						|
 */
 | 
						|
const copyRecursiveSync = function (src, dest) {
 | 
						|
    let exists = fs.existsSync(src);
 | 
						|
    let stats = exists && fs.statSync(src);
 | 
						|
    let isDirectory = exists && stats.isDirectory();
 | 
						|
    if (isDirectory) {
 | 
						|
        fs.mkdirSync(dest);
 | 
						|
        fs.readdirSync(src).forEach(function (childItemName) {
 | 
						|
            copyRecursiveSync(path.join(src, childItemName),
 | 
						|
                path.join(dest, childItemName));
 | 
						|
        });
 | 
						|
    } else {
 | 
						|
        fs.copyFileSync(src, dest);
 | 
						|
    }
 | 
						|
};
 | 
						|
console.log(process.argv)
 | 
						|
const baseLangCode = process.argv[2] || "zh-HK";
 | 
						|
console.log("Base Lang: " + baseLangCode);
 | 
						|
fs.rmdirSync("./languages", { recursive: true });
 | 
						|
copyRecursiveSync("../../src/languages", "./languages");
 | 
						|
 | 
						|
const en = (await import("./languages/en.js")).default;
 | 
						|
const baseLang = (await import(`./languages/${baseLangCode}.js`)).default;
 | 
						|
const files = fs.readdirSync("./languages");
 | 
						|
console.log(files);
 | 
						|
for (const file of files) {
 | 
						|
    if (file.endsWith(".js")) {
 | 
						|
        console.log("Processing " + file);
 | 
						|
        const lang = await import("./languages/" + file);
 | 
						|
 | 
						|
        let obj;
 | 
						|
 | 
						|
        if (lang.default) {
 | 
						|
            console.log("is js module");
 | 
						|
            obj = lang.default;
 | 
						|
        } else {
 | 
						|
            console.log("empty file");
 | 
						|
            obj = {
 | 
						|
                languageName: "<Your Language name in your language (not in English)>"
 | 
						|
            };
 | 
						|
        }
 | 
						|
 | 
						|
        // En first
 | 
						|
        for (const key in en) {
 | 
						|
            if (! obj[key]) {
 | 
						|
                obj[key] = en[key];
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        // Base second
 | 
						|
        for (const key in baseLang) {
 | 
						|
            if (! obj[key]) {
 | 
						|
                obj[key] = key;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        const code = "export default " + util.inspect(obj, {
 | 
						|
            depth: null,
 | 
						|
        });
 | 
						|
 | 
						|
        fs.writeFileSync(`../../src/languages/${file}`, code);
 | 
						|
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
fs.rmdirSync("./languages", { recursive: true });
 | 
						|
console.log("Done, fix the format by eslint now");
 |