mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +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; | ||
|  | } |