From 93ebdd8e1688d2424f0e67d03271d46b4c6640b9 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Tue, 8 Oct 2024 22:37:11 +0200 Subject: [PATCH 1/7] Feat: allow to disable questions (and to enable them again), fix #256 --- assets/layers/usersettings/usersettings.json | 8 + src/Logic/State/UserRelatedState.ts | 10 ++ src/UI/Base/DotMenu.svelte | 14 +- src/UI/Popup/DisabledQuestions.svelte | 23 +++ src/UI/Popup/DisabledQuestionsLayer.svelte | 45 +++++ src/UI/Popup/TagRendering/Questionbox.svelte | 168 +++++++++++------- .../TagRendering/TagRenderingQuestion.svelte | 35 +++- src/UI/SpecialVisualizations.ts | 11 ++ 8 files changed, 238 insertions(+), 76 deletions(-) create mode 100644 src/UI/Popup/DisabledQuestions.svelte create mode 100644 src/UI/Popup/DisabledQuestionsLayer.svelte diff --git a/assets/layers/usersettings/usersettings.json b/assets/layers/usersettings/usersettings.json index fd54a5fda..141189360 100644 --- a/assets/layers/usersettings/usersettings.json +++ b/assets/layers/usersettings/usersettings.json @@ -738,6 +738,14 @@ } ] }, + { + "id": "disabled-questions", + "render": { + "special": { + "type": "disabled_questions" + } + } + }, { "id": "title-privacy-legal", "render": { diff --git a/src/Logic/State/UserRelatedState.ts b/src/Logic/State/UserRelatedState.ts index e7ac6c931..7228ae61e 100644 --- a/src/Logic/State/UserRelatedState.ts +++ b/src/Logic/State/UserRelatedState.ts @@ -545,4 +545,14 @@ export default class UserRelatedState { return amendedPrefs } + + + /** + * The disabled questions for this theme and layer + */ + public getThemeDisabled(themeId: string, layerId: string): UIEventSource { + const flatSource = this.osmConnection.getPreference("disabled-questions-" + themeId + "-" + layerId, "[]") + return UIEventSource.asObject(flatSource, []) + } + } diff --git a/src/UI/Base/DotMenu.svelte b/src/UI/Base/DotMenu.svelte index 05d41c7ff..a600f2db3 100644 --- a/src/UI/Base/DotMenu.svelte +++ b/src/UI/Base/DotMenu.svelte @@ -9,17 +9,17 @@ export let open = new UIEventSource(false) export let dotsSize = `w-6 h-6` export let dotsPosition = `top-0 right-0` - export let hideBackground= false + export let hideBackground: boolean = false let menuPosition = `` - if(dotsPosition.indexOf("left-0") >= 0){ + if (dotsPosition.indexOf("left-0") >= 0) { menuPosition = "left-0" - }else{ + } else { menuPosition = `right-0` } - if(dotsPosition.indexOf("top-0") > 0){ + if (dotsPosition.indexOf("top-0") > 0) { menuPosition += " bottom-0" - }else{ + } else { menuPosition += ` top-0` } @@ -49,7 +49,7 @@ } :global(.dots-menu > path) { - fill: var(--interactive-background); + fill: var(--button-background-hover); transition: fill 350ms linear; cursor: pointer; @@ -74,7 +74,7 @@ } .transition-background { - transition: background-color 150ms linear; + transition: background-color 150ms linear; } .transition-background.collapsed { diff --git a/src/UI/Popup/DisabledQuestions.svelte b/src/UI/Popup/DisabledQuestions.svelte new file mode 100644 index 000000000..4e9a5f006 --- /dev/null +++ b/src/UI/Popup/DisabledQuestions.svelte @@ -0,0 +1,23 @@ + + +

Disabled questions

+{#if $allDisabled.length === 0} + To disable a question, click the three dots in the upper-right corner +{:else} + To enable a question again, click it + {#each layers as layer (layer.id)} + + {/each} +{/if} diff --git a/src/UI/Popup/DisabledQuestionsLayer.svelte b/src/UI/Popup/DisabledQuestionsLayer.svelte new file mode 100644 index 000000000..82912b4dc --- /dev/null +++ b/src/UI/Popup/DisabledQuestionsLayer.svelte @@ -0,0 +1,45 @@ + + +{#if $disabledQuestions.length > 0} +
+ +

+
+ layer.defaultIcon()} /> +
+ +

+
+ {#each $disabledQuestions as id} + + {/each} +
+
+{/if} diff --git a/src/UI/Popup/TagRendering/Questionbox.svelte b/src/UI/Popup/TagRendering/Questionbox.svelte index 20a02d158..002e13c88 100644 --- a/src/UI/Popup/TagRendering/Questionbox.svelte +++ b/src/UI/Popup/TagRendering/Questionbox.svelte @@ -43,11 +43,20 @@ } return true } + const baseQuestions = (layer?.tagRenderings ?? [])?.filter( - (tr) => allowed(tr.labels) && tr.question !== undefined + (tr) => allowed(tr.labels) && tr.question !== undefined, ) + + /** + * Ids of skipped questions + */ let skippedQuestions = new UIEventSource>(new Set()) + let layerDisabledForTheme = state.userRelatedState.getThemeDisabled(state.layout.id, layer.id) + layerDisabledForTheme.addCallbackAndRunD(disabled => { + skippedQuestions.set(new Set(disabled.concat(Array.from(skippedQuestions.data)))) + }) let questionboxElem: HTMLDivElement let questionsToAsk = tags.map( (tags) => { @@ -69,10 +78,10 @@ } return questionsToAsk }, - [skippedQuestions] + [skippedQuestions], ) let firstQuestion: UIEventSource = new UIEventSource( - undefined + undefined, ) let allQuestionsToAsk: UIEventSource = new UIEventSource< TagRenderingConfig[] @@ -95,6 +104,8 @@ let skipped: number = 0 let loginEnabled = state.featureSwitches.featureSwitchEnableLogin + let debug = state.featureSwitches.featureSwitchIsDebugging + function skip(question: { id: string }, didAnswer: boolean = false) { skippedQuestions.data.add(question.id) // Must use ID, the config object might be a copy of the original @@ -117,43 +128,84 @@ class="marker-questionbox-root" class:hidden={$questionsToAsk.length === 0 && skipped === 0 && answered === 0} > + {#if $showAllQuestionsAtOnce} +
+ {#each $allQuestionsToAsk as question (question.id)} + + {/each} +
+ {:else if $firstQuestion !== undefined} + { + skip($firstQuestion, true) + }} + > + + + {/if} + {#if $allQuestionsToAsk.length === 0} +
+ +
+ {/if} + +
+ {#if skipped + answered > 0} -
- -
- {#if answered === 0} - {#if skipped === 1} - - {:else} - - {/if} - {:else if answered === 1} - {#if skipped === 0} - +
+ {#if answered === 0} + {#if skipped === 1} + + {:else} + + {/if} + {:else if answered === 1} + {#if skipped === 0} + + {:else if skipped === 1} + + {:else} + + {/if} + {:else if skipped === 0} + {:else if skipped === 1} - + {:else} - {/if} - {:else if skipped === 0} - - {:else if skipped === 1} - - {:else} - - {/if} + /> + {/if} +
- {#if skipped > 0} + {#if skipped + $skippedQuestions.size > 0} + {/if} {/if} - {:else} -
- {#if $showAllQuestionsAtOnce} -
- {#each $allQuestionsToAsk as question (question.id)} - - {/each} -
- {:else if $firstQuestion !== undefined} - { - skip($firstQuestion, true) + + {#if $skippedQuestions.size - skipped > 0} + - - {/if} -
- {/if} + > + Show the disabled questions for this object + + + {/if} + {#if $debug} + Skipped questions are {Array.from($skippedQuestions).join(", ")} + {/if} +
{/if} diff --git a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte index 4d87e56cb..092f49e74 100644 --- a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte @@ -36,6 +36,8 @@ import { Modal } from "flowbite-svelte" import Popup from "../../Base/Popup.svelte" import If from "../../Base/If.svelte" + import DotMenu from "../../Base/DotMenu.svelte" + import SidebarUnit from "../../Base/SidebarUnit.svelte" export let config: TagRenderingConfig export let tags: UIEventSource> @@ -338,10 +340,41 @@ .then((changes) => state.changes.applyChanges(changes)) .catch(console.error) } + + let disabledInTheme = state.userRelatedState.getThemeDisabled(state.layout.id, layer?.id) + let menuIsOpened = new UIEventSource(false) + + function disableQuestion() { + const newList = Utils.Dedup([config.id, ...disabledInTheme.data]) + disabledInTheme.set(newList) + menuIsOpened.set(false) + } + + function enableQuestion() { + const newList = disabledInTheme.data?.filter(id => id !== config.id) + disabledInTheme.set(newList) + menuIsOpened.set(false) + } {#if question !== undefined}
+ + {#if layer.isNormal()} + + + {#if $disabledInTheme.indexOf(config.id) >= 0} + + {:else} + + {/if} + + + {/if}
v === "yes" || v === "full" || v === "always")}>
- + {#each $settableKeys as key} diff --git a/src/UI/SpecialVisualizations.ts b/src/UI/SpecialVisualizations.ts index ee038b399..b075ea49b 100644 --- a/src/UI/SpecialVisualizations.ts +++ b/src/UI/SpecialVisualizations.ts @@ -97,6 +97,7 @@ import ClearCaches from "./Popup/ClearCaches.svelte" import GroupedView from "./Popup/GroupedView.svelte" import { QuestionableTagRenderingConfigJson } from "../Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson" import NoteCommentElement from "./Popup/Notes/NoteCommentElement.svelte" +import DisabledQuestions from "./Popup/DisabledQuestions.svelte" class NearbyImageVis implements SpecialVisualization { // Class must be in SpecialVisualisations due to weird cyclical import that breaks the tests @@ -2113,6 +2114,16 @@ export default class SpecialVisualizations { }) }, }, + { + funcName: "disabled_questions", + docs: "Shows which questions are disabled for every layer. Used in 'settings'", + needsUrls: [], + args: [], + constr(state) { + return new SvelteUIElement(DisabledQuestions, { state }) + }, + + }, ] specialVisualizations.push(new AutoApplyButton(specialVisualizations)) From 5b3b1d409f98147108c6fac491ac766b7523c4f8 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Tue, 8 Oct 2024 23:57:59 +0200 Subject: [PATCH 2/7] Chore: remove unneeded translations --- langs/ca.json | 8 -------- langs/cs.json | 8 -------- langs/da.json | 8 -------- langs/de.json | 8 -------- langs/en.json | 8 -------- langs/eo.json | 3 --- langs/es.json | 8 -------- langs/fi.json | 8 -------- langs/fil.json | 3 --- langs/fr.json | 8 -------- langs/gl.json | 8 -------- langs/he_IL.json | 3 +-- langs/hu.json | 8 -------- langs/id.json | 5 ----- langs/it.json | 8 -------- langs/ja.json | 8 -------- langs/nb_NO.json | 8 -------- langs/nl.json | 8 -------- langs/pl.json | 8 -------- langs/pt.json | 8 -------- langs/pt_BR.json | 8 -------- langs/ro.json | 3 +-- langs/ru.json | 8 -------- langs/zh_Hant.json | 8 -------- 24 files changed, 2 insertions(+), 167 deletions(-) diff --git a/langs/ca.json b/langs/ca.json index e4d21759b..0eb0d7744 100644 --- a/langs/ca.json +++ b/langs/ca.json @@ -295,14 +295,6 @@ "skippedMultiple": "Heu saltat {skipped} pregutnes", "skippedOne": "Heu saltat una pregunta" }, - "questions": { - "emailIs": "L'adreça de correu d'aquesta {category} és {email}", - "emailOf": "Quina és l'adreça de correu-e de {category}?", - "phoneNumberIs": "El número de telèfon de {category} és {phone}", - "phoneNumberOf": "Quin és el telèfon de {category}?", - "websiteIs": "Pàgina web: {website}", - "websiteOf": "Quina és la pàgina web de {category}?" - }, "readYourMessages": "Per favor, llegeix tots els teus missatges d'OpenStreetMap abans d'afegir nous punts.", "removeLocationHistory": "Esborrar l'historial d'ubicació", "returnToTheMap": "Tornar al mapa", diff --git a/langs/cs.json b/langs/cs.json index 926b9e4bf..478afc8e9 100644 --- a/langs/cs.json +++ b/langs/cs.json @@ -385,14 +385,6 @@ "skippedMultiple": "Přeskočili jste {skipped} otázky", "skippedOne": "Vynechali jste jednu otázku" }, - "questions": { - "emailIs": "E-mailová adresa této {category} je {email}", - "emailOf": "Jaká je e-mailová adresa {category}?", - "phoneNumberIs": "Telefonní číslo této {category} je {phone}", - "phoneNumberOf": "Jaké je telefonní číslo na {category}?", - "websiteIs": "Web: {website}", - "websiteOf": "Jaká je webová stránka {category}?" - }, "readYourMessages": "Před přidáním nové funkce si prosím přečtěte všechny zprávy OpenStreetMap.", "removeLocationHistory": "Odstranit historii polohy", "retry": "Zkusit znovu", diff --git a/langs/da.json b/langs/da.json index a5e17c221..10cd6ecfa 100644 --- a/langs/da.json +++ b/langs/da.json @@ -274,14 +274,6 @@ "skippedMultiple": "Du sprang over {skipped} spørgsmål", "skippedOne": "Du sprang over ét spørgsmål" }, - "questions": { - "emailIs": "E-mailadressen for denne {category} er {email}", - "emailOf": "Hvad er e-mailadressen for {category}?", - "phoneNumberIs": "Telefonnummeret for denne/dette {category} er {phone}", - "phoneNumberOf": "Hvad er telefonnummeret for {category}?", - "websiteIs": "Hjemmeside: {website}", - "websiteOf": "Hvad er hjemmesiden for {category}?" - }, "readYourMessages": "Læs venligst alle dine OpenStreetMap beskeder før du tilføjer et nyt punkt.", "removeLocationHistory": "Slet placeringshistorikken", "returnToTheMap": "Vend tilbage til kortet", diff --git a/langs/de.json b/langs/de.json index 86a568fba..031be7204 100644 --- a/langs/de.json +++ b/langs/de.json @@ -385,14 +385,6 @@ "skippedMultiple": "Du hast {skipped} Fragen übersprungen", "skippedOne": "Du hast eine Frage übersprungen" }, - "questions": { - "emailIs": "Die E-Mail-Adresse dieser {category} lautet {email}", - "emailOf": "Wie lautet die E-Mail-Adresse der {category}?", - "phoneNumberIs": "Die Telefonnummer dieser {category} lautet {phone}", - "phoneNumberOf": "Wie lautet die Telefonnummer der {category}?", - "websiteIs": "Webseite: {website}", - "websiteOf": "Wie lautet die Webseite der {category}?" - }, "readYourMessages": "Bitte lesen Sie alle Ihre OpenStreetMap-Nachrichten, bevor Sie ein neues Objekt hinzufügen.", "removeLocationHistory": "Standortverlauf löschen", "retry": "Wiederholen", diff --git a/langs/en.json b/langs/en.json index 644345f35..a7c9aaf91 100644 --- a/langs/en.json +++ b/langs/en.json @@ -387,14 +387,6 @@ "skippedMultiple": "You skipped {skipped} questions", "skippedOne": "You skipped one question" }, - "questions": { - "emailIs": "The email address of this {category} is {email}", - "emailOf": "What is the email address of {category}?", - "phoneNumberIs": "The phone number of this {category} is {phone}", - "phoneNumberOf": "What is the phone number of {category}?", - "websiteIs": "Website: {website}", - "websiteOf": "What is the website of {category}?" - }, "readYourMessages": "Please, read all your OpenStreetMap-messages before adding a new feature.", "removeLocationHistory": "Delete the location history", "retry": "Retry", diff --git a/langs/eo.json b/langs/eo.json index 71efe012f..2a2f3ae4f 100644 --- a/langs/eo.json +++ b/langs/eo.json @@ -41,9 +41,6 @@ "versionInfo": "v{version} - generita je {date}" }, "pickLanguage": "Elektu lingvon: ", - "questions": { - "websiteIs": "Retejo: {website}" - }, "returnToTheMap": "Reen al la mapo", "save": "Konservi", "search": { diff --git a/langs/es.json b/langs/es.json index 12f368827..eaec9c9a8 100644 --- a/langs/es.json +++ b/langs/es.json @@ -385,14 +385,6 @@ "skippedMultiple": "Te has saltado {skipped} preguntas", "skippedOne": "Te has saltado una pregunta" }, - "questions": { - "emailIs": "La dirección de correo electrónico de {category} es {email}", - "emailOf": "¿Qué dirección de correo electrónico tiene {category}?", - "phoneNumberIs": "El número de teléfono de esta {category} es {phone}", - "phoneNumberOf": "Qué teléfono tiene {category}?", - "websiteIs": "Página web: {website}", - "websiteOf": "Cual es la página web de {category}?" - }, "readYourMessages": "Lee todos tus mensajes de OpenStreetMap antes de añadir nuevos elementos.", "removeLocationHistory": "Eliminar el historial de ubicaciones", "retry": "Reintentar", diff --git a/langs/fi.json b/langs/fi.json index ad4194fb5..06f1e1349 100644 --- a/langs/fi.json +++ b/langs/fi.json @@ -335,14 +335,6 @@ "skippedMultiple": "Ohitit {skipped} kysymystä", "skippedOne": "Ohitit yhden kysymyksen" }, - "questions": { - "emailIs": "Sähköpostiosoite kohteelle {category} on {email}", - "emailOf": "Mikä on sähköpostiosoite kohteelle {category}?", - "phoneNumberIs": "Puhelinnumero kohteelle {category} on {phone}", - "phoneNumberOf": "Mikä on puhelinnumero kohteelle {category}?", - "websiteIs": "Verkkosivusto: {website}", - "websiteOf": "Mikä on verkkosivu kohteelle {category}?" - }, "readYourMessages": "Luethan kaikki OpenStreetMap-viestisi ennen kuin lisäät uutta ominaisuutta.", "removeLocationHistory": "Poista sijaintihistoria", "returnToTheMap": "Palaa karttaan", diff --git a/langs/fil.json b/langs/fil.json index da1d53535..7d13cbd7d 100644 --- a/langs/fil.json +++ b/langs/fil.json @@ -92,9 +92,6 @@ "questionBox": { "answeredMultiple": "Sinagutan mo ang {answered} na tanong" }, - "questions": { - "emailOf": "Ano ba ang email address ng {category}?" - }, "returnToTheMap": "Bumalik sa mapa", "search": { "nothing": "Walang nahanap…" diff --git a/langs/fr.json b/langs/fr.json index 2b4654d56..a52ad4dfb 100644 --- a/langs/fr.json +++ b/langs/fr.json @@ -273,14 +273,6 @@ "skippedMultiple": "Vous avez passé {skipped} questions", "skippedOne": "Vous avez passé une question" }, - "questions": { - "emailIs": "L'adresse électronique de {category} est {email}", - "emailOf": "Quelle est l'adresse électronique de {category} ?", - "phoneNumberIs": "Le numéro de téléphone de {category} est {phone}", - "phoneNumberOf": "Quel est le numéro de téléphone de {category} ?", - "websiteIs": "Site Web : {website}", - "websiteOf": "Quel est le site internet de {category} ?" - }, "readYourMessages": "Merci de lire tous vos messages sur OpenStreetMap avant d'ajouter un nouveau point.", "removeLocationHistory": "Supprimer l'historique des positions", "returnToTheMap": "Retourner sur la carte", diff --git a/langs/gl.json b/langs/gl.json index cdcb7bd7d..4a2bdd8da 100644 --- a/langs/gl.json +++ b/langs/gl.json @@ -72,14 +72,6 @@ }, "osmLinkTooltip": "Ollar este obxecto no OpenStreetMap para ollar o historial e outras opcións de edición", "pickLanguage": "Escoller lingua: ", - "questions": { - "emailIs": "O enderezo de correo electrónico de {category} é {email}", - "emailOf": "Cal é o enderezo de correo electrónico de {category}?", - "phoneNumberIs": "O número de teléfono de {category} é {phone}", - "phoneNumberOf": "Cal é o número de teléfono de {category}?", - "websiteIs": "Páxina web: {website}", - "websiteOf": "Cal é a páxina web de {category}?" - }, "readYourMessages": "Le todos a túas mensaxes do OpenStreetMap antes de engadir novos puntos.", "returnToTheMap": "Voltar ó mapa", "save": "Gardar", diff --git a/langs/he_IL.json b/langs/he_IL.json index 7a73a41bf..9e26dfeeb 100644 --- a/langs/he_IL.json +++ b/langs/he_IL.json @@ -1,2 +1 @@ -{ -} \ No newline at end of file +{} \ No newline at end of file diff --git a/langs/hu.json b/langs/hu.json index 94287046c..e89a3a118 100644 --- a/langs/hu.json +++ b/langs/hu.json @@ -175,14 +175,6 @@ }, "pickLanguage": "Nyelv kiválasztása: ", "poweredByOsm": "Motor: OpenStreetMap", - "questions": { - "emailIs": "Ezen {category} e-mail-címe: {email}", - "emailOf": "Mi az e-mail-címe ennek ({category})?", - "phoneNumberIs": "Ezen {category} telefonszáma: {phone}", - "phoneNumberOf": "Mi a telefonszáma ennek ({category})?", - "websiteIs": "Weboldal: {website}", - "websiteOf": "Mi a weboldala ennek ({category})?" - }, "readYourMessages": "Kérjük, új térképelem hozzáadása előtt olvasd el az összes OpenStreetMap-üzeneted.", "removeLocationHistory": "Helyelőzmények törlése", "returnToTheMap": "Vissza a térképhez", diff --git a/langs/id.json b/langs/id.json index bae7ae74d..b026bec57 100644 --- a/langs/id.json +++ b/langs/id.json @@ -96,11 +96,6 @@ "ph_open": "buka" }, "pickLanguage": "Pilih bahasa: ", - "questions": { - "emailOf": "Apa alamat email {category}?", - "phoneNumberOf": "Apakah nombor telepon {category} ini?", - "websiteIs": "Website: {website}" - }, "search": { "searching": "Sdg mencari…" }, diff --git a/langs/it.json b/langs/it.json index fecd93e44..2a95f92ec 100644 --- a/langs/it.json +++ b/langs/it.json @@ -311,14 +311,6 @@ "answeredOne": "Hai risposto a una domanda", "done": "Non ci sono più domande! Grazie!" }, - "questions": { - "emailIs": "L’indirizzo email di questa {category} è {email}", - "emailOf": "Qual è l’indirizzo email di {category}?", - "phoneNumberIs": "Il numero di telefono di questa {category} è {phone}", - "phoneNumberOf": "Qual è il numero di telefono di {category}?", - "websiteIs": "Sito web: {website}", - "websiteOf": "Qual è il sito web di {category}?" - }, "readYourMessages": "Leggi tutti i tuoi messaggi OpenStreetMap prima di aggiungere un nuovo elemento.", "removeLocationHistory": "Elimina la cronologia di geolocalizzazione", "retry": "Riprova", diff --git a/langs/ja.json b/langs/ja.json index 0823819fe..20ddbcb25 100644 --- a/langs/ja.json +++ b/langs/ja.json @@ -72,14 +72,6 @@ }, "osmLinkTooltip": "履歴とその他の編集オプションについては、OpenStreetMapのこのオブジェクトを参照してください", "pickLanguage": "言語を選択します: ", - "questions": { - "emailIs": "この{category}の電子メール・アドレスは{email}です", - "emailOf": "{category} の電子メールアドレスは何ですか?", - "phoneNumberIs": "この {category} の電話番号は{phone}です。", - "phoneNumberOf": "{category} の電話番号は何番ですか?", - "websiteIs": "Webサイト:{website}", - "websiteOf": "{category} のウェブサイトはどこですか?" - }, "readYourMessages": "新しいポイントを追加する前に、OpenStreetMapのメッセージをすべて読んでください。", "returnToTheMap": "マップに戻る", "save": "保存", diff --git a/langs/nb_NO.json b/langs/nb_NO.json index 1b8b9c914..78bcf77f8 100644 --- a/langs/nb_NO.json +++ b/langs/nb_NO.json @@ -212,14 +212,6 @@ }, "pickLanguage": "Velg språk: ", "poweredByOsm": "Med data fra OpenStreetMap", - "questions": { - "emailIs": "E-postadressen til {category} er {email}", - "emailOf": "Hva er e-postadressen til {category}?", - "phoneNumberIs": "Telefonnummeret til denne {category} er {phone}", - "phoneNumberOf": "Hva er telefonnummeret til {category}?", - "websiteIs": "Nettside: {website}", - "websiteOf": "Hva er nettsiden til {category}?" - }, "readYourMessages": "Les alle OpenStreetMap-meldingene dine før du legger til et nytt punkt.", "removeLocationHistory": "Slett posisjonshistorikken", "returnToTheMap": "Gå tilbake til kartet", diff --git a/langs/nl.json b/langs/nl.json index ec591161f..592933d44 100644 --- a/langs/nl.json +++ b/langs/nl.json @@ -319,14 +319,6 @@ "skippedMultiple": "Je hebt {skipped} vragen overgeslaan", "skippedOne": "Je hebt één vraag beantwoord" }, - "questions": { - "emailIs": "Het email-adres van {category} is {email}", - "emailOf": "Wat is het email-adres van {category}?", - "phoneNumberIs": "Het telefoonnummer van {category} is {phone}", - "phoneNumberOf": "Wat is het telefoonnummer van {category}?", - "websiteIs": "Website: {website}", - "websiteOf": "Wat is de website van {category}?" - }, "readYourMessages": "Gelieve eerst je berichten op OpenStreetMap te lezen alvorens nieuwe objecten toe te voegen.", "removeLocationHistory": "Verwijder de geschiedenis aan locaties", "returnToTheMap": "Ga terug naar de kaart", diff --git a/langs/pl.json b/langs/pl.json index eaabe52bf..3d41210e6 100644 --- a/langs/pl.json +++ b/langs/pl.json @@ -279,14 +279,6 @@ "skippedMultiple": "Pominąłeś {skipped} pytania", "skippedOne": "Pominąłeś jedno pytanie" }, - "questions": { - "emailIs": "Adres e-mail {category} to {email}", - "emailOf": "Jaki jest adres e-mail {category}?", - "phoneNumberIs": "Numer telefonu tej {category} to {phone}", - "phoneNumberOf": "Jaki jest numer telefonu do {category}?", - "websiteIs": "Strona internetowa: {website}", - "websiteOf": "Jaka jest strona internetowa {category}?" - }, "readYourMessages": "Proszę przeczytać wszystkie wiadomości OpenStreetMap przed dodaniem nowej funkcji.", "removeLocationHistory": "Usuń historię lokalizacji", "returnToTheMap": "Wróć do mapy", diff --git a/langs/pt.json b/langs/pt.json index 01d2beba7..a26e7661b 100644 --- a/langs/pt.json +++ b/langs/pt.json @@ -366,14 +366,6 @@ "skippedMultiple": "Saltou {skipped} questões", "skippedOne": "Saltou uma questão" }, - "questions": { - "emailIs": "O endereço de e-mail de {category} é {email}", - "emailOf": "Qual é o endereço de e-mail de {category}?", - "phoneNumberIs": "O número de telefone de {category} é {phone}", - "phoneNumberOf": "Qual é o número de telefone de {category}?", - "websiteIs": "Site: {website}", - "websiteOf": "Qual é o site de {category}?" - }, "readYourMessages": "Por favor, leia todas as suas mensagens do OpenStreetMap antes de adicionar um novo elemento.", "removeLocationHistory": "Eliminar o histórico de localização", "returnToTheMap": "Voltar ao mapa", diff --git a/langs/pt_BR.json b/langs/pt_BR.json index d847a272c..b2d1007c4 100644 --- a/langs/pt_BR.json +++ b/langs/pt_BR.json @@ -80,14 +80,6 @@ }, "osmLinkTooltip": "Veja este objeto no OpenStreetMap para histórico e mais opções de edição", "pickLanguage": "Escolha um idioma: ", - "questions": { - "emailIs": "O endereço de e-mail deste {category} é {email}", - "emailOf": "Qual é o endereço de e-mail de {category}?", - "phoneNumberIs": "O número de telefone deste {category} é {phone}", - "phoneNumberOf": "Qual é o número de telefone de {category}?", - "websiteIs": "Site: {website}", - "websiteOf": "Qual é o site de {category}?" - }, "readYourMessages": "Por favor, leia todas as suas mensagens do OpenStreetMap antes de adicionar um novo ponto.", "returnToTheMap": "Voltar ao mapa", "save": "Salvar", diff --git a/langs/ro.json b/langs/ro.json index 7a73a41bf..9e26dfeeb 100644 --- a/langs/ro.json +++ b/langs/ro.json @@ -1,2 +1 @@ -{ -} \ No newline at end of file +{} \ No newline at end of file diff --git a/langs/ru.json b/langs/ru.json index 5084c1959..c8e7f25c1 100644 --- a/langs/ru.json +++ b/langs/ru.json @@ -95,14 +95,6 @@ }, "osmLinkTooltip": "Посмотрите этот объект на OpenStreetMap чтобы увидеть его историю или отредактировать", "pickLanguage": "Выберите язык: ", - "questions": { - "emailIs": "Адрес электронной почты у {category}: {email}", - "emailOf": "Какой адрес электронной почты у {category}?", - "phoneNumberIs": "Телефонный номер {category}: {phone}", - "phoneNumberOf": "Какой номер телефона у {category}?", - "websiteIs": "Сайт: {website}", - "websiteOf": "Какой сайт у {category}?" - }, "readYourMessages": "Пожалуйста, прочитайте все ваши сообщения на сайте OpenStreetMap перед тем как добавлять новую точку.", "returnToTheMap": "Вернуться на карту", "save": "Сохранить", diff --git a/langs/zh_Hant.json b/langs/zh_Hant.json index 2027183fc..e257ff9bb 100644 --- a/langs/zh_Hant.json +++ b/langs/zh_Hant.json @@ -373,14 +373,6 @@ "skippedMultiple": "你跳過 {skipped} 問題", "skippedOne": "你跳過一個問題" }, - "questions": { - "emailIs": "{category} 的電子郵件地址是{email}", - "emailOf": "{category} 的電子郵件地址是?", - "phoneNumberIs": "此 {category} 的電話號碼為 {phone}", - "phoneNumberOf": "{category} 的電話號碼是?", - "websiteIs": "網站:{website}", - "websiteOf": "{category} 的網站網址是?" - }, "readYourMessages": "請先閱讀開放街圖訊息之前再來新增新圖徵。", "removeLocationHistory": "刪除位置歷史", "retry": "重試", From 90b680764b520dc6205d928a233697cfc4b1df78 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 9 Oct 2024 00:07:23 +0200 Subject: [PATCH 3/7] Chore: make translatable --- langs/en.json | 7 +++++++ src/UI/Popup/DisabledQuestions.svelte | 12 ++++++++---- .../Popup/TagRendering/TagRenderingQuestion.svelte | 4 ++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/langs/en.json b/langs/en.json index 6ae4d5537..cd11e14f2 100644 --- a/langs/en.json +++ b/langs/en.json @@ -387,6 +387,13 @@ "skippedMultiple": "You skipped {skipped} questions", "skippedOne": "You skipped one question" }, + "questions": { + "disable": "Do not ask this question again", + "disabledIntro": "You disabled some type of questions. To enable a question again, click them here", + "disabledTitle": "Disabled questions", + "enable": "Ask this question for all features", + "noneDisabled": "If you are not interested in a specific type of question, disable it. To disable a question, click the three dots in the upper-right corner and select 'disable'" + }, "readYourMessages": "Please, read all your OpenStreetMap-messages before adding a new feature.", "removeLocationHistory": "Delete the location history", "retry": "Retry", diff --git a/src/UI/Popup/DisabledQuestions.svelte b/src/UI/Popup/DisabledQuestions.svelte index 4e9a5f006..b7a7b2c5a 100644 --- a/src/UI/Popup/DisabledQuestions.svelte +++ b/src/UI/Popup/DisabledQuestions.svelte @@ -1,6 +1,8 @@ -

Disabled questions

+

+ +

{#if $allDisabled.length === 0} - To disable a question, click the three dots in the upper-right corner + {:else} - To enable a question again, click it + {#each layers as layer (layer.id)} {/each} diff --git a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte index 092f49e74..8f6056332 100644 --- a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte @@ -365,11 +365,11 @@ {#if $disabledInTheme.indexOf(config.id) >= 0} {:else} {/if} From acdeb83244285d969f58629b704c0be128f99710 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 9 Oct 2024 22:06:01 +0200 Subject: [PATCH 4/7] UI: attempt to fix font on test builds --- public/css/index-tailwind-output.css | 2 +- src/index.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/css/index-tailwind-output.css b/public/css/index-tailwind-output.css index 560839295..4d80d7bc4 100644 --- a/public/css/index-tailwind-output.css +++ b/public/css/index-tailwind-output.css @@ -5058,7 +5058,7 @@ input[type="range"].range-lg::-moz-range-thumb { @font-face { font-family: "Source Sans Pro"; - src: url("/assets/source-sans-pro.regular.ttf") format("woff"); + src: url("./assets/source-sans-pro.regular.ttf") format("woff"); } /***********************************************************************\ diff --git a/src/index.css b/src/index.css index e32bb619d..3f8f8ae24 100644 --- a/src/index.css +++ b/src/index.css @@ -68,7 +68,7 @@ @font-face { font-family: "Source Sans Pro"; - src: url("/assets/source-sans-pro.regular.ttf") format("woff"); + src: url("./assets/source-sans-pro.regular.ttf") format("woff"); } /***********************************************************************\ From c72b5278f39c1d4a34f32227dacb85aba4a4cd9b Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 9 Oct 2024 22:31:05 +0200 Subject: [PATCH 5/7] UI: attempt to fix font on test builds --- .../assets/{ => fonts}/source-sans-pro.regular.ttf | Bin public/css/index-tailwind-output.css | 2 +- src/index.css | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename public/assets/{ => fonts}/source-sans-pro.regular.ttf (100%) diff --git a/public/assets/source-sans-pro.regular.ttf b/public/assets/fonts/source-sans-pro.regular.ttf similarity index 100% rename from public/assets/source-sans-pro.regular.ttf rename to public/assets/fonts/source-sans-pro.regular.ttf diff --git a/public/css/index-tailwind-output.css b/public/css/index-tailwind-output.css index 4d80d7bc4..14a20318e 100644 --- a/public/css/index-tailwind-output.css +++ b/public/css/index-tailwind-output.css @@ -5058,7 +5058,7 @@ input[type="range"].range-lg::-moz-range-thumb { @font-face { font-family: "Source Sans Pro"; - src: url("./assets/source-sans-pro.regular.ttf") format("woff"); + src: url("../assets/fonts/source-sans-pro.regular.ttf") format("woff"); } /***********************************************************************\ diff --git a/src/index.css b/src/index.css index 3f8f8ae24..569d0bac0 100644 --- a/src/index.css +++ b/src/index.css @@ -68,7 +68,7 @@ @font-face { font-family: "Source Sans Pro"; - src: url("./assets/source-sans-pro.regular.ttf") format("woff"); + src: url("../assets/fonts/source-sans-pro.regular.ttf") format("woff"); } /***********************************************************************\ From e8a79a4ff7f81512a147bdd4358ddb9f9ac583ba Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 9 Oct 2024 22:42:16 +0200 Subject: [PATCH 6/7] Docs: Add comment about possibly wrong path --- src/index.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.css b/src/index.css index 569d0bac0..b959ea056 100644 --- a/src/index.css +++ b/src/index.css @@ -68,6 +68,7 @@ @font-face { font-family: "Source Sans Pro"; + /*This path might seem incorrect. However, 'index.css' will be compiled and placed in 'public/css', from where this path _is_ correct*/ src: url("../assets/fonts/source-sans-pro.regular.ttf") format("woff"); } From 6a1af09bb85097800146db2b839a5a9183ce9702 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Mon, 25 Nov 2024 00:20:36 +0100 Subject: [PATCH 7/7] Fix translations --- assets/layers/parking/parking.json | 6 +- langs/en.json | 8 +- langs/he_IL.json | 3 +- langs/layers/ca.json | 27 +- langs/layers/cs.json | 27 +- langs/layers/da.json | 5 +- langs/layers/de.json | 27 +- langs/layers/en.json | 420 ++++++++++++++++++++++++++++- langs/layers/es.json | 27 +- langs/layers/fr.json | 5 +- langs/layers/it.json | 5 +- langs/layers/nl.json | 46 +++- langs/layers/ru.json | 2 +- langs/layers/sl.json | 27 +- langs/ro.json | 3 +- langs/themes/nl.json | 114 +++++++- 16 files changed, 646 insertions(+), 106 deletions(-) diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index d17a82410..d00150365 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -283,7 +283,7 @@ "if": "capacity:disabled=0", "then": { "en": "There are no disabled parking spots", - "nl": "Er zijn geen parkeerplaatsen voor gehandicapten", + "nl": "Er zijn geen parkeerplaatsen voor personen met een beperking", "de": "Es gibt keine barrierefreien Stellplätze", "fr": "Il n'y a pas de places de stationnement pour personnes à mobilité réduite", "ca": "No hi ha places d'aparcament per a persones amb mobilitat reduïda", @@ -295,7 +295,7 @@ ], "question": { "en": "How many disabled parking spots are there at this parking?", - "nl": "Hoeveel parkeerplaatsen voor gehandicapten zijn er op deze parking?", + "nl": "Hoeveel parkeerplaatsen voor personen met een beperking zijn er op deze parking?", "de": "Wie viele barrierefreie Stellplätze gibt es auf diesem Parkplatz?", "fr": "Combien y a-t-il de places de stationnement pour personnes à mobilité réduite dans ce parking ?", "ca": "Quantes places d'aparcament per a persones amb mobilitat reduïda hi ha al parking?", @@ -305,7 +305,7 @@ }, "render": { "en": "There are {capacity:disabled} disabled parking spots", - "nl": "Er zijn {capacity:disabled} parkeerplaatsen voor gehandicapten", + "nl": "Er zijn {capacity:disabled} parkeerplaatsen voor personen met een beperking", "de": "Es gibt {capacity:disabled} barrierefreie Stellplätze", "fr": "Il y a {capacity:disabled} places de stationnement pour personnes à mobilité réduite", "ca": "Hi ha {capacity:disabled} places d'aparcament per a discapacitats", diff --git a/langs/en.json b/langs/en.json index 97116c6cc..e52bf45e9 100644 --- a/langs/en.json +++ b/langs/en.json @@ -391,8 +391,14 @@ "disable": "Do not ask this question again", "disabledIntro": "You disabled some type of questions. To enable a question again, click them here", "disabledTitle": "Disabled questions", + "emailIs": "The email address of this {category} is {email}", + "emailOf": "What is the email address of {category}?", "enable": "Ask this question for all features", - "noneDisabled": "If you are not interested in a specific type of question, disable it. To disable a question, click the three dots in the upper-right corner and select 'disable'" + "noneDisabled": "If you are not interested in a specific type of question, disable it. To disable a question, click the three dots in the upper-right corner and select 'disable'", + "phoneNumberIs": "The phone number of this {category} is {phone}", + "phoneNumberOf": "What is the phone number of {category}?", + "websiteIs": "Website: {website}", + "websiteOf": "What is the website of {category}?" }, "readYourMessages": "Please, read all your OpenStreetMap-messages before adding a new feature.", "removeLocationHistory": "Delete the location history", diff --git a/langs/he_IL.json b/langs/he_IL.json index 9e26dfeeb..7a73a41bf 100644 --- a/langs/he_IL.json +++ b/langs/he_IL.json @@ -1 +1,2 @@ -{} \ No newline at end of file +{ +} \ No newline at end of file diff --git a/langs/layers/ca.json b/langs/layers/ca.json index dd5b6f42e..87be37ed7 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -7957,6 +7957,19 @@ "question": "En quina direcció geogràfica apunta aquesta càmera?", "render": "Grava en direcció {camera:direction}" }, + "camera_is_indoor": { + "mappings": { + "0": { + "then": "Aquesta càmera es troba a l'interior" + }, + "1": { + "then": "Aquesta càmera es troba a l'exterior" + }, + "2": { + "then": "Aquesta càmera probablement es troba a l'exterior" + } + } + }, "has_alpr": { "mappings": { "0": { @@ -7968,20 +7981,6 @@ }, "question": "Aquesta càmera pot detectar matrícules automàticament?", "questionHint": "Un ALPR (lector automàtic de matrícules, per les seves sigles en anglès) normalment té dues lents i una sèrie de LEDs infrarojos entremig." - }, - "is_indoor": { - "mappings": { - "0": { - "then": "Aquesta càmera es troba a l'interior" - }, - "1": { - "then": "Aquesta càmera es troba a l'exterior" - }, - "2": { - "then": "Aquesta càmera probablement es troba a l'exterior" - } - }, - "question": "L'espai públic vigilat per aquesta càmera és un espai interior o exterior?" } }, "title": { diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 31cc9d5f1..9f5afd024 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -8591,6 +8591,19 @@ "question": "Ve kterém geografickém směru tato kamera snímá?", "render": "Snímané oblasti podle směru kompasu {camera:direction}" }, + "camera_is_indoor": { + "mappings": { + "0": { + "then": "Tato kamera je umístěna ve vnitřním prostoru" + }, + "1": { + "then": "Tato kamera je umístěna ve venkovním prostoru" + }, + "2": { + "then": "Tato kamera je pravděpodobně umístěna venku" + } + } + }, "has_alpr": { "mappings": { "0": { @@ -8602,20 +8615,6 @@ }, "question": "Dokáže tato kamera automaticky rozpoznat registrační značky?", "questionHint": "Automatická čtečka registračních značek (ALPR) má obvykle dvě čočky a mezi nimi soustavu infračervených diod LED." - }, - "is_indoor": { - "mappings": { - "0": { - "then": "Tato kamera je umístěna ve vnitřním prostoru" - }, - "1": { - "then": "Tato kamera je umístěna ve venkovním prostoru" - }, - "2": { - "then": "Tato kamera je pravděpodobně umístěna venku" - } - }, - "question": "Je veřejný prostor sledovaný touto kamerou vnitřní nebo venkovní prostor?" } }, "title": { diff --git a/langs/layers/da.json b/langs/layers/da.json index b792b89ad..ba3c959fc 100644 --- a/langs/layers/da.json +++ b/langs/layers/da.json @@ -2049,7 +2049,7 @@ "question": "I hvilken geografisk retning filmer dette kamera?", "render": "Filmer til en kompasretning af {camera:direction}" }, - "is_indoor": { + "camera_is_indoor": { "mappings": { "0": { "then": "Dette kamera er placeret indendørs" @@ -2060,8 +2060,7 @@ "2": { "then": "Dette kamera er sandsynligvis placeret udendørs" } - }, - "question": "Er det offentlige rum, der overvåges af dette kamera, et indendørs eller udendørs rum?" + } } }, "title": { diff --git a/langs/layers/de.json b/langs/layers/de.json index 61672c516..b5127e03f 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -10612,6 +10612,19 @@ "question": "In welche Himmelsrichtung filmt diese Kamera?", "render": "filmt in Himmelsrichtung {camera:direction}" }, + "camera_is_indoor": { + "mappings": { + "0": { + "then": "Diese Kamera befindet sich im Innenraum" + }, + "1": { + "then": "Diese Kamera befindet sich im Freien" + }, + "2": { + "then": "Diese Kamera ist möglicherweise im Freien" + } + } + }, "has_alpr": { "mappings": { "0": { @@ -10623,20 +10636,6 @@ }, "question": "Dient diese Kamera der Nummernschilderkennung?", "questionHint": "Eine Kamera zur Nummernschilderkennung hat üblicherweise zwei Linsen mit dazwischenliegenden Infrarot-LEDs." - }, - "is_indoor": { - "mappings": { - "0": { - "then": "Diese Kamera befindet sich im Innenraum" - }, - "1": { - "then": "Diese Kamera befindet sich im Freien" - }, - "2": { - "then": "Diese Kamera ist möglicherweise im Freien" - } - }, - "question": "Handelt es sich bei dem von dieser Kamera überwachten öffentlichen Raum um einen Innen- oder Außenbereich?" } }, "title": { diff --git a/langs/layers/en.json b/langs/layers/en.json index a759f0687..2126812e3 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -10227,6 +10227,398 @@ "title": "a sports centre" } }, + "tagRenderings": { + "sport_centre-sport": { + "mappings": { + "0": { + "then": "Nine-pin bowling" + }, + "1": { + "then": "Ten-pin bowling" + }, + "10": { + "then": "BASE jumping" + }, + "100": { + "then": "Skateboard" + }, + "101": { + "then": "Ski jumping" + }, + "102": { + "then": "Snooker" + }, + "103": { + "then": "Soccer" + }, + "104": { + "then": "Softball" + }, + "105": { + "then": "Motorcycle speedway" + }, + "106": { + "then": "Squash" + }, + "107": { + "then": "Sumo" + }, + "108": { + "then": "Surfing" + }, + "109": { + "then": "Swimming" + }, + "11": { + "then": "Baseball" + }, + "110": { + "then": "Table tennis" + }, + "111": { + "then": "Table soccer" + }, + "112": { + "then": "Taekwondo" + }, + "113": { + "then": "Tennis" + }, + "114": { + "then": "Teqball" + }, + "115": { + "then": "Toboggan" + }, + "116": { + "then": "Trampoline" + }, + "117": { + "then": "Ultimate frisbee" + }, + "118": { + "then": "Ultralight aviation" + }, + "119": { + "then": "Volleyball" + }, + "12": { + "then": "Basketball" + }, + "120": { + "then": "Wakeboarding" + }, + "121": { + "then": "Water polo" + }, + "122": { + "then": "Waterskiing" + }, + "123": { + "then": "Olympic weightlifting" + }, + "124": { + "then": "Windsurfing" + }, + "125": { + "then": "Wrestling" + }, + "126": { + "then": "Yoga" + }, + "127": { + "then": "Zurkhaneh sport" + }, + "13": { + "then": "Beachvolleyball" + }, + "14": { + "then": "Biathlon" + }, + "15": { + "then": "Cue sports" + }, + "16": { + "then": "BMX" + }, + "17": { + "then": "Bobsleigh" + }, + "18": { + "then": "Boules" + }, + "19": { + "then": "Bowls" + }, + "2": { + "then": "Aerobics" + }, + "20": { + "then": "Boxing" + }, + "21": { + "then": "Bullfighting" + }, + "22": { + "then": "Canadian football" + }, + "23": { + "then": "Canoe" + }, + "24": { + "then": "Chess" + }, + "25": { + "then": "Non-competitive diving" + }, + "26": { + "then": "Rock climbing" + }, + "27": { + "then": "Climbing Adventure" + }, + "28": { + "then": "Cockfighting" + }, + "29": { + "then": "Cricket" + }, + "3": { + "then": "American football" + }, + "30": { + "then": "CrossFit" + }, + "31": { + "then": "Croquet" + }, + "32": { + "then": "Curling" + }, + "33": { + "then": "Cycle Polo" + }, + "34": { + "then": "Cycling" + }, + "35": { + "then": "Dance" + }, + "36": { + "then": "Darts" + }, + "37": { + "then": "Dog agility" + }, + "38": { + "then": "Greyhound racing" + }, + "39": { + "then": "Dragon Boat" + }, + "4": { + "then": "Aikido" + }, + "40": { + "then": "Equestrianism" + }, + "41": { + "then": "Fencing" + }, + "42": { + "then": "Field hockey" + }, + "43": { + "then": "Fitness" + }, + "44": { + "then": "5 person soccer" + }, + "45": { + "then": "Floorball" + }, + "46": { + "then": "Four square" + }, + "47": { + "then": "Paragliding" + }, + "48": { + "then": "Futsal" + }, + "49": { + "then": "Gaelic games" + }, + "5": { + "then": "Archery" + }, + "50": { + "then": "Gaga ball" + }, + "51": { + "then": "Golf" + }, + "52": { + "then": "Gymnastics" + }, + "53": { + "then": "Handball" + }, + "54": { + "then": "Hapkido" + }, + "55": { + "then": "Hiking" + }, + "56": { + "then": "Horseshoes" + }, + "57": { + "then": "Horse racing" + }, + "58": { + "then": "Ice Hockey" + }, + "59": { + "then": "Ice skating" + }, + "6": { + "then": "Athletics" + }, + "60": { + "then": "Ice stock sport" + }, + "61": { + "then": "Judo" + }, + "62": { + "then": "Karate" + }, + "63": { + "then": "Kart racing" + }, + "64": { + "then": "Kickboxing" + }, + "65": { + "then": "Kitesurfing" + }, + "66": { + "then": "Korfball" + }, + "67": { + "then": "Krachtball" + }, + "68": { + "then": "Lacrosse" + }, + "69": { + "then": "Laser tag" + }, + "7": { + "then": "Australian rules football" + }, + "70": { + "then": "Martial arts" + }, + "71": { + "then": "Miniature golf" + }, + "72": { + "then": "Radio-controlled aircraft" + }, + "73": { + "then": "Motocross" + }, + "74": { + "then": "Motorsport" + }, + "75": { + "then": "Multiple kind of sports" + }, + "76": { + "then": "Netball" + }, + "77": { + "then": "Obstacle course" + }, + "78": { + "then": "Orienteering" + }, + "79": { + "then": "Paddle tennis" + }, + "8": { + "then": "Badminton" + }, + "80": { + "then": "Padel" + }, + "81": { + "then": "Paintball" + }, + "82": { + "then": "Parachuting" + }, + "83": { + "then": "Parkour" + }, + "84": { + "then": "Palota" + }, + "85": { + "then": "Pesäpallo" + }, + "86": { + "then": "Pickleball" + }, + "87": { + "then": "Pilates" + }, + "88": { + "then": "Pole dance" + }, + "89": { + "then": "Racquetball" + }, + "9": { + "then": "Bandy" + }, + "90": { + "then": "Radio-controlled car" + }, + "91": { + "then": "Roller skating" + }, + "92": { + "then": "Rowing" + }, + "93": { + "then": "Rugby league" + }, + "94": { + "then": "Rugby union" + }, + "95": { + "then": "Running" + }, + "96": { + "then": "Sailing" + }, + "97": { + "then": "Scuba diving" + }, + "98": { + "then": "Shooting" + }, + "99": { + "then": "Shot-put" + } + }, + "question": "What sports are played at this venue?", + "render": "Sports played here: {sport}" + } + }, "title": { "render": "Sports centre" } @@ -10612,19 +11004,7 @@ "question": "In which geographical direction does this camera film?", "render": "Films to a compass heading of {camera:direction}" }, - "has_alpr": { - "mappings": { - "0": { - "then": "This is a camera without number plate recognition." - }, - "1": { - "then": "This is an ALPR (Automatic License Plate Reader)" - } - }, - "question": "Can this camera automatically detect license plates?", - "questionHint": "An ALPR (Automatic License Plate Reader) typically has two lenses and an array of infrared LEDS in between." - }, - "is_indoor": { + "camera_is_indoor": { "mappings": { "0": { "then": "This camera is located indoors" @@ -10636,7 +11016,19 @@ "then": "This camera is probably located outdoors" } }, - "question": "Is the public space surveilled by this camera an indoor or outdoor space?" + "question": "Is this camera located inside or outside?" + }, + "has_alpr": { + "mappings": { + "0": { + "then": "This is a camera without number plate recognition." + }, + "1": { + "then": "This is an ALPR (Automatic License Plate Reader)" + } + }, + "question": "Can this camera automatically detect license plates?", + "questionHint": "An ALPR (Automatic License Plate Reader) typically has two lenses and an array of infrared LEDS in between." } }, "title": { diff --git a/langs/layers/es.json b/langs/layers/es.json index 815acc431..dd1055911 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -10575,6 +10575,19 @@ "question": "¿En qué dirección geográfica graba esta cámara?", "render": "Graba hacia un rumbo de brújula de {camera:direction}" }, + "camera_is_indoor": { + "mappings": { + "0": { + "then": "Esta cámara está ubicada en interiores" + }, + "1": { + "then": "Esta cámara está ubicada en exteriores" + }, + "2": { + "then": "Esta cámara probablemente está ubicada en exteriores" + } + } + }, "has_alpr": { "mappings": { "0": { @@ -10586,20 +10599,6 @@ }, "question": "¿Puede esta cámara detectar automáticamente las matrículas?", "questionHint": "Un ALPR (lector automático de matrículas) suele tener dos lentes y una serie de LED infrarrojos entre ellas." - }, - "is_indoor": { - "mappings": { - "0": { - "then": "Esta cámara está ubicada en interiores" - }, - "1": { - "then": "Esta cámara está ubicada en exteriores" - }, - "2": { - "then": "Esta cámara probablemente está ubicada en exteriores" - } - }, - "question": "¿El espacio público vigilado por esta cámara es interior o exterior?" } }, "title": { diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 80858a1a8..44b0aeace 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -6391,7 +6391,7 @@ "question": "Dans quelle direction géographique cette caméra filme-t-elle ?", "render": "Filme dans une direction {camera:direction}" }, - "is_indoor": { + "camera_is_indoor": { "mappings": { "0": { "then": "Cette caméra est située à l'intérieur" @@ -6402,8 +6402,7 @@ "2": { "then": "Cette caméra est probablement située à l'extérieur" } - }, - "question": "L'espace public surveillé par cette caméra est-il un espace intérieur ou extérieur ?" + } } }, "title": { diff --git a/langs/layers/it.json b/langs/layers/it.json index a14974143..30678c819 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -2810,7 +2810,7 @@ "question": "In quale direzione geografica punta questa videocamera?", "render": "Punta in direzione {camera:direction}" }, - "is_indoor": { + "camera_is_indoor": { "mappings": { "0": { "then": "Questa videocamera si trova al chiuso" @@ -2821,8 +2821,7 @@ "2": { "then": "Questa videocamera si trova probabilmente all'esterno" } - }, - "question": "Lo spazio pubblico sorvegliato da questa videocamera è all'aperto o al chiuso?" + } } }, "title": { diff --git a/langs/layers/nl.json b/langs/layers/nl.json index ebbb393ec..50126e110 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -1730,6 +1730,9 @@ }, "title": { "mappings": { + "0": { + "then": "{name}" + }, "1": { "then": "Vogelkijkhut {name}" }, @@ -5807,6 +5810,11 @@ } }, "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, "render": "Natuurgebied" } }, @@ -6352,6 +6360,21 @@ "render": "Picknicktafel" } }, + "play_forest": { + "description": "Een speelbos is een vrij toegankelijke zone in een bos", + "name": "Speelbossen", + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "Speelbos {name}" + } + }, + "render": "Speelbos" + } + }, "playground": { "deletion": { "nonDeleteMappings": { @@ -7886,6 +7909,9 @@ }, "title": { "mappings": { + "0": { + "then": "{name}" + }, "1": { "then": "Voetpad" }, @@ -8435,7 +8461,7 @@ "question": "In welke geografische richting filmt deze camera?", "render": "Filmt in kompasrichting {camera:direction}" }, - "is_indoor": { + "camera_is_indoor": { "mappings": { "0": { "then": "Deze camera bevindt zich binnen" @@ -8447,7 +8473,7 @@ "then": "Deze camera bevindt zich waarschijnlijk buiten" } }, - "question": "Bevindt de bewaakte publieke ruimte camera zich binnen of buiten?" + "question": "Bevindt de camera zich binnen of buiten?" } }, "title": { @@ -9898,13 +9924,25 @@ } }, "village_green": { - "description": "Een laag die dorpsgroen toont (gemeenschapsgroen, maar niet echt een park)" + "description": "Een laag die dorpsgroen toont (gemeenschapsgroen, maar niet echt een park)", + "name": "Speelweide", + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Speelweide" + } }, "visitor_information_centre": { "description": "Een bezoekerscentrum biedt informatie over een specifieke attractie of bezienswaardigheid waar het is gevestigd.", "name": "Bezoekerscentrum", "title": { "mappings": { + "0": { + "then": "{name:nl}" + }, "1": { "then": "{name}" } @@ -10134,4 +10172,4 @@ "render": "windturbine" } } -} +} \ No newline at end of file diff --git a/langs/layers/ru.json b/langs/layers/ru.json index 24d5ea510..6fccd80e5 100644 --- a/langs/layers/ru.json +++ b/langs/layers/ru.json @@ -1881,7 +1881,7 @@ "camera:mount": { "question": "Как расположена эта камера?" }, - "is_indoor": { + "camera_is_indoor": { "mappings": { "1": { "then": "Эта камера расположена снаружи" diff --git a/langs/layers/sl.json b/langs/layers/sl.json index d5f601a72..48f362370 100644 --- a/langs/layers/sl.json +++ b/langs/layers/sl.json @@ -390,6 +390,19 @@ "question": "V katero geografsko smer snema ta kamera?", "render": "Snema v smeri kompasa {camera:direction}" }, + "camera_is_indoor": { + "mappings": { + "0": { + "then": "Ta kamera je znotraj" + }, + "1": { + "then": "Ta kamera je zunaj" + }, + "2": { + "then": "Ta kamera je verjetno zunaj" + } + } + }, "has_alpr": { "mappings": { "0": { @@ -401,20 +414,6 @@ }, "question": "Ali ta kamera lahko samodejno prepoznava registrske tablice?", "questionHint": "Kamera za prepoznavo registrskih tablic ima običajno dve leči in med njima polje infrardečih LED svetil." - }, - "is_indoor": { - "mappings": { - "0": { - "then": "Ta kamera je znotraj" - }, - "1": { - "then": "Ta kamera je zunaj" - }, - "2": { - "then": "Ta kamera je verjetno zunaj" - } - }, - "question": "Ali je javni prostor, ki ga nadzoruje ta kamera, notranji ali zunanji?" } }, "title": { diff --git a/langs/ro.json b/langs/ro.json index 9e26dfeeb..7a73a41bf 100644 --- a/langs/ro.json +++ b/langs/ro.json @@ -1 +1,2 @@ -{} \ No newline at end of file +{ +} \ No newline at end of file diff --git a/langs/themes/nl.json b/langs/themes/nl.json index e976bb496..266a9c76c 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -653,8 +653,37 @@ "building type": { "question": "Wat voor soort gebouw is dit?" }, + "grb-fixme": { + "mappings": { + "0": { + "then": "Geen fixme" + } + }, + "question": "Wat zegt de fixme?", + "render": "De fixme is {fixme}" + }, + "grb-housenumber": { + "mappings": { + "0": { + "then": "Geen huisnummer" + } + }, + "question": "Wat is het huisnummer?", + "render": "Het huisnummer is {addr:housenumber}" + }, + "grb-min-level": { + "question": "Hoeveel verdiepingen ontbreken?", + "render": "Dit gebouw begint maar op de {building:min_level} verdieping" + }, "grb-reference": { "render": "Werd geïmporteerd vanuit GRB, het referentienummer is {source:geometry:ref}" + }, + "grb-street": { + "question": "Wat is de straat?", + "render": "De straat is {addr:street}" + }, + "grb-unit": { + "render": "De wooneenheid-aanduiding is {addr:unit} " } } }, @@ -671,8 +700,35 @@ } } } + }, + "5": { + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Geen omliggend OSM-gebouw gevonden" + } + } + }, + "3": { + "mappings": { + "0": { + "then": "Geen omliggend OSM-gebouw gevonden. Een omliggend gebouw is nodig om dit punt als adres punt toe te voegen.
Importeer eerst de gebouwen. Vernieuw dan de pagina om losse adressen toe te voegen
" + } + }, + "render": { + "special": { + "text": "Voeg dit adres als een nieuw adrespunt toe" + } + } + } + } + } } - } + }, + "shortDescription": "Grb import helper tool", + "title": "GRB import helper" }, "guideposts": { "description": "Wegwijzers (ook wel handwijzer genoemd) zijn vaak te vinden langs officiële wandel-, fiets-, ski- of paardrijroutes om de richtingen naar verschillende bestemmingen aan te geven. Vaak zijn ze vernoemd naar een regio of plaats en geven ze de hoogte aan.\n\nDe positie van een wegwijzer kan door een wandelaar/fietser/renner/skiër worden gebruikt als bevestiging van de huidige positie, vooral als ze een gedrukte kaart zonder GPS-ontvanger gebruiken. ", @@ -1104,6 +1160,11 @@ }, "title": "Dierenartsen, hondenloopzones en andere huisdiervriendelijke plaatsen" }, + "play_forests": { + "description": "Een speelbos is een zone in een bos die vrij toegankelijk is voor spelende kinderen. Deze wordt in bossen van het Agentschap Natuur en bos altijd aangeduid met het overeenkomstige bord.", + "shortDescription": "Deze kaart toont speelbossen", + "title": "Speelbossen" + }, "playgrounds": { "description": "Op deze kaart vind je speeltuinen en kan je zelf meer informatie en foto's toevoegen", "shortDescription": "Een kaart met speeltuinen", @@ -1177,6 +1238,47 @@ "description": "Alles om te skiën", "title": "Skipistes en kabelbanen" }, + "speelplekken": { + "description": "

Welkom bij de Groendoener!

De Zuidrand dat is spelen, ravotten, chillen, wandelen,… in het groen. Meer dan 200 grote en kleine speelplekken liggen er in parken, in bossen en op pleintjes te wachten om ontdekt te worden. De verschillende speelplekken werden getest én goedgekeurd door kinder- en jongerenreporters uit de Zuidrand. Met leuke challenges dagen de reporters jou uit om ook op ontdekking te gaan. Klik op een speelplek op de kaart, bekijk het filmpje en ga op verkenning!

Het project groendoener kadert binnen het strategisch project Beleefbare Open Ruimte in de Antwerpse Zuidrand en is een samenwerking tussen het departement Leefmilieu van provincie Antwerpen, Sportpret vzw, een OpenStreetMap-België Consultent en Createlli vzw. Het project kwam tot stand met steun van Departement Omgeving van de Vlaamse Overheid.
", + "layers": { + "6": { + "name": "Wandelroutes van provincie Antwerpen", + "tagRenderings": { + "walk-description": { + "render": "

Korte beschrijving:

{description}" + }, + "walk-length": { + "render": "Deze wandeling is {_length:km}km lang" + }, + "walk-operator": { + "question": "Wie beheert deze wandeling en plaatst dus de signalisatiebordjes?" + }, + "walk-operator-email": { + "question": "Naar wie kan men emailen bij problemen rond signalisatie?", + "render": "Bij problemen met signalisatie kan men emailen naar {operator:email}" + }, + "walk-type": { + "mappings": { + "0": { + "then": "Dit is een internationale wandelroute" + }, + "1": { + "then": "Dit is een nationale wandelroute" + }, + "2": { + "then": "Dit is een regionale wandelroute" + }, + "3": { + "then": "Dit is een lokale wandelroute" + } + } + } + } + } + }, + "shortDescription": "Speelplekken in de Antwerpse Zuidrand", + "title": "Welkom bij de groendoener!" + }, "sport_pitches": { "description": "Een sportveld is een ingerichte plaats met infrastructuur om een sport te beoefenen", "shortDescription": "Deze kaart toont sportvelden", @@ -1297,6 +1399,10 @@ }, "title": "Straatverlichting" }, + "street_lighting_assen": { + "description": "Op deze kaart vind je alles over straatlantaarns + een dataset van Assen", + "title": "Straatverlichting - Assen" + }, "surveillance": { "description": "Op deze open kaart kan je bewakingscamera's vinden.", "shortDescription": "Bewakingscameras en dergelijke", @@ -1410,9 +1516,13 @@ "description": "Kaart met afvalbakken en recyclingfaciliteiten.", "title": "Afval" }, + "waste_assen": { + "description": "Kaart met afvalbakken en recyclingfaciliteiten + een dataset voor Assen.", + "title": "Afval - Assen" + }, "waste_basket": { "description": "Op deze kaart vind je afvalbakken bij jou in de buurt. Als er een afvalbak ontbreekt op deze kaart, kun je deze zelf toevoegen", "shortDescription": "Een kaart met vuilnisbakken", "title": "Vuilnisbakken" } -} +} \ No newline at end of file