forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			40 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			40 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 | ||
|  |     } | ||
|  | } |