diff --git a/src/Logic/Web/Wikidata.ts b/src/Logic/Web/Wikidata.ts index 56a35fda6..2f5fc2cbc 100644 --- a/src/Logic/Web/Wikidata.ts +++ b/src/Logic/Web/Wikidata.ts @@ -1,6 +1,6 @@ import { Utils } from "../../Utils" import { Store, UIEventSource } from "../UIEventSource" -import { WBK } from "wikibase-sdk" +import { SimplifiedClaims, WBK } from "wikibase-sdk" export class WikidataResponse { public readonly id: string @@ -54,14 +54,13 @@ export class WikidataResponse { } static extractClaims(claimsJson: any): Map> { - // @ts-ignore - const simplified = Wikidata.wds.simplify.claims(claimsJson, { + const simplified: SimplifiedClaims = Wikidata.wds.simplify.claims(claimsJson, { timeConverter: "simple-day", }) const claims = new Map>() for (const claimId in simplified) { - const claimsList: any[] = simplified[claimId] + const claimsList = simplified[claimId] claims.set(claimId, new Set(claimsList)) } return claims @@ -439,6 +438,9 @@ export default class Wikidata { return new WikidataLexeme(response).asWikidataResponse() } - return WikidataResponse.fromJson(response) + const resp: WikidataResponse = WikidataResponse.fromJson(response) + // 'mul' is the fallback language for wikidata, see https://source.mapcomplete.org/MapComplete/MapComplete/issues/2346 + resp.labels.set("*", resp.labels.get("mul")) + return resp } } diff --git a/src/UI/i18n/Translation.ts b/src/UI/i18n/Translation.ts index 92df461c8..bdbfbbb60 100644 --- a/src/UI/i18n/Translation.ts +++ b/src/UI/i18n/Translation.ts @@ -165,16 +165,17 @@ export class Translation extends BaseUIElement { * Which language will be effectively used for the given language of choice? */ public actualLanguage(language: string): "*" | string | undefined { - if (this.translations["*"]) { - return "*" - } + const txt = this.translations[language] - if (txt === undefined && this._strictLanguages) { - return undefined - } if (txt !== undefined) { return language } + if (this._strictLanguages) { + return undefined + } + if (this.translations["*"]) { + return "*" + } if (this.translations["en"] !== undefined) { return "en" }