9 changed files with 195 additions and 11 deletions
			
			
		| @ -0,0 +1,3 @@ | |||||
|  | package-lock.json | ||||
|  | test.js | ||||
|  | languages/ | ||||
| @ -0,0 +1,75 @@ | |||||
|  | // 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 = {}; | ||||
|  |         } | ||||
|  | 
 | ||||
|  |         // 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 }); | ||||
| @ -0,0 +1,12 @@ | |||||
|  | { | ||||
|  |     "name": "update-language-files", | ||||
|  |     "type": "module", | ||||
|  |     "version": "1.0.0", | ||||
|  |     "description": "", | ||||
|  |     "main": "index.js", | ||||
|  |     "scripts": { | ||||
|  |         "test": "echo \"Error: no test specified\" && exit 1" | ||||
|  |     }, | ||||
|  |     "author": "", | ||||
|  |     "license": "ISC" | ||||
|  | } | ||||
					Loading…
					
					
				
		Reference in new issue