mirror of
https://github.com/zadam/trilium.git
synced 2025-10-26 15:56:29 +01:00
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
|
|
import { readFileSync, writeFileSync } from "fs";
|
||
|
|
import { parseString } from '@fast-csv/parse';
|
||
|
|
|
||
|
|
const csvPath = process.argv[2];
|
||
|
|
const translationPath = process.argv[3];
|
||
|
|
|
||
|
|
if (!csvPath || !translationPath) {
|
||
|
|
console.log("Usage: input.csv translation.json")
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
const csvFile = readFileSync(csvPath, "utf-8");
|
||
|
|
const translationFile = readFileSync(translationPath, "utf-8");
|
||
|
|
const translation = JSON.parse(translationFile);
|
||
|
|
|
||
|
|
parseString(csvFile, { headers: true })
|
||
|
|
.on("error", error => {
|
||
|
|
console.error(error);
|
||
|
|
process.exit(2);
|
||
|
|
})
|
||
|
|
.on("data", data => {
|
||
|
|
replaceTranslation(data.context, data.target);
|
||
|
|
})
|
||
|
|
.on("end", () => {
|
||
|
|
writeFileSync(translationPath, JSON.stringify(translation, null, 2));
|
||
|
|
});
|
||
|
|
|
||
|
|
function replaceTranslation(path: string, value: string) {
|
||
|
|
let cursor = translation;
|
||
|
|
const segments = path.split(".");
|
||
|
|
const lastSegment = segments.pop();
|
||
|
|
for (const current of segments) {
|
||
|
|
if (!cursor[current]) cursor[current] = {};
|
||
|
|
cursor = cursor[current];
|
||
|
|
}
|
||
|
|
|
||
|
|
cursor[lastSegment] = value;
|
||
|
|
}
|