forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			39 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
export default class WikidataUtils {
 | 
						|
    /**
 | 
						|
     * Mapping from wikidata-codes to weblate-codes. The wikidata-code is the key, mapcomplete/weblate is the value
 | 
						|
     */
 | 
						|
    public static readonly languageRemapping = {
 | 
						|
        nb: "nb_NO",
 | 
						|
        "zh-hant": "zh_Hant",
 | 
						|
        "zh-hans": "zh_Hans",
 | 
						|
        "pt-br": "pt_BR",
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Extract languages and their language in every language from the data source.
 | 
						|
     * The returned mapping will be {languageCode --> {languageCode0 --> language as written in languageCode0  }  }
 | 
						|
     * @param data
 | 
						|
     * @param remapLanguages
 | 
						|
     */
 | 
						|
    public static extractLanguageData(
 | 
						|
        data: { lang: { value: string }; code: { value: string }; label: { value: string } }[],
 | 
						|
        remapLanguages: Record<string, string>
 | 
						|
    ): Map<string, Map<string, string>> {
 | 
						|
        console.log("Got " + data.length + " entries")
 | 
						|
        const perId = new Map<string, Map<string, string>>()
 | 
						|
        for (const element of data) {
 | 
						|
            let id = element.code.value
 | 
						|
            id = remapLanguages[id] ?? id
 | 
						|
            let labelLang = element.label["xml:lang"]
 | 
						|
            labelLang = remapLanguages[labelLang] ?? labelLang
 | 
						|
            const value = element.label.value
 | 
						|
            if (!perId.has(id)) {
 | 
						|
                perId.set(id, new Map<string, string>())
 | 
						|
            }
 | 
						|
            perId.get(id).set(labelLang, value)
 | 
						|
        }
 | 
						|
 | 
						|
        console.log("Got " + perId.size + " languages")
 | 
						|
        return perId
 | 
						|
    }
 | 
						|
}
 |