mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 04:16:17 +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;
							 | 
						||
| 
								 | 
							
								}
							 |