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 | ||
|  |     } | ||
|  |      | ||
|  | } |