forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			No EOL
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			No EOL
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as languages from "../assets/generated/used_languages.json"
 | 
						|
import {readFileSync, writeFileSync} from "fs";
 | 
						|
 | 
						|
/**
 | 
						|
 * Moves values around in 'section'. Section will be changed
 | 
						|
 * @param section
 | 
						|
 * @param referenceSection
 | 
						|
 * @param language
 | 
						|
 */
 | 
						|
function fixSection(section, referenceSection, language: string) {
 | 
						|
    if(section === undefined){
 | 
						|
        return
 | 
						|
    }
 | 
						|
    outer: for (const key of Object.keys(section)) {
 | 
						|
        const v = section[key]
 | 
						|
        if(typeof v ==="string" && referenceSection[key] === undefined){
 | 
						|
            // Not found in reference, search for a subsection with this key
 | 
						|
            for (const subkey of Object.keys(referenceSection)) {
 | 
						|
                const subreference = referenceSection[subkey]
 | 
						|
                if(subreference[key] !== undefined){
 | 
						|
                    if(section[subkey] !== undefined &&  section[subkey][key] !== undefined) {
 | 
						|
                        console.log(`${subkey}${key} is already defined... Looking furhter`)
 | 
						|
                        continue
 | 
						|
                    }
 | 
						|
                    if(typeof section[subkey] === "string"){
 | 
						|
                        console.log(`NOT overwriting '${section[subkey]}' for ${subkey} (needed for ${key})`)
 | 
						|
                    }else{
 | 
						|
                        // apply fix
 | 
						|
                        if(section[subkey] === undefined){
 | 
						|
                            section[subkey] = {}
 | 
						|
                        }
 | 
						|
                        section[subkey][key] = section[key]
 | 
						|
                        delete  section[key]
 | 
						|
                        console.log(`Rewritten key: ${key} --> ${subkey}.${key} in language ${language}`)
 | 
						|
                        continue outer
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            console.log("No solution found for "+key)
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function main(args:string[]):void{
 | 
						|
    const sectionName = args[0]
 | 
						|
    const l = args[1]
 | 
						|
    if(sectionName === undefined){
 | 
						|
        console.log("Tries to automatically move translations to a new subsegment. Usage: 'sectionToCheck' 'language'")
 | 
						|
        return
 | 
						|
    }
 | 
						|
    const reference = JSON.parse( readFileSync("./langs/en.json","UTF8"))
 | 
						|
    const path = `./langs/${l}.json`
 | 
						|
    const file = JSON.parse( readFileSync(path,"UTF8"))
 | 
						|
    fixSection(file[sectionName], reference[sectionName], l)
 | 
						|
    writeFileSync(path, JSON.stringify(file, null, "    ")+"\n")
 | 
						|
    
 | 
						|
    
 | 
						|
}
 | 
						|
 | 
						|
main(process.argv.slice(2)) |