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 } directionalityLabel?: { value?: string } }[], remapLanguages: Record ): Map; directionality?: string[] }> { console.log("Got " + data.length + " entries") const perId = new Map< string, { translations: Map; directionality?: 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, { translations: new Map(), directionality: [] }) } const entry = perId.get(id) entry.translations.set(labelLang, value) const dir = element.directionalityLabel?.value if (dir) { if (entry.directionality.indexOf(dir) < 0) { entry.directionality.push(dir) } } } console.log("Got " + perId.size + " languages") return perId } }