forked from MapComplete/MapComplete
		
	Better output for errors
This commit is contained in:
		
							parent
							
								
									0f5c132287
								
							
						
					
					
						commit
						9d8f0698f1
					
				
					 2 changed files with 62 additions and 1 deletions
				
			
		
							
								
								
									
										61
									
								
								scripts/automoveTranslations.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								scripts/automoveTranslations.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					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][key] !== undefined) {
 | 
				
			||||||
 | 
					                        console.log(`${subkey}${key} is alrady 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))
 | 
				
			||||||
| 
						 | 
					@ -300,7 +300,7 @@ function transformTranslation(obj: any, path: string[] = [], languageWhitelist :
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if(value["en"] === undefined){
 | 
					            if(value["en"] === undefined){
 | 
				
			||||||
                throw `At ${path.join(".")}: Missing 'en' translation for ${JSON.stringify(value)}`
 | 
					                throw `At ${path.join(".")}: Missing 'en' translation at path ${path.join(".")}.${key}\n\tThe translations in other languages are ${JSON.stringify(value)}`
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            const subParts : string[] = value["en"].match(/{[^}]*}/g)
 | 
					            const subParts : string[] = value["en"].match(/{[^}]*}/g)
 | 
				
			||||||
            let expr = `return new Translation(${JSON.stringify(value)}, "core:${path.join(".")}.${key}")`
 | 
					            let expr = `return new Translation(${JSON.stringify(value)}, "core:${path.join(".")}.${key}")`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue