forked from copystring/ioBroker.roborock
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtranslate_js_files.js
43 lines (33 loc) · 1.67 KB
/
translate_js_files.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const fs = require("fs");
const path = require("path");
const languages = fs.readdirSync("./admin/i18n").filter((file) => fs.statSync(path.join("./admin/i18n", file)).isDirectory());
const genDirs = fs.readdirSync("./lib/genSpecs").filter((file) => fs.statSync(path.join("./lib/genSpecs", file)).isDirectory());
fs.writeFileSync("./genDirs.txt", genDirs.join("\n"));
fs.writeFileSync("./languages.txt", languages.join("\n"));
languages.forEach((lang) => {
genDirs.forEach((genDir) => {
let dirsToProcess = [genDir];
// Überprüfung für alle genX Ordner, ob sie Unterordner haben
const subDirs = fs.readdirSync(`./lib/genSpecs/${genDir}`).filter((file) => fs.statSync(path.join(`./lib/genSpecs/${genDir}`, file)).isDirectory());
if (subDirs.length > 0) {
dirsToProcess = subDirs.map((subDir) => `${genDir}/${subDir}`);
}
dirsToProcess.forEach((dirToProcess) => {
const dirPath = `./lib/genSpecs/${dirToProcess}`;
const files = fs.readdirSync(dirPath).filter((file) => file.endsWith(".js"));
files.forEach((jsFile) => {
const originalFilePath = `${dirPath}/${jsFile}`;
const outputDir = `./tempTranslated/${dirToProcess}`;
fs.mkdirSync(outputDir, { recursive: true });
const translationFilePath = `./admin/i18n/${lang}/translations.json`;
const translationData = require(path.resolve(translationFilePath));
let fileContent = fs.readFileSync(originalFilePath, "utf8");
for (const [key, value] of Object.entries(translationData)) {
const regex = new RegExp(`@${key}@`, "g");
fileContent = fileContent.replace(regex, value);
}
fs.writeFileSync(`${outputDir}/${jsFile.split(".js")[0]}_${lang}.js`, fileContent);
});
});
});
});