forked from MapComplete/MapComplete
Feature: include (all) sign languages in the 'LanguageElement' special rendering
This commit is contained in:
parent
2a3e164669
commit
fe31af4b15
7 changed files with 2251 additions and 8 deletions
|
@ -18,7 +18,7 @@ interface value<T> {
|
|||
}
|
||||
|
||||
interface LanguageSpecResult {
|
||||
directionalityLabel: value<string | "right-to-left" | "left-to-right">
|
||||
directionalityLabel?: value<string | "right-to-left" | "left-to-right">
|
||||
lang: value<string>
|
||||
code: value<string>
|
||||
label: value<string>
|
||||
|
@ -77,6 +77,29 @@ async function fetchRegularLanguages() {
|
|||
return result.results.bindings
|
||||
}
|
||||
|
||||
async function fetchSignLanguages() {
|
||||
const query = `
|
||||
|
||||
SELECT ?lang ?label ?code
|
||||
WHERE
|
||||
{
|
||||
?lang wdt:P31 wd:Q34228.
|
||||
OPTIONAL {
|
||||
?lang wdt:P1813 ?code.
|
||||
}
|
||||
?lang rdfs:label ?label.
|
||||
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
|
||||
}`
|
||||
const url = Wikidata.wds.sparqlQuery(query)
|
||||
|
||||
// request the generated URL with your favorite HTTP request library
|
||||
const result = await Utils.downloadJson<{ results: { bindings: any[] } }>(url, {
|
||||
"User-Agent": "MapComplete script",
|
||||
})
|
||||
return <LanguageSpecResult[]>result.results.bindings
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the object as is. Sets a 'code' binding as predifined value
|
||||
* @param id
|
||||
|
@ -169,7 +192,20 @@ async function getOfficialLanguagesPerCountryCached(
|
|||
return officialLanguages
|
||||
}
|
||||
|
||||
async function generateSignLanguageOverview(){
|
||||
const signLanguages = await fetchSignLanguages()
|
||||
const signPerId = WikidataUtils.extractLanguageData(signLanguages, WikidataUtils.languageRemapping)
|
||||
const asRecord : Record<string, Record<string, string>> = {}
|
||||
for (const lng of signPerId.keys()) {
|
||||
asRecord[lng.toLowerCase()] = Utils.MapToObj(signPerId.get(lng).translations)
|
||||
}
|
||||
return asRecord
|
||||
|
||||
}
|
||||
|
||||
async function main(wipeCache = false) {
|
||||
const signLanguages = await generateSignLanguageOverview()
|
||||
|
||||
const cacheFile = "./src/assets/generated/languages-wd.json"
|
||||
if (wipeCache || !existsSync(cacheFile)) {
|
||||
console.log("Refreshing cache")
|
||||
|
@ -181,7 +217,8 @@ async function main(wipeCache = false) {
|
|||
const data = JSON.parse(readFileSync(cacheFile, { encoding: "utf8" }))
|
||||
const perId = WikidataUtils.extractLanguageData(data, WikidataUtils.languageRemapping)
|
||||
const nativeList = getNativeList(perId)
|
||||
writeFileSync("./src/assets/language_native.json", JSON.stringify(nativeList, null, " "))
|
||||
writeFileSync("./src/assets/language_native.json", JSON.stringify({ ...nativeList, ...signLanguages }, null, " "))
|
||||
|
||||
const languagesPerCountry = Utils.TransposeMap(
|
||||
await getOfficialLanguagesPerCountryCached(wipeCache)
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue