| 
									
										
										
										
											2022-07-11 09:14:26 +02:00
										 |  |  | 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 = { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         nb: "nb_NO", | 
					
						
							|  |  |  |         "zh-hant": "zh_Hant", | 
					
						
							|  |  |  |         "zh-hans": "zh_Hans", | 
					
						
							|  |  |  |         "pt-br": "pt_BR", | 
					
						
							| 
									
										
										
										
											2022-07-11 09:14:26 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * 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 | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |     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>>() | 
					
						
							| 
									
										
										
										
											2022-07-11 09:14:26 +02:00
										 |  |  |         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 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             if (!perId.has(id)) { | 
					
						
							| 
									
										
										
										
											2022-07-11 09:14:26 +02:00
										 |  |  |                 perId.set(id, new Map<string, string>()) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             perId.get(id).set(labelLang, value) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         console.log("Got " + perId.size + " languages") | 
					
						
							| 
									
										
										
										
											2022-07-11 09:14:26 +02:00
										 |  |  |         return perId | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | } |