From 933c0f007365c21a14af692001d5e616e68da24b Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Sat, 23 Oct 2021 02:46:37 +0200 Subject: [PATCH 01/30] Fix opening of various views when set by url-parameters, small styling tweaks in the popups --- Logic/Actors/SelectedFeatureHandler.ts | 28 ++-- Logic/State/FeatureSwitchState.ts | 21 +-- Logic/State/MapState.ts | 11 +- Logic/Web/QueryParameters.ts | 4 + UI/Base/Ornament.ts | 11 -- UI/Base/ScrollableFullScreen.ts | 47 ++---- UI/BigComponents/AllDownloads.ts | 3 +- UI/BigComponents/FullWelcomePaneWithTabs.ts | 2 +- UI/BigComponents/LeftControls.ts | 26 +--- UI/DefaultGUI.ts | 98 +++++++++---- UI/Popup/FeatureInfoBox.ts | 3 +- assets/svg/close.svg | 155 ++++++++++---------- css/index-tailwind-output.css | 75 +++++----- index.css | 1 + 14 files changed, 237 insertions(+), 248 deletions(-) delete mode 100644 UI/Base/Ornament.ts diff --git a/Logic/Actors/SelectedFeatureHandler.ts b/Logic/Actors/SelectedFeatureHandler.ts index b45e87b93..7d431c7af 100644 --- a/Logic/Actors/SelectedFeatureHandler.ts +++ b/Logic/Actors/SelectedFeatureHandler.ts @@ -10,7 +10,7 @@ import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; * Makes sure the hash shows the selected element and vice-versa. */ export default class SelectedFeatureHandler { - private static readonly _no_trigger_on = new Set(["welcome", "copyright", "layers", "new", "", undefined]) + private static readonly _no_trigger_on = new Set(["welcome", "copyright", "layers", "new", "filter","", undefined]) private readonly hash: UIEventSource; private readonly state: { selectedElement: UIEventSource, @@ -70,7 +70,7 @@ export default class SelectedFeatureHandler { this.initialLoad() } - + /** * On startup: check if the hash is loaded and eventually zoom to it @@ -85,6 +85,11 @@ export default class SelectedFeatureHandler { return; } + if (!(hash.startsWith("node") || hash.startsWith("way") || hash.startsWith("relation"))) { + return; + } + + OsmObject.DownloadObjectAsync(hash).then(obj => { try { @@ -129,26 +134,25 @@ export default class SelectedFeatureHandler { // If a feature is selected via the hash, zoom there private zoomToSelectedFeature() { - + const selected = this.state.selectedElement.data - if(selected === undefined){ + if (selected === undefined) { return } - - const centerpoint= GeoOperations.centerpointCoordinates(selected) + + const centerpoint = GeoOperations.centerpointCoordinates(selected) const location = this.state.locationControl; location.data.lon = centerpoint[0] location.data.lat = centerpoint[1] - + const minZoom = Math.max(14, ...(this.state.layoutToUse?.layers?.map(l => l.minzoomVisible) ?? [])) - if(location.data.zoom < minZoom ){ + if (location.data.zoom < minZoom) { location.data.zoom = minZoom } - + location.ping(); - - - + + } } \ No newline at end of file diff --git a/Logic/State/FeatureSwitchState.ts b/Logic/State/FeatureSwitchState.ts index 2315280ca..0f5df51f7 100644 --- a/Logic/State/FeatureSwitchState.ts +++ b/Logic/State/FeatureSwitchState.ts @@ -144,31 +144,20 @@ export default class FeatureSwitchState { } - this.featureSwitchIsTesting = QueryParameters.GetQueryParameter( + this.featureSwitchIsTesting = QueryParameters.GetBooleanQueryParameter( "test", ""+testingDefaultValue, "If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org" - ).map( - (str) => str === "true", - [], - (b) => "" + b - ); + ) - this.featureSwitchIsDebugging = QueryParameters.GetQueryParameter( + this.featureSwitchIsDebugging = QueryParameters.GetBooleanQueryParameter( "debug", "false", "If true, shows some extra debugging help such as all the available tags on every object" - ).map( - (str) => str === "true", - [], - (b) => "" + b - ); + ) - this.featureSwitchFakeUser = QueryParameters.GetQueryParameter("fake-user", "false", + this.featureSwitchFakeUser = QueryParameters.GetBooleanQueryParameter("fake-user", "false", "If true, 'dryrun' mode is activated and a fake user account is loaded") - .map(str => str === "true", [], b => "" + b); - - this.overpassUrl = QueryParameters.GetQueryParameter("overpassUrl", diff --git a/Logic/State/MapState.ts b/Logic/State/MapState.ts index afcbb1bf2..00a05dd61 100644 --- a/Logic/State/MapState.ts +++ b/Logic/State/MapState.ts @@ -119,7 +119,7 @@ export default class MapState extends UserRelatedState { this.overlayToggles = this.layoutToUse.tileLayerSources.filter(c => c.name !== undefined).map(c => ({ config: c, - isDisplayed: QueryParameters.GetQueryParameter("overlay-" + c.id, "" + c.defaultState, "Wether or not the overlay " + c.id + " is shown").map(str => str === "true", [], b => "" + b) + isDisplayed: QueryParameters.GetBooleanQueryParameter("overlay-" + c.id, "" + c.defaultState, "Wether or not the overlay " + c.id + " is shown") })) this.filteredLayers = this.InitializeFilteredLayers() @@ -170,17 +170,12 @@ export default class MapState extends UserRelatedState { .map(value => value === "yes", [], enabled => { return enabled ? "yes" : ""; }) - isDisplayed.addCallbackAndRun(d => console.log("IsDisplayed for layer", layer.id, "is currently", d)) } else { - isDisplayed = QueryParameters.GetQueryParameter( + isDisplayed = QueryParameters.GetBooleanQueryParameter( "layer-" + layer.id, "true", "Wether or not layer " + layer.id + " is shown" - ).map( - (str) => str !== "false", - [], - (b) => b.toString() - ); + ) } const flayer = { isDisplayed: isDisplayed, diff --git a/Logic/Web/QueryParameters.ts b/Logic/Web/QueryParameters.ts index 36ecc7680..8af95a69b 100644 --- a/Logic/Web/QueryParameters.ts +++ b/Logic/Web/QueryParameters.ts @@ -55,6 +55,10 @@ export class QueryParameters { return source; } + public static GetBooleanQueryParameter(key: string, deflt: string, documentation?: string): UIEventSource{ + return QueryParameters.GetQueryParameter(key, deflt, documentation).map(str => str === "true", [], b => ""+b) + } + public static GenerateQueryParameterDocs(): string { const docs = [QueryParameters.QueryParamDocsIntro]; for (const key in QueryParameters.documentation) { diff --git a/UI/Base/Ornament.ts b/UI/Base/Ornament.ts deleted file mode 100644 index 7c2798892..000000000 --- a/UI/Base/Ornament.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {FixedUiElement} from "./FixedUiElement"; - -export default class Ornament extends FixedUiElement { - - constructor() { - super(""); - this.SetClass("pt-3 pb-3 flex justify-center box-border") - } - - -} \ No newline at end of file diff --git a/UI/Base/ScrollableFullScreen.ts b/UI/Base/ScrollableFullScreen.ts index da8114f8c..07124f997 100644 --- a/UI/Base/ScrollableFullScreen.ts +++ b/UI/Base/ScrollableFullScreen.ts @@ -1,11 +1,11 @@ import {UIElement} from "../UIElement"; import Svg from "../../Svg"; import Combine from "./Combine"; -import Ornament from "./Ornament"; import {FixedUiElement} from "./FixedUiElement"; import {UIEventSource} from "../../Logic/UIEventSource"; import Hash from "../../Logic/Web/Hash"; import BaseUIElement from "../BaseUIElement"; +import Img from "./Img"; /** * @@ -18,26 +18,22 @@ import BaseUIElement from "../BaseUIElement"; */ export default class ScrollableFullScreen extends UIElement { private static readonly empty = new FixedUiElement(""); - private static readonly _actor = ScrollableFullScreen.InitActor(); private static _currentlyOpen: ScrollableFullScreen; public isShown: UIEventSource; private _component: BaseUIElement; private _fullscreencomponent: BaseUIElement; - private _hashToSet: string; constructor(title: ((mode: string) => BaseUIElement), content: ((mode: string) => BaseUIElement), - hashToSet: string, isShown: UIEventSource = new UIEventSource(false) ) { super(); this.isShown = isShown; - this._hashToSet = hashToSet; this._component = this.BuildComponent(title("desktop"), content("desktop"), isShown) .SetClass("hidden md:block"); - this._fullscreencomponent = this.BuildComponent(title("mobile"), content("mobile"), isShown); + this._fullscreencomponent = this.BuildComponent(title("mobile"), content("mobile").SetClass("pb-20"), isShown); + - const self = this; isShown.addCallback(isShown => { if (isShown) { @@ -56,15 +52,6 @@ export default class ScrollableFullScreen extends UIElement { Hash.hash.setData(undefined); } - private static InitActor() { - Hash.hash.addCallback(hash => { - if (hash === undefined || hash === "") { - ScrollableFullScreen.clear() - } - }); - return true; - } - InnerRender(): BaseUIElement { return this._component; } @@ -72,9 +59,6 @@ export default class ScrollableFullScreen extends UIElement { Activate(): void { this.isShown.setData(true) this._fullscreencomponent.AttachTo("fullscreen"); - if (this._hashToSet != undefined) { - Hash.hash.setData(this._hashToSet) - } const fs = document.getElementById("fullscreen"); ScrollableFullScreen._currentlyOpen = this; fs.classList.remove("hidden") @@ -83,25 +67,26 @@ export default class ScrollableFullScreen extends UIElement { private BuildComponent(title: BaseUIElement, content: BaseUIElement, isShown: UIEventSource) { const returnToTheMap = new Combine([ - Svg.back_svg().SetClass("block md:hidden"), - Svg.close_svg().SetClass("hidden md:block") - ]) - .onClick(() => { - isShown.setData(false) - }).SetClass("mb-2 bg-blue-50 rounded-full w-12 h-12 p-1.5 flex-shrink-0") + new Img(Svg.back.replace(/#000000/g,"#cccccc"),true) + .SetClass("block md:hidden w-12 h-12 p-2"), + new Img(Svg.close.replace(/#000000/g,"#cccccc"),true) + .SetClass("hidden md:block w-12 h-12 p-3") + ]).SetClass("rounded-full p-0 flex-shrink-0 self-center") - title.SetClass("block text-l sm:text-xl md:text-2xl w-full font-bold p-2 pl-4 max-h-20vh overflow-y-auto") - const ornament = new Combine([new Ornament().SetStyle("height:5em;")]) - .SetClass("md:hidden h-5") + returnToTheMap.onClick(() => { + isShown.setData(false) + }) + + title.SetClass("block text-l sm:text-xl md:text-2xl w-full font-bold p-0 max-h-20vh overflow-y-auto") return new Combine([ new Combine([ new Combine([returnToTheMap, title]) - .SetClass("border-b-2 border-black shadow md:shadow-none bg-white p-2 pb-0 md:p-0 flex flex-shrink-0"), - new Combine([content, ornament]) + .SetClass("border-b-1 border-black shadow bg-white flex flex-shrink-0 pt-1 pb-1 md:pt-0 md:pb-0"), + new Combine([content]) .SetClass("block p-2 md:pt-4 w-full h-full overflow-y-auto md:max-h-65vh"), // We add an ornament which takes around 5em. This is in order to make sure the Web UI doesn't hide ]).SetClass("flex flex-col h-full relative bg-white") - ]).SetClass("fixed top-0 left-0 right-0 h-screen w-screen md:max-h-65vh md:w-auto md:relative z-above-controls"); + ]).SetClass("fixed top-0 left-0 right-0 h-screen w-screen md:max-h-65vh md:w-auto md:relative z-above-controls md:rounded-xl overflow-hidden"); } diff --git a/UI/BigComponents/AllDownloads.ts b/UI/BigComponents/AllDownloads.ts index 3df26f53d..b49e77bcb 100644 --- a/UI/BigComponents/AllDownloads.ts +++ b/UI/BigComponents/AllDownloads.ts @@ -9,12 +9,11 @@ import {DownloadPanel} from "./DownloadPanel"; import {SubtleButton} from "../Base/SubtleButton"; import Svg from "../../Svg"; import ExportPDF from "../ExportPDF"; -import {FixedUiElement} from "../Base/FixedUiElement"; export default class AllDownloads extends ScrollableFullScreen { constructor(isShown: UIEventSource) { - super(AllDownloads.GenTitle, AllDownloads.GeneratePanel, "layers", isShown); + super(AllDownloads.GenTitle, AllDownloads.GeneratePanel, isShown); } private static GenTitle(): BaseUIElement { diff --git a/UI/BigComponents/FullWelcomePaneWithTabs.ts b/UI/BigComponents/FullWelcomePaneWithTabs.ts index 8dc7cf668..1862110ce 100644 --- a/UI/BigComponents/FullWelcomePaneWithTabs.ts +++ b/UI/BigComponents/FullWelcomePaneWithTabs.ts @@ -30,7 +30,7 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { super( () => layoutToUse.title.Clone(), () => FullWelcomePaneWithTabs.GenerateContents(state, currentTab, isShown), - undefined, isShown + isShown ) } diff --git a/UI/BigComponents/LeftControls.ts b/UI/BigComponents/LeftControls.ts index b92adb54a..4b2328533 100644 --- a/UI/BigComponents/LeftControls.ts +++ b/UI/BigComponents/LeftControls.ts @@ -26,12 +26,12 @@ export default class LeftControls extends Combine { featureSwitchEnableExport: UIEventSource, featureSwitchExportAsPdf: UIEventSource, filteredLayers: UIEventSource, - featureSwitchFilter: UIEventSource, - selectedElement: UIEventSource + featureSwitchFilter: UIEventSource }, guiState: { downloadControlIsOpened: UIEventSource, filterViewIsOpened: UIEventSource, + copyrightViewIsOpened: UIEventSource }) { const toggledCopyright = new ScrollableFullScreen( @@ -41,7 +41,7 @@ export default class LeftControls extends Combine { state.layoutToUse, new ContributorCount(state).Contributors ), - undefined + guiState.copyrightViewIsOpened ); const copyrightButton = new Toggle( @@ -49,8 +49,7 @@ export default class LeftControls extends Combine { new MapControlButton(Svg.copyright_svg()) .onClick(() => toggledCopyright.isShown.setData(true)), toggledCopyright.isShown - ) - .SetClass("p-0.5"); + ).SetClass("p-0.5"); const toggledDownload = new Toggle( new AllDownloads( @@ -73,11 +72,10 @@ export default class LeftControls extends Combine { () => Translations.t.general.layerSelection.title.Clone(), () => new FilterView(state.filteredLayers, state.overlayToggles).SetClass( - "block p-1 rounded-full" + "block p-1" ), - undefined, guiState.filterViewIsOpened - ), + ).SetClass("rounded-lg"), new MapControlButton(Svg.filter_svg()) .onClick(() => guiState.filterViewIsOpened.setData(true)), guiState.filterViewIsOpened @@ -90,18 +88,6 @@ export default class LeftControls extends Combine { ); - state.locationControl.addCallback(() => { - // Close the layer selection when the map is moved - toggledDownload.isEnabled.setData(false); - copyrightButton.isEnabled.setData(false); - toggledFilter.isEnabled.setData(false); - }); - - state.selectedElement.addCallbackAndRunD((_) => { - toggledDownload.isEnabled.setData(false); - copyrightButton.isEnabled.setData(false); - toggledFilter.isEnabled.setData(false); - }); super([filterButton, downloadButtonn, copyrightButton]) diff --git a/UI/DefaultGUI.ts b/UI/DefaultGUI.ts index fc195f90d..9af616233 100644 --- a/UI/DefaultGUI.ts +++ b/UI/DefaultGUI.ts @@ -26,44 +26,71 @@ import StrayClickHandler from "../Logic/Actors/StrayClickHandler"; import Lazy from "./Base/Lazy"; export class DefaultGuiState { - public readonly welcomeMessageIsOpened; + public readonly welcomeMessageIsOpened : UIEventSource; public readonly downloadControlIsOpened: UIEventSource; public readonly filterViewIsOpened: UIEventSource; - public readonly welcomeMessageOpenedTab + public readonly copyrightViewIsOpened: UIEventSource; + public readonly welcomeMessageOpenedTab: UIEventSource + public readonly allFullScreenStates: UIEventSource[] = [] constructor() { - this.filterViewIsOpened = QueryParameters.GetQueryParameter( - "filter-toggle", - "false", - "Whether or not the filter view is shown" - ).map( - (str) => str !== "false", - [], - (b) => "" + b - ); - this.welcomeMessageIsOpened = new UIEventSource(Hash.hash.data === undefined || - Hash.hash.data === "" || - Hash.hash.data == "welcome"); - this.welcomeMessageOpenedTab = QueryParameters.GetQueryParameter( + + + this.welcomeMessageOpenedTab = UIEventSource.asFloat(QueryParameters.GetQueryParameter( "tab", "0", `The tab that is shown in the welcome-message. 0 = the explanation of the theme,1 = OSM-credits, 2 = sharescreen, 3 = more themes, 4 = about mapcomplete (user must be logged in and have >${Constants.userJourney.mapCompleteHelpUnlock} changesets)` - ).map( - (str) => (isNaN(Number(str)) ? 0 : Number(str)), - [], - (n) => "" + n - ); - this.downloadControlIsOpened = - QueryParameters.GetQueryParameter( + )); + this.welcomeMessageIsOpened = QueryParameters.GetBooleanQueryParameter( + "welcome-control-toggle", + "false", + "Whether or not the welcome panel is shown" + ) + this.downloadControlIsOpened = QueryParameters.GetBooleanQueryParameter( "download-control-toggle", "false", "Whether or not the download panel is shown" - ).map( - (str) => str !== "false", - [], - (b) => "" + b - ); + ) + this.filterViewIsOpened = QueryParameters.GetBooleanQueryParameter( + "filter-toggle", + "false", + "Whether or not the filter view is shown" + ) + this.copyrightViewIsOpened = QueryParameters.GetBooleanQueryParameter( + "copyright-toggle", + "false", + "Whether or not the copyright view is shown" + ) + if(Hash.hash.data === "download"){ + this.downloadControlIsOpened.setData(true) + } + if(Hash.hash.data === "filter"){ + this.filterViewIsOpened.setData(true) + } + if(Hash.hash.data === "copyright"){ + this.copyrightViewIsOpened.setData(true) + } + if(Hash.hash.data === "" || Hash.hash.data === undefined || Hash.hash.data === "welcome"){ + this.welcomeMessageIsOpened.setData(true) + } + + this.allFullScreenStates.push(this.downloadControlIsOpened, this.filterViewIsOpened, this.copyrightViewIsOpened, this.welcomeMessageIsOpened) + + for (let i = 0; i < this.allFullScreenStates.length; i++){ + const fullScreenState = this.allFullScreenStates[i]; + for (let j = 0; j < this.allFullScreenStates.length; j++){ + if(i == j){ + continue + } + const otherState = this.allFullScreenStates[j]; + fullScreenState.addCallbackAndRunD(isOpened => { + if(isOpened){ + otherState.setData(false) + } + }) + } + } } } @@ -154,6 +181,7 @@ export default class DefaultGUI { Toggle.If(state.featureSwitchIframePopoutEnabled, iframePopout), state.featureSwitchWelcomeMessage ).AttachTo("messagesbox"); + new LeftControls(state, guiState).AttachTo("bottom-left"); new RightControls(state).AttachTo("bottom-right"); @@ -162,6 +190,21 @@ export default class DefaultGUI { document .getElementById("centermessage") .classList.add("pointer-events-none"); + + // We have to ping the welcomeMessageIsOpened and other isOpened-stuff to activate the FullScreenMessage if needed + for (const state of guiState.allFullScreenStates) { + if(state.data){ + state.ping() + } + } + + /** + * At last, if the map moves or an element is selected, we close all the panels just as well + */ + + state.selectedElement.addCallbackAndRunD((_) => { + guiState.allFullScreenStates.forEach(s => s.setData(false)) + }); } private InitWelcomeMessage() : BaseUIElement{ @@ -211,7 +254,6 @@ export default class DefaultGUI { const addNewPoint = new ScrollableFullScreen( () => Translations.t.general.add.title.Clone(), () => new SimpleAddUI(newPointDialogIsShown, filterViewIsOpened, state), - "new", newPointDialogIsShown ); addNewPoint.isShown.addCallback((isShown) => { diff --git a/UI/Popup/FeatureInfoBox.ts b/UI/Popup/FeatureInfoBox.ts index 155df8bdc..86f3aa68f 100644 --- a/UI/Popup/FeatureInfoBox.ts +++ b/UI/Popup/FeatureInfoBox.ts @@ -26,8 +26,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen { layerConfig: LayerConfig, ) { super(() => FeatureInfoBox.GenerateTitleBar(tags, layerConfig), - () => FeatureInfoBox.GenerateContent(tags, layerConfig), - undefined); + () => FeatureInfoBox.GenerateContent(tags, layerConfig)); if (layerConfig === undefined) { throw "Undefined layerconfig"; diff --git a/assets/svg/close.svg b/assets/svg/close.svg index 1d4344656..ded2ef0e4 100644 --- a/assets/svg/close.svg +++ b/assets/svg/close.svg @@ -2,83 +2,80 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="100" + height="100" + viewBox="0 0 26.458333 26.458334" + version="1.1" + id="svg8" + sodipodi:docname="close.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 63c10a8d0..ee61e9cea 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -856,10 +856,6 @@ video { margin-left: 0.75rem; } -.mb-2 { - margin-bottom: 0.5rem; -} - .mr-4 { margin-right: 1rem; } @@ -924,6 +920,14 @@ video { margin-right: 0.75rem; } +.mb-2 { + margin-bottom: 0.5rem; +} + +.mb-0 { + margin-bottom: 0px; +} + .box-border { box-sizing: border-box; } @@ -988,10 +992,6 @@ video { height: 3rem; } -.h-5 { - height: 1.25rem; -} - .h-screen { height: 100vh; } @@ -1279,10 +1279,6 @@ video { border-width: 2px; } -.border-b-2 { - border-bottom-width: 2px; -} - .border-b { border-bottom-width: 1px; } @@ -1316,11 +1312,6 @@ video { background-color: rgba(255, 255, 255, var(--tw-bg-opacity)); } -.bg-blue-50 { - --tw-bg-opacity: 1; - background-color: rgba(239, 246, 255, var(--tw-bg-opacity)); -} - .bg-blue-100 { --tw-bg-opacity: 1; background-color: rgba(219, 234, 254, var(--tw-bg-opacity)); @@ -1386,32 +1377,28 @@ video { padding: 0.5rem; } -.p-0\.5 { - padding: 0.125rem; -} - .p-0 { padding: 0px; } +.p-0\.5 { + padding: 0.125rem; +} + .pl-2 { padding-left: 0.5rem; } -.pt-3 { - padding-top: 0.75rem; +.pb-20 { + padding-bottom: 5rem; } -.pb-3 { - padding-bottom: 0.75rem; +.pt-1 { + padding-top: 0.25rem; } -.pl-4 { - padding-left: 1rem; -} - -.pb-0 { - padding-bottom: 0px; +.pb-1 { + padding-bottom: 0.25rem; } .pl-1 { @@ -1426,6 +1413,10 @@ video { padding-top: 1.5rem; } +.pb-3 { + padding-bottom: 0.75rem; +} + .pl-5 { padding-left: 1.25rem; } @@ -1434,6 +1425,10 @@ video { padding-right: 0.75rem; } +.pl-4 { + padding-left: 1rem; +} + .pr-4 { padding-right: 1rem; } @@ -2187,6 +2182,7 @@ li::marker { .leaflet-popup-content { width: 45em !important; + margin: 0.25rem !important; } .leaflet-div-icon { @@ -2422,8 +2418,8 @@ li::marker { flex-direction: row; } - .md\:p-0 { - padding: 0px; + .md\:rounded-xl { + border-radius: 0.75rem; } .md\:p-1 { @@ -2442,6 +2438,14 @@ li::marker { padding: 0.75rem; } + .md\:pt-0 { + padding-top: 0px; + } + + .md\:pb-0 { + padding-bottom: 0px; + } + .md\:pt-4 { padding-top: 1rem; } @@ -2461,11 +2465,6 @@ li::marker { line-height: 1.75rem; } - .md\:shadow-none { - --tw-shadow: 0 0 #0000; - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); - } - .md\:w-160 { width: 40rem; } diff --git a/index.css b/index.css index 6eb113abc..108f02fe2 100644 --- a/index.css +++ b/index.css @@ -424,6 +424,7 @@ li::marker { .leaflet-popup-content { width: 45em !important; + margin: 0.25rem !important; } .leaflet-div-icon { From e0ad1fb4a00c73feefe658f6cb9a26624d69ec81 Mon Sep 17 00:00:00 2001 From: kjon Date: Sat, 23 Oct 2021 18:36:38 +0000 Subject: [PATCH 02/30] Translated using Weblate (German) Currently translated at 67.0% (827 of 1233 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layer-translations/de/ --- langs/layers/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/langs/layers/de.json b/langs/layers/de.json index b8866f759..1072f2c7a 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -986,7 +986,7 @@ "then": "Authentifizierung per Debitkarte ist möglich" }, "7": { - "then": "Keine Authentifizierung erforderlich" + "then": "Das Aufladen ist hier (auch) ohne Authentifizierung möglich" } }, "question": "Welche Authentifizierung ist an der Ladestation möglich?" @@ -2774,4 +2774,4 @@ "watermill": { "name": "Wassermühle" } -} \ No newline at end of file +} From 23ee93fe16da821f89a2cb27caaf8039ce74c145 Mon Sep 17 00:00:00 2001 From: SC Date: Sat, 23 Oct 2021 13:39:06 +0000 Subject: [PATCH 03/30] Translated using Weblate (Portuguese) Currently translated at 100.0% (29 of 29 strings) Translation: MapComplete/shared-questions Translate-URL: https://hosted.weblate.org/projects/mapcomplete/shared-questions/pt/ --- langs/shared-questions/pt.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/langs/shared-questions/pt.json b/langs/shared-questions/pt.json index fbd730986..2afb0b221 100644 --- a/langs/shared-questions/pt.json +++ b/langs/shared-questions/pt.json @@ -78,6 +78,22 @@ } }, "question": "Este lugar é acessível a utilizadores de cadeiras de rodas?" + }, + "wikipedialink": { + "question": "Qual é o item correspondente na Wikipédia?", + "mappings": { + "0": { + "then": "Não vinculado à Wikipédia" + } + } + }, + "wikipedia": { + "question": "Qual é a entidade Wikidata correspondente?", + "mappings": { + "0": { + "then": "Ainda não foi vinculada nenhuma página da Wikipédia" + } + } } } -} \ No newline at end of file +} From 9d2527661bc6664d52694e14685d5c848a0d6325 Mon Sep 17 00:00:00 2001 From: SC Date: Sat, 23 Oct 2021 13:39:30 +0000 Subject: [PATCH 04/30] Translated using Weblate (Portuguese) Currently translated at 41.6% (95 of 228 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/pt/ --- langs/pt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langs/pt.json b/langs/pt.json index 92db819cb..21667811d 100644 --- a/langs/pt.json +++ b/langs/pt.json @@ -9,7 +9,7 @@ "isDeleted": "Eliminada", "doDelete": "Remover imagem", "dontDelete": "Cancelar", - "uploadDone": "A sua imagem foi adicionada. Obrigado pela ajuda!", + "uploadDone": "A sua imagem foi adicionada. Obrigado pela ajuda!", "respectPrivacy": "Não fotografe pessoas nem placas de veículos. Não envie imagens do Google Maps, do Google Streetview ou outras fontes protegidas por direitos de autor.", "uploadFailed": "Não foi possível enviar a sua imagem. Está conectado à Internet e permite APIs de terceiros? O navegador \"Brave\" ou o plugin \"uMatrix\" podem estar a bloqueá-los.", "ccb": "sob a licença CC-BY", From abebed35515653d96303d9a70355f38a1f982668 Mon Sep 17 00:00:00 2001 From: kjon Date: Sat, 23 Oct 2021 18:29:08 +0000 Subject: [PATCH 05/30] Translated using Weblate (German) Currently translated at 100.0% (228 of 228 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/de/ --- langs/de.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/langs/de.json b/langs/de.json index 214ae80e9..bde085d10 100644 --- a/langs/de.json +++ b/langs/de.json @@ -10,7 +10,7 @@ "ccb": "unter der 'CC-BY-Lizenz'", "uploadFailed": "Wir konnten Ihr Bild nicht hochladen. Haben Sie eine aktive Internetverbindung und sind APIs von Dritten erlaubt? Der Brave Browser oder UMatrix blockieren diese eventuell.", "respectPrivacy": "Bitte respektieren Sie die Privatsphäre. Fotografieren Sie weder Personen noch Nummernschilder. Benutzen Sie keine urheberrechtlich geschützten Quellen wie z.B. Google Maps oder Google Streetview.", - "uploadDone": "Ihr Bild wurde hinzugefügt. Vielen Dank für Ihre Hilfe!", + "uploadDone": "Ihr Bild wurde hinzugefügt. Vielen Dank für Ihre Hilfe!", "dontDelete": "Abbrechen", "doDelete": "Bild entfernen", "isDeleted": "Gelöscht" @@ -24,7 +24,7 @@ "index": { "#": "Dieser Text wird über die Thema-Auswahlschaltfläche gezeigt, wenn kein Thema geladen ist", "title": "Willkommen bei MapComplete", - "intro": "MapComplete ist eine OpenStreetMap-Anwendung, mit der Informationen zu einem bestimmten Thema angezeigt und angepasst werden können.", + "intro": "MapComplete ist eine OpenStreetMap-Anwendung, mit der Informationen zu Objekten eines bestimmten Themas angezeigt und angepasst werden können.", "pickTheme": "Wähle unten ein Thema, um zu starten." }, "general": { @@ -106,7 +106,7 @@ "getStartedNewAccount": " oder ein neues Konto anlegen", "noTagsSelected": "Keine Tags ausgewählt", "customThemeIntro": "

Benutzerdefinierte Themes

Dies sind zuvor besuchte benutzergenerierte Themen.", - "aboutMapcomplete": "

Über MapComplete

MapComplete ist ein OpenStreetMap-Editor, der jedem helfen soll, auf einfache Weise Informationen zu einem Einzelthema hinzuzufügen.

Nur Merkmale, die für ein einzelnes Thema relevant sind, werden mit einigen vordefinierten Fragen gezeigt, um die Dinge einfach und extrem benutzerfreundlich zu halten. Der Themen-Betreuer kann auch eine Sprache für die Schnittstelle wählen, Elemente deaktivieren oder sogar in eine andere Website ohne jegliches UI-Element einbetten.

Ein weiterer wichtiger Teil von MapComplete ist jedoch, immer den nächsten Schritt anzubietenum mehr über OpenStreetMap zu erfahren:

  • Ein iframe ohne UI-Elemente verlinkt zu einer Vollbildversion
  • Die Vollbildversion bietet Informationen über OpenStreetMap
  • Wenn Sie nicht eingeloggt sind, werden Sie gebeten, sich einzuloggen
  • Wenn Sie eine einzige Frage beantwortet haben, dürfen Sie Punkte hinzufügen
  • An einem bestimmten Punkt erscheinen die tatsächlich hinzugefügten Tags, die später mit dem Wiki verlinkt werden...

Fällt Ihnen ein Problem mit MapComplete auf? Haben Sie einen Feature-Wunsch? Wollen Sie beim Übersetzen helfen? Gehen Sie zum Quellcode oder zur Problemverfolgung.

", + "aboutMapcomplete": "

Über MapComplete

Mit MapComplete können Sie OpenStreetMap mit Informationen zu einem einzigen Thema anreichern. Beantworten Sie ein paar Fragen, und innerhalb von Minuten werden Ihre Beiträge rund um den Globus verfügbar sein! Der Themen-Maintainer definiert Elemente, Fragen und Sprachen für das Thema.

Mehr erfahren

MapComplete bietet immer den nächsten Schritt, um mehr über OpenStreetMap zu erfahren.

  • Wenn es in eine Website eingebettet wird, verlinkt der Iframe zu einer Vollbildversion von MapComplete
  • Die Vollbildversion bietet Informationen über OpenStreetMap
  • Das Betrachten funktioniert ohne Login, aber das Bearbeiten erfordert ein OSM-Login.
  • Wenn Sie nicht eingeloggt sind, werden Sie aufgefordert, sich anzumelden
  • Nach der Beantwortung einer einzelnen Frage können Sie der Karte neue Punkte hinzufügen
  • Nach einer Weile werden aktuelle OSM-Tags angezeigt, die später mit dem Wiki verlinkt sind


Haben Sie ein Problem bemerkt? Haben Sie einen Funktionswunsch? Möchten Sie bei der Übersetzung helfen? Besuchen Sie den Quellcode oder den Issue Tracker

Möchten Sie Ihren Fortschritt sehen? Verfolgen Sie die Anzahl der Änderungen auf OsmCha.

", "backgroundMap": "Hintergrundkarte", "layerSelection": { "zoomInToSeeThisLayer": "Vergrößern, um diese Ebene zu sehen", @@ -164,7 +164,8 @@ "downloadAsPdf": "PDF der aktuellen Karte herunterladen", "downloadGeojson": "Sichtbare Daten als geojson herunterladen", "includeMetaData": "Metadaten übernehmen (letzter Bearbeiter, berechnete Werte, ...)", - "noDataLoaded": "Noch keine Daten geladen. Download ist in Kürze verfügbar" + "noDataLoaded": "Noch keine Daten geladen. Download ist in Kürze verfügbar", + "licenseInfo": "

Copyright-Hinweis

Die bereitgestellten Daten sind unter ODbL verfügbar. Die Wiederverwendung dieser Daten ist für jeden Zweck frei, aber
  • die Namensnennung © OpenStreetMap contributors ist erforderlich
  • Jede Änderung dieser Daten muss unter der gleichen Lizenz veröffentlicht werden
Bitte lesen Sie den vollständigen Copyright-Hinweis für weitere Details" }, "pdf": { "versionInfo": "v{version} - erstellt am {date}" From 38e1918dfa3407f85f1c80042ece79bd27057798 Mon Sep 17 00:00:00 2001 From: kjon Date: Sat, 23 Oct 2021 18:34:39 +0000 Subject: [PATCH 06/30] Translated using Weblate (German) Currently translated at 77.0% (339 of 440 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/de/ --- langs/themes/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/langs/themes/de.json b/langs/themes/de.json index ed6ecf516..cfefb4350 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -633,7 +633,7 @@ "title": "Trinkwasser" }, "etymology": { - "description": "Auf dieser Karte können Sie sehen, nach was ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknüpft wurde. Die Informationen stammen aus Wikipedia.", + "description": "Auf dieser Karte können Sie sehen, wonach ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknüpft wurde. In dem Popup sehen Sie den Wikipedia-Artikel (falls vorhanden) oder ein Wikidata-Feld, nach dem das Objekt benannt ist. Wenn das Objekt selbst eine Wikipedia-Seite hat, wird auch diese angezeigt.

Sie können auch einen Beitrag leisten!Zoomen Sie genug hinein und alle Straßen werden angezeigt. Wenn Sie auf eine Straße klicken, öffnet sich ein Wikidata-Suchfeld. Mit ein paar Klicks können Sie einen Etymologie-Link hinzufügen. Beachten Sie, dass Sie dazu ein kostenloses OpenStreetMap-Konto benötigen.", "shortDescription": "Was ist der Ursprung eines Ortsnamens?", "title": "Open Etymology Map" }, @@ -1019,4 +1019,4 @@ "shortDescription": "Eine Karte mit Abfalleimern", "title": "Abfalleimer" } -} \ No newline at end of file +} From efe497be09a33789c97911cd5a80a9b03f7cdec8 Mon Sep 17 00:00:00 2001 From: kjon Date: Sat, 23 Oct 2021 18:30:07 +0000 Subject: [PATCH 07/30] Translated using Weblate (German) Currently translated at 100.0% (29 of 29 strings) Translation: MapComplete/shared-questions Translate-URL: https://hosted.weblate.org/projects/mapcomplete/shared-questions/de/ --- langs/shared-questions/de.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/langs/shared-questions/de.json b/langs/shared-questions/de.json index 2baaebe37..cc6df974b 100644 --- a/langs/shared-questions/de.json +++ b/langs/shared-questions/de.json @@ -78,6 +78,22 @@ } }, "question": "Ist dieser Ort mit einem Rollstuhl zugänglich?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "Es wurde noch keine Wikipedia-Seite verlinkt" + } + }, + "question": "Was ist das entsprechende Wikidata Element?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Nicht mit Wikipedia verknüpft" + } + }, + "question": "Was ist der entsprechende Artikel auf Wikipedia?" } } -} \ No newline at end of file +} From 181ba5251435248f7f786cce48a80558634f5742 Mon Sep 17 00:00:00 2001 From: kjon Date: Sun, 24 Oct 2021 10:14:51 +0000 Subject: [PATCH 08/30] Translated using Weblate (German) Currently translated at 100.0% (228 of 228 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/de/ --- langs/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langs/de.json b/langs/de.json index bde085d10..a5d13b49c 100644 --- a/langs/de.json +++ b/langs/de.json @@ -73,7 +73,7 @@ "emailOf": "Wie lautet die E-Mail-Adresse der {category}?", "emailIs": "Die E-Mail-Adresse dieser {category} lautet {email}" }, - "openStreetMapIntro": "

Eine offene Karte

Wäre es nicht toll, wenn es eine offene Karte gäbe, die von jedem angepasst und benutzt werden könnte? Eine Karte, zu der jeder seine Interessen hinzufügen kann? Dann bräuchte man all diese Websites mit unterschiedlichen, kleinen und inkompatiblen Karten (die immer veraltet sind) nicht mehr.

OpenStreetMap ist diese offene Karte. Die Kartendaten können kostenlos verwendet werden (mit Attribution und Veröffentlichung von Änderungen an diesen Daten). Darüber hinaus können Sie die Karte kostenlos ändern und Fehler beheben, wenn Sie ein Konto erstellen. Diese Website basiert ebenfalls auf OpenStreetMap. Wenn Sie eine Frage hier beantworten, geht die Antwort auch dorthin.

Viele Menschen und Anwendungen nutzen OpenStreetMap bereits: Maps.me, OsmAnd, verschiedene spezialisierte Routenplaner, die Hintergrundkarten auf Facebook, Instagram,...
Sogar Apple Maps und Bing Maps verwenden OpenStreetMap in ihren Karten!

Wenn Sie hier einen Punkt hinzufügen oder eine Frage beantworten, wird er nach einer Weile in all diesen Anwendungen sichtbar sein.

", + "openStreetMapIntro": "

Eine freie Karte

Wäre es nicht toll, wenn es eine freie Karte gäbe, die von jedem angepasst und genutzt werden könnte? Eine Karte, zu der jeder Informationen hinzufügen kann? Dann bräuchte man all diese Webseiten mit unterschiedlichen, eingeschränkten und veralteten Karten nicht mehr.

OpenStreetMap ist diese freie Karte. Alle Kartendaten können kostenlos verwendet werden (mit Attribution und Veröffentlichung von Änderungen an diesen Daten). Darüber hinaus können Sie die Karte kostenlos ändern und Fehler beheben, wenn Sie ein Konto erstellen. Diese Webseite basiert ebenfalls auf OpenStreetMap. Wenn Sie eine Frage hier beantworten, geht die Antwort auch dorthin.

Viele Menschen und Anwendungen nutzen OpenStreetMap bereits: Maps.me, OsmAnd, verschiedene spezialisierte Routenplaner, die Hintergrundkarten auf Facebook, Instagram, ...<br/>Sogar Apple Maps und Bing Maps verwenden OpenStreetMap in ihren Karten!

Wenn Sie hier einen Punkt hinzufügen oder eine Frage beantworten, wird er nach einer Weile in all diesen Anwendungen sichtbar sein.

", "sharescreen": { "intro": "

Diese Karte teilen

Sie können diese Karte teilen, indem Sie den untenstehenden Link kopieren und an Freunde und Familie schicken:", "addToHomeScreen": "

Zum Startbildschirm hinzufügen

Sie können diese Website einfach zum Startbildschirm Ihres Smartphones hinzufügen, um ein natives Gefühl zu erhalten. Klicken Sie dazu in der URL-Leiste auf die Schaltfläche 'Zum Startbildschirm hinzufügen'.", From bbcd1f5bee248fd5a74212719b1618901af30d56 Mon Sep 17 00:00:00 2001 From: kjon Date: Sun, 24 Oct 2021 08:28:51 +0000 Subject: [PATCH 09/30] Translated using Weblate (German) Currently translated at 84.7% (373 of 440 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/de/ --- langs/themes/de.json | 122 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 117 insertions(+), 5 deletions(-) diff --git a/langs/themes/de.json b/langs/themes/de.json index cfefb4350..d94a860c9 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -635,7 +635,19 @@ "etymology": { "description": "Auf dieser Karte können Sie sehen, wonach ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknüpft wurde. In dem Popup sehen Sie den Wikipedia-Artikel (falls vorhanden) oder ein Wikidata-Feld, nach dem das Objekt benannt ist. Wenn das Objekt selbst eine Wikipedia-Seite hat, wird auch diese angezeigt.

Sie können auch einen Beitrag leisten!Zoomen Sie genug hinein und alle Straßen werden angezeigt. Wenn Sie auf eine Straße klicken, öffnet sich ein Wikidata-Suchfeld. Mit ein paar Klicks können Sie einen Etymologie-Link hinzufügen. Beachten Sie, dass Sie dazu ein kostenloses OpenStreetMap-Konto benötigen.", "shortDescription": "Was ist der Ursprung eines Ortsnamens?", - "title": "Open Etymology Map" + "title": "Open Etymology Map", + "layers": { + "1": { + "override": { + "name": "Straßen ohne Informationen zur Namensherkunft" + } + }, + "2": { + "override": { + "name": "Parks und Waldflächen ohne Informationen zur Namensherkunft" + } + } + } }, "facadegardens": { "layers": { @@ -736,7 +748,7 @@ } }, "ghostbikes": { - "description": "Ein Geisterrad ist ein Denkmal für einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt ist.

Auf dieser Karte kann man alle Geisterräder sehen, die OpenStreetMap kennt. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufügen oder aktualisieren - Sie benötigen lediglich einen (kostenlosen) OpenStreetMap-Account.", + "description": "Ein Geisterrad ist ein Denkmal für einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt ist.

Auf dieser Karte kann man alle Geisterräder sehen, die in OpenStreetMap eingetragen sind. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufügen oder aktualisieren - Sie benötigen lediglich einen (kostenlosen) OpenStreetMap-Account.", "title": "Geisterrad" }, "hackerspaces": { @@ -925,6 +937,9 @@ "station-name": { "question": "Wie lautet der Name dieser Feuerwache?" } + }, + "title": { + "render": "Feuerwache" } }, "3": { @@ -937,7 +952,46 @@ } }, "openwindpowermap": { - "description": "Eine Karte zum Anzeigen und Bearbeiten von Windkraftanlagen." + "description": "Eine Karte zum Anzeigen und Bearbeiten von Windkraftanlagen.", + "layers": { + "0": { + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " Megawatt" + }, + "1": { + "human": " Kilowatt" + }, + "2": { + "human": " Watt" + }, + "3": { + "human": " Gigawatt" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": " Meter" + } + } + } + }, + "title": { + "render": "Windrad" + }, + "name": "Windrad", + "presets": { + "0": { + "title": "Windrad" + } + } + } + }, + "title": "OpenWindPowerMap" }, "personal": { "description": "Erstellen Sie ein persönliches Thema auf der Grundlage aller verfügbaren Ebenen aller Themen", @@ -955,9 +1009,41 @@ } } } + }, + "title": { + "render": "Poststelle" + }, + "filter": { + "0": { + "options": { + "0": { + "question": "Aktuell geöffnet" + } + } + } + }, + "name": "Poststellen", + "presets": { + "0": { + "title": "Poststelle" + } } + }, + "0": { + "name": "Brieflästen", + "presets": { + "0": { + "title": "Briefkasten" + } + }, + "title": { + "render": "Briefkasten" + }, + "description": "Die Ebene zeigt Briefkästen." } - } + }, + "shortDescription": "Eine Karte die Briefkästen und Poststellen anzeigt", + "title": "Karte mit Briefkästen und Poststellen" }, "shops": { "shortDescription": "Eine bearbeitbare Karte mit grundlegenden Geschäftsinformationen", @@ -1012,11 +1098,37 @@ } }, "shortDescription": "Helfen Sie beim Aufbau eines offenen Datensatzes britischer Adressen", - "title": "Adressen in Großbritannien" + "title": "Adressen in Großbritannien", + "tileLayerSources": { + "0": { + "name": "Grenzverläufe gemäß osmuk.org" + } + } }, "waste_basket": { "description": "Auf dieser Karte finden Sie Abfalleimer in Ihrer Nähe. Wenn ein Abfalleimer auf dieser Karte fehlt, können Sie ihn selbst hinzufügen", "shortDescription": "Eine Karte mit Abfalleimern", "title": "Abfalleimer" + }, + "maps": { + "title": "Eine Karte der Karten" + }, + "playgrounds": { + "title": "Spielpläzte", + "shortDescription": "Eine Karte mit Spielplätzen" + }, + "parkings": { + "title": "Parken", + "shortDescription": "Diese Karte zeigt Parkplätze", + "description": "Diese Karte zeigt Parkplätze" + }, + "natuurpunt": { + "title": "Naturschutzgebiete", + "shortDescription": "Diese Karte zeigt Naturschutzgebiete des flämischen Naturverbands Natuurpunt" + }, + "observation_towers": { + "title": "Beobachtungstürme", + "description": "Öffentlich zugänglicher Aussichtsturm", + "shortDescription": "Öffentlich zugänglicher Aussichtsturm" } } From 51caa24a716b0ddcddf783a431837c72c8e44afe Mon Sep 17 00:00:00 2001 From: kjon Date: Sun, 24 Oct 2021 10:18:02 +0000 Subject: [PATCH 10/30] Translated using Weblate (German) Currently translated at 100.0% (228 of 228 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/de/ --- langs/de.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/langs/de.json b/langs/de.json index a5d13b49c..ae55b7bcc 100644 --- a/langs/de.json +++ b/langs/de.json @@ -17,7 +17,7 @@ }, "centerMessage": { "loadingData": "Daten werden geladen…", - "zoomIn": "Vergrößern, um die Daten anzuzeigen oder zu bearbeiten", + "zoomIn": "Ausschnitt vergrößern, um Daten anzuzeigen oder zu bearbeiten", "ready": "Erledigt!", "retrying": "Laden von Daten fehlgeschlagen. Erneuter Versuch in {count} Sekunden …" }, @@ -28,7 +28,7 @@ "pickTheme": "Wähle unten ein Thema, um zu starten." }, "general": { - "loginWithOpenStreetMap": "Anmeldung mit OpenStreetMap", + "loginWithOpenStreetMap": "Bei OpenStreetMap anmelden", "welcomeBack": "Sie sind eingeloggt, willkommen zurück!", "loginToStart": "Anmelden, um diese Frage zu beantworten", "search": { @@ -61,7 +61,7 @@ "disableFiltersExplanation": "Einige Elemente können durch einen Filter ausgeblendet sein", "disableFilters": "Alle Filter deaktivieren" }, - "pickLanguage": "Wählen Sie eine Sprache: ", + "pickLanguage": "Sprache wählen: ", "about": "OpenStreetMap für ein bestimmtes Thema einfach bearbeiten und hinzufügen", "nameInlineQuestion": "Der Name dieser {category} ist $$$", "noNameCategory": "{category} ohne Namen", @@ -76,7 +76,7 @@ "openStreetMapIntro": "

Eine freie Karte

Wäre es nicht toll, wenn es eine freie Karte gäbe, die von jedem angepasst und genutzt werden könnte? Eine Karte, zu der jeder Informationen hinzufügen kann? Dann bräuchte man all diese Webseiten mit unterschiedlichen, eingeschränkten und veralteten Karten nicht mehr.

OpenStreetMap ist diese freie Karte. Alle Kartendaten können kostenlos verwendet werden (mit Attribution und Veröffentlichung von Änderungen an diesen Daten). Darüber hinaus können Sie die Karte kostenlos ändern und Fehler beheben, wenn Sie ein Konto erstellen. Diese Webseite basiert ebenfalls auf OpenStreetMap. Wenn Sie eine Frage hier beantworten, geht die Antwort auch dorthin.

Viele Menschen und Anwendungen nutzen OpenStreetMap bereits: Maps.me, OsmAnd, verschiedene spezialisierte Routenplaner, die Hintergrundkarten auf Facebook, Instagram, ...<br/>Sogar Apple Maps und Bing Maps verwenden OpenStreetMap in ihren Karten!

Wenn Sie hier einen Punkt hinzufügen oder eine Frage beantworten, wird er nach einer Weile in all diesen Anwendungen sichtbar sein.

", "sharescreen": { "intro": "

Diese Karte teilen

Sie können diese Karte teilen, indem Sie den untenstehenden Link kopieren und an Freunde und Familie schicken:", - "addToHomeScreen": "

Zum Startbildschirm hinzufügen

Sie können diese Website einfach zum Startbildschirm Ihres Smartphones hinzufügen, um ein natives Gefühl zu erhalten. Klicken Sie dazu in der URL-Leiste auf die Schaltfläche 'Zum Startbildschirm hinzufügen'.", + "addToHomeScreen": "

Zum Startbildschirm hinzufügen

Sie können diese Webseite zum Startbildschirm Ihres Smartphones hinzufügen, um ein natives Gefühl zu erhalten. Klicken Sie dazu in der Adressleiste auf die Schaltfläche 'Zum Startbildschirm hinzufügen'.", "embedIntro": "

Auf Ihrer Website einbetten

Bitte betten Sie diese Karte in Ihre Webseite ein.
Wir ermutigen Sie, es zu tun - Sie müssen nicht einmal um Erlaubnis fragen.
Es ist kostenlos und wird es immer sein. Je mehr Leute sie benutzen, desto wertvoller wird sie.", "copiedToClipboard": "Link in die Zwischenablage kopiert", "thanksForSharing": "Danke für das Teilen!", @@ -109,7 +109,7 @@ "aboutMapcomplete": "

Über MapComplete

Mit MapComplete können Sie OpenStreetMap mit Informationen zu einem einzigen Thema anreichern. Beantworten Sie ein paar Fragen, und innerhalb von Minuten werden Ihre Beiträge rund um den Globus verfügbar sein! Der Themen-Maintainer definiert Elemente, Fragen und Sprachen für das Thema.

Mehr erfahren

MapComplete bietet immer den nächsten Schritt, um mehr über OpenStreetMap zu erfahren.

  • Wenn es in eine Website eingebettet wird, verlinkt der Iframe zu einer Vollbildversion von MapComplete
  • Die Vollbildversion bietet Informationen über OpenStreetMap
  • Das Betrachten funktioniert ohne Login, aber das Bearbeiten erfordert ein OSM-Login.
  • Wenn Sie nicht eingeloggt sind, werden Sie aufgefordert, sich anzumelden
  • Nach der Beantwortung einer einzelnen Frage können Sie der Karte neue Punkte hinzufügen
  • Nach einer Weile werden aktuelle OSM-Tags angezeigt, die später mit dem Wiki verlinkt sind


Haben Sie ein Problem bemerkt? Haben Sie einen Funktionswunsch? Möchten Sie bei der Übersetzung helfen? Besuchen Sie den Quellcode oder den Issue Tracker

Möchten Sie Ihren Fortschritt sehen? Verfolgen Sie die Anzahl der Änderungen auf OsmCha.

", "backgroundMap": "Hintergrundkarte", "layerSelection": { - "zoomInToSeeThisLayer": "Vergrößern, um diese Ebene zu sehen", + "zoomInToSeeThisLayer": "Ausschnitt vergrößern, um diese Ebene anzuzeigen", "title": "Ebenen auswählen" }, "weekdays": { @@ -170,7 +170,7 @@ "pdf": { "versionInfo": "v{version} - erstellt am {date}" }, - "loginOnlyNeededToEdit": "wenn du die Karte bearbeiten willst" + "loginOnlyNeededToEdit": "zum Bearbeiten der Karte" }, "favourite": { "panelIntro": "

Ihr persönliches Thema

Aktivieren Sie Ihre Lieblingsebenen aus allen offiziellen Themen", From 45c22ea8324c6ebb0e4f0ed9955463b3fe7d0f3e Mon Sep 17 00:00:00 2001 From: kjon Date: Sun, 24 Oct 2021 12:19:04 +0000 Subject: [PATCH 11/30] Translated using Weblate (German) Currently translated at 85.6% (377 of 440 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/de/ --- langs/themes/de.json | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/langs/themes/de.json b/langs/themes/de.json index d94a860c9..105fdb9fc 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -334,6 +334,18 @@ }, "question": "Wie heißt diese Kletterroute?", "render": "{name}" + }, + "Bolts": { + "render": "Diese Kletterroute hat {climbing:bolts} Haken", + "question": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?", + "mappings": { + "1": { + "then": "Auf dieser Kletterroute sind keine Haken vorhanden" + }, + "0": { + "then": "Auf dieser Kletterroute sind keine Haken vorhanden" + } + } } }, "title": { @@ -625,12 +637,12 @@ "title": "Fahrradstraßen" }, "cyclofix": { - "description": "Das Ziel dieser Karte ist es, den Radfahrern eine einfach zu benutzende Lösung zu präsentieren, um die geeignete Infrastruktur für ihre Bedürfnisse zu finden.

Sie können Ihren genauen Standort verfolgen (nur mobil) und in der linken unteren Ecke die für Sie relevanten Ebenen auswählen. Sie können dieses Tool auch verwenden, um Pins (Points of Interest/Interessante Orte) zur Karte hinzuzufügen oder zu bearbeiten und mehr Daten durch Beantwortung der Fragen bereitstellen.

Alle Änderungen, die Sie vornehmen, werden automatisch in der globalen Datenbank von OpenStreetMap gespeichert und können von anderen frei wiederverwendet werden.

Weitere Informationen über das Projekt Cyclofix finden Sie unter cyclofix.osm.be.", - "title": "Cyclofix - eine offene Karte für Radfahrer" + "description": "Mit dieser Karte soll Radfahrern eine einfache Lösung bereitgestellt werden, um die passende Farradinfrastruktur zu finden.

Sie können Ihren genauen Standort verfolgen (nur mobil) und in der linken unteren Ecke die für Sie relevanten Ebenen auswählen. Sie können dieses Tool auch verwenden, um Pins (Points of Interest/Interessante Orte) zur Karte hinzuzufügen oder zu bearbeiten und mehr Daten durch Beantwortung der Fragen bereitstellen.

Ihre Änderungen, werden automatisch in der Datenbank von OpenStreetMap gespeichert und können von anderen frei verwendet werden.

Weitere Informationen über Cyclofix finden Sie unter cyclofix.osm.be.", + "title": "Cyclofix - eine freie Karte für Radfahrer" }, "drinking_water": { - "description": "Auf dieser Karte sind öffentlich zugängliche Trinkwasserstellen eingezeichnet und können leicht hinzugefügt werden", - "title": "Trinkwasser" + "description": "Eine Karte zum Anzeigen und Bearbeiten öffentlicher Trinkwasserstellen", + "title": "Trinkwasserstelle" }, "etymology": { "description": "Auf dieser Karte können Sie sehen, wonach ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknüpft wurde. In dem Popup sehen Sie den Wikipedia-Artikel (falls vorhanden) oder ein Wikidata-Feld, nach dem das Objekt benannt ist. Wenn das Objekt selbst eine Wikipedia-Seite hat, wird auch diese angezeigt.

Sie können auch einen Beitrag leisten!Zoomen Sie genug hinein und alle Straßen werden angezeigt. Wenn Sie auf eine Straße klicken, öffnet sich ein Wikidata-Suchfeld. Mit ein paar Klicks können Sie einen Etymologie-Link hinzufügen. Beachten Sie, dass Sie dazu ein kostenloses OpenStreetMap-Konto benötigen.", @@ -749,7 +761,7 @@ }, "ghostbikes": { "description": "Ein Geisterrad ist ein Denkmal für einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt ist.

Auf dieser Karte kann man alle Geisterräder sehen, die in OpenStreetMap eingetragen sind. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufügen oder aktualisieren - Sie benötigen lediglich einen (kostenlosen) OpenStreetMap-Account.", - "title": "Geisterrad" + "title": "Geisterräder" }, "hackerspaces": { "description": "Auf dieser Karte können Sie Hackerspaces sehen, einen neuen Hackerspace hinzufügen oder Daten direkt aktualisieren", @@ -1060,8 +1072,8 @@ "title": "Überwachung unter Überwachung" }, "toilets": { - "description": "Eine Karte der öffentlichen Toiletten", - "title": "Offene Toilette Karte" + "description": "Eine Karte mit öffentlich zugänglichen Toiletten", + "title": "Freie Toilettenkarte" }, "trees": { "description": "Kartieren Sie alle Bäume!", @@ -1127,7 +1139,7 @@ "shortDescription": "Diese Karte zeigt Naturschutzgebiete des flämischen Naturverbands Natuurpunt" }, "observation_towers": { - "title": "Beobachtungstürme", + "title": "Aussichtstürme", "description": "Öffentlich zugänglicher Aussichtsturm", "shortDescription": "Öffentlich zugänglicher Aussichtsturm" } From e25b5e42f963271905bc1143a9a5616388f00d5f Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 13:53:46 +0200 Subject: [PATCH 12/30] Clustering tweak --- Models/Constants.ts | 2 +- assets/themes/etymology.json | 6 +++++- assets/welcome_message.json | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Models/Constants.ts b/Models/Constants.ts index ec2b8dcb8..15f6e94f9 100644 --- a/Models/Constants.ts +++ b/Models/Constants.ts @@ -2,7 +2,7 @@ import {Utils} from "../Utils"; export default class Constants { - public static vNumber = "0.11.0"; + public static vNumber = "0.11.1"; public static ImgurApiKey = '7070e7167f0a25a' public static readonly mapillary_client_token_v3 = 'TXhLaWthQ1d4RUg0czVxaTVoRjFJZzowNDczNjUzNmIyNTQyYzI2' public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85" diff --git a/assets/themes/etymology.json b/assets/themes/etymology.json index 375cf5bf5..f342e2e2b 100644 --- a/assets/themes/etymology.json +++ b/assets/themes/etymology.json @@ -28,6 +28,10 @@ "startZoom": 1, "widenFactor": 2, "socialImage": "", + "clustering": { + "maxZoom": 14, + "minNeededElements": 250 + }, "layers": [ "etymology", { @@ -75,5 +79,5 @@ } } ], - "hideFromOverview": true + "hideFromOverview": false } \ No newline at end of file diff --git a/assets/welcome_message.json b/assets/welcome_message.json index db7807222..d2a3fc257 100644 --- a/assets/welcome_message.json +++ b/assets/welcome_message.json @@ -7,13 +7,13 @@ }, { "start_date": "2022-04-11", - "end_date": "2022-04-17", + "end_date": "2022-04-18", "message": "The 15th of april is World Art Day - the ideal moment to go out, enjoy some artwork and add missing artwork to the map. And of course, you can snap some pictures", "featured_theme": "artwork" }, { "start_date": "2022-03-24", - "end_date": "2022-01-30", + "end_date": "2022-03-31", "message": "The 22nd of March is World Water Day. Time to go out and find all the public drinking water spots!", "featured_theme": "drinking_water" }, @@ -40,13 +40,13 @@ }, { "start_date": "2021-10-25", - "end_date": "2021-10-31", + "end_date": "2021-11-01", "message": "Did you know you could link OpenStreetMap with Wikidata? With name:etymology:wikidata, it is even possible to link to whom or what a feature is named after. Quite some volunteers have done this - because it is interesting or for the Equal Street Names-project. For this, a new theme has been created which shows the Wikipedia page and Wikimedia-images of this tag and which makes it easy to link them both with the search box. Give it a try!", "featured_theme": "etymology" }, { "start_date": "2021-10-17", - "end_date": "2021-10-24", + "end_date": "2021-10-25", "message": "

Hi all!

Thanks for using MapComplete. It has been quite a ride since it's inception, a bit over a year ago. MapComplete has grown significantly recently, which you can read more about on in my diary entry.

Furthermore, NicoleLaine made a really cool new theme about postboxes, so make sure to check it out!

", "featured_theme": "postboxes" } From 084d22928b8bd43facaf54436123bf581f79c98c Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 14:02:32 +0200 Subject: [PATCH 13/30] undefined robustness --- UI/Wikipedia/WikidataPreviewBox.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UI/Wikipedia/WikidataPreviewBox.ts b/UI/Wikipedia/WikidataPreviewBox.ts index 9358f3a83..1d7595e6d 100644 --- a/UI/Wikipedia/WikidataPreviewBox.ts +++ b/UI/Wikipedia/WikidataPreviewBox.ts @@ -122,13 +122,13 @@ export default class WikidataPreviewBox extends VariableUiElement { const els : BaseUIElement[] = [] for (const extraProperty of WikidataPreviewBox.extraProperties) { - let hasAllRequirements =true + let hasAllRequirements = true for (const requirement of extraProperty.requires) { - if(!wikidata.claims.has("P"+requirement.p)){ + if(!wikidata.claims?.has("P"+requirement.p)){ hasAllRequirements = false; break } - if(!wikidata.claims.get("P"+requirement.p).has("Q"+requirement.q)){ + if(!wikidata.claims?.get("P"+requirement.p).has("Q"+requirement.q)){ hasAllRequirements = false; break } From 9a85df94069b2ef19f94bf2e21e8854a0fe4bca4 Mon Sep 17 00:00:00 2001 From: kjon Date: Sat, 23 Oct 2021 18:39:41 +0000 Subject: [PATCH 14/30] Translated using Weblate (German) Currently translated at 77.9% (961 of 1233 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layer-translations/de/ --- langs/layers/de.json | 446 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 410 insertions(+), 36 deletions(-) diff --git a/langs/layers/de.json b/langs/layers/de.json index 1072f2c7a..8c995a73c 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -947,6 +947,12 @@ "options": { "0": { "question": "Alle Anschlüsse" + }, + "7": { + "question": "Hat einen
Tesla Supercharger
Stecker" + }, + "3": { + "question": "Hat einen
Chademo
Stecker" } } } @@ -1153,16 +1159,45 @@ "then": "Nutzung kostenlos" } }, - "render": "Die Nutzung dieser Ladestation kostet {charge}" + "render": "Die Nutzung dieser Ladestation kostet {charge}", + "question": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?" }, "maxstay": { - "render": "Die maximale Parkzeit beträgt {canonical(maxstay)}" + "render": "Die maximale Parkzeit beträgt {canonical(maxstay)}", + "question": "Was ist die Höchstdauer des Aufenthalts hier?", + "mappings": { + "0": { + "then": "Keine Höchstparkdauer" + } + } }, "ref": { - "render": "Die Kennziffer ist {ref}" + "render": "Die Kennziffer ist {ref}", + "question": "Wie lautet die Kennung dieser Ladestation?" }, "website": { - "render": "Weitere Informationen auf {website}" + "render": "Weitere Informationen auf {website}", + "question": "Wie ist die Webseite des Betreibers?" + }, + "payment-options": { + "override": { + "mappings+": { + "0": { + "then": "Bezahlung mit einer speziellen App" + }, + "1": { + "then": "Bezahlung mit einer Mitgliedskarte" + } + } + } + }, + "email": { + "question": "Wie ist die Email-Adresse des Betreibers?", + "render": "Bei Problemen senden Sie eine E-Mail an {email}" + }, + "phone": { + "render": "Bei Problemen, anrufen unter {phone}", + "question": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?" } }, "title": { @@ -1264,6 +1299,53 @@ } }, "question": "Was ist das für eine Kreuzung?" + }, + "crossing-continue-through-red": { + "mappings": { + "0": { + "then": "Ein Radfahrer kann bei roter Ampel geradeaus fahren " + }, + "1": { + "then": "Ein Radfahrer kann bei roter Ampel geradeaus fahren" + }, + "2": { + "then": "Ein Radfahrer kann bei roter Ampel nicht geradeaus fahren" + } + }, + "question": "Kann ein Radfahrer bei roter Ampel geradeaus fahren?" + }, + "crossing-has-island": { + "mappings": { + "0": { + "then": "Der Übergang hat eine Verkehrsinsel" + }, + "1": { + "then": "Diese Ampel hat eine Taste, um ein grünes Signal anzufordern" + } + }, + "question": "Gibt es an diesem Übergang eine Verkehrsinsel?" + }, + "crossing-right-turn-through-red": { + "mappings": { + "1": { + "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen" + }, + "2": { + "then": "Ein Radfahrer kann bei roter Ampel nicht rechts abbiegen" + }, + "0": { + "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " + } + }, + "question": "Kann ein Radfahrer bei roter Ampel rechts abbiegen?" + }, + "crossing-button": { + "question": "Hat diese Ampel eine Taste, um ein grünes Signal anzufordern?", + "mappings": { + "1": { + "then": "Diese Ampel hat keine Taste, um ein grünes Signal anzufordern." + } + } } }, "title": { @@ -1291,6 +1373,15 @@ }, "5": { "then": "Es gibt keinen Radweg" + }, + "2": { + "then": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." + }, + "1": { + "then": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" + }, + "0": { + "then": "Es gibt eine geteilte Fahrspur" } }, "question": "Was für ein Radweg ist hier?" @@ -1308,6 +1399,18 @@ }, "7": { "then": "Unpassierbar / Keine bereiften Fahrzeuge" + }, + "2": { + "then": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter" + }, + "3": { + "then": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha" + }, + "5": { + "then": "Geeignet für Geländefahrzeuge: schwerer Geländewagen" + }, + "4": { + "then": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" } }, "question": "Wie eben ist dieser Radweg?" @@ -1340,9 +1443,22 @@ }, "12": { "then": "Dieser Radweg besteht aus Rohboden" + }, + "5": { + "then": "Dieser Radweg besteht aus Kopfsteinpflaster" + }, + "3": { + "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" + }, + "7": { + "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + }, + "6": { + "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" } }, - "render": "Der Radweg ist aus {cycleway:surface}" + "render": "Der Radweg ist aus {cycleway:surface}", + "question": "Was ist der Belag dieses Radwegs?" }, "Is this a cyclestreet? (For a road)": { "mappings": { @@ -1351,6 +1467,9 @@ }, "2": { "then": "Dies ist keine Fahrradstraße." + }, + "0": { + "then": "Dies ist eine Fahrradstraße in einer 30km/h Zone." } }, "question": "Ist das eine Fahrradstraße" @@ -1372,7 +1491,9 @@ "4": { "then": "Die Höchstgeschwindigkeit ist 90 km/h" } - } + }, + "render": "Die Höchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h", + "question": "Was ist die Höchstgeschwindigkeit auf dieser Straße?" }, "Surface of the road": { "mappings": { @@ -1399,9 +1520,25 @@ }, "12": { "then": "Dieser Radweg besteht aus Rohboden" + }, + "3": { + "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" + }, + "0": { + "then": "Dieser Radweg ist nicht befestigt" + }, + "6": { + "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" + }, + "7": { + "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + }, + "5": { + "then": "Dieser Radweg besteht aus Kopfsteinpflaster" } }, - "render": "Der Radweg ist aus {surface}" + "render": "Der Radweg ist aus {surface}", + "question": "Was ist der Belag dieser Straße?" }, "Surface of the street": { "mappings": { @@ -1416,6 +1553,18 @@ }, "7": { "then": "Unpassierbar / Keine bereiften Fahrzeuge" + }, + "4": { + "then": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + }, + "2": { + "then": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter" + }, + "3": { + "then": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha" + }, + "5": { + "then": "Geeignet für Geländefahrzeuge: schwerer Geländewagen" } }, "question": "Wie eben ist diese Straße?" @@ -1424,8 +1573,18 @@ "mappings": { "3": { "then": "Dieser Radweg ist getrennt durch einen Bordstein" + }, + "0": { + "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" + }, + "1": { + "then": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" + }, + "2": { + "then": "Der Radweg ist abgegrenzt durch eine Parkspur" } - } + }, + "question": "Wie ist der Radweg von der Straße abgegrenzt?" }, "cycleway-lane-track-traffic-signs": { "mappings": { @@ -1440,6 +1599,9 @@ }, "4": { "then": "Kein Verkehrsschild vorhanden" + }, + "1": { + "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" } }, "question": "Welches Verkehrszeichen hat dieser Radweg?" @@ -1448,8 +1610,18 @@ "mappings": { "3": { "then": "Dieser Radweg ist getrennt durch einen Bordstein" + }, + "0": { + "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" + }, + "1": { + "then": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" + }, + "2": { + "then": "Der Radweg ist abgegrenzt durch eine Parkspur" } - } + }, + "question": "Wie ist der Radweg von der Straße abgegrenzt?" }, "cycleway-traffic-signs": { "mappings": { @@ -1464,6 +1636,9 @@ }, "4": { "then": "Kein Verkehrsschild vorhanden" + }, + "1": { + "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" } }, "question": "Welches Verkehrszeichen hat dieser Radweg?" @@ -1495,9 +1670,16 @@ }, "3": { "then": "Diese Straße ist durchgehend beleuchtet" + }, + "0": { + "then": "Diese Straße ist beleuchtet" } }, "question": "Ist diese Straße beleuchtet?" + }, + "cycleways_and_roads-cycleway:buffer": { + "question": "Wie breit ist der Abstand zwischen Radweg und Straße?", + "render": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" } }, "title": { @@ -1563,7 +1745,8 @@ "then": "Dies ist ein normaler automatischer Defibrillator" } }, - "render": "Es gibt keine Informationen über den Gerätetyp" + "render": "Es gibt keine Informationen über den Gerätetyp", + "question": "Ist dies ein normaler automatischer Defibrillator oder ein manueller Defibrillator nur für Profis?" }, "defibrillator-defibrillator:location": { "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)", @@ -1648,10 +1831,10 @@ "name": "Visualisierung der Richtung" }, "drinking_water": { - "name": "Trinkwasser", + "name": "Trinkwasserstelle", "presets": { "0": { - "title": "trinkwasser" + "title": "Trinkwasserstelle" } }, "tagRenderings": { @@ -1673,24 +1856,37 @@ }, "2": { "then": "Diese Trinkwasserstelle wurde geschlossen" + }, + "0": { + "then": "Diese Trinkwasserstelle funktioniert" } }, "question": "Ist diese Trinkwasserstelle noch in Betrieb?", "render": "Der Betriebsstatus ist {operational_status" }, "render-closest-drinking-water": { - "render": "Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter" + "render": "Eine weitere Trinkwasserstelle liegt {_closest_other_drinking_water_distance} Meter entfernt" } }, "title": { - "render": "Trinkwasser" + "render": "Trinkwasserstelle" } }, "etymology": { "description": "Alle Objekte, die eine bekannte Namensherkunft haben", "tagRenderings": { "simple etymology": { - "render": "Benannt nach {name:etymology}" + "render": "Benannt nach {name:etymology}", + "question": "Wonach ist dieses Objekt benannt?
Das könnte auf einem Straßenschild stehen", + "mappings": { + "0": { + "then": "Der Ursprung dieses Namens ist in der gesamten Literatur unbekannt" + } + } + }, + "wikipedia-etymology": { + "question": "Was ist das Wikidata-Element, nach dem dieses Objekt benannt ist?", + "render": "

Wikipedia Artikel zur Namensherkunft

{wikipedia(name:etymology:wikidata):max-height:20rem}" } } }, @@ -1709,11 +1905,26 @@ "question": "Bietet vegan Speisen an" } } + }, + "3": { + "options": { + "0": { + "question": "Hat halal Speisen" + } + } + }, + "1": { + "options": { + "0": { + "question": "Hat vegetarische Speisen" + } + } } }, "presets": { "0": { - "title": "Restaurant" + "title": "Restaurant", + "description": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden" }, "1": { "title": "Schnellimbiss" @@ -1727,6 +1938,12 @@ "mappings": { "2": { "then": "Bietet vorwiegend Pastagerichte an" + }, + "0": { + "then": "Dies ist eine Pizzeria" + }, + "1": { + "then": "Dies ist eine Pommesbude" } }, "question": "Welches Essen gibt es hier?", @@ -1767,7 +1984,19 @@ "3": { "then": "Es gibt ausschließlich halal Speisen" } - } + }, + "question": "Gibt es im das Restaurant halal Speisen?" + }, + "Vegetarian (no friture)": { + "question": "Gibt es im das Restaurant vegetarische Speisen?" + }, + "friture-take-your-container": { + "mappings": { + "0": { + "then": "Sie können ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" + } + }, + "question": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine Töpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" } }, "title": { @@ -1779,10 +2008,11 @@ "then": "Schnellrestaurant{name}" } } - } + }, + "name": "Restaurants und Fast Food" }, "ghost_bike": { - "name": "Geisterrad", + "name": "Geisterräder", "presets": { "0": { "title": "Geisterrad" @@ -1790,7 +2020,7 @@ }, "tagRenderings": { "ghost-bike-explanation": { - "render": "Ein Geisterrad ist ein Denkmal für einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt wird." + "render": "Ein Geisterrad ist ein weißes Fahrrad, dass zum Gedenken eines tödlich verunglückten Radfahrers vor Ort aufgestellt wurde." }, "ghost_bike-inscription": { "question": "Wie lautet die Inschrift auf diesem Geisterrad?", @@ -1810,7 +2040,8 @@ "render": "Mehr Informationen" }, "ghost_bike-start_date": { - "question": "Wann wurde dieses Geisterrad aufgestellt?" + "question": "Wann wurde dieses Geisterrad aufgestellt?", + "render": "Aufgestellt am {start_date}" } }, "title": { @@ -1901,12 +2132,18 @@ }, "phone": { "render": "{phone}" + }, + "Curator": { + "question": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist" + }, + "Surface area": { + "render": "Grundfläche: {_surface:ha}ha" } } }, "observation_tower": { - "description": "Türme mit Panoramablick", - "name": "Beobachtungstürme", + "description": "Türme zur Aussicht auf die umgebende Landschaft", + "name": "Aussichtstürme", "presets": { "0": { "title": "Beobachtungsturm" @@ -1919,7 +2156,8 @@ "then": "Eintritt kostenlos" } }, - "render": "Der Besuch des Turms kostet {charge}" + "render": "Der Besuch des Turms kostet {charge}", + "question": "Was kostet der Zugang zu diesem Turm?" }, "Height": { "question": "Wie hoch ist dieser Turm?", @@ -2042,10 +2280,12 @@ "question": "Ist dieser Spielplatz nachts beleuchtet?" }, "playground-max_age": { - "render": "Zugang nur für Kinder bis maximal {max_age}" + "render": "Zugang nur für Kinder bis maximal {max_age}", + "question": "Bis zu welchem Alter dürfen Kinder auf diesem Spielplatz spielen?" }, "playground-min_age": { - "render": "Zugang nur für Kinder ab {min_age} Jahren" + "render": "Zugang nur für Kinder ab {min_age} Jahren", + "question": "Ab welchem Alter dürfen Kinder auf diesem Spielplatz spielen?" }, "playground-opening_hours": { "mappings": { @@ -2066,7 +2306,8 @@ "render": "Betrieben von {operator}" }, "playground-phone": { - "render": "{phone}" + "render": "{phone}", + "question": "Wie lautet die Telefonnummer vom Betreiber des Spielplatzes?" }, "playground-surface": { "mappings": { @@ -2224,12 +2465,14 @@ "shops": { "presets": { "0": { - "description": "Ein neues Geschäft hinzufügen" + "description": "Ein neues Geschäft hinzufügen", + "title": "Geschäft" } }, "tagRenderings": { "shops-phone": { - "render": "{phone}" + "render": "{phone}", + "question": "Wie ist die Telefonnummer?" }, "shops-shop": { "mappings": { @@ -2261,6 +2504,15 @@ "shops-website": { "question": "Wie lautet die Webseite dieses Geschäfts?", "render": "{website}" + }, + "shops-opening_hours": { + "question": "Wie sind die Öffnungszeiten dieses Geschäfts?" + }, + "shops-email": { + "question": "Wie ist die Email-Adresse dieses Geschäfts?" + }, + "shops-name": { + "question": "Wie ist der Name dieses Geschäfts?" } }, "title": { @@ -2273,7 +2525,9 @@ } }, "render": "Geschäft" - } + }, + "name": "Geschäft", + "description": "Ein Geschäft" }, "slow_roads": { "tagRenderings": { @@ -2330,6 +2584,9 @@ }, "3": { "then": "Privat - kein öffentlicher Zugang" + }, + "1": { + "then": "Eingeschränkter Zugang (z. B. nur mit Termin, zu bestimmten Zeiten, ...)" } }, "question": "Ist dieser Sportplatz öffentlich zugänglich?" @@ -2338,8 +2595,18 @@ "mappings": { "3": { "then": "Termine nach Vereinbarung nicht möglich" + }, + "0": { + "then": "Für die Nutzung des Sportplatzes ist eine Voranmeldung erforderlich" + }, + "1": { + "then": "Für die Nutzung des Sportplatzes wird eine Voranmeldung empfohlen" + }, + "2": { + "then": "Eine Voranmeldung ist möglich, aber nicht notwendig, um diesen Sportplatz zu nutzen" } - } + }, + "question": "Muss man einen Termin vereinbaren, um diesen Sportplatz zu benutzen?" }, "sport_pitch-opening_hours": { "mappings": { @@ -2391,7 +2658,14 @@ "then": "Die Oberfläche ist Beton" } }, - "render": "Die Oberfläche ist {surface}" + "render": "Die Oberfläche ist {surface}", + "question": "Was ist die Oberfläche dieses Sportplatzes?" + }, + "sport_pitch-email": { + "question": "Wie ist die Email-Adresse des Betreibers?" + }, + "sport_pitch-phone": { + "question": "Wie ist die Telefonnummer des Betreibers?" } }, "title": { @@ -2426,7 +2700,8 @@ "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?" }, "Level": { "question": "Auf welcher Ebene befindet sich diese Kamera?", @@ -2462,7 +2737,32 @@ }, "camera:mount": { "question": "Wie ist diese Kamera montiert?", - "render": "Montageart: {mount}" + "render": "Montageart: {mount}", + "mappings": { + "0": { + "then": "Diese Kamera ist an einer Wand montiert" + }, + "1": { + "then": "Diese Kamera ist an einer Stange montiert" + }, + "2": { + "then": "Diese Kamera ist an der Decke montiert" + } + } + }, + "Surveillance type: public, outdoor, indoor": { + "question": "Um was für eine Überwachungskamera handelt es sich", + "mappings": { + "2": { + "then": "Ein privater Innenbereich wird überwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." + }, + "1": { + "then": "Ein privater Außenbereich wird überwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" + } + } + }, + "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { + "question": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?" } }, "title": { @@ -2597,6 +2897,25 @@ } }, "question": "Gibt es eine Toilette für Rollstuhlfahrer?" + }, + "toilet-has-paper": { + "question": "Muss man für diese Toilette sein eigenes Toilettenpapier mitbringen?", + "mappings": { + "1": { + "then": "Für diese Toilette müssen Sie Ihr eigenes Toilettenpapier mitbringen" + } + } + }, + "toilet-handwashing": { + "question": "Verfügt diese Toilette über ein Waschbecken?", + "mappings": { + "0": { + "then": "Diese Toilette verfügt über ein Waschbecken" + }, + "1": { + "then": "Diese Toilette verfügt über kein Waschbecken" + } + } } }, "title": { @@ -2651,6 +2970,9 @@ "mappings": { "1": { "then": "immergrüner Baum." + }, + "0": { + "then": "Laubabwerfend: Der Baum verliert für eine gewisse Zeit des Jahres seine Blätter." } }, "question": "Ist dies ein Nadelbaum oder ein Laubbaum?" @@ -2667,6 +2989,12 @@ "mappings": { "3": { "then": "Nicht als Denkmal registriert" + }, + "0": { + "then": "\"\"/ Als Denkmal registriert von der Onroerend Erfgoed Flandern" + }, + "1": { + "then": "Als Denkmal registriert von der Direction du Patrimoine culturel Brüssel" } }, "question": "Ist dieser Baum ein Naturdenkmal?" @@ -2682,7 +3010,8 @@ "2": { "then": "\"\"/ Dauerhaft blattlos" } - } + }, + "question": "Ist dies ein Laub- oder Nadelbaum?" }, "tree_node-name": { "mappings": { @@ -2692,6 +3021,35 @@ }, "question": "Hat der Baum einen Namen?", "render": "Name: {name}" + }, + "tree_node-ref:OnroerendErfgoed": { + "question": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?" + }, + "tree_node-wikidata": { + "question": "Was ist das passende Wikidata Element zu diesem Baum?" + }, + "tree-denotation": { + "mappings": { + "5": { + "then": "Dieser Baum steht entlang einer Straße." + }, + "7": { + "then": "Dieser Baum steht außerhalb eines städtischen Gebiets." + }, + "2": { + "then": "Der Baum wird für landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." + }, + "3": { + "then": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." + }, + "0": { + "then": "Der Baum ist aufgrund seiner Größe oder seiner markanten Lage bedeutsam. Er ist nützlich zur Orientierung." + }, + "1": { + "then": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehört." + } + }, + "question": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." } }, "title": { @@ -2729,7 +3087,8 @@ } }, "render": "{name}" - } + }, + "description": "Ein Besucherzentrum bietet Informationen über eine bestimmte Attraktion oder Sehenswürdigkeit, an der es sich befindet." }, "waste_basket": { "description": "Dies ist ein öffentlicher Abfalleimer, in den Sie Ihren Müll entsorgen können.", @@ -2764,6 +3123,21 @@ "4": { "then": "Mülleimer für Drogen" } + }, + "question": "Um was für einen Abfalleimer handelt es sich?" + }, + "dispensing_dog_bags": { + "question": "Verfügt dieser Abfalleimer über einen Spender für (Hunde-)Kotbeutel?", + "mappings": { + "1": { + "then": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" + }, + "2": { + "then": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" + }, + "0": { + "then": "Dieser Abfalleimer verfügt über einen Spender für (Hunde-)Kotbeutel" + } } } }, From c99e15eed975a523eec46af1bf4cd0096f86b9a8 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 20:38:57 +0200 Subject: [PATCH 15/30] Add cache timeout option on layerSource --- Logic/FeatureSource/FeaturePipeline.ts | 23 +++++---- .../TiledFromLocalStorageSource.ts | 50 ++++++++++++++----- Models/ThemeConfig/Json/LayerConfigJson.ts | 9 +++- Models/ThemeConfig/Json/LayoutConfigJson.ts | 20 -------- Models/ThemeConfig/LayerConfig.ts | 8 ++- Models/ThemeConfig/LayoutConfig.ts | 6 +-- assets/themes/grb.json | 2 +- 7 files changed, 67 insertions(+), 51 deletions(-) diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts index e8b77bb77..a96f1e278 100644 --- a/Logic/FeatureSource/FeaturePipeline.ts +++ b/Logic/FeatureSource/FeaturePipeline.ts @@ -30,14 +30,14 @@ import TileFreshnessCalculator from "./TileFreshnessCalculator"; /** * The features pipeline ties together a myriad of various datasources: - * + * * - The Overpass-API * - The OSM-API * - Third-party geojson files, either sliced or directly. - * + * * In order to truly understand this class, please have a look at the following diagram: https://cdn-images-1.medium.com/fit/c/800/618/1*qTK1iCtyJUr4zOyw4IFD7A.jpeg - * - * + * + * */ export default class FeaturePipeline { @@ -68,7 +68,7 @@ export default class FeaturePipeline { private readonly freshnesses = new Map(); - private readonly oldestAllowedDate: Date = new Date(new Date().getTime() - 60 * 60 * 24 * 30 * 1000); + private readonly oldestAllowedDate: Date; private readonly osmSourceZoomLevel constructor( @@ -90,6 +90,11 @@ export default class FeaturePipeline { this.state = state; const self = this + const expiryInSeconds = Math.min(...state.layoutToUse.layers.map(l => l.maxAgeOfCache)) + this.oldestAllowedDate = new Date(new Date().getTime() - expiryInSeconds); + for (const layer of state.layoutToUse.layers) { + TiledFromLocalStorageSource.cleanCacheForLayer(layer) + } this.osmSourceZoomLevel = state.osmApiTileSize.data; // milliseconds const useOsmApi = state.locationControl.map(l => l.zoom > (state.overpassMaxZoom.data ?? 12)) @@ -220,7 +225,7 @@ export default class FeaturePipeline { maxZoomLevel: state.layoutToUse.clustering.maxZoom, registerTile: (tile) => { // We save the tile data for the given layer to local storage - if(source.layer.layerDef.source.geojsonSource === undefined || source.layer.layerDef.source.isOsmCacheLayer == true){ + if (source.layer.layerDef.source.geojsonSource === undefined || source.layer.layerDef.source.isOsmCacheLayer == true) { new SaveTileToLocalStorageActor(tile, tile.tileIndex) } perLayerHierarchy.get(source.layer.layerDef.id).registerTile(new RememberingSource(tile)) @@ -257,7 +262,7 @@ export default class FeaturePipeline { this.runningQuery = updater.runningQuery.map( overpass => { console.log("FeaturePipeline: runningQuery state changed. Overpass", overpass ? "is querying," : "is idle,", - "osmFeatureSource is", osmFeatureSource.isRunning ? "is running and needs "+neededTilesFromOsm.data?.length+" tiles (already got "+ osmFeatureSource.downloadedTiles.size +" tiles )" : "is idle") + "osmFeatureSource is", osmFeatureSource.isRunning ? "is running and needs " + neededTilesFromOsm.data?.length + " tiles (already got " + osmFeatureSource.downloadedTiles.size + " tiles )" : "is idle") return overpass || osmFeatureSource.isRunning.data; }, [osmFeatureSource.isRunning] ) @@ -353,7 +358,7 @@ export default class FeaturePipeline { isActive: useOsmApi.map(b => !b && overpassIsActive.data, [overpassIsActive]), onBboxLoaded: (bbox, date, downloadedLayers, paddedToZoomLevel) => { Tiles.MapRange(bbox.containingTileRange(paddedToZoomLevel), (x, y) => { - const tileIndex = Tiles.tile_index(paddedToZoomLevel, x, y) + const tileIndex = Tiles.tile_index(paddedToZoomLevel, x, y) downloadedLayers.forEach(layer => { self.freshnesses.get(layer.id).addTileLoad(tileIndex, date) SaveTileToLocalStorageActor.MarkVisited(layer.id, tileIndex, date) @@ -412,7 +417,7 @@ export default class FeaturePipeline { } public GetFeaturesWithin(layerId: string, bbox: BBox): any[][] { - if(layerId === "*"){ + if (layerId === "*") { return this.GetAllFeaturesWithin(bbox) } const requestedHierarchy = this.perLayerHierarchy.get(layerId) diff --git a/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts b/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts index a2cd50be0..7f69fedc4 100644 --- a/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts +++ b/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts @@ -5,6 +5,7 @@ import TileHierarchy from "./TileHierarchy"; import SaveTileToLocalStorageActor from "../Actors/SaveTileToLocalStorageActor"; import {Tiles} from "../../../Models/TileRange"; import {BBox} from "../../BBox"; +import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"; export default class TiledFromLocalStorageSource implements TileHierarchy { public readonly loadedTiles: Map = new Map(); @@ -16,7 +17,7 @@ export default class TiledFromLocalStorageSource implements TileHierarchy() for (const key of Object.keys(localStorage)) { - if(!(key.startsWith(prefix) && key.endsWith("-time"))){ + if (!(key.startsWith(prefix) && key.endsWith("-time"))) { continue } const index = Number(key.substring(prefix.length, key.length - "-time".length)) @@ -28,6 +29,29 @@ export default class TiledFromLocalStorageSource implements TileHierarchy= layer.maxAgeOfCache){ + const k = prefix+index; + localStorage.removeItem(k) + localStorage.removeItem(k+"-format") + localStorage.removeItem(k+"-time") + console.debug("Removed "+k+" from local storage: too old") + } + } + } + constructor(layer: FilteredLayer, handleFeatureSource: (src: FeatureSourceForLayer & Tiled, index: number) => void, state: { @@ -36,7 +60,7 @@ export default class TiledFromLocalStorageSource implements TileHierarchy() const prefix = SaveTileToLocalStorageActor.storageKey + "-" + layer.layerDef.id + "-" const knownTiles: number[] = Object.keys(localStorage) @@ -56,9 +80,9 @@ export default class TiledFromLocalStorageSource implements TileHierarchy { - if(bounds === undefined){ + if (bounds === undefined) { return; } for (const knownTile of knownTiles) { - - if(this.loadedTiles.has(knownTile)){ + + if (this.loadedTiles.has(knownTile)) { continue; } - if(this.undefinedTiles.has(knownTile)){ + if (this.undefinedTiles.has(knownTile)) { continue; } - - if(!bounds.overlapsWith(BBox.fromTileIndex(knownTile))){ + + if (!bounds.overlapsWith(BBox.fromTileIndex(knownTile))) { continue; } self.loadTile(knownTile) @@ -86,8 +110,8 @@ export default class TiledFromLocalStorageSource implements TileHierarchy Date: Mon, 25 Oct 2021 20:48:06 +0200 Subject: [PATCH 16/30] Fix changeset comment for move reason --- UI/Popup/MoveWizard.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/UI/Popup/MoveWizard.ts b/UI/Popup/MoveWizard.ts index 3606581e2..152dfcaba 100644 --- a/UI/Popup/MoveWizard.ts +++ b/UI/Popup/MoveWizard.ts @@ -17,7 +17,6 @@ import ChangeLocationAction from "../../Logic/Osm/Actions/ChangeLocationAction"; import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; import MoveConfig from "../../Models/ThemeConfig/MoveConfig"; import {ElementStorage} from "../../Logic/ElementStorage"; -import ValidatedTextField from "../Input/ValidatedTextField"; import AvailableBaseLayers from "../../Logic/Actors/AvailableBaseLayers"; interface MoveReason { @@ -152,7 +151,7 @@ export default class MoveWizard extends Toggle { confirmMove.onClick(() => { const loc = locationInput.GetValue().data state.changes.applyAction(new ChangeLocationAction(featureToMove.properties.id, [loc.lon, loc.lat], { - reason: Translations.WT(reason.text).textFor("en"), + reason: reason.changesetCommentValue, theme: state.layoutToUse.id })) featureToMove.properties._lat = loc.lat From 936cf1bf9fb60a3f7ce78ab56f09387dabb373c7 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 20:50:59 +0200 Subject: [PATCH 17/30] Fix back button behaviour, fix #523 --- UI/Base/ScrollableFullScreen.ts | 19 ++++++++++++++++--- UI/BigComponents/AllDownloads.ts | 2 +- UI/BigComponents/FullWelcomePaneWithTabs.ts | 1 + UI/BigComponents/LeftControls.ts | 2 ++ UI/DefaultGUI.ts | 1 + UI/Popup/FeatureInfoBox.ts | 3 ++- 6 files changed, 23 insertions(+), 5 deletions(-) diff --git a/UI/Base/ScrollableFullScreen.ts b/UI/Base/ScrollableFullScreen.ts index 07124f997..b9f134565 100644 --- a/UI/Base/ScrollableFullScreen.ts +++ b/UI/Base/ScrollableFullScreen.ts @@ -24,11 +24,16 @@ export default class ScrollableFullScreen extends UIElement { private _fullscreencomponent: BaseUIElement; constructor(title: ((mode: string) => BaseUIElement), content: ((mode: string) => BaseUIElement), + hashToShow: string, isShown: UIEventSource = new UIEventSource(false) ) { super(); this.isShown = isShown; + if (hashToShow === undefined) { + throw "HashToShow should be defined as it is vital for the 'back' key functionality" + } + this._component = this.BuildComponent(title("desktop"), content("desktop"), isShown) .SetClass("hidden md:block"); this._fullscreencomponent = this.BuildComponent(title("mobile"), content("mobile").SetClass("pb-20"), isShown); @@ -38,10 +43,18 @@ export default class ScrollableFullScreen extends UIElement { isShown.addCallback(isShown => { if (isShown) { self.Activate(); + Hash.hash.setData(hashToShow) } else { ScrollableFullScreen.clear(); } }) + + Hash.hash.addCallback(hash => { + if (hash === hashToShow) { + return + } + isShown.setData(false) + }) } private static clear() { @@ -67,10 +80,10 @@ export default class ScrollableFullScreen extends UIElement { private BuildComponent(title: BaseUIElement, content: BaseUIElement, isShown: UIEventSource) { const returnToTheMap = new Combine([ - new Img(Svg.back.replace(/#000000/g,"#cccccc"),true) + new Img(Svg.back.replace(/#000000/g, "#cccccc"), true) .SetClass("block md:hidden w-12 h-12 p-2"), - new Img(Svg.close.replace(/#000000/g,"#cccccc"),true) - .SetClass("hidden md:block w-12 h-12 p-3") + new Img(Svg.close.replace(/#000000/g, "#cccccc"), true) + .SetClass("hidden md:block w-12 h-12 p-3") ]).SetClass("rounded-full p-0 flex-shrink-0 self-center") returnToTheMap.onClick(() => { diff --git a/UI/BigComponents/AllDownloads.ts b/UI/BigComponents/AllDownloads.ts index b49e77bcb..2586fef3f 100644 --- a/UI/BigComponents/AllDownloads.ts +++ b/UI/BigComponents/AllDownloads.ts @@ -13,7 +13,7 @@ import ExportPDF from "../ExportPDF"; export default class AllDownloads extends ScrollableFullScreen { constructor(isShown: UIEventSource) { - super(AllDownloads.GenTitle, AllDownloads.GeneratePanel, isShown); + super(AllDownloads.GenTitle, AllDownloads.GeneratePanel, "downloads", isShown); } private static GenTitle(): BaseUIElement { diff --git a/UI/BigComponents/FullWelcomePaneWithTabs.ts b/UI/BigComponents/FullWelcomePaneWithTabs.ts index 1862110ce..10ab25de5 100644 --- a/UI/BigComponents/FullWelcomePaneWithTabs.ts +++ b/UI/BigComponents/FullWelcomePaneWithTabs.ts @@ -30,6 +30,7 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { super( () => layoutToUse.title.Clone(), () => FullWelcomePaneWithTabs.GenerateContents(state, currentTab, isShown), + "welcome", isShown ) } diff --git a/UI/BigComponents/LeftControls.ts b/UI/BigComponents/LeftControls.ts index 4b2328533..cc8b9e4c0 100644 --- a/UI/BigComponents/LeftControls.ts +++ b/UI/BigComponents/LeftControls.ts @@ -41,6 +41,7 @@ export default class LeftControls extends Combine { state.layoutToUse, new ContributorCount(state).Contributors ), + "copyright", guiState.copyrightViewIsOpened ); @@ -74,6 +75,7 @@ export default class LeftControls extends Combine { new FilterView(state.filteredLayers, state.overlayToggles).SetClass( "block p-1" ), + "filters", guiState.filterViewIsOpened ).SetClass("rounded-lg"), new MapControlButton(Svg.filter_svg()) diff --git a/UI/DefaultGUI.ts b/UI/DefaultGUI.ts index 9af616233..e259b4f2e 100644 --- a/UI/DefaultGUI.ts +++ b/UI/DefaultGUI.ts @@ -254,6 +254,7 @@ export default class DefaultGUI { const addNewPoint = new ScrollableFullScreen( () => Translations.t.general.add.title.Clone(), () => new SimpleAddUI(newPointDialogIsShown, filterViewIsOpened, state), + "new", newPointDialogIsShown ); addNewPoint.isShown.addCallback((isShown) => { diff --git a/UI/Popup/FeatureInfoBox.ts b/UI/Popup/FeatureInfoBox.ts index 86f3aa68f..d1ba0db37 100644 --- a/UI/Popup/FeatureInfoBox.ts +++ b/UI/Popup/FeatureInfoBox.ts @@ -26,7 +26,8 @@ export default class FeatureInfoBox extends ScrollableFullScreen { layerConfig: LayerConfig, ) { super(() => FeatureInfoBox.GenerateTitleBar(tags, layerConfig), - () => FeatureInfoBox.GenerateContent(tags, layerConfig)); + () => FeatureInfoBox.GenerateContent(tags, layerConfig), + tags.data.id); if (layerConfig === undefined) { throw "Undefined layerconfig"; From d1ecaf75277be7bfdaa7e14f70539acb9e3367a6 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 21:08:44 +0200 Subject: [PATCH 18/30] Force cache clearing when a new point is added, fix #522 --- .../Actors/SaveTileToLocalStorageActor.ts | 26 ++++++++++++++++--- Logic/FeatureSource/FeaturePipeline.ts | 12 +++++++-- .../TiledFromLocalStorageSource.ts | 1 - 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts b/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts index 092c1a402..83a269b89 100644 --- a/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts +++ b/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts @@ -4,13 +4,14 @@ * Technically, more an Actor then a featuresource, but it fits more neatly this ay */ import {FeatureSourceForLayer} from "../FeatureSource"; +import {Tiles} from "../../../Models/TileRange"; export default class SaveTileToLocalStorageActor { public static readonly storageKey: string = "cached-features"; public static readonly formatVersion: string = "2" constructor(source: FeatureSourceForLayer, tileIndex: number) { - + source.features.addCallbackAndRunD(features => { const key = `${SaveTileToLocalStorageActor.storageKey}-${source.layer.layerDef.id}-${tileIndex}` const now = new Date() @@ -28,13 +29,30 @@ export default class SaveTileToLocalStorageActor { } - public static MarkVisited(layerId: string, tileId: number, freshness: Date){ + public static MarkVisited(layerId: string, tileId: number, freshness: Date) { const key = `${SaveTileToLocalStorageActor.storageKey}-${layerId}-${tileId}` - try{ + try { localStorage.setItem(key + "-time", JSON.stringify(freshness.getTime())) localStorage.setItem(key + "-format", SaveTileToLocalStorageActor.formatVersion) - }catch(e){ + } catch (e) { console.error("Could not mark tile ", key, "as visited") } } + + public static poison(layers: string[], lon: number, lat: number) { + for (let z = 0; z < 25; z++) { + + const {x, y} = Tiles.embedded_tile(lat, lon, z) + const tileId = Tiles.tile_index(z, x, y) + + for (const layerId of layers) { + + const key = `${SaveTileToLocalStorageActor.storageKey}-${layerId}-${tileId}` + localStorage.removeItem(key + "-time"); + localStorage.removeItem(key + "-format") + localStorage.removeItem(key) + } + } + + } } \ No newline at end of file diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts index a96f1e278..bcda3f688 100644 --- a/Logic/FeatureSource/FeaturePipeline.ts +++ b/Logic/FeatureSource/FeaturePipeline.ts @@ -91,14 +91,22 @@ export default class FeaturePipeline { const self = this const expiryInSeconds = Math.min(...state.layoutToUse.layers.map(l => l.maxAgeOfCache)) - this.oldestAllowedDate = new Date(new Date().getTime() - expiryInSeconds); for (const layer of state.layoutToUse.layers) { TiledFromLocalStorageSource.cleanCacheForLayer(layer) } + this.oldestAllowedDate = new Date(new Date().getTime() - expiryInSeconds); this.osmSourceZoomLevel = state.osmApiTileSize.data; - // milliseconds const useOsmApi = state.locationControl.map(l => l.zoom > (state.overpassMaxZoom.data ?? 12)) this.relationTracker = new RelationsTracker() + + state.changes.allChanges.addCallbackAndRun(allChanges => { + allChanges.filter(ch => ch.id < 0) + .map(ch => ch.changes) + .filter(coor => coor["lat"] !== undefined && coor["lon"] !== undefined) + .forEach(coor => { + SaveTileToLocalStorageActor.poison(state.layoutToUse.layers.map(l => l.id), coor["lon"], coor["lat"]) + }) + }) this.sufficientlyZoomed = state.locationControl.map(location => { diff --git a/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts b/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts index 7f69fedc4..900393c1e 100644 --- a/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts +++ b/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts @@ -47,7 +47,6 @@ export default class TiledFromLocalStorageSource implements TileHierarchy Date: Mon, 25 Oct 2021 21:48:45 +0200 Subject: [PATCH 19/30] Regenerate translations --- .../charging_station/charging_station.json | 41 ++++--- .../charging_station.protojson | 12 +- assets/layers/crossings/crossings.json | 39 ++++-- .../cycleways_and_roads.json | 114 ++++++++++++------ .../layers/defibrillator/defibrillator.json | 3 +- .../layers/drinking_water/drinking_water.json | 11 +- assets/layers/etymology/etymology.json | 12 +- assets/layers/food/food.json | 30 +++-- assets/layers/ghost_bike/ghost_bike.json | 7 +- .../layers/nature_reserve/nature_reserve.json | 6 +- .../observation_tower/observation_tower.json | 7 +- assets/layers/playground/playground.json | 9 +- assets/layers/shops/shops.json | 21 ++-- assets/layers/sport_pitch/sport_pitch.json | 24 ++-- .../surveillance_camera.json | 24 ++-- assets/layers/toilet/toilet.json | 15 ++- assets/layers/tree_node/tree_node.json | 39 ++++-- .../visitor_information_centre.json | 3 +- assets/layers/waste_basket/waste_basket.json | 15 ++- assets/themes/climbing/climbing.json | 12 +- assets/themes/cyclofix/cyclofix.json | 4 +- .../themes/drinking_water/drinking_water.json | 4 +- assets/themes/etymology.json | 8 +- assets/themes/ghostbikes/ghostbikes.json | 4 +- assets/themes/hailhydrant/hailhydrant.json | 3 +- assets/themes/maps/maps.json | 6 +- assets/themes/natuurpunt/natuurpunt.json | 9 +- .../observation_towers.json | 12 +- .../openwindpowermap/openwindpowermap.json | 27 +++-- assets/themes/parkings/parkings.json | 12 +- assets/themes/playgrounds/playgrounds.json | 9 +- assets/themes/postboxes/postboxes.json | 30 +++-- assets/themes/toilets/toilets.json | 4 +- assets/themes/uk_addresses/uk_addresses.json | 3 +- 34 files changed, 383 insertions(+), 196 deletions(-) diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index 52d4e30c3..efd8c1a24 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -2902,7 +2902,7 @@ "ifnot": "authentication:none=no", "then": { "en": "Charging here is (also) possible without authentication", - "de": "Keine Authentifizierung erforderlich" + "de": "Das Aufladen ist hier (auch) ohne Authentifizierung möglich" } } ] @@ -2982,7 +2982,8 @@ "id": "fee/charge", "question": { "en": "How much does one have to pay to use this charging station?", - "nl": "Hoeveel kost het gebruik van dit oplaadpunt?" + "nl": "Hoeveel kost het gebruik van dit oplaadpunt?", + "de": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?" }, "freeform": { "key": "charge", @@ -3027,7 +3028,8 @@ "ifnot": "payment:app=no", "then": { "en": "Payment is done using a dedicated app", - "nl": "Betalen via een app van het netwerk" + "nl": "Betalen via een app van het netwerk", + "de": "Bezahlung mit einer speziellen App" } }, { @@ -3035,7 +3037,8 @@ "ifnot": "payment:membership_card=no", "then": { "en": "Payment is done using a membership card", - "nl": "Betalen via een lidkaart van het netwerk" + "nl": "Betalen via een lidkaart van het netwerk", + "de": "Bezahlung mit einer Mitgliedskarte" } } ] @@ -3045,7 +3048,8 @@ "id": "maxstay", "question": { "en": "What is the maximum amount of time one is allowed to stay here?", - "nl": "Hoelang mag een voertuig hier blijven staan?" + "nl": "Hoelang mag een voertuig hier blijven staan?", + "de": "Was ist die Höchstdauer des Aufenthalts hier?" }, "freeform": { "key": "maxstay" @@ -3060,7 +3064,8 @@ "if": "maxstay=unlimited", "then": { "en": "No timelimit on leaving your vehicle here", - "nl": "Geen maximum parkeertijd" + "nl": "Geen maximum parkeertijd", + "de": "Keine Höchstparkdauer" } } ] @@ -3142,10 +3147,12 @@ { "id": "phone", "question": { - "en": "What number can one call if there is a problem with this charging station?" + "en": "What number can one call if there is a problem with this charging station?", + "de": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?" }, "render": { - "en": "In case of problems, call {phone}" + "en": "In case of problems, call {phone}", + "de": "Bei Problemen, anrufen unter {phone}" }, "freeform": { "key": "phone", @@ -3155,10 +3162,12 @@ { "id": "email", "question": { - "en": "What is the email address of the operator?" + "en": "What is the email address of the operator?", + "de": "Wie ist die Email-Adresse des Betreibers?" }, "render": { - "en": "In case of problems, send an email to {email}" + "en": "In case of problems, send an email to {email}", + "de": "Bei Problemen senden Sie eine E-Mail an {email}" }, "freeform": { "key": "email", @@ -3168,7 +3177,8 @@ { "id": "website", "question": { - "en": "What is the website of the operator?" + "en": "What is the website of the operator?", + "de": "Wie ist die Webseite des Betreibers?" }, "render": { "en": "More info on {website}", @@ -3183,7 +3193,8 @@ { "id": "ref", "question": { - "en": "What is the reference number of this charging station?" + "en": "What is the reference number of this charging station?", + "de": "Wie lautet die Kennung dieser Ladestation?" }, "render": { "en": "Reference number is {ref}", @@ -3444,7 +3455,8 @@ { "question": { "en": "Has a
Chademo
connector", - "nl": "Heeft een
Chademo
" + "nl": "Heeft een
Chademo
", + "de": "Hat einen
Chademo
Stecker" }, "osmTags": "socket:chademo~*" }, @@ -3472,7 +3484,8 @@ { "question": { "en": "Has a
Tesla Supercharger
connector", - "nl": "Heeft een
Tesla Supercharger
" + "nl": "Heeft een
Tesla Supercharger
", + "de": "Hat einen
Tesla Supercharger
Stecker" }, "osmTags": "socket:tesla_supercharger~*" }, diff --git a/assets/layers/charging_station/charging_station.protojson b/assets/layers/charging_station/charging_station.protojson index 410404d4e..955245640 100644 --- a/assets/layers/charging_station/charging_station.protojson +++ b/assets/layers/charging_station/charging_station.protojson @@ -749,5 +749,15 @@ } ] } - ] + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuracy": true + }, + "deletion": { + "softDeletionTags": { + "and": ["amenity=","disused:amenity=charging_station"] + }, + "neededChangesets": 10 + } } diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json index 2681fd891..b257f101c 100644 --- a/assets/layers/crossings/crossings.json +++ b/assets/layers/crossings/crossings.json @@ -202,7 +202,8 @@ "id": "crossing-has-island", "question": { "en": "Does this crossing have an island in the middle?", - "nl": "Heeft deze oversteekplaats een verkeerseiland in het midden?" + "nl": "Heeft deze oversteekplaats een verkeerseiland in het midden?", + "de": "Gibt es an diesem Übergang eine Verkehrsinsel?" }, "condition": "highway=crossing", "mappings": [ @@ -210,14 +211,16 @@ "if": "crossing:island=yes", "then": { "en": "This crossing has an island in the middle", - "nl": "Deze oversteekplaats heeft een verkeerseiland in het midden" + "nl": "Deze oversteekplaats heeft een verkeerseiland in het midden", + "de": "Der Übergang hat eine Verkehrsinsel" } }, { "if": "crossing:island=no", "then": { "en": "This crossing does not have an island in the middle", - "nl": "Deze oversteekplaats heeft geen verkeerseiland in het midden" + "nl": "Deze oversteekplaats heeft geen verkeerseiland in het midden", + "de": "Diese Ampel hat eine Taste, um ein grünes Signal anzufordern" } } ] @@ -261,7 +264,8 @@ "id": "crossing-button", "question": { "en": "Does this traffic light have a button to request green light?", - "nl": "Heeft dit verkeerslicht een knop voor groen licht?" + "nl": "Heeft dit verkeerslicht een knop voor groen licht?", + "de": "Hat diese Ampel eine Taste, um ein grünes Signal anzufordern?" }, "condition": { "or": [ @@ -281,7 +285,8 @@ "if": "button_operated=no", "then": { "en": "This traffic light does not have a button to request green light", - "nl": "Dit verkeerlicht heeft geen knop voor groen licht" + "nl": "Dit verkeerlicht heeft geen knop voor groen licht", + "de": "Diese Ampel hat keine Taste, um ein grünes Signal anzufordern." } } ] @@ -290,7 +295,8 @@ "id": "crossing-right-turn-through-red", "question": { "en": "Can a cyclist turn right when the light is red?", - "nl": "Mag een fietser rechtsaf slaan als het licht rood is?" + "nl": "Mag een fietser rechtsaf slaan als het licht rood is?", + "de": "Kann ein Radfahrer bei roter Ampel rechts abbiegen?" }, "condition": "highway=traffic_signals", "mappings": [ @@ -298,7 +304,8 @@ "if": "red_turn:right:bicycle=yes", "then": { "en": "A cyclist can turn right if the light is red ", - "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is " + "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is ", + "de": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " }, "hideInAnswer": "_country!=be" }, @@ -306,7 +313,8 @@ "if": "red_turn:right:bicycle=yes", "then": { "en": "A cyclist can turn right if the light is red", - "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is" + "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel rechts abbiegen" }, "hideInAnswer": "_country=be" }, @@ -314,7 +322,8 @@ "if": "red_turn:right:bicycle=no", "then": { "en": "A cyclist can not turn right if the light is red", - "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is" + "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel nicht rechts abbiegen" } } ] @@ -323,7 +332,8 @@ "id": "crossing-continue-through-red", "question": { "en": "Can a cyclist go straight on when the light is red?", - "nl": "Mag een fietser rechtdoor gaan als het licht rood is?" + "nl": "Mag een fietser rechtdoor gaan als het licht rood is?", + "de": "Kann ein Radfahrer bei roter Ampel geradeaus fahren?" }, "condition": "highway=traffic_signals", "mappings": [ @@ -331,7 +341,8 @@ "if": "red_turn:straight:bicycle=yes", "then": { "en": "A cyclist can go straight on if the light is red ", - "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is " + "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is ", + "de": "Ein Radfahrer kann bei roter Ampel geradeaus fahren " }, "hideInAnswer": "_country!=be" }, @@ -339,7 +350,8 @@ "if": "red_turn:straight:bicycle=yes", "then": { "en": "A cyclist can go straight on if the light is red", - "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is" + "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel geradeaus fahren" }, "hideInAnswer": "_country=be" }, @@ -347,7 +359,8 @@ "if": "red_turn:straight:bicycle=no", "then": { "en": "A cyclist can not go straight on if the light is red", - "nl": "Een fietser mag niet rechtdoor gaan als het licht rood is" + "nl": "Een fietser mag niet rechtdoor gaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel nicht geradeaus fahren" } } ] diff --git a/assets/layers/cycleways_and_roads/cycleways_and_roads.json b/assets/layers/cycleways_and_roads/cycleways_and_roads.json index b8f476567..da3f5ba20 100644 --- a/assets/layers/cycleways_and_roads/cycleways_and_roads.json +++ b/assets/layers/cycleways_and_roads/cycleways_and_roads.json @@ -102,21 +102,24 @@ "if": "cycleway=shared_lane", "then": { "en": "There is a shared lane", - "nl": "Er is een fietssuggestiestrook" + "nl": "Er is een fietssuggestiestrook", + "de": "Es gibt eine geteilte Fahrspur" } }, { "if": "cycleway=lane", "then": { "en": "There is a lane next to the road (separated with paint)", - "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)" + "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)", + "de": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" } }, { "if": "cycleway=track", "then": { "en": "There is a track, but no cycleway drawn separately from this road on the map.", - "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg." + "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg.", + "de": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." } }, { @@ -163,7 +166,8 @@ "if": "lit=yes", "then": { "en": "This street is lit", - "nl": "Deze weg is verlicht" + "nl": "Deze weg is verlicht", + "de": "Diese Straße ist beleuchtet" } }, { @@ -211,7 +215,8 @@ "if": "cyclestreet=yes", "then": { "en": "This is a cyclestreet, and a 30km/h zone.", - "nl": "Dit is een fietsstraat, en dus een 30km/h zone" + "nl": "Dit is een fietsstraat, en dus een 30km/h zone", + "de": "Dies ist eine Fahrradstraße in einer 30km/h Zone." }, "addExtraTags": [ "overtaking:motor_vehicle=no", @@ -245,7 +250,8 @@ { "render": { "en": "The maximum speed on this road is {maxspeed} km/h", - "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u" + "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u", + "de": "Die Höchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h" }, "freeform": { "key": "maxspeed", @@ -301,7 +307,8 @@ ], "question": { "en": "What is the maximum speed in this street?", - "nl": "Wat is de maximumsnelheid in deze straat?" + "nl": "Wat is de maximumsnelheid in deze straat?", + "de": "Was ist die Höchstgeschwindigkeit auf dieser Straße?" }, "id": "Maxspeed (for road)" }, @@ -352,7 +359,8 @@ "if": "cycleway:surface=paving_stones", "then": { "en": "This cycleway is made of smooth paving stones", - "nl": "Dit fietspad is gemaakt van straatstenen" + "nl": "Dit fietspad is gemaakt van straatstenen", + "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" } }, { @@ -367,7 +375,8 @@ "if": "cycleway:surface=cobblestone", "then": { "en": "This cycleway is made of cobblestone (unhewn or sett)", - "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)" + "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", + "de": "Dieser Radweg besteht aus Kopfsteinpflaster" }, "hideInAnswer": true }, @@ -375,14 +384,16 @@ "if": "cycleway:surface=unhewn_cobblestone", "then": { "en": "This cycleway is made of raw, natural cobblestone", - "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien" + "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", + "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" } }, { "if": "cycleway:surface=sett", "then": { "en": "This cycleway is made of flat, square cobblestone", - "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien" + "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", + "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" } }, { @@ -428,7 +439,8 @@ ], "question": { "en": "What is the surface of the cycleway made from?", - "nl": "Waaruit is het oppervlak van het fietspad van gemaakt?" + "nl": "Waaruit is het oppervlak van het fietspad van gemaakt?", + "de": "Was ist der Belag dieses Radwegs?" }, "id": "Cycleway:surface" }, @@ -466,28 +478,32 @@ "if": "cycleway:smoothness=intermediate", "then": { "en": "Usable for normal wheels: city bike, wheelchair, scooter", - "nl": "Geschikt voor normale wielen: stadsfiets, rolstoel, scooter" + "nl": "Geschikt voor normale wielen: stadsfiets, rolstoel, scooter", + "de": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter" } }, { "if": "cycleway:smoothness=bad", "then": { "en": "Usable for robust wheels: trekking bike, car, rickshaw", - "nl": "Geschikt voor brede wielen: trekfiets, auto, rickshaw" + "nl": "Geschikt voor brede wielen: trekfiets, auto, rickshaw", + "de": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha" } }, { "if": "cycleway:smoothness=very_bad", "then": { "en": "Usable for vehicles with high clearance: light duty off-road vehicle", - "nl": "Geschikt voor voertuigen met hoge banden: lichte terreinwagen" + "nl": "Geschikt voor voertuigen met hoge banden: lichte terreinwagen", + "de": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" } }, { "if": "cycleway:smoothness=horrible", "then": { "en": "Usable for off-road vehicles: heavy duty off-road vehicle", - "nl": "Geschikt voor terreinwagens: zware terreinwagen" + "nl": "Geschikt voor terreinwagens: zware terreinwagen", + "de": "Geeignet für Geländefahrzeuge: schwerer Geländewagen" } }, { @@ -523,7 +539,8 @@ "if": "surface=unpaved", "then": { "en": "This cycleway is unhardened", - "nl": "Dit fietspad is onverhard" + "nl": "Dit fietspad is onverhard", + "de": "Dieser Radweg ist nicht befestigt" }, "hideInAnswer": true }, @@ -548,7 +565,8 @@ "if": "surface=paving_stones", "then": { "en": "This cycleway is made of smooth paving stones", - "nl": "Dit fietspad is gemaakt van straatstenen" + "nl": "Dit fietspad is gemaakt van straatstenen", + "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" } }, { @@ -563,7 +581,8 @@ "if": "surface=cobblestone", "then": { "en": "This cycleway is made of cobblestone (unhewn or sett)", - "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)" + "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", + "de": "Dieser Radweg besteht aus Kopfsteinpflaster" }, "hideInAnswer": true }, @@ -571,14 +590,16 @@ "if": "surface=unhewn_cobblestone", "then": { "en": "This cycleway is made of raw, natural cobblestone", - "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien" + "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", + "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" } }, { "if": "surface=sett", "then": { "en": "This cycleway is made of flat, square cobblestone", - "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien" + "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", + "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" } }, { @@ -624,7 +645,8 @@ ], "question": { "en": "What is the surface of the street made from?", - "nl": "Waaruit is het oppervlak van de straat gemaakt?" + "nl": "Waaruit is het oppervlak van de straat gemaakt?", + "de": "Was ist der Belag dieser Straße?" }, "id": "Surface of the road" }, @@ -658,25 +680,29 @@ { "if": "smoothness=intermediate", "then": { - "en": "Usable for normal wheels: city bike, wheelchair, scooter" + "en": "Usable for normal wheels: city bike, wheelchair, scooter", + "de": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter" } }, { "if": "smoothness=bad", "then": { - "en": "Usable for robust wheels: trekking bike, car, rickshaw" + "en": "Usable for robust wheels: trekking bike, car, rickshaw", + "de": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha" } }, { "if": "smoothness=very_bad", "then": { - "en": "Usable for vehicles with high clearance: light duty off-road vehicle" + "en": "Usable for vehicles with high clearance: light duty off-road vehicle", + "de": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" } }, { "if": "smoothness=horrible", "then": { - "en": "Usable for off-road vehicles: heavy duty off-road vehicle" + "en": "Usable for off-road vehicles: heavy duty off-road vehicle", + "de": "Geeignet für Geländefahrzeuge: schwerer Geländewagen" } }, { @@ -748,7 +774,8 @@ "if": "cycleway:traffic_sign~BE:D7;.*", "then": { "en": "Compulsory cycleway (with supplementary sign)
", - "nl": "Verplicht fietspad (met onderbord)
" + "nl": "Verplicht fietspad (met onderbord)
", + "de": "Vorgeschriebener Radweg (mit Zusatzschild)
" }, "hideInAnswer": true }, @@ -821,7 +848,8 @@ "if": "traffic_sign~BE:D7;.*", "then": { "en": "Compulsory cycleway (with supplementary sign)
", - "nl": "Verplicht fietspad (met onderbord)
" + "nl": "Verplicht fietspad (met onderbord)
", + "de": "Vorgeschriebener Radweg (mit Zusatzschild)
" }, "hideInAnswer": true }, @@ -1055,11 +1083,13 @@ { "render": { "en": "The buffer besides this cycleway is {cycleway:buffer} m", - "nl": "De schrikafstand van dit fietspad is {cycleway:buffer} m" + "nl": "De schrikafstand van dit fietspad is {cycleway:buffer} m", + "de": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" }, "question": { "en": "How wide is the gap between the cycleway and the road?", - "nl": "Hoe breed is de ruimte tussen het fietspad en de weg?" + "nl": "Hoe breed is de ruimte tussen het fietspad en de weg?", + "de": "Wie breit ist der Abstand zwischen Radweg und Straße?" }, "condition": { "or": [ @@ -1081,7 +1111,8 @@ "id": "cyclelan-segregation", "question": { "en": "How is this cycleway separated from the road?", - "nl": "Hoe is dit fietspad gescheiden van de weg?" + "nl": "Hoe is dit fietspad gescheiden van de weg?", + "de": "Wie ist der Radweg von der Straße abgegrenzt?" }, "condition": { "or": [ @@ -1094,21 +1125,24 @@ "if": "cycleway:separation=dashed_line", "then": { "en": "This cycleway is separated by a dashed line", - "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep" + "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep", + "de": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" } }, { "if": "cycleway:separation=solid_line", "then": { "en": "This cycleway is separated by a solid line", - "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep" + "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep", + "de": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" } }, { "if": "cycleway:separation=parking_lane", "then": { "en": "This cycleway is separated by a parking lane", - "nl": "Dit fietspad is gescheiden van de weg met parkeervakken" + "nl": "Dit fietspad is gescheiden van de weg met parkeervakken", + "de": "Der Radweg ist abgegrenzt durch eine Parkspur" } }, { @@ -1125,7 +1159,8 @@ "id": "cycleway-segregation", "question": { "en": "How is this cycleway separated from the road?", - "nl": "Hoe is dit fietspad gescheiden van de weg?" + "nl": "Hoe is dit fietspad gescheiden van de weg?", + "de": "Wie ist der Radweg von der Straße abgegrenzt?" }, "condition": { "or": [ @@ -1138,21 +1173,24 @@ "if": "separation=dashed_line", "then": { "en": "This cycleway is separated by a dashed line", - "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep" + "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep", + "de": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" } }, { "if": "separation=solid_line", "then": { "en": "This cycleway is separated by a solid line", - "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep" + "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep", + "de": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" } }, { "if": "separation=parking_lane", "then": { "en": "This cycleway is separated by a parking lane", - "nl": "Dit fietspad is gescheiden van de weg met parkeervakken" + "nl": "Dit fietspad is gescheiden van de weg met parkeervakken", + "de": "Der Radweg ist abgegrenzt durch eine Parkspur" } }, { diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json index 88b63ee64..f6b335358 100644 --- a/assets/layers/defibrillator/defibrillator.json +++ b/assets/layers/defibrillator/defibrillator.json @@ -209,7 +209,8 @@ "en": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?", "nl": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?", "fr": "Est-ce un défibrillateur automatique normal ou un défibrillateur manuel à usage professionnel uniquement ?", - "it": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?" + "it": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?", + "de": "Ist dies ein normaler automatischer Defibrillator oder ein manueller Defibrillator nur für Profis?" }, "freeform": { "key": "defibrillator" diff --git a/assets/layers/drinking_water/drinking_water.json b/assets/layers/drinking_water/drinking_water.json index a8081734c..1170a823e 100644 --- a/assets/layers/drinking_water/drinking_water.json +++ b/assets/layers/drinking_water/drinking_water.json @@ -5,7 +5,7 @@ "nl": "Drinkbaar water", "fr": "Eau potable", "gl": "Auga potábel", - "de": "Trinkwasser", + "de": "Trinkwasserstelle", "it": "Acqua potabile", "ru": "Питьевая вода", "id": "Air minum" @@ -16,7 +16,7 @@ "nl": "Drinkbaar water", "fr": "Eau potable", "gl": "Auga potábel", - "de": "Trinkwasser", + "de": "Trinkwasserstelle", "it": "Acqua potabile", "ru": "Питьевая вода", "id": "Air minum" @@ -61,7 +61,7 @@ "nl": "drinkbaar water", "fr": "eau potable", "gl": "auga potábel", - "de": "trinkwasser", + "de": "Trinkwasserstelle", "it": "acqua potabile", "ru": "питьевая вода", "id": "air minum" @@ -99,7 +99,8 @@ "en": "This drinking water works", "nl": "Deze drinkwaterfontein werkt", "it": "La fontanella funziona", - "fr": "Cette fontaine fonctionne" + "fr": "Cette fontaine fonctionne", + "de": "Diese Trinkwasserstelle funktioniert" } }, { @@ -163,7 +164,7 @@ "en": "There is another drinking water fountain at {_closest_other_drinking_water_distance} meter", "nl": "Er bevindt zich een ander drinkwaterpunt op {_closest_other_drinking_water_distance} meter", "it": "C’è un’altra fontanella a {_closest_other_drinking_water_distance} metri", - "de": "Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter", + "de": "Eine weitere Trinkwasserstelle liegt {_closest_other_drinking_water_distance} Meter entfernt", "fr": "Une autre source d’eau potable est à {_closest_other_drinking_water_distance} mètres a>" }, "condition": "_closest_other_drinking_water_id~*" diff --git a/assets/layers/etymology/etymology.json b/assets/layers/etymology/etymology.json index 690612341..eaefef94b 100644 --- a/assets/layers/etymology/etymology.json +++ b/assets/layers/etymology/etymology.json @@ -38,7 +38,8 @@ "id": "wikipedia-etymology", "question": { "en": "What is the Wikidata-item that this object is named after?", - "nl": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?" + "nl": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?", + "de": "Was ist das Wikidata-Element, nach dem dieses Objekt benannt ist?" }, "freeform": { "key": "name:etymology:wikidata", @@ -71,7 +72,8 @@ }, "render": { "en": "

Wikipedia article of the name giver

{wikipedia(name:etymology:wikidata):max-height:20rem}", - "nl": "

Wikipedia artikel van de naamgever

{wikipedia(name:etymology:wikidata):max-height:20rem}" + "nl": "

Wikipedia artikel van de naamgever

{wikipedia(name:etymology:wikidata):max-height:20rem}", + "de": "

Wikipedia Artikel zur Namensherkunft

{wikipedia(name:etymology:wikidata):max-height:20rem}" }, "condition": "name:etymology!=unknown" }, @@ -87,7 +89,8 @@ "id": "simple etymology", "question": { "en": "What is this object named after?
This might be written on the street name sign", - "nl": "Naar wat is dit object vernoemd?
Dit staat mogelijks vermeld op het straatnaambordje" + "nl": "Naar wat is dit object vernoemd?
Dit staat mogelijks vermeld op het straatnaambordje", + "de": "Wonach ist dieses Objekt benannt?
Das könnte auf einem Straßenschild stehen" }, "render": { "en": "Named after {name:etymology}", @@ -102,7 +105,8 @@ "if": "name:etymology=unknown", "then": { "en": "The origin of this name is unknown in all literature", - "nl": "De oorsprong van deze naam is onbekend in de literatuur" + "nl": "De oorsprong van deze naam is onbekend in de literatuur", + "de": "Der Ursprung dieses Namens ist in der gesamten Literatur unbekannt" } } ], diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index 41e205c92..44ce21fb1 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -2,7 +2,8 @@ "id": "food", "name": { "nl": "Eetgelegenheden", - "en": "Restaurants and fast food" + "en": "Restaurants and fast food", + "de": "Restaurants und Fast Food" }, "source": { "osmTags": { @@ -72,7 +73,8 @@ ], "description": { "nl": "Een eetgegelegenheid waar je aan tafel wordt bediend", - "en": "A formal eating place with sit-down facilities selling full meals served by waiters" + "en": "A formal eating place with sit-down facilities selling full meals served by waiters", + "de": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden" }, "preciseInput": { "preferredBackground": "map" @@ -215,14 +217,16 @@ "if": "cuisine=pizza", "then": { "en": "This is a pizzeria", - "nl": "Dit is een pizzeria" + "nl": "Dit is een pizzeria", + "de": "Dies ist eine Pizzeria" } }, { "if": "cuisine=friture", "then": { "en": "This is a friture", - "nl": "Dit is een frituur" + "nl": "Dit is een frituur", + "de": "Dies ist eine Pommesbude" } }, { @@ -345,7 +349,8 @@ { "question": { "nl": "Heeft deze eetgelegenheid een vegetarische optie?", - "en": "Does this restaurant have a vegetarian option?" + "en": "Does this restaurant have a vegetarian option?", + "de": "Gibt es im das Restaurant vegetarische Speisen?" }, "mappings": [ { @@ -412,7 +417,8 @@ { "question": { "en": "Does this restaurant offer a halal menu?", - "nl": "Heeft dit restaurant halal opties?" + "nl": "Heeft dit restaurant halal opties?", + "de": "Gibt es im das Restaurant halal Speisen?" }, "mappings": [ { @@ -543,7 +549,8 @@ "nl": "Als je je eigen container (bv. kookpot of kleine potjes voor saus) meeneemt, gebruikt de frituur deze dan om je bestelling in te doen?", "fr": "Est-il proposé d’utiliser ses propres contenants pour sa commande ?
", "en": "If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
", - "ja": "お客様が持参容器(調理用の鍋や小さな鍋など)をもってきた場合は、注文の梱包に使用されますか?
" + "ja": "お客様が持参容器(調理用の鍋や小さな鍋など)をもってきた場合は、注文の梱包に使用されますか?
", + "de": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine Töpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" }, "mappings": [ { @@ -552,7 +559,8 @@ "nl": "Je mag je eigen containers meenemen om je bestelling in mee te nemen en zo minder afval te maken", "fr": "Vous pouvez apporter vos contenants pour votre commande, limitant l’usage de matériaux à usage unique et les déchets", "en": "You can bring your own containers to get your order, saving on single-use packaging material and thus waste", - "ja": "自分の容器を持ってきて、注文を受け取ることができ、使い捨ての梱包材を節約して、無駄を省くことができます" + "ja": "自分の容器を持ってきて、注文を受け取ることができ、使い捨ての梱包材を節約して、無駄を省くことができます", + "de": "Sie können ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" } }, { @@ -599,7 +607,8 @@ { "question": { "en": "Has a vegetarian menu", - "nl": "Heeft een vegetarisch menu" + "nl": "Heeft een vegetarisch menu", + "de": "Hat vegetarische Speisen" }, "osmTags": { "or": [ @@ -636,7 +645,8 @@ { "question": { "en": "Has a halal menu", - "nl": "Heeft een halal menu" + "nl": "Heeft een halal menu", + "de": "Hat halal Speisen" }, "osmTags": { "or": [ diff --git a/assets/layers/ghost_bike/ghost_bike.json b/assets/layers/ghost_bike/ghost_bike.json index fe576aef8..b3fb46860 100644 --- a/assets/layers/ghost_bike/ghost_bike.json +++ b/assets/layers/ghost_bike/ghost_bike.json @@ -3,7 +3,7 @@ "name": { "en": "Ghost bikes", "nl": "Witte Fietsen", - "de": "Geisterrad", + "de": "Geisterräder", "it": "Bici fantasma", "fr": "Vélos fantômes", "eo": "Fantombiciklo", @@ -84,7 +84,7 @@ "render": { "en": "A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location.", "nl": "Een Witte Fiets (of Spookfiets) is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat over een witgeschilderde fiets die geplaatst werd in de buurt van het ongeval.", - "de": "Ein Geisterrad ist ein Denkmal für einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt wird.", + "de": "Ein Geisterrad ist ein weißes Fahrrad, dass zum Gedenken eines tödlich verunglückten Radfahrers vor Ort aufgestellt wurde.", "it": "Una bici fantasma è il memoriale di un ciclista che è morto in un incidente stradale e che ha la forma di una bicicletta bianca piazzata in maniera stabile vicino al luogo dell’incidente.", "fr": "Un vélo fantôme est un monument commémoratif pour un cycliste décédé dans un accident de la route, sous la forme d'un vélo blanc placé en permanence près du lieu de l'accident." } @@ -182,7 +182,8 @@ "en": "Placed on {start_date}", "it": "Piazzata in data {start_date}", "fr": "Placé le {start_date}", - "ru": "Установлен {start_date}" + "ru": "Установлен {start_date}", + "de": "Aufgestellt am {start_date}" }, "freeform": { "key": "start_date", diff --git a/assets/layers/nature_reserve/nature_reserve.json b/assets/layers/nature_reserve/nature_reserve.json index 786f5e87b..5dfb6ef0b 100644 --- a/assets/layers/nature_reserve/nature_reserve.json +++ b/assets/layers/nature_reserve/nature_reserve.json @@ -297,7 +297,8 @@ "nl": "Wie is de conservator van dit gebied?
Respecteer privacy - geef deze naam enkel als die duidelijk is gepubliceerd", "en": "Whom is the curator of this nature reserve?
Respect privacy - only fill out a name if this is widely published", "it": "Chi è il curatore di questa riserva naturale?
Rispetta la privacy (scrivi il nome solo se questo è noto pubblicamente)", - "fr": "Qui est en charge de la conservation de la réserve ?
À ne remplir seulement que si le nom est diffusé au public" + "fr": "Qui est en charge de la conservation de la réserve ?
À ne remplir seulement que si le nom est diffusé au public", + "de": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist" }, "render": { "nl": "{curator} is de beheerder van dit gebied", @@ -381,7 +382,8 @@ "en": "Surface area: {_surface:ha}Ha", "nl": "Totale oppervlakte: {_surface:ha}Ha", "it": "Area: {_surface:ha} ha", - "fr": "Superficie : {_surface:ha} ha" + "fr": "Superficie : {_surface:ha} ha", + "de": "Grundfläche: {_surface:ha}ha" }, "mappings": [ { diff --git a/assets/layers/observation_tower/observation_tower.json b/assets/layers/observation_tower/observation_tower.json index 2a0da9055..ab05bd66d 100644 --- a/assets/layers/observation_tower/observation_tower.json +++ b/assets/layers/observation_tower/observation_tower.json @@ -4,7 +4,7 @@ "en": "Observation towers", "nl": "Uitkijktorens", "ru": "Смотровые башни", - "de": "Beobachtungstürme" + "de": "Aussichtstürme" }, "minzoom": 8, "title": { @@ -29,7 +29,7 @@ "description": { "en": "Towers with a panoramic view", "nl": "Torens om van het uitzicht te genieten", - "de": "Türme mit Panoramablick" + "de": "Türme zur Aussicht auf die umgebende Landschaft" }, "tagRenderings": [ "images", @@ -96,7 +96,8 @@ { "question": { "en": "How much does one have to pay to enter this tower?", - "nl": "Hoeveel moet men betalen om deze toren te bezoeken?" + "nl": "Hoeveel moet men betalen om deze toren te bezoeken?", + "de": "Was kostet der Zugang zu diesem Turm?" }, "render": { "en": "Visiting this tower costs {charge}", diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json index 653b6c83f..5a80bbdef 100644 --- a/assets/layers/playground/playground.json +++ b/assets/layers/playground/playground.json @@ -213,7 +213,8 @@ "en": "What is the minimum age required to access this playground?", "it": "Qual è l’età minima per accedere a questo parco giochi?", "fr": "Quel est l'âge minimal requis pour accéder à ce terrain de jeux ?", - "ru": "С какого возраста доступна эта детская площадка?" + "ru": "С какого возраста доступна эта детская площадка?", + "de": "Ab welchem Alter dürfen Kinder auf diesem Spielplatz spielen?" }, "freeform": { "key": "min_age", @@ -234,7 +235,8 @@ "nl": "Wat is de maximaal toegestane leeftijd voor deze speeltuin?", "en": "What is the maximum age allowed to access this playground?", "it": "Qual è l’età massima per accedere a questo parco giochi?", - "fr": "Quel est l’âge maximum autorisé pour utiliser l’aire de jeu ?" + "fr": "Quel est l’âge maximum autorisé pour utiliser l’aire de jeu ?", + "de": "Bis zu welchem Alter dürfen Kinder auf diesem Spielplatz spielen?" }, "freeform": { "key": "max_age", @@ -355,7 +357,8 @@ "nl": "Wie kan men bellen indien er problemen zijn met de speeltuin?", "en": "What is the phone number of the playground maintainer?", "fr": "Quel est le numéro de téléphone du responsable du terrain de jeux ?", - "it": "Qual è il numero di telefono del gestore del campetto?" + "it": "Qual è il numero di telefono del gestore del campetto?", + "de": "Wie lautet die Telefonnummer vom Betreiber des Spielplatzes?" }, "render": { "nl": "De bevoegde dienst kan getelefoneerd worden via
{phone}", diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 9f1910aef..e13f81877 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -5,7 +5,8 @@ "fr": "Magasin", "ru": "Магазин", "ja": "店", - "nl": "Winkel" + "nl": "Winkel", + "de": "Geschäft" }, "minzoom": 16, "source": { @@ -60,7 +61,8 @@ "fr": "Un magasin", "ja": "ショップ", "nl": "Een winkel", - "ru": "Магазин" + "ru": "Магазин", + "de": "Ein Geschäft" }, "tagRenderings": [ "images", @@ -70,7 +72,8 @@ "fr": "Qu'est-ce que le nom de ce magasin?", "ru": "Как называется этот магазин?", "ja": "このお店の名前は何ですか?", - "nl": "Wat is de naam van deze winkel?" + "nl": "Wat is de naam van deze winkel?", + "de": "Wie ist der Name dieses Geschäfts?" }, "render": "This shop is called {name}", "freeform": { @@ -212,7 +215,8 @@ "fr": "Quel est le numéro de téléphone ?", "ja": "電話番号は何番ですか?", "nl": "Wat is het telefoonnummer?", - "ru": "Какой телефон?" + "ru": "Какой телефон?", + "de": "Wie ist die Telefonnummer?" }, "freeform": { "key": "phone", @@ -257,7 +261,8 @@ "fr": "Quelle est l'adresse électronique de ce magasin ?", "ja": "このお店のメールアドレスは何ですか?", "ru": "Каков адрес электронной почты этого магазина?", - "nl": "Wat is het e-mailadres van deze winkel?" + "nl": "Wat is het e-mailadres van deze winkel?", + "de": "Wie ist die Email-Adresse dieses Geschäfts?" }, "freeform": { "key": "email", @@ -277,7 +282,8 @@ "fr": "Quels sont les horaires d'ouverture de ce magasin ?", "ja": "この店の営業時間は何時から何時までですか?", "nl": "Wat zijn de openingsuren van deze winkel?", - "ru": "Каковы часы работы этого магазина?" + "ru": "Каковы часы работы этого магазина?", + "de": "Wie sind die Öffnungszeiten dieses Geschäfts?" }, "freeform": { "key": "opening_hours", @@ -317,7 +323,8 @@ "fr": "Magasin", "ru": "Магазин", "ja": "店", - "nl": "Winkel" + "nl": "Winkel", + "de": "Geschäft" }, "description": { "en": "Add a new shop", diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json index 5d437fe42..9a4f8c92c 100644 --- a/assets/layers/sport_pitch/sport_pitch.json +++ b/assets/layers/sport_pitch/sport_pitch.json @@ -160,7 +160,8 @@ "fr": "De quelle surface est fait ce terrain de sport ?", "en": "Which is the surface of this sport pitch?", "it": "Qual è la superficie di questo campo sportivo?", - "ru": "Какое покрытие на этой спортивной площадке?" + "ru": "Какое покрытие на этой спортивной площадке?", + "de": "Was ist die Oberfläche dieses Sportplatzes?" }, "render": { "nl": "De ondergrond is {surface}", @@ -261,7 +262,8 @@ "fr": "Accès limité (par exemple uniquement sur réservation, à certains horaires…)", "en": "Limited access (e.g. only with an appointment, during certain hours, ...)", "it": "Accesso limitato (p.es. solo con prenotazione, in certi orari, ...)", - "ru": "Ограниченный доступ (напр., только по записи, в определённые часы, ...)" + "ru": "Ограниченный доступ (напр., только по записи, в определённые часы, ...)", + "de": "Eingeschränkter Zugang (z. B. nur mit Termin, zu bestimmten Zeiten, ...)" } }, { @@ -294,7 +296,8 @@ "fr": "Doit-on réserver pour utiliser ce terrain de sport ?", "en": "Does one have to make an appointment to use this sport pitch?", "it": "È necessario prenotarsi per usare questo campo sportivo?", - "ru": "Нужна ли предварительная запись для доступа на эту спортивную площадку?" + "ru": "Нужна ли предварительная запись для доступа на эту спортивную площадку?", + "de": "Muss man einen Termin vereinbaren, um diesen Sportplatz zu benutzen?" }, "condition": { "and": [ @@ -310,7 +313,8 @@ "nl": "Reserveren is verplicht om gebruik te maken van dit sportterrein", "fr": "Il est obligatoire de réserver pour utiliser ce terrain de sport", "en": "Making an appointment is obligatory to use this sport pitch", - "it": "La prenotazione è obbligatoria per usare questo campo sportivo" + "it": "La prenotazione è obbligatoria per usare questo campo sportivo", + "de": "Für die Nutzung des Sportplatzes ist eine Voranmeldung erforderlich" } }, { @@ -320,7 +324,8 @@ "fr": "Il est recommendé de réserver pour utiliser ce terrain de sport", "en": "Making an appointment is recommended when using this sport pitch", "it": "La prenotazione è consigliata per usare questo campo sportivo", - "ru": "Желательна предварительная запись для доступа на эту спортивную площадку" + "ru": "Желательна предварительная запись для доступа на эту спортивную площадку", + "de": "Für die Nutzung des Sportplatzes wird eine Voranmeldung empfohlen" } }, { @@ -330,7 +335,8 @@ "fr": "Il est possible de réserver, mais ce n'est pas nécéssaire pour utiliser ce terrain de sport", "en": "Making an appointment is possible, but not necessary to use this sport pitch", "it": "La prenotazione è consentita, ma non è obbligatoria per usare questo campo sportivo", - "ru": "Предварительная запись для доступа на эту спортивную площадку возможна, но не обязательна" + "ru": "Предварительная запись для доступа на эту спортивную площадку возможна, но не обязательна", + "de": "Eine Voranmeldung ist möglich, aber nicht notwendig, um diesen Sportplatz zu nutzen" } }, { @@ -351,7 +357,8 @@ "nl": "Wat is het telefoonnummer van de bevoegde dienst of uitbater?", "fr": "Quel est le numéro de téléphone du gérant ?", "en": "What is the phone number of the operator?", - "it": "Qual è il numero di telefono del gestore?" + "it": "Qual è il numero di telefono del gestore?", + "de": "Wie ist die Telefonnummer des Betreibers?" }, "freeform": { "key": "phone", @@ -365,7 +372,8 @@ "nl": "Wat is het email-adres van de bevoegde dienst of uitbater?", "fr": "Quelle est l'adresse courriel du gérant ?", "en": "What is the email address of the operator?", - "it": "Qual è l'indirizzo email del gestore?" + "it": "Qual è l'indirizzo email del gestore?", + "de": "Wie ist die Email-Adresse des Betreibers?" }, "freeform": { "key": "email", diff --git a/assets/layers/surveillance_camera/surveillance_camera.json b/assets/layers/surveillance_camera/surveillance_camera.json index 8750fa783..44be895a1 100644 --- a/assets/layers/surveillance_camera/surveillance_camera.json +++ b/assets/layers/surveillance_camera/surveillance_camera.json @@ -97,7 +97,8 @@ "en": "In which geographical direction does this camera film?", "nl": "In welke geografische richting filmt deze camera?", "fr": "Dans quelle direction géographique cette caméra filme-t-elle ?", - "it": "In quale direzione geografica punta questa videocamera?" + "it": "In quale direzione geografica punta questa videocamera?", + "de": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?" }, "render": { "en": "Films to a compass heading of {camera:direction}", @@ -166,7 +167,8 @@ "en": "What kind of surveillance is this camera", "nl": "Wat soort bewaking wordt hier uitgevoerd?", "fr": "Quel genre de surveillance est cette caméra", - "it": "Che cosa sorveglia questa videocamera" + "it": "Che cosa sorveglia questa videocamera", + "de": "Um was für eine Überwachungskamera handelt es sich" }, "mappings": [ { @@ -192,7 +194,8 @@ "en": "An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, ...)", "nl": "Een buitenruimte met privaat karakter (zoals een privé-oprit, een parking, tankstation, ...)", "fr": "Une zone extérieure, mais privée, est surveillée (par exemple, un parking, une station-service, une cour, une entrée, une allée privée, etc.)", - "it": "Sorveglia un'area esterna di proprietà privata (un parcheggio, una stazione di servizio, un cortile, un ingresso, un vialetto privato, ...)" + "it": "Sorveglia un'area esterna di proprietà privata (un parcheggio, una stazione di servizio, un cortile, un ingresso, un vialetto privato, ...)", + "de": "Ein privater Außenbereich wird überwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" } }, { @@ -205,7 +208,8 @@ "nl": "Een private binnenruimte wordt bewaakt, bv. een winkel, een parkeergarage, ...", "en": "A private indoor area is surveilled, e.g. a shop, a private underground parking, ...", "fr": "Une zone intérieure privée est surveillée, par exemple un magasin, un parking souterrain privé…", - "it": "Sorveglia un ambiente interno di proprietà privata, per esempio un negozio, un parcheggio sotterraneo privato, ..." + "it": "Sorveglia un ambiente interno di proprietà privata, per esempio un negozio, un parcheggio sotterraneo privato, ...", + "de": "Ein privater Innenbereich wird überwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." } } ], @@ -216,7 +220,8 @@ "en": "Is the public space surveilled by this camera an indoor or outdoor space?", "nl": "Bevindt de bewaakte publieke ruimte camera zich binnen of buiten?", "fr": "L'espace public surveillé par cette caméra est-il un espace intérieur ou extérieur ?", - "it": "Lo spazio pubblico sorvegliato da questa videocamera è all'aperto o al chiuso?" + "it": "Lo spazio pubblico sorvegliato da questa videocamera è all'aperto o al chiuso?", + "de": "Handelt es sich bei dem von dieser Kamera überwachten öffentlichen Raum um einen Innen- oder Außenbereich?" }, "condition": { "and": [ @@ -419,7 +424,8 @@ "en": "This camera is placed against a wall", "nl": "Deze camera hangt aan een muur", "fr": "Cette caméra est placée contre un mur", - "it": "Questa telecamera è posizionata contro un muro" + "it": "Questa telecamera è posizionata contro un muro", + "de": "Diese Kamera ist an einer Wand montiert" } }, { @@ -428,7 +434,8 @@ "en": "This camera is placed one a pole", "nl": "Deze camera staat op een paal", "fr": "Cette caméra est placée sur un poteau", - "it": "Questa telecamera è posizionata su un palo" + "it": "Questa telecamera è posizionata su un palo", + "de": "Diese Kamera ist an einer Stange montiert" } }, { @@ -437,7 +444,8 @@ "en": "This camera is placed on the ceiling", "nl": "Deze camera hangt aan het plafond", "fr": "Cette caméra est placée au plafond", - "it": "Questa telecamera è posizionata sul soffitto" + "it": "Questa telecamera è posizionata sul soffitto", + "de": "Diese Kamera ist an der Decke montiert" } } ], diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index 3c06cbdaa..e3da8e418 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -412,21 +412,24 @@ "id": "toilet-handwashing", "question": { "en": "Do these toilets have a sink to wash your hands?", - "nl": "Hebben deze toiletten een lavabo om de handen te wassen?" + "nl": "Hebben deze toiletten een lavabo om de handen te wassen?", + "de": "Verfügt diese Toilette über ein Waschbecken?" }, "mappings": [ { "if": "toilets:handwashing=yes", "then": { "en": "This toilets have a sink to wash your hands", - "nl": "Deze toiletten hebben een lavabo waar men de handen kan wassen" + "nl": "Deze toiletten hebben een lavabo waar men de handen kan wassen", + "de": "Diese Toilette verfügt über ein Waschbecken" } }, { "if": "toilets:handwashing=no", "then": { "en": "This toilets don't have a sink to wash your hands", - "nl": "Deze toiletten hebben geen lavabo waar men de handen kan wassen" + "nl": "Deze toiletten hebben geen lavabo waar men de handen kan wassen", + "de": "Diese Toilette verfügt über kein Waschbecken" } } ] @@ -435,7 +438,8 @@ "id": "toilet-has-paper", "question": { "en": "Does one have to bring their own toilet paper to this toilet?", - "nl": "Moet je je eigen toiletpappier meenemen naar deze toilet?" + "nl": "Moet je je eigen toiletpappier meenemen naar deze toilet?", + "de": "Muss man für diese Toilette sein eigenes Toilettenpapier mitbringen?" }, "mappings": [ { @@ -449,7 +453,8 @@ "if": "toilets:paper_supplied=no", "then": { "en": "You have to bring your own toilet paper to this toilet", - "nl": "Je moet je eigen toiletpapier meebrengen naar deze toilet" + "nl": "Je moet je eigen toiletpapier meebrengen naar deze toilet", + "de": "Für diese Toilette müssen Sie Ihr eigenes Toilettenpapier mitbringen" } } ] diff --git a/assets/layers/tree_node/tree_node.json b/assets/layers/tree_node/tree_node.json index 107191a1d..dd75dd525 100644 --- a/assets/layers/tree_node/tree_node.json +++ b/assets/layers/tree_node/tree_node.json @@ -82,7 +82,8 @@ "nl": "Is dit een naald- of loofboom?", "en": "Is this a broadleaved or needleleaved tree?", "it": "Si tratta di un albero latifoglia o aghifoglia?", - "fr": "Cet arbre est-il un feuillu ou un résineux ?" + "fr": "Cet arbre est-il un feuillu ou un résineux ?", + "de": "Ist dies ein Laub- oder Nadelbaum?" }, "mappings": [ { @@ -136,7 +137,8 @@ "nl": "Hoe significant is deze boom? Kies het eerste antwoord dat van toepassing is.", "en": "How significant is this tree? Choose the first answer that applies.", "it": "Quanto significativo è questo albero? Scegli la prima risposta che corrisponde.", - "fr": "Quelle est l'importance de cet arbre ? Choisissez la première réponse qui s'applique." + "fr": "Quelle est l'importance de cet arbre ? Choisissez la première réponse qui s'applique.", + "de": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." }, "mappings": [ { @@ -149,7 +151,8 @@ "nl": "De boom valt op door zijn grootte of prominente locatie. Hij is nuttig voor navigatie.", "en": "The tree is remarkable due to its size or prominent location. It is useful for navigation.", "it": "È un albero notevole per le sue dimensioni o per la posizione prominente. È utile alla navigazione.", - "fr": "L'arbre est remarquable en raison de sa taille ou de son emplacement proéminent. Il est utile pour la navigation." + "fr": "L'arbre est remarquable en raison de sa taille ou de son emplacement proéminent. Il est utile pour la navigation.", + "de": "Der Baum ist aufgrund seiner Größe oder seiner markanten Lage bedeutsam. Er ist nützlich zur Orientierung." } }, { @@ -162,7 +165,8 @@ "nl": "De boom is een natuurlijk monument, bijvoorbeeld doordat hij bijzonder oud of van een waardevolle soort is.", "en": "The tree is a natural monument, e.g. because it is especially old, or of a valuable species.", "it": "L’albero è un monumento naturale, ad esempio perché specialmente antico o appartenente a specie importanti.", - "fr": "Cet arbre est un monument naturel (ex : âge, espèce, etc…)" + "fr": "Cet arbre est un monument naturel (ex : âge, espèce, etc…)", + "de": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehört." } }, { @@ -175,7 +179,8 @@ "nl": "De boom wordt voor landbouwdoeleinden gebruikt, bijvoorbeeld in een boomgaard.", "en": "The tree is used for agricultural purposes, e.g. in an orchard.", "it": "L’albero è usato per scopi agricoli, ad esempio in un frutteto.", - "fr": "Cet arbre est utilisé à but d’agriculture (ex : dans un verger)" + "fr": "Cet arbre est utilisé à but d’agriculture (ex : dans un verger)", + "de": "Der Baum wird für landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." } }, { @@ -188,7 +193,8 @@ "nl": "De boom staat in een park of dergelijke (begraafplaats, schoolterrein, …).", "en": "The tree is in a park or similar (cemetery, school grounds, …).", "it": "L’albero è in un parco o qualcosa di simile (cimitero, aree didattiche, etc.).", - "fr": "Cet arbre est dans un parc ou une aire similaire (ex : cimetière, cour d’école, …)." + "fr": "Cet arbre est dans un parc ou une aire similaire (ex : cimetière, cour d’école, …).", + "de": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." } }, { @@ -214,7 +220,8 @@ "nl": "Dit is een laanboom.", "en": "This is a tree along an avenue.", "it": "Fa parte di un viale alberato.", - "fr": "C'est un arbre le long d'une avenue." + "fr": "C'est un arbre le long d'une avenue.", + "de": "Dieser Baum steht entlang einer Straße." } }, { @@ -240,7 +247,8 @@ "nl": "De boom staat buiten een woonkern.", "en": "The tree is outside of an urban area.", "it": "L’albero si trova fuori dall’area urbana.", - "fr": "Cet arbre est en zone rurale." + "fr": "Cet arbre est en zone rurale.", + "de": "Dieser Baum steht außerhalb eines städtischen Gebiets." } } ] @@ -267,7 +275,8 @@ "en": "Deciduous: the tree loses its leaves for some time of the year.", "it": "Caduco: l’albero perde le sue foglie per un periodo dell’anno.", "ru": "Листопадное: у дерева опадают листья в определённое время года.", - "fr": "Caduc : l’arbre perd son feuillage une partie de l’année." + "fr": "Caduc : l’arbre perd son feuillage une partie de l’année.", + "de": "Laubabwerfend: Der Baum verliert für eine gewisse Zeit des Jahres seine Blätter." } }, { @@ -364,7 +373,8 @@ "nl": "\"\"/ Erkend als houtig erfgoed door Onroerend Erfgoed Vlaanderen", "en": "\"\"/ Registered as heritage by Onroerend Erfgoed Flanders", "it": "\"\"/Registrato come patrimonio da Onroerend Erfgoed Flanders", - "fr": "\"\"/ Fait partie du patrimoine par Onroerend Erfgoed" + "fr": "\"\"/ Fait partie du patrimoine par Onroerend Erfgoed", + "de": "\"\"/ Als Denkmal registriert von der Onroerend Erfgoed Flandern" } }, { @@ -378,7 +388,8 @@ "nl": "Erkend als natuurlijk erfgoed door Directie Cultureel Erfgoed Brussel", "en": "Registered as heritage by Direction du Patrimoine culturel Brussels", "it": "Registrato come patrimonio da Direction du Patrimoine culturel di Bruxelles", - "fr": "Enregistré comme patrimoine par la Direction du Patrimoine culturel Bruxelles" + "fr": "Enregistré comme patrimoine par la Direction du Patrimoine culturel Bruxelles", + "de": "Als Denkmal registriert von der Direction du Patrimoine culturel Brüssel" } }, { @@ -444,7 +455,8 @@ "nl": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?", "en": "What is the ID issued by Onroerend Erfgoed Flanders?", "it": "Qual è l’ID rilasciato da Onroerend Erfgoed Flanders?", - "fr": "Quel est son identifiant donné par Onroerend Erfgoed ?" + "fr": "Quel est son identifiant donné par Onroerend Erfgoed ?", + "de": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?" }, "freeform": { "key": "ref:OnroerendErfgoed", @@ -470,7 +482,8 @@ "nl": "Wat is het Wikidata-ID van deze boom?", "en": "What is the Wikidata ID for this tree?", "it": "Qual è l’ID Wikidata per questo albero?", - "fr": "Quel est l'identifiant Wikidata de cet arbre ?" + "fr": "Quel est l'identifiant Wikidata de cet arbre ?", + "de": "Was ist das passende Wikidata Element zu diesem Baum?" }, "freeform": { "key": "wikidata", diff --git a/assets/layers/visitor_information_centre/visitor_information_centre.json b/assets/layers/visitor_information_centre/visitor_information_centre.json index 322fb4eab..28986dd8a 100644 --- a/assets/layers/visitor_information_centre/visitor_information_centre.json +++ b/assets/layers/visitor_information_centre/visitor_information_centre.json @@ -53,7 +53,8 @@ }, "description": { "en": "A visitor center offers information about a specific attraction or place of interest where it is located.", - "nl": "Een bezoekerscentrum biedt informatie over een specifieke attractie of bezienswaardigheid waar het is gevestigd." + "nl": "Een bezoekerscentrum biedt informatie over een specifieke attractie of bezienswaardigheid waar het is gevestigd.", + "de": "Ein Besucherzentrum bietet Informationen über eine bestimmte Attraktion oder Sehenswürdigkeit, an der es sich befindet." }, "tagRenderings": [], "icon": { diff --git a/assets/layers/waste_basket/waste_basket.json b/assets/layers/waste_basket/waste_basket.json index 1a234e9e0..612504a7b 100644 --- a/assets/layers/waste_basket/waste_basket.json +++ b/assets/layers/waste_basket/waste_basket.json @@ -32,7 +32,8 @@ "id": "waste-basket-waste-types", "question": { "en": "What kind of waste basket is this?", - "nl": "Wat voor soort vuilnisbak is dit?" + "nl": "Wat voor soort vuilnisbak is dit?", + "de": "Um was für einen Abfalleimer handelt es sich?" }, "multiAnswer": true, "mappings": [ @@ -89,7 +90,8 @@ { "id": "dispensing_dog_bags", "question": { - "en": "Does this waste basket have a dispenser for dog excrement bags?" + "en": "Does this waste basket have a dispenser for dog excrement bags?", + "de": "Verfügt dieser Abfalleimer über einen Spender für (Hunde-)Kotbeutel?" }, "condition": { "or": [ @@ -107,7 +109,8 @@ ] }, "then": { - "en": "This waste basket has a dispenser for (dog) excrement bags" + "en": "This waste basket has a dispenser for (dog) excrement bags", + "de": "Dieser Abfalleimer verfügt über einen Spender für (Hunde-)Kotbeutel" } }, { @@ -118,13 +121,15 @@ ] }, "then": { - "en": "This waste basket does not have a dispenser for (dog) excrement bags" + "en": "This waste basket does not have a dispenser for (dog) excrement bags", + "de": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" } }, { "if": "vending=", "then": { - "en": "This waste basket does not have a dispenser for (dog) excrement bags" + "en": "This waste basket does not have a dispenser for (dog) excrement bags", + "de": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" }, "hideInAnwer": true } diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json index bfd84bba8..76ae6841d 100644 --- a/assets/themes/climbing/climbing.json +++ b/assets/themes/climbing/climbing.json @@ -454,11 +454,13 @@ { "question": { "en": "How much bolts does this route have before reaching the moulinette?", - "fr": "Combien de prises cette voie possède avant d’atteindre la moulinette ?" + "fr": "Combien de prises cette voie possède avant d’atteindre la moulinette ?", + "de": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?" }, "render": { "en": "This route has {climbing:bolts} bolts", - "fr": "Cette voie a {climbing:bolts} prises" + "fr": "Cette voie a {climbing:bolts} prises", + "de": "Diese Kletterroute hat {climbing:bolts} Haken" }, "freeform": { "key": "climbing:bolts", @@ -472,7 +474,8 @@ "if": "climbing:bolted=no", "then": { "en": "This route is not bolted", - "fr": "Cette voie n’a pas de prises" + "fr": "Cette voie n’a pas de prises", + "de": "Auf dieser Kletterroute sind keine Haken vorhanden" }, "hideInAnswer": true }, @@ -480,7 +483,8 @@ "if": "climbing:bolted=no&climbing:bolts=", "then": { "en": "This route is not bolted", - "fr": "Cette voie n’a pas de prises" + "fr": "Cette voie n’a pas de prises", + "de": "Auf dieser Kletterroute sind keine Haken vorhanden" } } ], diff --git a/assets/themes/cyclofix/cyclofix.json b/assets/themes/cyclofix/cyclofix.json index db626f24c..490e4757b 100644 --- a/assets/themes/cyclofix/cyclofix.json +++ b/assets/themes/cyclofix/cyclofix.json @@ -5,7 +5,7 @@ "nl": "Cyclofix - een open kaart voor fietsers", "fr": "Cyclofix - Une carte ouverte pour les cyclistes", "gl": "Cyclofix - Un mapa aberto para os ciclistas", - "de": "Cyclofix - eine offene Karte für Radfahrer", + "de": "Cyclofix - eine freie Karte für Radfahrer", "ru": "Cyclofix - открытая карта для велосипедистов", "ja": "Cyclofix - サイクリストのためのオープンマップ", "zh_Hant": "單車修正 - 單車騎士的開放地圖", @@ -16,7 +16,7 @@ "nl": "Het doel van deze kaart is om fietsers een gebruiksvriendelijke oplossing te bieden voor het vinden van de juiste infrastructuur voor hun behoeften.

U kunt uw exacte locatie volgen (enkel mobiel) en in de linkerbenedenhoek categorieën selecteren die voor u relevant zijn. U kunt deze tool ook gebruiken om 'spelden' aan de kaart toe te voegen of te bewerken en meer gegevens te verstrekken door de vragen te beantwoorden.

Alle wijzigingen die u maakt worden automatisch opgeslagen in de wereldwijde database van OpenStreetMap en kunnen door anderen vrij worden hergebruikt.

Bekijk voor meer info over cyclofix ook cyclofix.osm.be.", "fr": "Le but de cette carte est de présenter aux cyclistes une solution facile à utiliser pour trouver l'infrastructure appropriée à leurs besoins.

Vous pouvez suivre votre localisation précise (mobile uniquement) et sélectionner les couches qui vous concernent dans le coin inférieur gauche. Vous pouvez également utiliser cet outil pour ajouter ou modifier des épingles (points d'intérêt) sur la carte et fournir plus de données en répondant aux questions.

Toutes les modifications que vous apportez seront automatiquement enregistrées dans la base de données mondiale d'OpenStreetMap et peuvent être librement réutilisées par d'autres.

Pour plus d'informations sur le projet cyclofix, rendez-vous sur cyclofix.osm.be.", "gl": "O obxectivo deste mapa é amosar ós ciclistas unha solución doada de empregar para atopar a infraestrutura axeitada para as súas necesidades.

Podes obter a túa localización precisa (só para dispositivos móbiles) e escoller as capas que sexan relevantes para ti na esquina inferior esquerda. Tamén podes empregar esta ferramenta para engadir ou editar puntos de interese ó mapa e fornecer máis datos respondendo as cuestións.

Todas as modificacións que fagas serán gardadas de xeito automático na base de datos global do OpenStreetMap e outros poderán reutilizalos libremente.

Para máis información sobre o proxecto cyclofix, vai a cyclofix.osm.be.", - "de": "Das Ziel dieser Karte ist es, den Radfahrern eine einfach zu benutzende Lösung zu präsentieren, um die geeignete Infrastruktur für ihre Bedürfnisse zu finden.

Sie können Ihren genauen Standort verfolgen (nur mobil) und in der linken unteren Ecke die für Sie relevanten Ebenen auswählen. Sie können dieses Tool auch verwenden, um Pins (Points of Interest/Interessante Orte) zur Karte hinzuzufügen oder zu bearbeiten und mehr Daten durch Beantwortung der Fragen bereitstellen.

Alle Änderungen, die Sie vornehmen, werden automatisch in der globalen Datenbank von OpenStreetMap gespeichert und können von anderen frei wiederverwendet werden.

Weitere Informationen über das Projekt Cyclofix finden Sie unter cyclofix.osm.be.", + "de": "Mit dieser Karte soll Radfahrern eine einfache Lösung bereitgestellt werden, um die passende Farradinfrastruktur zu finden.

Sie können Ihren genauen Standort verfolgen (nur mobil) und in der linken unteren Ecke die für Sie relevanten Ebenen auswählen. Sie können dieses Tool auch verwenden, um Pins (Points of Interest/Interessante Orte) zur Karte hinzuzufügen oder zu bearbeiten und mehr Daten durch Beantwortung der Fragen bereitstellen.

Ihre Änderungen, werden automatisch in der Datenbank von OpenStreetMap gespeichert und können von anderen frei verwendet werden.

Weitere Informationen über Cyclofix finden Sie unter cyclofix.osm.be.", "ja": "このマップの目的は、サイクリストのニーズに適した施設を見つけるための使いやすいソリューションを提供することです。

正確な位置を追跡し(モバイルのみ)、左下コーナーで関連するレイヤを選択できます。このツールを使用して、マップにピン(注目点)を追加または編集したり、質問に答えることでより多くのデータを提供することもできます。

変更内容はすべてOpenStreetMapのグローバルデータベースに自動的に保存され、他のユーザーが自由に再利用できます。

cyclofixプロジェクトの詳細については、 cyclofix.osm.be を参照してください。", "zh_Hant": "這份地圖的目的是為單車騎士能夠輕易顯示滿足他們需求的相關設施。

你可以追蹤你確切位置 (只有行動版),以及在左下角選擇相關的圖層。你可以使用這工具在地圖新增或編輯釘子,以及透過回答問題來提供更多資訊。

所有你的變動都會自動存在開放街圖這全球資料圖,並且能被任何人自由取用。

你可以到 cyclofix.osm.be 閱讀更多資訊。", "it": "Questa mappa offre a chi va in bici una soluzione semplice per trovare tutte le infrastrutture di cui ha bisogno.

Puoi tracciare la tua posizione esatta (solo su mobile) e selezionare i livelli che ti interessano nell'angolo in basso a sinistra. Puoi anche usare questo strumento per aggiungere o modificare punti di interesse alla mappa e aggiungere nuove informazioni rispendendo alle domande.

Tutte le modifiche che apporterai saranno automaticamente salvate nel database mondiale di OpenStreetMap e potranno essere liberamente riutilizzate da tutti e tutte.

Per maggiori informazioni sul progetto ciclofix, visita cyclofix.osm.be." diff --git a/assets/themes/drinking_water/drinking_water.json b/assets/themes/drinking_water/drinking_water.json index 5da9ee3c7..9eda4b7f7 100644 --- a/assets/themes/drinking_water/drinking_water.json +++ b/assets/themes/drinking_water/drinking_water.json @@ -8,7 +8,7 @@ "ja": "飲料水", "zh_Hant": "飲用水", "it": "Acqua potabile", - "de": "Trinkwasser" + "de": "Trinkwasserstelle" }, "description": { "en": "On this map, publicly accessible drinking water spots are shown and can be easily added", @@ -18,7 +18,7 @@ "zh_Hant": "在這份地圖上,公共可及的飲水點可以顯示出來,也能輕易的增加", "it": "Questa mappa mostra tutti i luoghi in cui è disponibile acqua potabile ed è possibile aggiungerne di nuovi", "ru": "На этой карте показываются и могут быть легко добавлены общедоступные точки питьевой воды", - "de": "Auf dieser Karte sind öffentlich zugängliche Trinkwasserstellen eingezeichnet und können leicht hinzugefügt werden" + "de": "Eine Karte zum Anzeigen und Bearbeiten öffentlicher Trinkwasserstellen" }, "language": [ "en", diff --git a/assets/themes/etymology.json b/assets/themes/etymology.json index f342e2e2b..735f119de 100644 --- a/assets/themes/etymology.json +++ b/assets/themes/etymology.json @@ -13,7 +13,7 @@ "description": { "en": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. In the popup, you'll see the Wikipedia article (if it exists) or a wikidata box of what the object is named after. If the object itself has a wikipedia page, that'll be shown too.

You can help contribute too!Zoom in enough and all streets will show up. You can click one and a Wikidata-search box will popup. With a few clicks, you can add an etymology link. Note that you need a free OpenStreetMap account to do this.", "nl": "Op deze kaart zie je waar een plaats naar is vernoemd. De straten, gebouwen, ... komen uit OpenStreetMap, waar een link naar Wikidata werd gelegd. In de popup zie je het Wikipedia-artikel van hetgeen naarwaar het vernoemd is of de Wikidata-box.

Je kan zelf ook meehelpen!Als je ver inzoomt, krijg je alle straten te zien. Klik je een straat aan, dan krijg je een zoekfunctie waarmee je snel een nieuwe link kan leggen. Je hebt hiervoor een gratis OpenStreetMap account nodig.", - "de": "Auf dieser Karte können Sie sehen, nach was ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknüpft wurde. Die Informationen stammen aus Wikipedia." + "de": "Auf dieser Karte können Sie sehen, wonach ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknüpft wurde. In dem Popup sehen Sie den Wikipedia-Artikel (falls vorhanden) oder ein Wikidata-Feld, nach dem das Objekt benannt ist. Wenn das Objekt selbst eine Wikipedia-Seite hat, wird auch diese angezeigt.

Sie können auch einen Beitrag leisten!Zoomen Sie genug hinein und alle Straßen werden angezeigt. Wenn Sie auf eine Straße klicken, öffnet sich ein Wikidata-Suchfeld. Mit ein paar Klicks können Sie einen Etymologie-Link hinzufügen. Beachten Sie, dass Sie dazu ein kostenloses OpenStreetMap-Konto benötigen." }, "language": [ "en", @@ -40,7 +40,8 @@ "id": "streets_without_etymology", "name": { "en": "Streets without etymology information", - "nl": "Straten zonder etymologische informatie" + "nl": "Straten zonder etymologische informatie", + "de": "Straßen ohne Informationen zur Namensherkunft" }, "minzoom": 18, "source": { @@ -60,7 +61,8 @@ "id": "parks_and_forests_without_etymology", "name": { "en": "Parks and forests without etymology information", - "nl": "Parken en bossen zonder etymologische informatie" + "nl": "Parken en bossen zonder etymologische informatie", + "de": "Parks und Waldflächen ohne Informationen zur Namensherkunft" }, "minzoom": 18, "source": { diff --git a/assets/themes/ghostbikes/ghostbikes.json b/assets/themes/ghostbikes/ghostbikes.json index 7c9aec38b..97c580617 100644 --- a/assets/themes/ghostbikes/ghostbikes.json +++ b/assets/themes/ghostbikes/ghostbikes.json @@ -24,7 +24,7 @@ "title": { "en": "Ghost bikes", "nl": "Witte Fietsen", - "de": "Geisterrad", + "de": "Geisterräder", "ja": "ゴーストバイク", "nb_NO": "Spøkelsessykler", "zh_Hant": "幽靈單車", @@ -43,7 +43,7 @@ "description": { "en": "A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location.

On this map, one can see all the ghost bikes which are known by OpenStreetMap. Is a ghost bike missing? Everyone can add or update information here - you only need to have a (free) OpenStreetMap account.", "nl": "Een Witte Fiets of Spookfiets is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat om een fiets die volledig wit is geschilderd en in de buurt van het ongeval werd geinstalleerd.

Op deze kaart zie je alle witte fietsen die door OpenStreetMap gekend zijn. Ontbreekt er een Witte Fiets of wens je informatie aan te passen? Meld je dan aan met een (gratis) OpenStreetMap account.", - "de": "Ein Geisterrad ist ein Denkmal für einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt ist.

Auf dieser Karte kann man alle Geisterräder sehen, die OpenStreetMap kennt. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufügen oder aktualisieren - Sie benötigen lediglich einen (kostenlosen) OpenStreetMap-Account.", + "de": "Ein Geisterrad ist ein Denkmal für einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt ist.

Auf dieser Karte kann man alle Geisterräder sehen, die in OpenStreetMap eingetragen sind. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufügen oder aktualisieren - Sie benötigen lediglich einen (kostenlosen) OpenStreetMap-Account.", "ja": "ゴーストバイクは、交通事故で死亡したサイクリストを記念するもので、事故現場の近くに恒久的に置かれた白い自転車の形をしています。

このマップには、OpenStreetMapで知られているゴーストバイクがすべて表示されます。ゴーストバイクは行方不明ですか?誰でもここで情報の追加や更新ができます。必要なのは(無料の)OpenStreetMapアカウントだけです。", "zh_Hant": "幽靈單車是用來紀念死於交通事故的單車騎士,在事發地點附近放置白色單車。

在這份地圖上面,你可以看到所有在開放街圖已知的幽靈單車。有缺漏的幽靈單車嗎?所有人都可以在這邊新增或是更新資訊-只有你有(免費)開放街圖帳號。", "fr": "Les vélos fantômes sont des mémoriaux pour les cyclistes tuées sur la route, prenant la forme de vélos blancs placés à proximité des faits.

Cette carte indique leur emplacement à partir d’OpenStreetMap. Il est possible de contribuer aux informations ici, sous réserve d’avoir un compte OpenStreetMap (gratuit)." diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json index 92f54e50f..a46b53d12 100644 --- a/assets/themes/hailhydrant/hailhydrant.json +++ b/assets/themes/hailhydrant/hailhydrant.json @@ -495,7 +495,8 @@ "ru": "Пожарная часть", "nb_NO": "Brannstasjon", "it": "Caserma dei vigili del fuoco", - "fr": "Station de pompiers" + "fr": "Station de pompiers", + "de": "Feuerwache" } }, "description": { diff --git a/assets/themes/maps/maps.json b/assets/themes/maps/maps.json index 959494a06..b14817ee6 100644 --- a/assets/themes/maps/maps.json +++ b/assets/themes/maps/maps.json @@ -6,7 +6,8 @@ "fr": "Carte des cartes", "ja": "マップのマップ", "zh_Hant": "地圖的地圖", - "ru": "Карта карт" + "ru": "Карта карт", + "de": "Eine Karte der Karten" }, "shortDescription": { "en": "This theme shows all (touristic) maps that OpenStreetMap knows of", @@ -28,7 +29,8 @@ "fr", "ja", "zh_Hant", - "ru" + "ru", + "de" ], "maintainer": "MapComplete", "icon": "./assets/themes/maps/logo.svg", diff --git a/assets/themes/natuurpunt/natuurpunt.json b/assets/themes/natuurpunt/natuurpunt.json index ecbe8afe9..78866a968 100644 --- a/assets/themes/natuurpunt/natuurpunt.json +++ b/assets/themes/natuurpunt/natuurpunt.json @@ -3,11 +3,13 @@ "customCss": "./assets/themes/natuurpunt/natuurpunt.css", "title": { "nl": "Natuurgebieden", - "en": "Nature Reserves" + "en": "Nature Reserves", + "de": "Naturschutzgebiete" }, "shortDescription": { "nl": "Deze kaart toont de natuurgebieden van Natuurpunt", - "en": "This map shows the nature reserves of Natuurpunt" + "en": "This map shows the nature reserves of Natuurpunt", + "de": "Diese Karte zeigt Naturschutzgebiete des flämischen Naturverbands Natuurpunt" }, "description": { "nl": "Op deze kaart vind je alle natuurgebieden die Natuurpunt ter beschikking stelt", @@ -15,7 +17,8 @@ }, "language": [ "nl", - "en" + "en", + "de" ], "mustHaveLanguage": [ "nl" diff --git a/assets/themes/observation_towers/observation_towers.json b/assets/themes/observation_towers/observation_towers.json index 3ab5a6b58..20406a939 100644 --- a/assets/themes/observation_towers/observation_towers.json +++ b/assets/themes/observation_towers/observation_towers.json @@ -2,19 +2,23 @@ "id": "observation_towers", "title": { "en": "Observation towers", - "nl": "Uitkijktorens" + "nl": "Uitkijktorens", + "de": "Aussichtstürme" }, "shortDescription": { "en": "Publicly accessible towers to enjoy the view", - "nl": "Publieke uitkijktorens om van het panorama te genieten" + "nl": "Publieke uitkijktorens om van het panorama te genieten", + "de": "Öffentlich zugänglicher Aussichtsturm" }, "description": { "nl": "Publieke uitkijktorens om van het panorama te genieten", - "en": "Publicly accessible towers to enjoy the view" + "en": "Publicly accessible towers to enjoy the view", + "de": "Öffentlich zugänglicher Aussichtsturm" }, "language": [ "en", - "nl" + "nl", + "de" ], "maintainer": "", "icon": "./assets/layers/observation_tower/Tower_observation.svg", diff --git a/assets/themes/openwindpowermap/openwindpowermap.json b/assets/themes/openwindpowermap/openwindpowermap.json index c7e910d48..04282bcae 100644 --- a/assets/themes/openwindpowermap/openwindpowermap.json +++ b/assets/themes/openwindpowermap/openwindpowermap.json @@ -2,7 +2,8 @@ "id": "openwindpowermap", "title": { "en": "OpenWindPowerMap", - "fr": "OpenWindPowerMap" + "fr": "OpenWindPowerMap", + "de": "OpenWindPowerMap" }, "maintainer": "Seppe Santens", "icon": "./assets/themes/openwindpowermap/wind_turbine.svg", @@ -30,7 +31,8 @@ "name": { "en": "wind turbine", "nl": "windturbine", - "fr": "Éolienne" + "fr": "Éolienne", + "de": "Windrad" }, "source": { "osmTags": "generator:source=wind" @@ -41,7 +43,8 @@ "render": { "en": "wind turbine", "nl": "windturbine", - "fr": "éolienne" + "fr": "éolienne", + "de": "Windrad" }, "mappings": [ { @@ -149,7 +152,8 @@ "title": { "en": "wind turbine", "nl": "windturbine", - "fr": "Éolienne" + "fr": "Éolienne", + "de": "Windrad" } } ], @@ -168,7 +172,8 @@ "human": { "en": " megawatts", "nl": " megawatt", - "fr": " megawatts" + "fr": " megawatts", + "de": " Megawatt" } }, { @@ -180,7 +185,8 @@ "human": { "en": " kilowatts", "nl": " kilowatt", - "fr": " kilowatts" + "fr": " kilowatts", + "de": " Kilowatt" } }, { @@ -192,7 +198,8 @@ "human": { "en": " watts", "nl": " watt", - "fr": " watts" + "fr": " watts", + "de": " Watt" } }, { @@ -204,7 +211,8 @@ "human": { "en": " gigawatts", "nl": " gigawatt", - "fr": " gigawatts" + "fr": " gigawatts", + "de": " Gigawatt" } } ], @@ -224,7 +232,8 @@ "human": { "en": " meter", "nl": " meter", - "fr": " mètres" + "fr": " mètres", + "de": " Meter" } } ] diff --git a/assets/themes/parkings/parkings.json b/assets/themes/parkings/parkings.json index affbbfc21..ab6247517 100644 --- a/assets/themes/parkings/parkings.json +++ b/assets/themes/parkings/parkings.json @@ -2,19 +2,23 @@ "id": "parkings", "title": { "nl": "Parking", - "en": "Parking" + "en": "Parking", + "de": "Parken" }, "shortDescription": { "nl": "Deze kaart toont verschillende parkeerplekken", - "en": "This map shows different parking spots" + "en": "This map shows different parking spots", + "de": "Diese Karte zeigt Parkplätze" }, "description": { "nl": "Deze kaart toont verschillende parkeerplekken", - "en": "This map shows different parking spots" + "en": "This map shows different parking spots", + "de": "Diese Karte zeigt Parkplätze" }, "language": [ "nl", - "en" + "en", + "de" ], "maintainer": "", "icon": "./assets/themes/parkings/parkings.svg", diff --git a/assets/themes/playgrounds/playgrounds.json b/assets/themes/playgrounds/playgrounds.json index 8c153a10a..b60c95575 100644 --- a/assets/themes/playgrounds/playgrounds.json +++ b/assets/themes/playgrounds/playgrounds.json @@ -6,7 +6,8 @@ "fr": "Aires de jeux", "ja": "遊び場", "zh_Hant": "遊樂場", - "ru": "Игровые площадки" + "ru": "Игровые площадки", + "de": "Spielpläzte" }, "shortDescription": { "nl": "Een kaart met speeltuinen", @@ -14,7 +15,8 @@ "fr": "Une carte des aires de jeux", "ja": "遊び場のある地図", "zh_Hant": "遊樂場的地圖", - "ru": "Карта игровых площадок" + "ru": "Карта игровых площадок", + "de": "Eine Karte mit Spielplätzen" }, "description": { "nl": "Op deze kaart vind je speeltuinen en kan je zelf meer informatie en foto's toevoegen", @@ -30,7 +32,8 @@ "fr", "ja", "zh_Hant", - "ru" + "ru", + "de" ], "maintainer": "", "icon": "./assets/themes/playgrounds/playground.svg", diff --git a/assets/themes/postboxes/postboxes.json b/assets/themes/postboxes/postboxes.json index 96dce929b..a6a30a372 100644 --- a/assets/themes/postboxes/postboxes.json +++ b/assets/themes/postboxes/postboxes.json @@ -1,10 +1,12 @@ { "id": "postboxes", "title": { - "en": "Postbox and Post Office Map" + "en": "Postbox and Post Office Map", + "de": "Karte mit Briefkästen und Poststellen" }, "shortDescription": { - "en": "A map showing postboxes and post offices" + "en": "A map showing postboxes and post offices", + "de": "Eine Karte die Briefkästen und Poststellen anzeigt" }, "description": { "en": "On this map you can find and add data of post offices and post boxes. You can use this map to find where you can mail your next postcard! :)
Spotted an error or is a post box missing? You can edit this map with a free OpenStreetMap account. " @@ -29,7 +31,8 @@ { "id": "postboxes", "name": { - "en": "Postboxes" + "en": "Postboxes", + "de": "Brieflästen" }, "minzoom": 12, "source": { @@ -37,11 +40,13 @@ }, "title": { "render": { - "en": "Postbox" + "en": "Postbox", + "de": "Briefkasten" } }, "description": { - "en": "The layer showing postboxes." + "en": "The layer showing postboxes.", + "de": "Die Ebene zeigt Briefkästen." }, "tagRenderings": [ "images", @@ -68,7 +73,8 @@ "amenity=post_box" ], "title": { - "en": "postbox" + "en": "postbox", + "de": "Briefkasten" } } ], @@ -85,7 +91,8 @@ { "id": "postoffices", "name": { - "en": "Post offices" + "en": "Post offices", + "de": "Poststellen" }, "minzoom": 12, "source": { @@ -93,7 +100,8 @@ }, "title": { "render": { - "en": "Post Office" + "en": "Post Office", + "de": "Poststelle" } }, "description": { @@ -154,7 +162,8 @@ "amenity=post_office" ], "title": { - "en": "Post Office" + "en": "Post Office", + "de": "Poststelle" } } ], @@ -165,7 +174,8 @@ "options": [ { "question": { - "en": "Currently open" + "en": "Currently open", + "de": "Aktuell geöffnet" }, "osmTags": "_isOpen=yes" } diff --git a/assets/themes/toilets/toilets.json b/assets/themes/toilets/toilets.json index 1d1567de4..de62c5c14 100644 --- a/assets/themes/toilets/toilets.json +++ b/assets/themes/toilets/toilets.json @@ -2,7 +2,7 @@ "id": "toilets", "title": { "en": "Open Toilet Map", - "de": "Offene Toilette Karte", + "de": "Freie Toilettenkarte", "fr": "Carte des WC et toilettes publiques", "nl": "Open Toilettenkaart", "ru": "Открытая карта туалетов", @@ -12,7 +12,7 @@ }, "description": { "en": "A map of public toilets", - "de": "Eine Karte der öffentlichen Toiletten", + "de": "Eine Karte mit öffentlich zugänglichen Toiletten", "fr": "Carte affichant les WC et toilettes publiques", "nl": "Een kaart met openbare toiletten", "ru": "Карта общественных туалетов", diff --git a/assets/themes/uk_addresses/uk_addresses.json b/assets/themes/uk_addresses/uk_addresses.json index ff865b914..aa0aeed0b 100644 --- a/assets/themes/uk_addresses/uk_addresses.json +++ b/assets/themes/uk_addresses/uk_addresses.json @@ -40,7 +40,8 @@ "maxZoom": 20, "defaultState": false, "name": { - "en": "Property boundaries by osmuk.org" + "en": "Property boundaries by osmuk.org", + "de": "Grenzverläufe gemäß osmuk.org" } } ], From 887318ee2b3d440a34c8b87332ff6f677b964ee4 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 21:48:59 +0200 Subject: [PATCH 20/30] Regenerate translatiosn --- assets/tagRenderings/questions.json | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index cab25af7c..814e0058a 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -6,14 +6,18 @@ "render": "{wikipedia():max-height:25rem}", "question": { "en": "What is the corresponding Wikidata entity?", - "nl": "Welk Wikidata-item komt overeen met dit object?" + "nl": "Welk Wikidata-item komt overeen met dit object?", + "de": "Was ist das entsprechende Wikidata Element?", + "pt": "Qual é a entidade Wikidata correspondente?" }, "mappings": [ { "if": "wikidata=", "then": { "en": "No Wikipedia page has been linked yet", - "nl": "Er werd nog geen Wikipedia-pagina gekoppeld" + "nl": "Er werd nog geen Wikipedia-pagina gekoppeld", + "de": "Es wurde noch keine Wikipedia-Seite verlinkt", + "pt": "Ainda não foi vinculada nenhuma página da Wikipédia" }, "hideInAnswer": true } @@ -64,14 +68,18 @@ "render": "WP", "question": { "en": "What is the corresponding item on Wikipedia?", - "nl": "Welk Wikipedia-artikel beschrijft dit object?" + "nl": "Welk Wikipedia-artikel beschrijft dit object?", + "de": "Was ist der entsprechende Artikel auf Wikipedia?", + "pt": "Qual é o item correspondente na Wikipédia?" }, "mappings": [ { "if": "wikidata=", "then": { "en": "Not linked with Wikipedia", - "nl": "Nog geen Wikipedia-artikel bekend" + "nl": "Nog geen Wikipedia-artikel bekend", + "de": "Nicht mit Wikipedia verknüpft", + "pt": "Não vinculado à Wikipédia" } } ], From feb684d9e5c269f67ebc2aec55168bfaba69caac Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 21:49:25 +0200 Subject: [PATCH 21/30] Translation regeneration --- langs/layers/de.json | 590 ++++++++++++++++----------------- langs/shared-questions/de.json | 2 +- langs/shared-questions/pt.json | 22 +- langs/themes/de.json | 138 ++++---- 4 files changed, 376 insertions(+), 376 deletions(-) diff --git a/langs/layers/de.json b/langs/layers/de.json index 8c995a73c..73735975b 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -948,11 +948,11 @@ "0": { "question": "Alle Anschlüsse" }, - "7": { - "question": "Hat einen
Tesla Supercharger
Stecker" - }, "3": { "question": "Hat einen
Chademo
Stecker" + }, + "7": { + "question": "Hat einen
Tesla Supercharger
Stecker" } } } @@ -1153,31 +1153,27 @@ "question": "Wie viele Fahrzeuge können hier gleichzeitig geladen werden?", "render": "{capacity} Fahrzeuge können hier gleichzeitig geladen werden" }, + "email": { + "question": "Wie ist die Email-Adresse des Betreibers?", + "render": "Bei Problemen senden Sie eine E-Mail an {email}" + }, "fee/charge": { "mappings": { "0": { "then": "Nutzung kostenlos" } }, - "render": "Die Nutzung dieser Ladestation kostet {charge}", - "question": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?" + "question": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?", + "render": "Die Nutzung dieser Ladestation kostet {charge}" }, "maxstay": { - "render": "Die maximale Parkzeit beträgt {canonical(maxstay)}", - "question": "Was ist die Höchstdauer des Aufenthalts hier?", "mappings": { "0": { "then": "Keine Höchstparkdauer" } - } - }, - "ref": { - "render": "Die Kennziffer ist {ref}", - "question": "Wie lautet die Kennung dieser Ladestation?" - }, - "website": { - "render": "Weitere Informationen auf {website}", - "question": "Wie ist die Webseite des Betreibers?" + }, + "question": "Was ist die Höchstdauer des Aufenthalts hier?", + "render": "Die maximale Parkzeit beträgt {canonical(maxstay)}" }, "payment-options": { "override": { @@ -1191,13 +1187,17 @@ } } }, - "email": { - "question": "Wie ist die Email-Adresse des Betreibers?", - "render": "Bei Problemen senden Sie eine E-Mail an {email}" - }, "phone": { - "render": "Bei Problemen, anrufen unter {phone}", - "question": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?" + "question": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?", + "render": "Bei Problemen, anrufen unter {phone}" + }, + "ref": { + "question": "Wie lautet die Kennung dieser Ladestation?", + "render": "Die Kennziffer ist {ref}" + }, + "website": { + "question": "Wie ist die Webseite des Betreibers?", + "render": "Weitere Informationen auf {website}" } }, "title": { @@ -1264,41 +1264,13 @@ }, "question": "Können Radfahrer diese Kreuzung nutzen?" }, - "crossing-is-zebra": { + "crossing-button": { "mappings": { - "0": { - "then": "Dies ist ein Zebrastreifen" - }, "1": { - "then": "Dies ist kein Zebrastreifen" + "then": "Diese Ampel hat keine Taste, um ein grünes Signal anzufordern." } }, - "question": "Ist das ein Zebrastreifen?" - }, - "crossing-tactile": { - "mappings": { - "0": { - "then": "An dieser Kreuzung gibt es ein Blindenleitsystem" - }, - "1": { - "then": "Diese Kreuzung hat kein Blindenleitsystem" - } - }, - "question": "Gibt es an dieser Kreuzung ein Blindenleitsystem?" - }, - "crossing-type": { - "mappings": { - "0": { - "then": "Kreuzungen ohne Ampeln" - }, - "1": { - "then": "Kreuzungen mit Ampeln" - }, - "2": { - "then": "Zebrastreifen" - } - }, - "question": "Was ist das für eine Kreuzung?" + "question": "Hat diese Ampel eine Taste, um ein grünes Signal anzufordern?" }, "crossing-continue-through-red": { "mappings": { @@ -1325,27 +1297,55 @@ }, "question": "Gibt es an diesem Übergang eine Verkehrsinsel?" }, + "crossing-is-zebra": { + "mappings": { + "0": { + "then": "Dies ist ein Zebrastreifen" + }, + "1": { + "then": "Dies ist kein Zebrastreifen" + } + }, + "question": "Ist das ein Zebrastreifen?" + }, "crossing-right-turn-through-red": { "mappings": { + "0": { + "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " + }, "1": { "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen" }, "2": { "then": "Ein Radfahrer kann bei roter Ampel nicht rechts abbiegen" - }, - "0": { - "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " } }, "question": "Kann ein Radfahrer bei roter Ampel rechts abbiegen?" }, - "crossing-button": { - "question": "Hat diese Ampel eine Taste, um ein grünes Signal anzufordern?", + "crossing-tactile": { "mappings": { + "0": { + "then": "An dieser Kreuzung gibt es ein Blindenleitsystem" + }, "1": { - "then": "Diese Ampel hat keine Taste, um ein grünes Signal anzufordern." + "then": "Diese Kreuzung hat kein Blindenleitsystem" } - } + }, + "question": "Gibt es an dieser Kreuzung ein Blindenleitsystem?" + }, + "crossing-type": { + "mappings": { + "0": { + "then": "Kreuzungen ohne Ampeln" + }, + "1": { + "then": "Kreuzungen mit Ampeln" + }, + "2": { + "then": "Zebrastreifen" + } + }, + "question": "Was ist das für eine Kreuzung?" } }, "title": { @@ -1365,6 +1365,15 @@ "tagRenderings": { "Cycleway type for a road": { "mappings": { + "0": { + "then": "Es gibt eine geteilte Fahrspur" + }, + "1": { + "then": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" + }, + "2": { + "then": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." + }, "3": { "then": "Hier ist ein getrennter Radweg vorhanden" }, @@ -1373,15 +1382,6 @@ }, "5": { "then": "Es gibt keinen Radweg" - }, - "2": { - "then": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." - }, - "1": { - "then": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" - }, - "0": { - "then": "Es gibt eine geteilte Fahrspur" } }, "question": "Was für ein Radweg ist hier?" @@ -1394,23 +1394,23 @@ "1": { "then": "Geeignet für dünne Reifen: Rennrad" }, - "6": { - "then": "Geeignet für Geländefahrzeuge: Traktor, ATV" - }, - "7": { - "then": "Unpassierbar / Keine bereiften Fahrzeuge" - }, "2": { "then": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter" }, "3": { "then": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha" }, + "4": { + "then": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + }, "5": { "then": "Geeignet für Geländefahrzeuge: schwerer Geländewagen" }, - "4": { - "then": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + "6": { + "then": "Geeignet für Geländefahrzeuge: Traktor, ATV" + }, + "7": { + "then": "Unpassierbar / Keine bereiften Fahrzeuge" } }, "question": "Wie eben ist dieser Radweg?" @@ -1426,9 +1426,21 @@ "2": { "then": "Der Radweg ist aus Asphalt" }, + "3": { + "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" + }, "4": { "then": "Der Radweg ist aus Beton" }, + "5": { + "then": "Dieser Radweg besteht aus Kopfsteinpflaster" + }, + "6": { + "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" + }, + "7": { + "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + }, "8": { "then": "Der Radweg ist aus Holz" }, @@ -1443,33 +1455,21 @@ }, "12": { "then": "Dieser Radweg besteht aus Rohboden" - }, - "5": { - "then": "Dieser Radweg besteht aus Kopfsteinpflaster" - }, - "3": { - "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" - }, - "7": { - "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" - }, - "6": { - "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" } }, - "render": "Der Radweg ist aus {cycleway:surface}", - "question": "Was ist der Belag dieses Radwegs?" + "question": "Was ist der Belag dieses Radwegs?", + "render": "Der Radweg ist aus {cycleway:surface}" }, "Is this a cyclestreet? (For a road)": { "mappings": { + "0": { + "then": "Dies ist eine Fahrradstraße in einer 30km/h Zone." + }, "1": { "then": "Dies ist eine Fahrradstraße" }, "2": { "then": "Dies ist keine Fahrradstraße." - }, - "0": { - "then": "Dies ist eine Fahrradstraße in einer 30km/h Zone." } }, "question": "Ist das eine Fahrradstraße" @@ -1492,20 +1492,35 @@ "then": "Die Höchstgeschwindigkeit ist 90 km/h" } }, - "render": "Die Höchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h", - "question": "Was ist die Höchstgeschwindigkeit auf dieser Straße?" + "question": "Was ist die Höchstgeschwindigkeit auf dieser Straße?", + "render": "Die Höchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h" }, "Surface of the road": { "mappings": { + "0": { + "then": "Dieser Radweg ist nicht befestigt" + }, "1": { "then": "Dieser Radweg hat einen festen Belag" }, "2": { "then": "Der Radweg ist aus Asphalt" }, + "3": { + "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" + }, "4": { "then": "Der Radweg ist aus Beton" }, + "5": { + "then": "Dieser Radweg besteht aus Kopfsteinpflaster" + }, + "6": { + "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" + }, + "7": { + "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + }, "8": { "then": "Der Radweg ist aus Holz" }, @@ -1520,25 +1535,10 @@ }, "12": { "then": "Dieser Radweg besteht aus Rohboden" - }, - "3": { - "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" - }, - "0": { - "then": "Dieser Radweg ist nicht befestigt" - }, - "6": { - "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" - }, - "7": { - "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" - }, - "5": { - "then": "Dieser Radweg besteht aus Kopfsteinpflaster" } }, - "render": "Der Radweg ist aus {surface}", - "question": "Was ist der Belag dieser Straße?" + "question": "Was ist der Belag dieser Straße?", + "render": "Der Radweg ist aus {surface}" }, "Surface of the street": { "mappings": { @@ -1548,32 +1548,29 @@ "1": { "then": "Geeignet für dünne Reifen: Rennrad" }, - "6": { - "then": "Geeignet für spezielle Geländewagen: Traktor, ATV" - }, - "7": { - "then": "Unpassierbar / Keine bereiften Fahrzeuge" - }, - "4": { - "then": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" - }, "2": { "then": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter" }, "3": { "then": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha" }, + "4": { + "then": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + }, "5": { "then": "Geeignet für Geländefahrzeuge: schwerer Geländewagen" + }, + "6": { + "then": "Geeignet für spezielle Geländewagen: Traktor, ATV" + }, + "7": { + "then": "Unpassierbar / Keine bereiften Fahrzeuge" } }, "question": "Wie eben ist diese Straße?" }, "cyclelan-segregation": { "mappings": { - "3": { - "then": "Dieser Radweg ist getrennt durch einen Bordstein" - }, "0": { "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" }, @@ -1582,6 +1579,9 @@ }, "2": { "then": "Der Radweg ist abgegrenzt durch eine Parkspur" + }, + "3": { + "then": "Dieser Radweg ist getrennt durch einen Bordstein" } }, "question": "Wie ist der Radweg von der Straße abgegrenzt?" @@ -1591,6 +1591,9 @@ "0": { "then": "Vorgeschriebener Radweg " }, + "1": { + "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" + }, "2": { "then": "Getrennter Fuß-/Radweg " }, @@ -1599,18 +1602,12 @@ }, "4": { "then": "Kein Verkehrsschild vorhanden" - }, - "1": { - "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" } }, "question": "Welches Verkehrszeichen hat dieser Radweg?" }, "cycleway-segregation": { "mappings": { - "3": { - "then": "Dieser Radweg ist getrennt durch einen Bordstein" - }, "0": { "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" }, @@ -1619,6 +1616,9 @@ }, "2": { "then": "Der Radweg ist abgegrenzt durch eine Parkspur" + }, + "3": { + "then": "Dieser Radweg ist getrennt durch einen Bordstein" } }, "question": "Wie ist der Radweg von der Straße abgegrenzt?" @@ -1628,6 +1628,9 @@ "0": { "then": "Vorgeschriebener Radweg " }, + "1": { + "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" + }, "2": { "then": "Getrennter Fuß-/Radweg " }, @@ -1636,9 +1639,6 @@ }, "4": { "then": "Kein Verkehrsschild vorhanden" - }, - "1": { - "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" } }, "question": "Welches Verkehrszeichen hat dieser Radweg?" @@ -1660,8 +1660,15 @@ } } }, + "cycleways_and_roads-cycleway:buffer": { + "question": "Wie breit ist der Abstand zwischen Radweg und Straße?", + "render": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" + }, "is lit?": { "mappings": { + "0": { + "then": "Diese Straße ist beleuchtet" + }, "1": { "then": "Diese Straße ist nicht beleuchtet" }, @@ -1670,16 +1677,9 @@ }, "3": { "then": "Diese Straße ist durchgehend beleuchtet" - }, - "0": { - "then": "Diese Straße ist beleuchtet" } }, "question": "Ist diese Straße beleuchtet?" - }, - "cycleways_and_roads-cycleway:buffer": { - "question": "Wie breit ist der Abstand zwischen Radweg und Straße?", - "render": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" } }, "title": { @@ -1745,8 +1745,8 @@ "then": "Dies ist ein normaler automatischer Defibrillator" } }, - "render": "Es gibt keine Informationen über den Gerätetyp", - "question": "Ist dies ein normaler automatischer Defibrillator oder ein manueller Defibrillator nur für Profis?" + "question": "Ist dies ein normaler automatischer Defibrillator oder ein manueller Defibrillator nur für Profis?", + "render": "Es gibt keine Informationen über den Gerätetyp" }, "defibrillator-defibrillator:location": { "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)", @@ -1851,14 +1851,14 @@ }, "Still in use?": { "mappings": { + "0": { + "then": "Diese Trinkwasserstelle funktioniert" + }, "1": { "then": "Diese Trinkwasserstelle ist kaputt" }, "2": { "then": "Diese Trinkwasserstelle wurde geschlossen" - }, - "0": { - "then": "Diese Trinkwasserstelle funktioniert" } }, "question": "Ist diese Trinkwasserstelle noch in Betrieb?", @@ -1876,13 +1876,13 @@ "description": "Alle Objekte, die eine bekannte Namensherkunft haben", "tagRenderings": { "simple etymology": { - "render": "Benannt nach {name:etymology}", - "question": "Wonach ist dieses Objekt benannt?
Das könnte auf einem Straßenschild stehen", "mappings": { "0": { "then": "Der Ursprung dieses Namens ist in der gesamten Literatur unbekannt" } - } + }, + "question": "Wonach ist dieses Objekt benannt?
Das könnte auf einem Straßenschild stehen", + "render": "Benannt nach {name:etymology}" }, "wikipedia-etymology": { "question": "Was ist das Wikidata-Element, nach dem dieses Objekt benannt ist?", @@ -1899,6 +1899,13 @@ } } }, + "1": { + "options": { + "0": { + "question": "Hat vegetarische Speisen" + } + } + }, "2": { "options": { "0": { @@ -1912,19 +1919,13 @@ "question": "Hat halal Speisen" } } - }, - "1": { - "options": { - "0": { - "question": "Hat vegetarische Speisen" - } - } } }, + "name": "Restaurants und Fast Food", "presets": { "0": { - "title": "Restaurant", - "description": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden" + "description": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden", + "title": "Restaurant" }, "1": { "title": "Schnellimbiss" @@ -1936,14 +1937,14 @@ "tagRenderings": { "Cuisine": { "mappings": { - "2": { - "then": "Bietet vorwiegend Pastagerichte an" - }, "0": { "then": "Dies ist eine Pizzeria" }, "1": { "then": "Dies ist eine Pommesbude" + }, + "2": { + "then": "Bietet vorwiegend Pastagerichte an" } }, "question": "Welches Essen gibt es hier?", @@ -1970,6 +1971,17 @@ }, "question": "Ist an diesem Ort Mitnahme möglich?" }, + "Vegetarian (no friture)": { + "question": "Gibt es im das Restaurant vegetarische Speisen?" + }, + "friture-take-your-container": { + "mappings": { + "0": { + "then": "Sie können ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" + } + }, + "question": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine Töpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" + }, "halal (no friture)": { "mappings": { "0": { @@ -1986,17 +1998,6 @@ } }, "question": "Gibt es im das Restaurant halal Speisen?" - }, - "Vegetarian (no friture)": { - "question": "Gibt es im das Restaurant vegetarische Speisen?" - }, - "friture-take-your-container": { - "mappings": { - "0": { - "then": "Sie können ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" - } - }, - "question": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine Töpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" } }, "title": { @@ -2008,8 +2009,7 @@ "then": "Schnellrestaurant{name}" } } - }, - "name": "Restaurants und Fast Food" + } }, "ghost_bike": { "name": "Geisterräder", @@ -2110,6 +2110,9 @@ }, "nature_reserve": { "tagRenderings": { + "Curator": { + "question": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist" + }, "Dogs?": { "mappings": { "0": { @@ -2127,17 +2130,14 @@ "Email": { "render": "{email}" }, + "Surface area": { + "render": "Grundfläche: {_surface:ha}ha" + }, "Website": { "question": "Auf welcher Webseite kann man mehr Informationen über dieses Naturschutzgebiet finden?" }, "phone": { "render": "{phone}" - }, - "Curator": { - "question": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist" - }, - "Surface area": { - "render": "Grundfläche: {_surface:ha}ha" } } }, @@ -2156,8 +2156,8 @@ "then": "Eintritt kostenlos" } }, - "render": "Der Besuch des Turms kostet {charge}", - "question": "Was kostet der Zugang zu diesem Turm?" + "question": "Was kostet der Zugang zu diesem Turm?", + "render": "Der Besuch des Turms kostet {charge}" }, "Height": { "question": "Wie hoch ist dieser Turm?", @@ -2280,12 +2280,12 @@ "question": "Ist dieser Spielplatz nachts beleuchtet?" }, "playground-max_age": { - "render": "Zugang nur für Kinder bis maximal {max_age}", - "question": "Bis zu welchem Alter dürfen Kinder auf diesem Spielplatz spielen?" + "question": "Bis zu welchem Alter dürfen Kinder auf diesem Spielplatz spielen?", + "render": "Zugang nur für Kinder bis maximal {max_age}" }, "playground-min_age": { - "render": "Zugang nur für Kinder ab {min_age} Jahren", - "question": "Ab welchem Alter dürfen Kinder auf diesem Spielplatz spielen?" + "question": "Ab welchem Alter dürfen Kinder auf diesem Spielplatz spielen?", + "render": "Zugang nur für Kinder ab {min_age} Jahren" }, "playground-opening_hours": { "mappings": { @@ -2306,8 +2306,8 @@ "render": "Betrieben von {operator}" }, "playground-phone": { - "render": "{phone}", - "question": "Wie lautet die Telefonnummer vom Betreiber des Spielplatzes?" + "question": "Wie lautet die Telefonnummer vom Betreiber des Spielplatzes?", + "render": "{phone}" }, "playground-surface": { "mappings": { @@ -2463,6 +2463,8 @@ } }, "shops": { + "description": "Ein Geschäft", + "name": "Geschäft", "presets": { "0": { "description": "Ein neues Geschäft hinzufügen", @@ -2470,9 +2472,18 @@ } }, "tagRenderings": { + "shops-email": { + "question": "Wie ist die Email-Adresse dieses Geschäfts?" + }, + "shops-name": { + "question": "Wie ist der Name dieses Geschäfts?" + }, + "shops-opening_hours": { + "question": "Wie sind die Öffnungszeiten dieses Geschäfts?" + }, "shops-phone": { - "render": "{phone}", - "question": "Wie ist die Telefonnummer?" + "question": "Wie ist die Telefonnummer?", + "render": "{phone}" }, "shops-shop": { "mappings": { @@ -2504,15 +2515,6 @@ "shops-website": { "question": "Wie lautet die Webseite dieses Geschäfts?", "render": "{website}" - }, - "shops-opening_hours": { - "question": "Wie sind die Öffnungszeiten dieses Geschäfts?" - }, - "shops-email": { - "question": "Wie ist die Email-Adresse dieses Geschäfts?" - }, - "shops-name": { - "question": "Wie ist der Name dieses Geschäfts?" } }, "title": { @@ -2525,9 +2527,7 @@ } }, "render": "Geschäft" - }, - "name": "Geschäft", - "description": "Ein Geschäft" + } }, "slow_roads": { "tagRenderings": { @@ -2579,23 +2579,20 @@ "0": { "then": "Öffentlicher Zugang" }, + "1": { + "then": "Eingeschränkter Zugang (z. B. nur mit Termin, zu bestimmten Zeiten, ...)" + }, "2": { "then": "Zugang nur für Vereinsmitglieder" }, "3": { "then": "Privat - kein öffentlicher Zugang" - }, - "1": { - "then": "Eingeschränkter Zugang (z. B. nur mit Termin, zu bestimmten Zeiten, ...)" } }, "question": "Ist dieser Sportplatz öffentlich zugänglich?" }, "sport-pitch-reservation": { "mappings": { - "3": { - "then": "Termine nach Vereinbarung nicht möglich" - }, "0": { "then": "Für die Nutzung des Sportplatzes ist eine Voranmeldung erforderlich" }, @@ -2604,10 +2601,16 @@ }, "2": { "then": "Eine Voranmeldung ist möglich, aber nicht notwendig, um diesen Sportplatz zu nutzen" + }, + "3": { + "then": "Termine nach Vereinbarung nicht möglich" } }, "question": "Muss man einen Termin vereinbaren, um diesen Sportplatz zu benutzen?" }, + "sport_pitch-email": { + "question": "Wie ist die Email-Adresse des Betreibers?" + }, "sport_pitch-opening_hours": { "mappings": { "1": { @@ -2616,6 +2619,9 @@ }, "question": "Wann ist dieser Sportplatz zugänglich?" }, + "sport_pitch-phone": { + "question": "Wie ist die Telefonnummer des Betreibers?" + }, "sport_pitch-sport": { "mappings": { "0": { @@ -2658,14 +2664,8 @@ "then": "Die Oberfläche ist Beton" } }, - "render": "Die Oberfläche ist {surface}", - "question": "Was ist die Oberfläche dieses Sportplatzes?" - }, - "sport_pitch-email": { - "question": "Wie ist die Email-Adresse des Betreibers?" - }, - "sport_pitch-phone": { - "question": "Wie ist die Telefonnummer des Betreibers?" + "question": "Was ist die Oberfläche dieses Sportplatzes?", + "render": "Die Oberfläche ist {surface}" } }, "title": { @@ -2711,6 +2711,17 @@ "question": "Wer betreibt diese CCTV Kamera?", "render": "Betrieben von {operator}" }, + "Surveillance type: public, outdoor, indoor": { + "mappings": { + "1": { + "then": "Ein privater Außenbereich wird überwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" + }, + "2": { + "then": "Ein privater Innenbereich wird überwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." + } + }, + "question": "Um was für eine Überwachungskamera handelt es sich" + }, "Surveillance:zone": { "mappings": { "0": { @@ -2736,8 +2747,6 @@ "render": " Überwacht ein/e {surveillance:zone}" }, "camera:mount": { - "question": "Wie ist diese Kamera montiert?", - "render": "Montageart: {mount}", "mappings": { "0": { "then": "Diese Kamera ist an einer Wand montiert" @@ -2748,18 +2757,9 @@ "2": { "then": "Diese Kamera ist an der Decke montiert" } - } - }, - "Surveillance type: public, outdoor, indoor": { - "question": "Um was für eine Überwachungskamera handelt es sich", - "mappings": { - "2": { - "then": "Ein privater Innenbereich wird überwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." - }, - "1": { - "then": "Ein privater Außenbereich wird überwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" - } - } + }, + "question": "Wie ist diese Kamera montiert?", + "render": "Montageart: {mount}" }, "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { "question": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?" @@ -2848,6 +2848,25 @@ "question": "Wie viel muss man für diese Toiletten bezahlen?", "render": "Die Gebühr beträgt {charge}" }, + "toilet-handwashing": { + "mappings": { + "0": { + "then": "Diese Toilette verfügt über ein Waschbecken" + }, + "1": { + "then": "Diese Toilette verfügt über kein Waschbecken" + } + }, + "question": "Verfügt diese Toilette über ein Waschbecken?" + }, + "toilet-has-paper": { + "mappings": { + "1": { + "then": "Für diese Toilette müssen Sie Ihr eigenes Toilettenpapier mitbringen" + } + }, + "question": "Muss man für diese Toilette sein eigenes Toilettenpapier mitbringen?" + }, "toilets-changing-table": { "mappings": { "0": { @@ -2897,25 +2916,6 @@ } }, "question": "Gibt es eine Toilette für Rollstuhlfahrer?" - }, - "toilet-has-paper": { - "question": "Muss man für diese Toilette sein eigenes Toilettenpapier mitbringen?", - "mappings": { - "1": { - "then": "Für diese Toilette müssen Sie Ihr eigenes Toilettenpapier mitbringen" - } - } - }, - "toilet-handwashing": { - "question": "Verfügt diese Toilette über ein Waschbecken?", - "mappings": { - "0": { - "then": "Diese Toilette verfügt über ein Waschbecken" - }, - "1": { - "then": "Diese Toilette verfügt über kein Waschbecken" - } - } } }, "title": { @@ -2968,15 +2968,38 @@ "tagRenderings": { "tree-decidouous": { "mappings": { - "1": { - "then": "immergrüner Baum." - }, "0": { "then": "Laubabwerfend: Der Baum verliert für eine gewisse Zeit des Jahres seine Blätter." + }, + "1": { + "then": "immergrüner Baum." } }, "question": "Ist dies ein Nadelbaum oder ein Laubbaum?" }, + "tree-denotation": { + "mappings": { + "0": { + "then": "Der Baum ist aufgrund seiner Größe oder seiner markanten Lage bedeutsam. Er ist nützlich zur Orientierung." + }, + "1": { + "then": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehört." + }, + "2": { + "then": "Der Baum wird für landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." + }, + "3": { + "then": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." + }, + "5": { + "then": "Dieser Baum steht entlang einer Straße." + }, + "7": { + "then": "Dieser Baum steht außerhalb eines städtischen Gebiets." + } + }, + "question": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." + }, "tree-height": { "mappings": { "0": { @@ -2987,14 +3010,14 @@ }, "tree-heritage": { "mappings": { - "3": { - "then": "Nicht als Denkmal registriert" - }, "0": { "then": "\"\"/ Als Denkmal registriert von der Onroerend Erfgoed Flandern" }, "1": { "then": "Als Denkmal registriert von der Direction du Patrimoine culturel Brüssel" + }, + "3": { + "then": "Nicht als Denkmal registriert" } }, "question": "Ist dieser Baum ein Naturdenkmal?" @@ -3027,29 +3050,6 @@ }, "tree_node-wikidata": { "question": "Was ist das passende Wikidata Element zu diesem Baum?" - }, - "tree-denotation": { - "mappings": { - "5": { - "then": "Dieser Baum steht entlang einer Straße." - }, - "7": { - "then": "Dieser Baum steht außerhalb eines städtischen Gebiets." - }, - "2": { - "then": "Der Baum wird für landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." - }, - "3": { - "then": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." - }, - "0": { - "then": "Der Baum ist aufgrund seiner Größe oder seiner markanten Lage bedeutsam. Er ist nützlich zur Orientierung." - }, - "1": { - "then": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehört." - } - }, - "question": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." } }, "title": { @@ -3079,6 +3079,7 @@ } }, "visitor_information_centre": { + "description": "Ein Besucherzentrum bietet Informationen über eine bestimmte Attraktion oder Sehenswürdigkeit, an der es sich befindet.", "name": "Besucherinformationszentrum", "title": { "mappings": { @@ -3087,8 +3088,7 @@ } }, "render": "{name}" - }, - "description": "Ein Besucherzentrum bietet Informationen über eine bestimmte Attraktion oder Sehenswürdigkeit, an der es sich befindet." + } }, "waste_basket": { "description": "Dies ist ein öffentlicher Abfalleimer, in den Sie Ihren Müll entsorgen können.", @@ -3106,6 +3106,20 @@ } }, "tagRenderings": { + "dispensing_dog_bags": { + "mappings": { + "0": { + "then": "Dieser Abfalleimer verfügt über einen Spender für (Hunde-)Kotbeutel" + }, + "1": { + "then": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" + }, + "2": { + "then": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" + } + }, + "question": "Verfügt dieser Abfalleimer über einen Spender für (Hunde-)Kotbeutel?" + }, "waste-basket-waste-types": { "mappings": { "0": { @@ -3125,20 +3139,6 @@ } }, "question": "Um was für einen Abfalleimer handelt es sich?" - }, - "dispensing_dog_bags": { - "question": "Verfügt dieser Abfalleimer über einen Spender für (Hunde-)Kotbeutel?", - "mappings": { - "1": { - "then": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" - }, - "2": { - "then": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" - }, - "0": { - "then": "Dieser Abfalleimer verfügt über einen Spender für (Hunde-)Kotbeutel" - } - } } }, "title": { @@ -3148,4 +3148,4 @@ "watermill": { "name": "Wassermühle" } -} +} \ No newline at end of file diff --git a/langs/shared-questions/de.json b/langs/shared-questions/de.json index cc6df974b..24b5582b6 100644 --- a/langs/shared-questions/de.json +++ b/langs/shared-questions/de.json @@ -96,4 +96,4 @@ "question": "Was ist der entsprechende Artikel auf Wikipedia?" } } -} +} \ No newline at end of file diff --git a/langs/shared-questions/pt.json b/langs/shared-questions/pt.json index 2afb0b221..b1f25a435 100644 --- a/langs/shared-questions/pt.json +++ b/langs/shared-questions/pt.json @@ -79,21 +79,21 @@ }, "question": "Este lugar é acessível a utilizadores de cadeiras de rodas?" }, - "wikipedialink": { - "question": "Qual é o item correspondente na Wikipédia?", - "mappings": { - "0": { - "then": "Não vinculado à Wikipédia" - } - } - }, "wikipedia": { - "question": "Qual é a entidade Wikidata correspondente?", "mappings": { "0": { "then": "Ainda não foi vinculada nenhuma página da Wikipédia" } - } + }, + "question": "Qual é a entidade Wikidata correspondente?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Não vinculado à Wikipédia" + } + }, + "question": "Qual é o item correspondente na Wikipédia?" } } -} +} \ No newline at end of file diff --git a/langs/themes/de.json b/langs/themes/de.json index 105fdb9fc..e01564288 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -318,6 +318,18 @@ } }, "tagRenderings": { + "Bolts": { + "mappings": { + "0": { + "then": "Auf dieser Kletterroute sind keine Haken vorhanden" + }, + "1": { + "then": "Auf dieser Kletterroute sind keine Haken vorhanden" + } + }, + "question": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?", + "render": "Diese Kletterroute hat {climbing:bolts} Haken" + }, "Difficulty": { "question": "Wie hoch ist der Schwierigkeitsgrad dieser Kletterroute nach dem französisch/belgischen System?", "render": "Die Schwierigkeit ist {climbing:grade:french} entsprechend des französisch/belgischen Systems" @@ -334,18 +346,6 @@ }, "question": "Wie heißt diese Kletterroute?", "render": "{name}" - }, - "Bolts": { - "render": "Diese Kletterroute hat {climbing:bolts} Haken", - "question": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?", - "mappings": { - "1": { - "then": "Auf dieser Kletterroute sind keine Haken vorhanden" - }, - "0": { - "then": "Auf dieser Kletterroute sind keine Haken vorhanden" - } - } } }, "title": { @@ -646,8 +646,6 @@ }, "etymology": { "description": "Auf dieser Karte können Sie sehen, wonach ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknüpft wurde. In dem Popup sehen Sie den Wikipedia-Artikel (falls vorhanden) oder ein Wikidata-Feld, nach dem das Objekt benannt ist. Wenn das Objekt selbst eine Wikipedia-Seite hat, wird auch diese angezeigt.

Sie können auch einen Beitrag leisten!Zoomen Sie genug hinein und alle Straßen werden angezeigt. Wenn Sie auf eine Straße klicken, öffnet sich ein Wikidata-Suchfeld. Mit ein paar Klicks können Sie einen Etymologie-Link hinzufügen. Beachten Sie, dass Sie dazu ein kostenloses OpenStreetMap-Konto benötigen.", - "shortDescription": "Was ist der Ursprung eines Ortsnamens?", - "title": "Open Etymology Map", "layers": { "1": { "override": { @@ -659,7 +657,9 @@ "name": "Parks und Waldflächen ohne Informationen zur Namensherkunft" } } - } + }, + "shortDescription": "Was ist der Ursprung eines Ortsnamens?", + "title": "Open Etymology Map" }, "facadegardens": { "layers": { @@ -963,10 +963,31 @@ } } }, + "maps": { + "title": "Eine Karte der Karten" + }, + "natuurpunt": { + "shortDescription": "Diese Karte zeigt Naturschutzgebiete des flämischen Naturverbands Natuurpunt", + "title": "Naturschutzgebiete" + }, + "observation_towers": { + "description": "Öffentlich zugänglicher Aussichtsturm", + "shortDescription": "Öffentlich zugänglicher Aussichtsturm", + "title": "Aussichtstürme" + }, "openwindpowermap": { "description": "Eine Karte zum Anzeigen und Bearbeiten von Windkraftanlagen.", "layers": { "0": { + "name": "Windrad", + "presets": { + "0": { + "title": "Windrad" + } + }, + "title": { + "render": "Windrad" + }, "units": { "0": { "applicableUnits": { @@ -991,40 +1012,40 @@ } } } - }, - "title": { - "render": "Windrad" - }, - "name": "Windrad", - "presets": { - "0": { - "title": "Windrad" - } } } }, "title": "OpenWindPowerMap" }, + "parkings": { + "description": "Diese Karte zeigt Parkplätze", + "shortDescription": "Diese Karte zeigt Parkplätze", + "title": "Parken" + }, "personal": { "description": "Erstellen Sie ein persönliches Thema auf der Grundlage aller verfügbaren Ebenen aller Themen", "title": "Persönliches Thema" }, + "playgrounds": { + "shortDescription": "Eine Karte mit Spielplätzen", + "title": "Spielpläzte" + }, "postboxes": { "layers": { - "1": { - "description": "Eine Ebene mit Postämtern.", - "tagRenderings": { - "OH": { - "mappings": { - "0": { - "then": "durchgehend geöffnet (auch an Feiertagen)" - } - } + "0": { + "description": "Die Ebene zeigt Briefkästen.", + "name": "Brieflästen", + "presets": { + "0": { + "title": "Briefkasten" } }, "title": { - "render": "Poststelle" - }, + "render": "Briefkasten" + } + }, + "1": { + "description": "Eine Ebene mit Postämtern.", "filter": { "0": { "options": { @@ -1039,19 +1060,19 @@ "0": { "title": "Poststelle" } - } - }, - "0": { - "name": "Brieflästen", - "presets": { - "0": { - "title": "Briefkasten" + }, + "tagRenderings": { + "OH": { + "mappings": { + "0": { + "then": "durchgehend geöffnet (auch an Feiertagen)" + } + } } }, "title": { - "render": "Briefkasten" - }, - "description": "Die Ebene zeigt Briefkästen." + "render": "Poststelle" + } } }, "shortDescription": "Eine Karte die Briefkästen und Poststellen anzeigt", @@ -1110,37 +1131,16 @@ } }, "shortDescription": "Helfen Sie beim Aufbau eines offenen Datensatzes britischer Adressen", - "title": "Adressen in Großbritannien", "tileLayerSources": { "0": { "name": "Grenzverläufe gemäß osmuk.org" } - } + }, + "title": "Adressen in Großbritannien" }, "waste_basket": { "description": "Auf dieser Karte finden Sie Abfalleimer in Ihrer Nähe. Wenn ein Abfalleimer auf dieser Karte fehlt, können Sie ihn selbst hinzufügen", "shortDescription": "Eine Karte mit Abfalleimern", "title": "Abfalleimer" - }, - "maps": { - "title": "Eine Karte der Karten" - }, - "playgrounds": { - "title": "Spielpläzte", - "shortDescription": "Eine Karte mit Spielplätzen" - }, - "parkings": { - "title": "Parken", - "shortDescription": "Diese Karte zeigt Parkplätze", - "description": "Diese Karte zeigt Parkplätze" - }, - "natuurpunt": { - "title": "Naturschutzgebiete", - "shortDescription": "Diese Karte zeigt Naturschutzgebiete des flämischen Naturverbands Natuurpunt" - }, - "observation_towers": { - "title": "Aussichtstürme", - "description": "Öffentlich zugänglicher Aussichtsturm", - "shortDescription": "Öffentlich zugänglicher Aussichtsturm" } -} +} \ No newline at end of file From 9dc8404c438e0abdd0c2ebccf1e0a472115864b1 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 21:50:38 +0200 Subject: [PATCH 22/30] No more need to add '.clone()' for compiled translations, removed a bunch of 'clones' --- UI/BigComponents/FilterView.ts | 24 ++++++---------- UI/BigComponents/FullWelcomePaneWithTabs.ts | 6 ++-- UI/BigComponents/MoreScreen.ts | 7 ++--- UI/Popup/FeatureInfoBox.ts | 4 +-- UI/Popup/MoveWizard.ts | 32 ++++++++++----------- UI/Popup/TagRenderingQuestion.ts | 18 ++++++++---- UI/i18n/Translations.ts | 10 ++----- scripts/generateTranslations.ts | 16 +++++++---- 8 files changed, 56 insertions(+), 61 deletions(-) diff --git a/UI/BigComponents/FilterView.ts b/UI/BigComponents/FilterView.ts index d8a46d517..71506c398 100644 --- a/UI/BigComponents/FilterView.ts +++ b/UI/BigComponents/FilterView.ts @@ -40,20 +40,16 @@ export default class FilterView extends VariableUiElement { const iconUnselected = new Combine([Svg.checkbox_empty]).SetStyle( iconStyle ); - const name: Translation = config.config.name.Clone(); + const name: Translation = config.config.name; - const styledNameChecked = name - .Clone() - .SetStyle("font-size:large;padding-left:1.25rem"); + const styledNameChecked = name.Clone().SetStyle("font-size:large;padding-left:1.25rem"); - const styledNameUnChecked = name - .Clone() - .SetStyle("font-size:large;padding-left:1.25rem"); + const styledNameUnChecked = name.Clone().SetStyle("font-size:large;padding-left:1.25rem"); const zoomStatus = new Toggle( undefined, - Translations.t.general.layerSelection.zoomInToSeeThisLayer.Clone() + Translations.t.general.layerSelection.zoomInToSeeThisLayer .SetClass("alert") .SetStyle("display: block ruby;width:min-content;"), State.state.locationControl.map(location => location.zoom >= config.config.minzoom) @@ -97,20 +93,16 @@ export default class FilterView extends VariableUiElement { const name: Translation = Translations.WT( filteredLayer.layerDef.name - )?.Clone(); + ); - const styledNameChecked = name - .Clone() - .SetStyle("font-size:large;padding-left:1.25rem"); + const styledNameChecked = name.Clone().SetStyle("font-size:large;padding-left:1.25rem"); - const styledNameUnChecked = name - .Clone() - .SetStyle("font-size:large;padding-left:1.25rem"); + const styledNameUnChecked = name.Clone().SetStyle("font-size:large;padding-left:1.25rem"); const zoomStatus = new Toggle( undefined, - Translations.t.general.layerSelection.zoomInToSeeThisLayer.Clone() + Translations.t.general.layerSelection.zoomInToSeeThisLayer .SetClass("alert") .SetStyle("display: block ruby;width:min-content;"), State.state.locationControl.map(location => location.zoom >= filteredLayer.layerDef.minzoom) diff --git a/UI/BigComponents/FullWelcomePaneWithTabs.ts b/UI/BigComponents/FullWelcomePaneWithTabs.ts index 10ab25de5..7e2b4d8fb 100644 --- a/UI/BigComponents/FullWelcomePaneWithTabs.ts +++ b/UI/BigComponents/FullWelcomePaneWithTabs.ts @@ -50,7 +50,7 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { {header: ``, content: welcome}, { header: Svg.osm_logo_img, - content: Translations.t.general.openStreetMapIntro.Clone().SetClass("link-underline") + content: Translations.t.general.openStreetMapIntro.SetClass("link-underline") }, ] @@ -64,7 +64,7 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { header: Svg.add_img, content: new Combine([ - Translations.t.general.morescreen.intro.Clone(), + Translations.t.general.morescreen.intro, new MoreScreen(state) ]).SetClass("flex flex-col") }); @@ -86,7 +86,7 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { tabsWithAboutMc.push({ header: Svg.help, - content: new Combine([Translations.t.general.aboutMapcomplete.Clone() + content: new Combine([Translations.t.general.aboutMapcomplete .Subs({"osmcha_link": Utils.OsmChaLinkFor(7)}), "
Version " + Constants.vNumber]) .SetClass("link-underline") } diff --git a/UI/BigComponents/MoreScreen.ts b/UI/BigComponents/MoreScreen.ts index c59766f28..84475d3be 100644 --- a/UI/BigComponents/MoreScreen.ts +++ b/UI/BigComponents/MoreScreen.ts @@ -6,8 +6,6 @@ import {SubtleButton} from "../Base/SubtleButton"; import Translations from "../i18n/Translations"; import * as personal from "../../assets/themes/personal/personal.json" import Constants from "../../Models/Constants"; -import LanguagePicker from "../LanguagePicker"; -import IndexText from "./IndexText"; import BaseUIElement from "../BaseUIElement"; import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; import {UIEventSource} from "../../Logic/UIEventSource"; @@ -201,14 +199,13 @@ export default class MoreScreen extends Combine { }) ?? new UIEventSource(`${linkPrefix}${linkSuffix}`) - let description = Translations.WT(layout.shortDescription).Clone(); return new SubtleButton(layout.icon, new Combine([ `
`, - Translations.WT(layout.title).Clone(), + Translations.WT(layout.title), `
`, `
`, - description.Clone().SetClass("subtle") ?? "", + Translations.WT(layout.shortDescription)?.SetClass("subtle") ?? "", `
`, ]), {url: linkText, newTab: false}); } diff --git a/UI/Popup/FeatureInfoBox.ts b/UI/Popup/FeatureInfoBox.ts index d1ba0db37..d46ebf711 100644 --- a/UI/Popup/FeatureInfoBox.ts +++ b/UI/Popup/FeatureInfoBox.ts @@ -73,7 +73,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen { editElements.push(questionBox); } - if(layerConfig.allowMove) { + if (layerConfig.allowMove) { editElements.push( new VariableUiElement(tags.map(tags => tags.id).map(id => { const feature = State.state.allElements.ContainingFeatures.get(id) @@ -149,8 +149,8 @@ export default class FeatureInfoBox extends ScrollableFullScreen { )) renderings.push(editors) - return new Combine(renderings).SetClass("block") + return new Combine(renderings).SetClass("block") } /** diff --git a/UI/Popup/MoveWizard.ts b/UI/Popup/MoveWizard.ts index 152dfcaba..19c8b957d 100644 --- a/UI/Popup/MoveWizard.ts +++ b/UI/Popup/MoveWizard.ts @@ -46,7 +46,7 @@ export default class MoveWizard extends Toggle { const t = Translations.t.move const loginButton = new Toggle( - t.loginToMove.Clone().SetClass("btn").onClick(() => state.osmConnection.AttemptLogin()), + t.loginToMove.SetClass("btn").onClick(() => state.osmConnection.AttemptLogin()), undefined, state.featureSwitchUserbadge ) @@ -54,8 +54,8 @@ export default class MoveWizard extends Toggle { const reasons: MoveReason[] = [] if (options.enableRelocation) { reasons.push({ - text: t.reasons.reasonRelocation.Clone(), - invitingText: t.inviteToMove.reasonRelocation.Clone(), + text: t.reasons.reasonRelocation, + invitingText: t.inviteToMove.reasonRelocation, icon: Svg.relocation_svg(), changesetCommentValue: "relocated", lockBounds: false, @@ -66,7 +66,7 @@ export default class MoveWizard extends Toggle { } if(options.enableImproveAccuracy){ reasons.push({ - text: t.reasons.reasonInaccurate.Clone(), + text: t.reasons.reasonInaccurate, invitingText: t.inviteToMove.reasonInaccurate, icon: Svg.crosshair_svg(), changesetCommentValue: "improve_accuracy", @@ -85,14 +85,14 @@ export default class MoveWizard extends Toggle { moveReason.setData(reason) moveButton = new SubtleButton( reason.icon.SetStyle("height: 1.5rem; width: auto;"), - Translations.WT(reason.invitingText).Clone() + Translations.WT(reason.invitingText) ).onClick(() => { currentStep.setData("pick_location") }) }else{ moveButton = new SubtleButton( Svg.move_ui().SetStyle("height: 1.5rem; width: auto"), - t.inviteToMove.generic.Clone() + t.inviteToMove.generic ).onClick(() => { currentStep.setData("reason") }) @@ -101,7 +101,7 @@ export default class MoveWizard extends Toggle { const moveAgainButton = new SubtleButton( Svg.move_ui(), - t.inviteToMoveAgain.Clone() + t.inviteToMoveAgain ).onClick(() => { currentStep.setData("reason") }) @@ -159,7 +159,7 @@ export default class MoveWizard extends Toggle { state.allElements.getEventSourceById(id).ping() currentStep.setData("moved") }) - const zoomInFurhter = t.zoomInFurther.Clone().SetClass("alert block m-6") + const zoomInFurhter = t.zoomInFurther.SetClass("alert block m-6") return new Combine([ locationInput, new Toggle(confirmMove, zoomInFurhter, locationInput.GetValue().map(l => l.zoom >= 19)) @@ -174,11 +174,11 @@ export default class MoveWizard extends Toggle { case "start": return moveButton; case "reason": - return new Combine([t.whyMove.Clone().SetClass("text-lg font-bold"), selectReason, cancelButton]).SetClass(dialogClasses); + return new Combine([t.whyMove.SetClass("text-lg font-bold"), selectReason, cancelButton]).SetClass(dialogClasses); case "pick_location": - return new Combine([t.moveTitle.Clone().SetClass("text-lg font-bold"), new VariableUiElement(locationInput), cancelButton]).SetClass(dialogClasses) + return new Combine([t.moveTitle.SetClass("text-lg font-bold"), new VariableUiElement(locationInput), cancelButton]).SetClass(dialogClasses) case "moved": - return new Combine([t.pointIsMoved.Clone().SetClass("thanks"), moveAgainButton]).SetClass("flex flex-col"); + return new Combine([t.pointIsMoved.SetClass("thanks"), moveAgainButton]).SetClass("flex flex-col"); } @@ -195,20 +195,20 @@ export default class MoveWizard extends Toggle { const moveDisallowedReason = new UIEventSource(undefined) if (id.startsWith("way")) { - moveDisallowedReason.setData(t.isWay.Clone()) + moveDisallowedReason.setData(t.isWay) } else if (id.startsWith("relation")) { - moveDisallowedReason.setData(t.isRelation.Clone()) + moveDisallowedReason.setData(t.isRelation) } else { OsmObject.DownloadReferencingWays(id).then(referencing => { if (referencing.length > 0) { console.log("Got a referencing way, move not allowed") - moveDisallowedReason.setData(t.partOfAWay.Clone()) + moveDisallowedReason.setData(t.partOfAWay) } }) OsmObject.DownloadReferencingRelations(id).then(partOf => { if(partOf.length > 0){ - moveDisallowedReason.setData(t.partOfRelation.Clone()) + moveDisallowedReason.setData(t.partOfRelation) } }) } @@ -216,7 +216,7 @@ export default class MoveWizard extends Toggle { moveFlow, new Combine([ Svg.move_not_allowed_svg().SetStyle("height: 2rem").SetClass("m-2"), - new Combine([t.cannotBeMoved.Clone(), + new Combine([t.cannotBeMoved, new VariableUiElement(moveDisallowedReason).SetClass("subtle") ]).SetClass("flex flex-col") ]).SetClass("flex m-2 p-2 rounded-lg bg-gray-200"), diff --git a/UI/Popup/TagRenderingQuestion.ts b/UI/Popup/TagRenderingQuestion.ts index 556635c57..a45172a98 100644 --- a/UI/Popup/TagRenderingQuestion.ts +++ b/UI/Popup/TagRenderingQuestion.ts @@ -27,6 +27,7 @@ import ChangeTagAction from "../../Logic/Osm/Actions/ChangeTagAction"; import TagRenderingConfig from "../../Models/ThemeConfig/TagRenderingConfig"; import {Unit} from "../../Models/Unit"; import VariableInputElement from "../Input/VariableInputElement"; +import Toggle from "../Input/Toggle"; /** * Shows the question element. @@ -76,7 +77,7 @@ export default class TagRenderingQuestion extends Combine { const inputElement: InputElement = - new VariableInputElement(applicableMappingsSrc.map(applicableMappings => + new VariableInputElement(applicableMappingsSrc.map(applicableMappings => TagRenderingQuestion.GenerateInputElement(configuration, applicableMappings, applicableUnit, tags) )) @@ -105,8 +106,11 @@ export default class TagRenderingQuestion extends Combine { .onClick(save) } - const saveButton = options.saveButtonConstr(inputElement.GetValue()) - + const saveButton = new Combine([ + options.saveButtonConstr(inputElement.GetValue()), + new Toggle(Translations.t.general.testing, undefined, State.state.featureSwitchIsTesting).SetClass("alert") + ]) + let bottomTags: BaseUIElement; if (options.bottomText !== undefined) { bottomTags = options.bottomText(inputElement.GetValue()) @@ -119,7 +123,7 @@ export default class TagRenderingQuestion extends Combine { return ""; } if (tagsFilter === undefined) { - return Translations.t.general.noTagsSelected.Clone().SetClass("subtle"); + return Translations.t.general.noTagsSelected.SetClass("subtle"); } if (csCount < Constants.userJourney.tagsVisibleAndWikiLinked) { const tagsStr = tagsFilter.asHumanString(false, true, tags.data); @@ -136,6 +140,8 @@ export default class TagRenderingQuestion extends Combine { options.cancelButton, saveButton, bottomTags]) + + this.SetClass("question disable-links") } @@ -190,7 +196,7 @@ export default class TagRenderingQuestion extends Combine { applicableMappings.map((mapping, i) => { return { value: new And([mapping.if, ...allIfNotsExcept(i)]), - shown: Translations.WT(mapping.then).Clone() + shown: Translations.WT(mapping.then) } }) ) @@ -204,7 +210,7 @@ export default class TagRenderingQuestion extends Combine { if (inputEls.length == 0) { - if(ff === undefined){ + if (ff === undefined) { throw "Error: could not generate a question: freeform and all mappings are undefined" } return ff; diff --git a/UI/i18n/Translations.ts b/UI/i18n/Translations.ts index b1513d74c..d9e9d6e2d 100644 --- a/UI/i18n/Translations.ts +++ b/UI/i18n/Translations.ts @@ -6,7 +6,6 @@ import BaseUIElement from "../BaseUIElement"; export default class Translations { static t = AllTranslationAssets.t; - private static wtcache = {} constructor() { throw "Translations is static. If you want to intitialize a new translation, use the singular form" @@ -45,15 +44,10 @@ export default class Translations { return undefined; } if (typeof (s) === "string") { - if (Translations.wtcache[s]) { - return Translations.wtcache[s]; - } - const tr = new Translation({en: s}); - Translations.wtcache[s] = tr; - return tr; + return new Translation({en: s}); } if (s instanceof Translation) { - return s; + return s.Clone() /* MUST CLONE HERE! */; } console.error("Trying to Translation.WT, but got ", s) throw "??? Not a valid translation" diff --git a/scripts/generateTranslations.ts b/scripts/generateTranslations.ts index d6d8c11d2..788060549 100644 --- a/scripts/generateTranslations.ts +++ b/scripts/generateTranslations.ts @@ -33,7 +33,7 @@ class TranslationPart { } const v = translations[translationsKey] if (typeof (v) != "string") { - console.error("Non-string object in translation while trying to add more translations to '", translationsKey ,"': ", v) + console.error("Non-string object in translation while trying to add more translations to '", translationsKey, "': ", v) throw "Error in an object depicting a translation: a non-string object was found. (" + context + ")\n You probably put some other section accidentally in the translation" } this.contents.set(translationsKey, v) @@ -166,7 +166,13 @@ function transformTranslation(obj: any, depth = 1) { if (key.match("^[a-zA-Z0-9_]*$") === null) { throw "Invalid character in key: " + key } - values += (Utils.Times((_) => " ", depth)) + key + ": " + transformTranslation(obj[key], depth + 1) + ",\n" + const value = obj[key] + + if (isTranslation(value)) { + values += (Utils.Times((_) => " ", depth)) + "get " + key + "() { return new Translation(" + JSON.stringify(value) + ") }" + ",\n" + } else { + values += (Utils.Times((_) => " ", depth)) + key + ": " + transformTranslation(value, depth + 1) + ",\n" + } } return `{${values}}`; @@ -300,9 +306,9 @@ function MergeTranslation(source: any, target: any, language: string, context: s } if (typeof sourceV === "object") { if (targetV === undefined) { - try{ - target[language] = sourceV; - }catch(e){ + try { + target[language] = sourceV; + } catch (e) { throw `At context${context}: Could not add a translation in language ${language} due to ${e}` } } else { From be3418becc3a11901ba72158845da2c9085b77c0 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 22:43:25 +0200 Subject: [PATCH 23/30] Translations for charging station theme: fix translations which ended up at the wrong place --- .../charging_station/charging_station.json | 1782 +---------------- .../charging_station.protojson | 145 +- assets/layers/charging_station/csvToJson.ts | 10 +- .../toerisme_vlaanderen.json | 3 + langs/layers/en.json | 515 +---- langs/layers/it.json | 4 +- langs/layers/ja.json | 4 +- langs/layers/nb_NO.json | 4 +- langs/layers/nl.json | 589 +----- langs/layers/ru.json | 4 +- langs/layers/zh_Hant.json | 4 +- scripts/generateLayerOverview.ts | 12 +- 12 files changed, 302 insertions(+), 2774 deletions(-) diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index efd8c1a24..fb14977e2 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -2,12 +2,13 @@ "id": "charging_station", "name": { "en": "Charging stations", + "nl": "Oplaadpunten", + "de": "Ladestationen", "it": "Stazioni di ricarica", "ja": "充電ステーション", "nb_NO": "Ladestasjoner", "ru": "Зарядные станции", - "zh_Hant": "充電站", - "de": "Ladestationen" + "zh_Hant": "充電站" }, "minzoom": 10, "source": { @@ -23,29 +24,33 @@ "title": { "render": { "en": "Charging station", + "nl": "Oplaadpunten", + "de": "Ladestation", "it": "Stazione di ricarica", "ja": "充電ステーション", "nb_NO": "Ladestasjon", "ru": "Зарядная станция", - "zh_Hant": "充電站", - "de": "Ladestation" + "zh_Hant": "充電站" } }, "description": { "en": "A charging station", + "nl": "Oplaadpunten", + "de": "Eine Ladestation", "it": "Una stazione di ricarica", "ja": "充電ステーション", "nb_NO": "En ladestasjon", "ru": "Зарядная станция", - "zh_Hant": "充電站", - "de": "Eine Ladestation" + "zh_Hant": "充電站" }, "tagRenderings": [ "images", { "id": "Type", + "#": "Allowed vehicle types", "question": { "en": "Which vehicles are allowed to charge here?", + "nl": "Welke voertuigen kunnen hier opgeladen worden?", "de": "Welche Fahrzeuge dürfen hier geladen werden?" }, "multiAnswer": true, @@ -55,6 +60,7 @@ "ifnot": "bicycle=no", "then": { "en": "bicycles can be charged here", + "nl": "Fietsen kunnen hier opgeladen worden", "de": "Fahrräder können hier geladen werden" } }, @@ -63,6 +69,7 @@ "ifnot": "motorcar=no", "then": { "en": "Cars can be charged here", + "nl": "Elektrische auto's kunnen hier opgeladen worden", "de": "Autos können hier geladen werden" } }, @@ -71,6 +78,7 @@ "ifnot": "scooter=no", "then": { "en": "Scooters can be charged here", + "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden", "de": " Roller können hier geladen werden" } }, @@ -79,6 +87,7 @@ "ifnot": "hgv=no", "then": { "en": "Heavy good vehicles (such as trucks) can be charged here", + "nl": "Vrachtwagens kunnen hier opgeladen worden", "de": "Lastkraftwagen (LKW) können hier geladen werden" } }, @@ -87,6 +96,7 @@ "ifnot": "bus=no", "then": { "en": "Buses can be charged here", + "nl": "Bussen kunnen hier opgeladen worden", "de": "Busse können hier geladen werden" } } @@ -96,10 +106,12 @@ "id": "access", "question": { "en": "Who is allowed to use this charging station?", + "nl": "Wie mag er dit oplaadpunt gebruiken?", "de": "Wer darf diese Ladestation benutzen?" }, "render": { "en": "Access is {access}", + "nl": "Toegang voor {access}", "de": "Zugang ist {access}" }, "freeform": { @@ -111,7 +123,10 @@ "mappings": [ { "if": "access=yes", - "then": "Anyone can use this charging station (payment might be needed)" + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + } }, { "if": { @@ -120,16 +135,25 @@ "access=public" ] }, - "then": "Anyone can use this charging station (payment might be needed)", + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, "hideInAnswer": true }, { "if": "access=customers", - "then": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests " + "then": { + "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", + "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" + } }, { "if": "access=private", - "then": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)" + "then": { + "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", + "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " + } } ] }, @@ -154,6 +178,7 @@ "id": "Available_charging_stations (generated)", "question": { "en": "Which charging stations are available here?", + "nl": "Welke aansluitingen zijn hier beschikbaar?", "de": "Welche Ladestationen gibt es hier?" }, "multiAnswer": true, @@ -890,96 +915,6 @@ ] } }, - { - "id": "voltage-0", - "question": { - "en": "What voltage do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", - "nl": "Welke spanning levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "render": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs {socket:schuko:voltage} volt", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van {socket:schuko:voltage} volt" - }, - "freeform": { - "key": "socket:schuko:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:schuko:voltage=230 V", - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs 230 volt", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van 230 volt" - } - } - ], - "condition": { - "and": [ - "socket:schuko~*", - "socket:schuko!=0" - ] - } - }, - { - "id": "current-0", - "question": { - "en": "What current do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", - "nl": "Welke stroom levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?" - }, - "render": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:current}A", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal {socket:schuko:current}A" - }, - "freeform": { - "key": "socket:schuko:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:schuko:current=16 A", - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 16 A", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal 16 A" - } - } - ], - "condition": { - "and": [ - "socket:schuko~*", - "socket:schuko!=0" - ] - } - }, - { - "id": "power-output-0", - "question": { - "en": "What power output does a single plug of type
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?" - }, - "render": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:output}", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal {socket:schuko:output}" - }, - "freeform": { - "key": "socket:schuko:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:schuko:output=3.6 kw", - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 3.6 kw", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal 3.6 kw" - } - } - ], - "condition": { - "and": [ - "socket:schuko~*", - "socket:schuko!=0" - ] - } - }, { "id": "plugs-1", "question": { @@ -1001,103 +936,6 @@ ] } }, - { - "id": "voltage-1", - "question": { - "en": "What voltage do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", - "nl": "Welke spanning levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "render": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs {socket:typee:voltage} volt", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van {socket:typee:voltage} volt" - }, - "freeform": { - "key": "socket:typee:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:typee:voltage=230 V", - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs 230 volt", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van 230 volt" - } - } - ], - "condition": { - "and": [ - "socket:typee~*", - "socket:typee!=0" - ] - } - }, - { - "id": "current-1", - "question": { - "en": "What current do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", - "nl": "Welke stroom levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?" - }, - "render": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:current}A", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal {socket:typee:current}A" - }, - "freeform": { - "key": "socket:typee:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:typee:current=16 A", - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 16 A", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal 16 A" - } - } - ], - "condition": { - "and": [ - "socket:typee~*", - "socket:typee!=0" - ] - } - }, - { - "id": "power-output-1", - "question": { - "en": "What power output does a single plug of type
European wall plug with ground pin (CEE7/4 type E)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?" - }, - "render": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:output}", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal {socket:typee:output}" - }, - "freeform": { - "key": "socket:typee:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:typee:output=3 kw", - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 3 kw", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 3 kw" - } - }, - { - "if": "socket:socket:typee:output=22 kw", - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 22 kw", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 22 kw" - } - } - ], - "condition": { - "and": [ - "socket:typee~*", - "socket:typee!=0" - ] - } - }, { "id": "plugs-2", "question": { @@ -1119,96 +957,6 @@ ] } }, - { - "id": "voltage-2", - "question": { - "en": "What voltage do the plugs with
Chademo
offer?", - "nl": "Welke spanning levert de stekker van type
Chademo
" - }, - "render": { - "en": "
Chademo
outputs {socket:chademo:voltage} volt", - "nl": "
Chademo
heeft een spanning van {socket:chademo:voltage} volt" - }, - "freeform": { - "key": "socket:chademo:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:chademo:voltage=500 V", - "then": { - "en": "
Chademo
outputs 500 volt", - "nl": "
Chademo
heeft een spanning van 500 volt" - } - } - ], - "condition": { - "and": [ - "socket:chademo~*", - "socket:chademo!=0" - ] - } - }, - { - "id": "current-2", - "question": { - "en": "What current do the plugs with
Chademo
offer?", - "nl": "Welke stroom levert de stekker van type
Chademo
?" - }, - "render": { - "en": "
Chademo
outputs at most {socket:chademo:current}A", - "nl": "
Chademo
levert een stroom van maximaal {socket:chademo:current}A" - }, - "freeform": { - "key": "socket:chademo:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:chademo:current=120 A", - "then": { - "en": "
Chademo
outputs at most 120 A", - "nl": "
Chademo
levert een stroom van maximaal 120 A" - } - } - ], - "condition": { - "and": [ - "socket:chademo~*", - "socket:chademo!=0" - ] - } - }, - { - "id": "power-output-2", - "question": { - "en": "What power output does a single plug of type
Chademo
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Chademo
?" - }, - "render": { - "en": "
Chademo
outputs at most {socket:chademo:output}", - "nl": "
Chademo
levert een vermogen van maximaal {socket:chademo:output}" - }, - "freeform": { - "key": "socket:chademo:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:chademo:output=50 kw", - "then": { - "en": "
Chademo
outputs at most 50 kw", - "nl": "
Chademo
levert een vermogen van maximaal 50 kw" - } - } - ], - "condition": { - "and": [ - "socket:chademo~*", - "socket:chademo!=0" - ] - } - }, { "id": "plugs-3", "question": { @@ -1230,110 +978,6 @@ ] } }, - { - "id": "voltage-3", - "question": { - "en": "What voltage do the plugs with
Type 1 with cable (J1772)
offer?", - "nl": "Welke spanning levert de stekker van type
Type 1 met kabel (J1772)
" - }, - "render": { - "en": "
Type 1 with cable (J1772)
outputs {socket:type1_cable:voltage} volt", - "nl": "
Type 1 met kabel (J1772)
heeft een spanning van {socket:type1_cable:voltage} volt" - }, - "freeform": { - "key": "socket:type1_cable:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1_cable:voltage=200 V", - "then": { - "en": "
Type 1 with cable (J1772)
outputs 200 volt", - "nl": "
Type 1 met kabel (J1772)
heeft een spanning van 200 volt" - } - }, - { - "if": "socket:socket:type1_cable:voltage=240 V", - "then": { - "en": "
Type 1 with cable (J1772)
outputs 240 volt", - "nl": "
Type 1 met kabel (J1772)
heeft een spanning van 240 volt" - } - } - ], - "condition": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=0" - ] - } - }, - { - "id": "current-3", - "question": { - "en": "What current do the plugs with
Type 1 with cable (J1772)
offer?", - "nl": "Welke stroom levert de stekker van type
Type 1 met kabel (J1772)
?" - }, - "render": { - "en": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:current}A", - "nl": "
Type 1 met kabel (J1772)
levert een stroom van maximaal {socket:type1_cable:current}A" - }, - "freeform": { - "key": "socket:type1_cable:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1_cable:current=32 A", - "then": { - "en": "
Type 1 with cable (J1772)
outputs at most 32 A", - "nl": "
Type 1 met kabel (J1772)
levert een stroom van maximaal 32 A" - } - } - ], - "condition": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=0" - ] - } - }, - { - "id": "power-output-3", - "question": { - "en": "What power output does a single plug of type
Type 1 with cable (J1772)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Type 1 met kabel (J1772)
?" - }, - "render": { - "en": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:output}", - "nl": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal {socket:type1_cable:output}" - }, - "freeform": { - "key": "socket:type1_cable:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1_cable:output=3.7 kw", - "then": { - "en": "
Type 1 with cable (J1772)
outputs at most 3.7 kw", - "nl": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 3.7 kw" - } - }, - { - "if": "socket:socket:type1_cable:output=7 kw", - "then": { - "en": "
Type 1 with cable (J1772)
outputs at most 7 kw", - "nl": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 7 kw" - } - } - ], - "condition": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=0" - ] - } - }, { "id": "plugs-4", "question": { @@ -1355,124 +999,6 @@ ] } }, - { - "id": "voltage-4", - "question": { - "en": "What voltage do the plugs with
Type 1 without cable (J1772)
offer?", - "nl": "Welke spanning levert de stekker van type
Type 1 zonder kabel (J1772)
" - }, - "render": { - "en": "
Type 1 without cable (J1772)
outputs {socket:type1:voltage} volt", - "nl": "
Type 1 zonder kabel (J1772)
heeft een spanning van {socket:type1:voltage} volt" - }, - "freeform": { - "key": "socket:type1:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1:voltage=200 V", - "then": { - "en": "
Type 1 without cable (J1772)
outputs 200 volt", - "nl": "
Type 1 zonder kabel (J1772)
heeft een spanning van 200 volt" - } - }, - { - "if": "socket:socket:type1:voltage=240 V", - "then": { - "en": "
Type 1 without cable (J1772)
outputs 240 volt", - "nl": "
Type 1 zonder kabel (J1772)
heeft een spanning van 240 volt" - } - } - ], - "condition": { - "and": [ - "socket:type1~*", - "socket:type1!=0" - ] - } - }, - { - "id": "current-4", - "question": { - "en": "What current do the plugs with
Type 1 without cable (J1772)
offer?", - "nl": "Welke stroom levert de stekker van type
Type 1 zonder kabel (J1772)
?" - }, - "render": { - "en": "
Type 1 without cable (J1772)
outputs at most {socket:type1:current}A", - "nl": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal {socket:type1:current}A" - }, - "freeform": { - "key": "socket:type1:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1:current=32 A", - "then": { - "en": "
Type 1 without cable (J1772)
outputs at most 32 A", - "nl": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal 32 A" - } - } - ], - "condition": { - "and": [ - "socket:type1~*", - "socket:type1!=0" - ] - } - }, - { - "id": "power-output-4", - "question": { - "en": "What power output does a single plug of type
Type 1 without cable (J1772)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Type 1 zonder kabel (J1772)
?" - }, - "render": { - "en": "
Type 1 without cable (J1772)
outputs at most {socket:type1:output}", - "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal {socket:type1:output}" - }, - "freeform": { - "key": "socket:type1:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1:output=3.7 kw", - "then": { - "en": "
Type 1 without cable (J1772)
outputs at most 3.7 kw", - "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 3.7 kw" - } - }, - { - "if": "socket:socket:type1:output=6.6 kw", - "then": { - "en": "
Type 1 without cable (J1772)
outputs at most 6.6 kw", - "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 6.6 kw" - } - }, - { - "if": "socket:socket:type1:output=7 kw", - "then": { - "en": "
Type 1 without cable (J1772)
outputs at most 7 kw", - "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7 kw" - } - }, - { - "if": "socket:socket:type1:output=7.2 kw", - "then": { - "en": "
Type 1 without cable (J1772)
outputs at most 7.2 kw", - "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7.2 kw" - } - } - ], - "condition": { - "and": [ - "socket:type1~*", - "socket:type1!=0" - ] - } - }, { "id": "plugs-5", "question": { @@ -1494,131 +1020,6 @@ ] } }, - { - "id": "voltage-5", - "question": { - "en": "What voltage do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", - "nl": "Welke spanning levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "render": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs {socket:type1_combo:voltage} volt", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van {socket:type1_combo:voltage} volt" - }, - "freeform": { - "key": "socket:type1_combo:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1_combo:voltage=400 V", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs 400 volt", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 400 volt" - } - }, - { - "if": "socket:socket:type1_combo:voltage=1000 V", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs 1000 volt", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 1000 volt" - } - } - ], - "condition": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=0" - ] - } - }, - { - "id": "current-5", - "question": { - "en": "What current do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", - "nl": "Welke stroom levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?" - }, - "render": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:current}A", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal {socket:type1_combo:current}A" - }, - "freeform": { - "key": "socket:type1_combo:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1_combo:current=50 A", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 A", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 50 A" - } - }, - { - "if": "socket:socket:type1_combo:current=125 A", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 125 A", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 125 A" - } - } - ], - "condition": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=0" - ] - } - }, - { - "id": "power-output-5", - "question": { - "en": "What power output does a single plug of type
Type 1 CCS (aka Type 1 Combo)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?" - }, - "render": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:output}", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal {socket:type1_combo:output}" - }, - "freeform": { - "key": "socket:type1_combo:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type1_combo:output=50 kw", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 kw", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 50 kw" - } - }, - { - "if": "socket:socket:type1_combo:output=62.5 kw", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 62.5 kw", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 62.5 kw" - } - }, - { - "if": "socket:socket:type1_combo:output=150 kw", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 150 kw", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 150 kw" - } - }, - { - "if": "socket:socket:type1_combo:output=350 kw", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 350 kw", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 350 kw" - } - } - ], - "condition": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=0" - ] - } - }, { "id": "plugs-6", "question": { @@ -1640,117 +1041,6 @@ ] } }, - { - "id": "voltage-6", - "question": { - "en": "What voltage do the plugs with
Tesla Supercharger
offer?", - "nl": "Welke spanning levert de stekker van type
Tesla Supercharger
" - }, - "render": { - "en": "
Tesla Supercharger
outputs {socket:tesla_supercharger:voltage} volt", - "nl": "
Tesla Supercharger
heeft een spanning van {socket:tesla_supercharger:voltage} volt" - }, - "freeform": { - "key": "socket:tesla_supercharger:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_supercharger:voltage=480 V", - "then": { - "en": "
Tesla Supercharger
outputs 480 volt", - "nl": "
Tesla Supercharger
heeft een spanning van 480 volt" - } - } - ], - "condition": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=0" - ] - } - }, - { - "id": "current-6", - "question": { - "en": "What current do the plugs with
Tesla Supercharger
offer?", - "nl": "Welke stroom levert de stekker van type
Tesla Supercharger
?" - }, - "render": { - "en": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:current}A", - "nl": "
Tesla Supercharger
levert een stroom van maximaal {socket:tesla_supercharger:current}A" - }, - "freeform": { - "key": "socket:tesla_supercharger:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_supercharger:current=125 A", - "then": { - "en": "
Tesla Supercharger
outputs at most 125 A", - "nl": "
Tesla Supercharger
levert een stroom van maximaal 125 A" - } - }, - { - "if": "socket:socket:tesla_supercharger:current=350 A", - "then": { - "en": "
Tesla Supercharger
outputs at most 350 A", - "nl": "
Tesla Supercharger
levert een stroom van maximaal 350 A" - } - } - ], - "condition": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=0" - ] - } - }, - { - "id": "power-output-6", - "question": { - "en": "What power output does a single plug of type
Tesla Supercharger
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger
?" - }, - "render": { - "en": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:output}", - "nl": "
Tesla Supercharger
levert een vermogen van maximaal {socket:tesla_supercharger:output}" - }, - "freeform": { - "key": "socket:tesla_supercharger:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_supercharger:output=120 kw", - "then": { - "en": "
Tesla Supercharger
outputs at most 120 kw", - "nl": "
Tesla Supercharger
levert een vermogen van maximaal 120 kw" - } - }, - { - "if": "socket:socket:tesla_supercharger:output=150 kw", - "then": { - "en": "
Tesla Supercharger
outputs at most 150 kw", - "nl": "
Tesla Supercharger
levert een vermogen van maximaal 150 kw" - } - }, - { - "if": "socket:socket:tesla_supercharger:output=250 kw", - "then": { - "en": "
Tesla Supercharger
outputs at most 250 kw", - "nl": "
Tesla Supercharger
levert een vermogen van maximaal 250 kw" - } - } - ], - "condition": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=0" - ] - } - }, { "id": "plugs-7", "question": { @@ -1772,117 +1062,6 @@ ] } }, - { - "id": "voltage-7", - "question": { - "en": "What voltage do the plugs with
Type 2 (mennekes)
offer?", - "nl": "Welke spanning levert de stekker van type
Type 2 (mennekes)
" - }, - "render": { - "en": "
Type 2 (mennekes)
outputs {socket:type2:voltage} volt", - "nl": "
Type 2 (mennekes)
heeft een spanning van {socket:type2:voltage} volt" - }, - "freeform": { - "key": "socket:type2:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2:voltage=230 V", - "then": { - "en": "
Type 2 (mennekes)
outputs 230 volt", - "nl": "
Type 2 (mennekes)
heeft een spanning van 230 volt" - } - }, - { - "if": "socket:socket:type2:voltage=400 V", - "then": { - "en": "
Type 2 (mennekes)
outputs 400 volt", - "nl": "
Type 2 (mennekes)
heeft een spanning van 400 volt" - } - } - ], - "condition": { - "and": [ - "socket:type2~*", - "socket:type2!=0" - ] - } - }, - { - "id": "current-7", - "question": { - "en": "What current do the plugs with
Type 2 (mennekes)
offer?", - "nl": "Welke stroom levert de stekker van type
Type 2 (mennekes)
?" - }, - "render": { - "en": "
Type 2 (mennekes)
outputs at most {socket:type2:current}A", - "nl": "
Type 2 (mennekes)
levert een stroom van maximaal {socket:type2:current}A" - }, - "freeform": { - "key": "socket:type2:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2:current=16 A", - "then": { - "en": "
Type 2 (mennekes)
outputs at most 16 A", - "nl": "
Type 2 (mennekes)
levert een stroom van maximaal 16 A" - } - }, - { - "if": "socket:socket:type2:current=32 A", - "then": { - "en": "
Type 2 (mennekes)
outputs at most 32 A", - "nl": "
Type 2 (mennekes)
levert een stroom van maximaal 32 A" - } - } - ], - "condition": { - "and": [ - "socket:type2~*", - "socket:type2!=0" - ] - } - }, - { - "id": "power-output-7", - "question": { - "en": "What power output does a single plug of type
Type 2 (mennekes)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Type 2 (mennekes)
?" - }, - "render": { - "en": "
Type 2 (mennekes)
outputs at most {socket:type2:output}", - "nl": "
Type 2 (mennekes)
levert een vermogen van maximaal {socket:type2:output}" - }, - "freeform": { - "key": "socket:type2:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2:output=11 kw", - "then": { - "en": "
Type 2 (mennekes)
outputs at most 11 kw", - "nl": "
Type 2 (mennekes)
levert een vermogen van maximaal 11 kw" - } - }, - { - "if": "socket:socket:type2:output=22 kw", - "then": { - "en": "
Type 2 (mennekes)
outputs at most 22 kw", - "nl": "
Type 2 (mennekes)
levert een vermogen van maximaal 22 kw" - } - } - ], - "condition": { - "and": [ - "socket:type2~*", - "socket:type2!=0" - ] - } - }, { "id": "plugs-8", "question": { @@ -1904,110 +1083,6 @@ ] } }, - { - "id": "voltage-8", - "question": { - "en": "What voltage do the plugs with
Type 2 CCS (mennekes)
offer?", - "nl": "Welke spanning levert de stekker van type
Type 2 CCS (mennekes)
" - }, - "render": { - "en": "
Type 2 CCS (mennekes)
outputs {socket:type2_combo:voltage} volt", - "nl": "
Type 2 CCS (mennekes)
heeft een spanning van {socket:type2_combo:voltage} volt" - }, - "freeform": { - "key": "socket:type2_combo:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2_combo:voltage=500 V", - "then": { - "en": "
Type 2 CCS (mennekes)
outputs 500 volt", - "nl": "
Type 2 CCS (mennekes)
heeft een spanning van 500 volt" - } - }, - { - "if": "socket:socket:type2_combo:voltage=920 V", - "then": { - "en": "
Type 2 CCS (mennekes)
outputs 920 volt", - "nl": "
Type 2 CCS (mennekes)
heeft een spanning van 920 volt" - } - } - ], - "condition": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=0" - ] - } - }, - { - "id": "current-8", - "question": { - "en": "What current do the plugs with
Type 2 CCS (mennekes)
offer?", - "nl": "Welke stroom levert de stekker van type
Type 2 CCS (mennekes)
?" - }, - "render": { - "en": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:current}A", - "nl": "
Type 2 CCS (mennekes)
levert een stroom van maximaal {socket:type2_combo:current}A" - }, - "freeform": { - "key": "socket:type2_combo:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2_combo:current=125 A", - "then": { - "en": "
Type 2 CCS (mennekes)
outputs at most 125 A", - "nl": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 125 A" - } - }, - { - "if": "socket:socket:type2_combo:current=350 A", - "then": { - "en": "
Type 2 CCS (mennekes)
outputs at most 350 A", - "nl": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 350 A" - } - } - ], - "condition": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=0" - ] - } - }, - { - "id": "power-output-8", - "question": { - "en": "What power output does a single plug of type
Type 2 CCS (mennekes)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Type 2 CCS (mennekes)
?" - }, - "render": { - "en": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:output}", - "nl": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal {socket:type2_combo:output}" - }, - "freeform": { - "key": "socket:type2_combo:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2_combo:output=50 kw", - "then": { - "en": "
Type 2 CCS (mennekes)
outputs at most 50 kw", - "nl": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal 50 kw" - } - } - ], - "condition": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=0" - ] - } - }, { "id": "plugs-9", "question": { @@ -2029,117 +1104,6 @@ ] } }, - { - "id": "voltage-9", - "question": { - "en": "What voltage do the plugs with
Type 2 with cable (mennekes)
offer?", - "nl": "Welke spanning levert de stekker van type
Type 2 met kabel (J1772)
" - }, - "render": { - "en": "
Type 2 with cable (mennekes)
outputs {socket:type2_cable:voltage} volt", - "nl": "
Type 2 met kabel (J1772)
heeft een spanning van {socket:type2_cable:voltage} volt" - }, - "freeform": { - "key": "socket:type2_cable:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2_cable:voltage=230 V", - "then": { - "en": "
Type 2 with cable (mennekes)
outputs 230 volt", - "nl": "
Type 2 met kabel (J1772)
heeft een spanning van 230 volt" - } - }, - { - "if": "socket:socket:type2_cable:voltage=400 V", - "then": { - "en": "
Type 2 with cable (mennekes)
outputs 400 volt", - "nl": "
Type 2 met kabel (J1772)
heeft een spanning van 400 volt" - } - } - ], - "condition": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=0" - ] - } - }, - { - "id": "current-9", - "question": { - "en": "What current do the plugs with
Type 2 with cable (mennekes)
offer?", - "nl": "Welke stroom levert de stekker van type
Type 2 met kabel (J1772)
?" - }, - "render": { - "en": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:current}A", - "nl": "
Type 2 met kabel (J1772)
levert een stroom van maximaal {socket:type2_cable:current}A" - }, - "freeform": { - "key": "socket:type2_cable:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2_cable:current=16 A", - "then": { - "en": "
Type 2 with cable (mennekes)
outputs at most 16 A", - "nl": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 16 A" - } - }, - { - "if": "socket:socket:type2_cable:current=32 A", - "then": { - "en": "
Type 2 with cable (mennekes)
outputs at most 32 A", - "nl": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 32 A" - } - } - ], - "condition": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=0" - ] - } - }, - { - "id": "power-output-9", - "question": { - "en": "What power output does a single plug of type
Type 2 with cable (mennekes)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Type 2 met kabel (J1772)
?" - }, - "render": { - "en": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:output}", - "nl": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal {socket:type2_cable:output}" - }, - "freeform": { - "key": "socket:type2_cable:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:type2_cable:output=11 kw", - "then": { - "en": "
Type 2 with cable (mennekes)
outputs at most 11 kw", - "nl": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 11 kw" - } - }, - { - "if": "socket:socket:type2_cable:output=22 kw", - "then": { - "en": "
Type 2 with cable (mennekes)
outputs at most 22 kw", - "nl": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 22 kw" - } - } - ], - "condition": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=0" - ] - } - }, { "id": "plugs-10", "question": { @@ -2161,110 +1125,6 @@ ] } }, - { - "id": "voltage-10", - "question": { - "en": "What voltage do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", - "nl": "Welke spanning levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "render": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs {socket:tesla_supercharger_ccs:voltage} volt", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van {socket:tesla_supercharger_ccs:voltage} volt" - }, - "freeform": { - "key": "socket:tesla_supercharger_ccs:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_supercharger_ccs:voltage=500 V", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs 500 volt", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 500 volt" - } - }, - { - "if": "socket:socket:tesla_supercharger_ccs:voltage=920 V", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs 920 volt", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 920 volt" - } - } - ], - "condition": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=0" - ] - } - }, - { - "id": "current-10", - "question": { - "en": "What current do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", - "nl": "Welke stroom levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?" - }, - "render": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:current}A", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal {socket:tesla_supercharger_ccs:current}A" - }, - "freeform": { - "key": "socket:tesla_supercharger_ccs:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_supercharger_ccs:current=125 A", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 125 A", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 125 A" - } - }, - { - "if": "socket:socket:tesla_supercharger_ccs:current=350 A", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 350 A", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 350 A" - } - } - ], - "condition": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=0" - ] - } - }, - { - "id": "power-output-10", - "question": { - "en": "What power output does a single plug of type
Tesla Supercharger CCS (a branded type2_css)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?" - }, - "render": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:output}", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal {socket:tesla_supercharger_ccs:output}" - }, - "freeform": { - "key": "socket:tesla_supercharger_ccs:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_supercharger_ccs:output=50 kw", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 50 kw", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal 50 kw" - } - } - ], - "condition": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=0" - ] - } - }, { "id": "plugs-11", "question": { @@ -2286,117 +1146,6 @@ ] } }, - { - "id": "voltage-11", - "question": { - "en": "What voltage do the plugs with
Tesla Supercharger (destination)
offer?", - "nl": "Welke spanning levert de stekker van type
Tesla Supercharger (destination)
" - }, - "render": { - "en": "
Tesla Supercharger (destination)
outputs {socket:tesla_destination:voltage} volt", - "nl": "
Tesla Supercharger (destination)
heeft een spanning van {socket:tesla_destination:voltage} volt" - }, - "freeform": { - "key": "socket:tesla_destination:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_destination:voltage=480 V", - "then": { - "en": "
Tesla Supercharger (destination)
outputs 480 volt", - "nl": "
Tesla Supercharger (destination)
heeft een spanning van 480 volt" - } - } - ], - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "current-11", - "question": { - "en": "What current do the plugs with
Tesla Supercharger (destination)
offer?", - "nl": "Welke stroom levert de stekker van type
Tesla Supercharger (destination)
?" - }, - "render": { - "en": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:current}A", - "nl": "
Tesla Supercharger (destination)
levert een stroom van maximaal {socket:tesla_destination:current}A" - }, - "freeform": { - "key": "socket:tesla_destination:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_destination:current=125 A", - "then": { - "en": "
Tesla Supercharger (destination)
outputs at most 125 A", - "nl": "
Tesla Supercharger (destination)
levert een stroom van maximaal 125 A" - } - }, - { - "if": "socket:socket:tesla_destination:current=350 A", - "then": { - "en": "
Tesla Supercharger (destination)
outputs at most 350 A", - "nl": "
Tesla Supercharger (destination)
levert een stroom van maximaal 350 A" - } - } - ], - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "power-output-11", - "question": { - "en": "What power output does a single plug of type
Tesla Supercharger (destination)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger (destination)
?" - }, - "render": { - "en": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:output}", - "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal {socket:tesla_destination:output}" - }, - "freeform": { - "key": "socket:tesla_destination:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_destination:output=120 kw", - "then": { - "en": "
Tesla Supercharger (destination)
outputs at most 120 kw", - "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 120 kw" - } - }, - { - "if": "socket:socket:tesla_destination:output=150 kw", - "then": { - "en": "
Tesla Supercharger (destination)
outputs at most 150 kw", - "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 150 kw" - } - }, - { - "if": "socket:socket:tesla_destination:output=250 kw", - "then": { - "en": "
Tesla Supercharger (destination)
outputs at most 250 kw", - "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 250 kw" - } - } - ], - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, { "id": "plugs-12", "question": { @@ -2418,117 +1167,6 @@ ] } }, - { - "id": "voltage-12", - "question": { - "en": "What voltage do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", - "nl": "Welke spanning levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "render": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs {socket:tesla_destination:voltage} volt", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van {socket:tesla_destination:voltage} volt" - }, - "freeform": { - "key": "socket:tesla_destination:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_destination:voltage=230 V", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 230 volt", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 230 volt" - } - }, - { - "if": "socket:socket:tesla_destination:voltage=400 V", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 400 volt", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 400 volt" - } - } - ], - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "current-12", - "question": { - "en": "What current do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", - "nl": "Welke stroom levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?" - }, - "render": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:current}A", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal {socket:tesla_destination:current}A" - }, - "freeform": { - "key": "socket:tesla_destination:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_destination:current=16 A", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 16 A", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 16 A" - } - }, - { - "if": "socket:socket:tesla_destination:current=32 A", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 32 A", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 32 A" - } - } - ], - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "power-output-12", - "question": { - "en": "What power output does a single plug of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?" - }, - "render": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:output}", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal {socket:tesla_destination:output}" - }, - "freeform": { - "key": "socket:tesla_destination:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:tesla_destination:output=11 kw", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 11 kw", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 11 kw" - } - }, - { - "if": "socket:socket:tesla_destination:output=22 kw", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 22 kw", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 22 kw" - } - } - ], - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, { "id": "plugs-13", "question": { @@ -2550,110 +1188,6 @@ ] } }, - { - "id": "voltage-13", - "question": { - "en": "What voltage do the plugs with
USB to charge phones and small electronics
offer?", - "nl": "Welke spanning levert de stekker van type
USB om GSMs en kleine electronica op te laden
" - }, - "render": { - "en": "
USB to charge phones and small electronics
outputs {socket:USB-A:voltage} volt", - "nl": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van {socket:USB-A:voltage} volt" - }, - "freeform": { - "key": "socket:USB-A:voltage", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:USB-A:voltage=5 V", - "then": { - "en": "
USB to charge phones and small electronics
outputs 5 volt", - "nl": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van 5 volt" - } - } - ], - "condition": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=0" - ] - } - }, - { - "id": "current-13", - "question": { - "en": "What current do the plugs with
USB to charge phones and small electronics
offer?", - "nl": "Welke stroom levert de stekker van type
USB om GSMs en kleine electronica op te laden
?" - }, - "render": { - "en": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:current}A", - "nl": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal {socket:USB-A:current}A" - }, - "freeform": { - "key": "socket:USB-A:current", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:USB-A:current=1 A", - "then": { - "en": "
USB to charge phones and small electronics
outputs at most 1 A", - "nl": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 1 A" - } - }, - { - "if": "socket:socket:USB-A:current=2 A", - "then": { - "en": "
USB to charge phones and small electronics
outputs at most 2 A", - "nl": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 2 A" - } - } - ], - "condition": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=0" - ] - } - }, - { - "id": "power-output-13", - "question": { - "en": "What power output does a single plug of type
USB to charge phones and small electronics
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
USB om GSMs en kleine electronica op te laden
?" - }, - "render": { - "en": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:output}", - "nl": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal {socket:USB-A:output}" - }, - "freeform": { - "key": "socket:USB-A:output", - "type": "pfloat" - }, - "mappings": [ - { - "if": "socket:socket:USB-A:output=5w", - "then": { - "en": "
USB to charge phones and small electronics
outputs at most 5w", - "nl": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 5w" - } - }, - { - "if": "socket:socket:USB-A:output=10w", - "then": { - "en": "
USB to charge phones and small electronics
outputs at most 10w", - "nl": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 10w" - } - } - ], - "condition": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=0" - ] - } - }, { "id": "plugs-14", "question": { @@ -2675,72 +1209,6 @@ ] } }, - { - "id": "voltage-14", - "question": { - "en": "What voltage do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", - "nl": "Welke spanning levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "render": { - "en": "
Bosch Active Connect with 3 pins and cable
outputs {socket:bosch_3pin:voltage} volt", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
heeft een spanning van {socket:bosch_3pin:voltage} volt" - }, - "freeform": { - "key": "socket:bosch_3pin:voltage", - "type": "pfloat" - }, - "mappings": [], - "condition": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=0" - ] - } - }, - { - "id": "current-14", - "question": { - "en": "What current do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", - "nl": "Welke stroom levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?" - }, - "render": { - "en": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:current}A", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_3pin:current}A" - }, - "freeform": { - "key": "socket:bosch_3pin:current", - "type": "pfloat" - }, - "mappings": [], - "condition": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=0" - ] - } - }, - { - "id": "power-output-14", - "question": { - "en": "What power output does a single plug of type
Bosch Active Connect with 3 pins and cable
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?" - }, - "render": { - "en": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:output}", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_3pin:output}" - }, - "freeform": { - "key": "socket:bosch_3pin:output", - "type": "pfloat" - }, - "mappings": [], - "condition": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=0" - ] - } - }, { "id": "plugs-15", "question": { @@ -2762,81 +1230,11 @@ ] } }, - { - "id": "voltage-15", - "question": { - "en": "What voltage do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", - "nl": "Welke spanning levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "render": { - "en": "
Bosch Active Connect with 5 pins and cable
outputs {socket:bosch_5pin:voltage} volt", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
heeft een spanning van {socket:bosch_5pin:voltage} volt" - }, - "freeform": { - "key": "socket:bosch_5pin:voltage", - "type": "pfloat" - }, - "mappings": [], - "condition": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=0" - ] - } - }, - { - "id": "current-15", - "question": { - "en": "What current do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", - "nl": "Welke stroom levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?" - }, - "render": { - "en": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:current}A", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_5pin:current}A" - }, - "freeform": { - "key": "socket:bosch_5pin:current", - "type": "pfloat" - }, - "mappings": [], - "condition": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=0" - ] - } - }, - { - "id": "power-output-15", - "question": { - "en": "What power output does a single plug of type
Bosch Active Connect with 5 pins and cable
offer?", - "nl": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?" - }, - "render": { - "en": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:output}", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_5pin:output}" - }, - "freeform": { - "key": "socket:bosch_5pin:output", - "type": "pfloat" - }, - "mappings": [], - "condition": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=0" - ] - } - }, { "id": "Authentication", "question": { "en": "What kind of authentication is available at the charging station?", - "it": "Quali sono gli orari di apertura di questa stazione di ricarica?", - "ja": "この充電ステーションはいつオープンしますか?", - "nb_NO": "Når åpnet denne ladestasjonen?", - "ru": "В какое время работает эта зарядная станция?", - "zh_Hant": "何時是充電站開放使用的時間?", + "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?", "de": "Welche Authentifizierung ist an der Ladestation möglich?" }, "multiAnswer": true, @@ -2846,6 +1244,7 @@ "ifnot": "authentication:membership_card=no", "then": { "en": "Authentication by a membership card", + "nl": "Aanmelden met een lidkaart is mogelijk", "de": "Authentifizierung durch eine Mitgliedskarte" } }, @@ -2854,6 +1253,7 @@ "ifnot": "authentication:app=no", "then": { "en": "Authentication by an app", + "nl": "Aanmelden via een applicatie is mogelijk", "de": "Authentifizierung durch eine App" } }, @@ -2862,6 +1262,7 @@ "ifnot": "authentication:phone_call=no", "then": { "en": "Authentication via phone call is available", + "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk", "de": "Authentifizierung per Anruf ist möglich" } }, @@ -2870,6 +1271,7 @@ "ifnot": "authentication:short_message=no", "then": { "en": "Authentication via phone call is available", + "nl": "Aanmelden via SMS is mogelijk", "de": "Authentifizierung per Anruf ist möglich" } }, @@ -2878,6 +1280,7 @@ "ifnot": "authentication:nfc=no", "then": { "en": "Authentication via NFC is available", + "nl": "Aanmelden via NFC is mogelijk", "de": "Authentifizierung über NFC ist möglich" } }, @@ -2886,6 +1289,7 @@ "ifnot": "authentication:money_card=no", "then": { "en": "Authentication via Money Card is available", + "nl": "Aanmelden met Money Card is mogelijk", "de": "Authentifizierung über Geldkarte ist möglich" } }, @@ -2894,6 +1298,7 @@ "ifnot": "authentication:debit_card=no", "then": { "en": "Authentication via debit card is available", + "nl": "Aanmelden met een betaalkaart is mogelijk", "de": "Authentifizierung per Debitkarte ist möglich" } }, @@ -2902,6 +1307,7 @@ "ifnot": "authentication:none=no", "then": { "en": "Charging here is (also) possible without authentication", + "nl": "Hier opladen is (ook) mogelijk zonder aan te melden", "de": "Das Aufladen ist hier (auch) ohne Authentifizierung möglich" } } @@ -2911,19 +1317,12 @@ "id": "Auth phone", "render": { "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", - "it": "{network}", - "ja": "{network}", - "nb_NO": "{network}", - "ru": "{network}", - "zh_Hant": "{network}", + "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}", "de": "Authentifizierung durch Anruf oder SMS an {authentication:phone_call:number}" }, "question": { "en": "What's the phone number for authentication call or SMS?", - "it": "A quale rete appartiene questa stazione di ricarica?", - "ja": "この充電ステーションの運営チェーンはどこですか?", - "ru": "К какой сети относится эта станция?", - "zh_Hant": "充電站所屬的網路是?", + "nl": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", "de": "Wie lautet die Telefonnummer für den Authentifizierungsanruf oder die SMS?" }, "freeform": { @@ -2935,26 +1334,6 @@ "authentication:phone_call=yes", "authentication:short_message=yes" ] - }, - "it": { - "0": { - "then": "Non appartiene a una rete" - } - }, - "ja": { - "0": { - "then": "大規模な運営チェーンの一部ではない" - } - }, - "ru": { - "0": { - "then": "Не является частью более крупной сети" - } - }, - "zh_Hant": { - "0": { - "then": "不屬於大型網路" - } } }, { @@ -2966,13 +1345,20 @@ }, "question": { "en": "When is this charging station opened?", - "de": "Wann ist diese Ladestation geöffnet?" + "nl": "Wanneer is dit oplaadpunt beschikbaar??", + "de": "Wann ist diese Ladestation geöffnet?", + "it": "Quali sono gli orari di apertura di questa stazione di ricarica?", + "ja": "この充電ステーションはいつオープンしますか?", + "nb_NO": "Når åpnet denne ladestasjonen?", + "ru": "В какое время работает эта зарядная станция?", + "zh_Hant": "何時是充電站開放使用的時間?" }, "mappings": [ { "if": "opening_hours=24/7", "then": { "en": "24/7 opened (including holidays)", + "nl": "24/7 open - ook tijdens vakanties", "de": "durchgehend geöffnet (auch an Feiertagen)" } } @@ -3074,11 +1460,20 @@ "id": "Network", "render": { "en": "Part of the network {network}", - "de": "Teil des Netzwerks {network}" + "de": "Teil des Netzwerks {network}", + "it": "{network}", + "ja": "{network}", + "nb_NO": "{network}", + "ru": "{network}", + "zh_Hant": "{network}" }, "question": { "en": "Is this charging station part of a network?", - "de": "Ist diese Ladestation Teil eines Netzwerks?" + "de": "Ist diese Ladestation Teil eines Netzwerks?", + "it": "A quale rete appartiene questa stazione di ricarica?", + "ja": "この充電ステーションの運営チェーンはどこですか?", + "ru": "К какой сети относится эта станция?", + "zh_Hant": "充電站所屬的網路是?" }, "freeform": { "key": "network" @@ -3198,6 +1593,7 @@ }, "render": { "en": "Reference number is {ref}", + "nl": "Het referentienummer van dit oplaadpunt is {ref}", "de": "Die Kennziffer ist {ref}" }, "freeform": { @@ -3295,7 +1691,16 @@ "de": "Beim Laden ist eine zusätzliche Parkgebühr zu entrichten" } } - ] + ], + "condition": { + "or": [ + "motor_vehicle=yes", + "hgv=yes", + "bus=yes", + "bicycle=no", + "bicycle=" + ] + } } ], "icon": { @@ -3604,8 +2009,8 @@ "humanSingular": { "en": " hour", "nl": " uur", - "ru": " час", - "de": " Stunde" + "de": " Stunde", + "ru": " час" } }, { @@ -3625,8 +2030,8 @@ "humanSingular": { "en": " day", "nl": " dag", - "ru": " день", - "de": " Tag" + "de": " Tag", + "ru": " день" } } ] @@ -3663,8 +2068,8 @@ "human": { "en": "Volts", "nl": "volt", - "ru": "Вольт", - "de": "Volt" + "de": "Volt", + "ru": "Вольт" } } ], @@ -3734,8 +2139,8 @@ "human": { "en": "kilowatt", "nl": "kilowatt", - "ru": "киловатт", - "de": "Kilowatt" + "de": "Kilowatt", + "ru": "киловатт" } }, { @@ -3746,12 +2151,25 @@ "human": { "en": "megawatt", "nl": "megawatt", - "ru": "мегаватт", - "de": "Megawatt" + "de": "Megawatt", + "ru": "мегаватт" } } ], "eraseInvalidValues": true } - ] + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuracy": true + }, + "deletion": { + "softDeletionTags": { + "and": [ + "amenity=", + "disused:amenity=charging_station" + ] + }, + "neededChangesets": 10 + } } \ No newline at end of file diff --git a/assets/layers/charging_station/charging_station.protojson b/assets/layers/charging_station/charging_station.protojson index 955245640..84e54298f 100644 --- a/assets/layers/charging_station/charging_station.protojson +++ b/assets/layers/charging_station/charging_station.protojson @@ -2,11 +2,7 @@ "id": "charging_station", "name": { "en": "Charging stations", - "it": "Stazioni di ricarica", - "ja": "充電ステーション", - "nb_NO": "Ladestasjoner", - "ru": "Зарядные станции", - "zh_Hant": "充電站" + "nl": "Oplaadpunten" }, "minzoom": 10, "source": { @@ -22,27 +18,21 @@ "title": { "render": { "en": "Charging station", - "it": "Stazione di ricarica", - "ja": "充電ステーション", - "nb_NO": "Ladestasjon", - "ru": "Зарядная станция", - "zh_Hant": "充電站" + "nl": "Oplaadpunten" } }, "description": { "en": "A charging station", - "it": "Una stazione di ricarica", - "ja": "充電ステーション", - "nb_NO": "En ladestasjon", - "ru": "Зарядная станция", - "zh_Hant": "充電站" + "nl": "Oplaadpunten" }, "tagRenderings": [ "images", { "id": "Type", + "#": "Allowed vehicle types", "question": { - "en": "Which vehicles are allowed to charge here?" + "en": "Which vehicles are allowed to charge here?", + "nl": "Welke voertuigen kunnen hier opgeladen worden?" }, "multiAnswer": true, "mappings": [ @@ -50,35 +40,40 @@ "if": "bicycle=yes", "ifnot": "bicycle=no", "then": { - "en": "bicycles can be charged here" + "en": "Bcycles can be charged here", + "nl": "Fietsen kunnen hier opgeladen worden" } }, { "if": "motorcar=yes", "ifnot": "motorcar=no", "then": { - "en": "Cars can be charged here" + "en": "Cars can be charged here", + "nl": "Elektrische auto's kunnen hier opgeladen worden" } }, { "if": "scooter=yes", "ifnot": "scooter=no", "then": { - "en": "Scooters can be charged here" + "en": "Scooters can be charged here", + "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden" } }, { "if": "hgv=yes", "ifnot": "hgv=no", "then": { - "en": "Heavy good vehicles (such as trucks) can be charged here" + "en": "Heavy good vehicles (such as trucks) can be charged here", + "nl": "Vrachtwagens kunnen hier opgeladen worden" } }, { "if": "bus=yes", "ifnot": "bus=no", "then": { - "en": "Buses can be charged here" + "en": "Buses can be charged here", + "nl": "Bussen kunnen hier opgeladen worden" } } ] @@ -86,10 +81,12 @@ { "id": "access", "question": { - "en": "Who is allowed to use this charging station?" + "en": "Who is allowed to use this charging station?", + "nl": "Wie mag er dit oplaadpunt gebruiken?" }, "render": { - "en": "Access is {access}" + "en": "Access is {access}", + "nl": "Toegang voor {access}" }, "freeform": { "key": "access", @@ -100,7 +97,10 @@ "mappings": [ { "if": "access=yes", - "then": "Anyone can use this charging station (payment might be needed)" + "then": { + "en":"Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + } }, { "if": { @@ -109,16 +109,25 @@ "access=public" ] }, - "then": "Anyone can use this charging station (payment might be needed)", + "then": { + "en":"Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, "hideInAnswer": true }, { "if": "access=customers", - "then": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests " + "then": { + "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", + "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" + } }, { "if": "access=private", - "then": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)" + "then": { + "en":"Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", + "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " + } } ] }, @@ -142,11 +151,7 @@ "id": "Authentication", "question": { "en": "What kind of authentication is available at the charging station?", - "it": "Quali sono gli orari di apertura di questa stazione di ricarica?", - "ja": "この充電ステーションはいつオープンしますか?", - "nb_NO": "Når åpnet denne ladestasjonen?", - "ru": "В какое время работает эта зарядная станция?", - "zh_Hant": "何時是充電站開放使用的時間?" + "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?" }, "multiAnswer": true, "mappings": [ @@ -154,56 +159,64 @@ "if": "authentication:membership_card=yes", "ifnot": "authentication:membership_card=no", "then": { - "en": "Authentication by a membership card" + "en": "Authentication by a membership card", + "nl": "Aanmelden met een lidkaart is mogelijk" } }, { "if": "authentication:app=yes", "ifnot": "authentication:app=no", "then": { - "en": "Authentication by an app" + "en": "Authentication by an app", + "nl": "Aanmelden via een applicatie is mogelijk" } }, { "if": "authentication:phone_call=yes", "ifnot": "authentication:phone_call=no", "then": { - "en": "Authentication via phone call is available" + "en": "Authentication via phone call is available", + "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk" } }, { "if": "authentication:short_message=yes", "ifnot": "authentication:short_message=no", "then": { - "en": "Authentication via phone call is available" + "en": "Authentication via SMS is available", + "nl": "Aanmelden via SMS is mogelijk" } }, { "if": "authentication:nfc=yes", "ifnot": "authentication:nfc=no", "then": { - "en": "Authentication via NFC is available" + "en": "Authentication via NFC is available", + "nl": "Aanmelden via NFC is mogelijk" } }, { "if": "authentication:money_card=yes", "ifnot": "authentication:money_card=no", "then": { - "en": "Authentication via Money Card is available" + "en": "Authentication via Money Card is available", + "nl": "Aanmelden met Money Card is mogelijk" } }, { "if": "authentication:debit_card=yes", "ifnot": "authentication:debit_card=no", "then": { - "en": "Authentication via debit card is available" + "en": "Authentication via debit card is available", + "nl": "Aanmelden met een betaalkaart is mogelijk" } }, { "if": "authentication:none=yes", "ifnot": "authentication:none=no", "then": { - "en": "Charging here is (also) possible without authentication" + "en": "Charging here is (also) possible without authentication", + "nl": "Hier opladen is (ook) mogelijk zonder aan te melden" } } ] @@ -212,18 +225,12 @@ "id": "Auth phone", "render": { "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", - "it": "{network}", - "ja": "{network}", - "nb_NO": "{network}", - "ru": "{network}", - "zh_Hant": "{network}" + "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}" + }, "question": { "en": "What's the phone number for authentication call or SMS?", - "it": "A quale rete appartiene questa stazione di ricarica?", - "ja": "この充電ステーションの運営チェーンはどこですか?", - "ru": "К какой сети относится эта станция?", - "zh_Hant": "充電站所屬的網路是?" + "nl": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?" }, "freeform": { "key": "authentication:phone_call:number", @@ -234,26 +241,6 @@ "authentication:phone_call=yes", "authentication:short_message=yes" ] - }, - "it": { - "0": { - "then": "Non appartiene a una rete" - } - }, - "ja": { - "0": { - "then": "大規模な運営チェーンの一部ではない" - } - }, - "ru": { - "0": { - "then": "Не является частью более крупной сети" - } - }, - "zh_Hant": { - "0": { - "then": "不屬於大型網路" - } } }, { @@ -264,13 +251,15 @@ "type": "opening_hours" }, "question": { - "en": "When is this charging station opened?" + "en": "When is this charging station opened?", + "nl": "Wanneer is dit oplaadpunt beschikbaar??" }, "mappings": [ { "if": "opening_hours=24/7", "then": { - "en": "24/7 opened (including holidays)" + "en": "24/7 opened (including holidays)", + "nl": "24/7 open - ook tijdens vakanties" } } ] @@ -472,7 +461,8 @@ "en": "What is the reference number of this charging station?" }, "render": { - "en": "Reference number is {ref}" + "en": "Reference number is {ref}", + "nl": "Het referentienummer van dit oplaadpunt is {ref}" }, "freeform": { "key": "ref" @@ -557,7 +547,16 @@ "en": "An additional parking fee should be paid while charging" } } - ] + ], + "condition": { + "or": [ + "motor_vehicle=yes", + "hgv=yes", + "bus=yes", + "bicycle=no", + "bicycle=" + ] + } } ], "icon": { diff --git a/assets/layers/charging_station/csvToJson.ts b/assets/layers/charging_station/csvToJson.ts index c630297c0..d781d33e7 100644 --- a/assets/layers/charging_station/csvToJson.ts +++ b/assets/layers/charging_station/csvToJson.ts @@ -56,6 +56,7 @@ function run(file, protojson) { const overview_question_answers = [] const questions: (TagRenderingConfigJson & { "id": string })[] = [] + const technicalQuestions: (TagRenderingConfigJson & { "id": string })[] = [] const filterOptions: { question: any, osmTags?: string } [] = [ { question: { @@ -149,7 +150,7 @@ function run(file, protojson) { } }) - questions.push({ + technicalQuestions.push({ "id": "voltage-" + i, question: { en: `What voltage do the plugs with ${descrWithImage_en} offer?`, @@ -178,7 +179,7 @@ function run(file, protojson) { }) - questions.push({ + technicalQuestions.push({ "id": "current-" + i, question: { en: `What current do the plugs with ${descrWithImage_en} offer?`, @@ -207,7 +208,7 @@ function run(file, protojson) { }) - questions.push({ + technicalQuestions.push({ "id": "power-output-" + i, question: { en: `What power output does a single plug of type ${descrWithImage_en} offer?`, @@ -247,7 +248,8 @@ function run(file, protojson) { const toggles = { "id": "Available_charging_stations (generated)", "question": { - "en": "Which charging stations are available here?" + "en": "Which charging connections are available here?", + "nl": "Welke aansluitingen zijn hier beschikbaar?" }, "multiAnswer": true, "mappings": overview_question_answers diff --git a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json index 733b94d9f..911cf7ac9 100644 --- a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json +++ b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json @@ -7,6 +7,9 @@ "en", "nl" ], + "mustHaveLanguage": [ + "nl" + ], "title": { "nl": "Toeristisch relevante info" }, diff --git a/langs/layers/en.json b/langs/layers/en.json index f32bf146e..3c5dae71a 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -1227,6 +1227,20 @@ "question": "Which vehicles are allowed to charge here?" }, "access": { + "mappings": { + "0": { + "then": "Anyone can use this charging station (payment might be needed)" + }, + "1": { + "then": "Anyone can use this charging station (payment might be needed)" + }, + "2": { + "then": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests" + }, + "3": { + "then": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)" + } + }, "question": "Who is allowed to use this charging station?", "render": "Access is {access}" }, @@ -1234,167 +1248,6 @@ "question": "How much vehicles can be charged here at the same time?", "render": "{capacity} vehicles can be charged here at the same time" }, - "current-0": { - "mappings": { - "0": { - "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 16 A" - } - }, - "question": "What current do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", - "render": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:current}A" - }, - "current-1": { - "mappings": { - "0": { - "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 16 A" - } - }, - "question": "What current do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", - "render": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:current}A" - }, - "current-10": { - "mappings": { - "0": { - "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 125 A" - }, - "1": { - "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 350 A" - } - }, - "question": "What current do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", - "render": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:current}A" - }, - "current-11": { - "mappings": { - "0": { - "then": "
Tesla Supercharger (destination)
outputs at most 125 A" - }, - "1": { - "then": "
Tesla Supercharger (destination)
outputs at most 350 A" - } - }, - "question": "What current do the plugs with
Tesla Supercharger (destination)
offer?", - "render": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:current}A" - }, - "current-12": { - "mappings": { - "0": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 16 A" - }, - "1": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 32 A" - } - }, - "question": "What current do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", - "render": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:current}A" - }, - "current-13": { - "mappings": { - "0": { - "then": "
USB to charge phones and small electronics
outputs at most 1 A" - }, - "1": { - "then": "
USB to charge phones and small electronics
outputs at most 2 A" - } - }, - "question": "What current do the plugs with
USB to charge phones and small electronics
offer?", - "render": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:current}A" - }, - "current-14": { - "question": "What current do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", - "render": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:current}A" - }, - "current-15": { - "question": "What current do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", - "render": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:current}A" - }, - "current-2": { - "mappings": { - "0": { - "then": "
Chademo
outputs at most 120 A" - } - }, - "question": "What current do the plugs with
Chademo
offer?", - "render": "
Chademo
outputs at most {socket:chademo:current}A" - }, - "current-3": { - "mappings": { - "0": { - "then": "
Type 1 with cable (J1772)
outputs at most 32 A" - } - }, - "question": "What current do the plugs with
Type 1 with cable (J1772)
offer?", - "render": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:current}A" - }, - "current-4": { - "mappings": { - "0": { - "then": "
Type 1 without cable (J1772)
outputs at most 32 A" - } - }, - "question": "What current do the plugs with
Type 1 without cable (J1772)
offer?", - "render": "
Type 1 without cable (J1772)
outputs at most {socket:type1:current}A" - }, - "current-5": { - "mappings": { - "0": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 A" - }, - "1": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 125 A" - } - }, - "question": "What current do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", - "render": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:current}A" - }, - "current-6": { - "mappings": { - "0": { - "then": "
Tesla Supercharger
outputs at most 125 A" - }, - "1": { - "then": "
Tesla Supercharger
outputs at most 350 A" - } - }, - "question": "What current do the plugs with
Tesla Supercharger
offer?", - "render": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:current}A" - }, - "current-7": { - "mappings": { - "0": { - "then": "
Type 2 (mennekes)
outputs at most 16 A" - }, - "1": { - "then": "
Type 2 (mennekes)
outputs at most 32 A" - } - }, - "question": "What current do the plugs with
Type 2 (mennekes)
offer?", - "render": "
Type 2 (mennekes)
outputs at most {socket:type2:current}A" - }, - "current-8": { - "mappings": { - "0": { - "then": "
Type 2 CCS (mennekes)
outputs at most 125 A" - }, - "1": { - "then": "
Type 2 CCS (mennekes)
outputs at most 350 A" - } - }, - "question": "What current do the plugs with
Type 2 CCS (mennekes)
offer?", - "render": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:current}A" - }, - "current-9": { - "mappings": { - "0": { - "then": "
Type 2 with cable (mennekes)
outputs at most 16 A" - }, - "1": { - "then": "
Type 2 with cable (mennekes)
outputs at most 32 A" - } - }, - "question": "What current do the plugs with
Type 2 with cable (mennekes)
offer?", - "render": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:current}A" - }, "email": { "question": "What is the email address of the operator?", "render": "In case of problems, send an email to {email}" @@ -1497,350 +1350,10 @@ "question": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", "render": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here" }, - "power-output-0": { - "mappings": { - "0": { - "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 3.6 kw" - } - }, - "question": "What power output does a single plug of type
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", - "render": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:output}" - }, - "power-output-1": { - "mappings": { - "0": { - "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 3 kw" - }, - "1": { - "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 22 kw" - } - }, - "question": "What power output does a single plug of type
European wall plug with ground pin (CEE7/4 type E)
offer?", - "render": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:output}" - }, - "power-output-10": { - "mappings": { - "0": { - "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 50 kw" - } - }, - "question": "What power output does a single plug of type
Tesla Supercharger CCS (a branded type2_css)
offer?", - "render": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:output}" - }, - "power-output-11": { - "mappings": { - "0": { - "then": "
Tesla Supercharger (destination)
outputs at most 120 kw" - }, - "1": { - "then": "
Tesla Supercharger (destination)
outputs at most 150 kw" - }, - "2": { - "then": "
Tesla Supercharger (destination)
outputs at most 250 kw" - } - }, - "question": "What power output does a single plug of type
Tesla Supercharger (destination)
offer?", - "render": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:output}" - }, - "power-output-12": { - "mappings": { - "0": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 11 kw" - }, - "1": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 22 kw" - } - }, - "question": "What power output does a single plug of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", - "render": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:output}" - }, - "power-output-13": { - "mappings": { - "0": { - "then": "
USB to charge phones and small electronics
outputs at most 5w" - }, - "1": { - "then": "
USB to charge phones and small electronics
outputs at most 10w" - } - }, - "question": "What power output does a single plug of type
USB to charge phones and small electronics
offer?", - "render": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:output}" - }, - "power-output-14": { - "question": "What power output does a single plug of type
Bosch Active Connect with 3 pins and cable
offer?", - "render": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:output}" - }, - "power-output-15": { - "question": "What power output does a single plug of type
Bosch Active Connect with 5 pins and cable
offer?", - "render": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:output}" - }, - "power-output-2": { - "mappings": { - "0": { - "then": "
Chademo
outputs at most 50 kw" - } - }, - "question": "What power output does a single plug of type
Chademo
offer?", - "render": "
Chademo
outputs at most {socket:chademo:output}" - }, - "power-output-3": { - "mappings": { - "0": { - "then": "
Type 1 with cable (J1772)
outputs at most 3.7 kw" - }, - "1": { - "then": "
Type 1 with cable (J1772)
outputs at most 7 kw" - } - }, - "question": "What power output does a single plug of type
Type 1 with cable (J1772)
offer?", - "render": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:output}" - }, - "power-output-4": { - "mappings": { - "0": { - "then": "
Type 1 without cable (J1772)
outputs at most 3.7 kw" - }, - "1": { - "then": "
Type 1 without cable (J1772)
outputs at most 6.6 kw" - }, - "2": { - "then": "
Type 1 without cable (J1772)
outputs at most 7 kw" - }, - "3": { - "then": "
Type 1 without cable (J1772)
outputs at most 7.2 kw" - } - }, - "question": "What power output does a single plug of type
Type 1 without cable (J1772)
offer?", - "render": "
Type 1 without cable (J1772)
outputs at most {socket:type1:output}" - }, - "power-output-5": { - "mappings": { - "0": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 kw" - }, - "1": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 62.5 kw" - }, - "2": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 150 kw" - }, - "3": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 350 kw" - } - }, - "question": "What power output does a single plug of type
Type 1 CCS (aka Type 1 Combo)
offer?", - "render": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:output}" - }, - "power-output-6": { - "mappings": { - "0": { - "then": "
Tesla Supercharger
outputs at most 120 kw" - }, - "1": { - "then": "
Tesla Supercharger
outputs at most 150 kw" - }, - "2": { - "then": "
Tesla Supercharger
outputs at most 250 kw" - } - }, - "question": "What power output does a single plug of type
Tesla Supercharger
offer?", - "render": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:output}" - }, - "power-output-7": { - "mappings": { - "0": { - "then": "
Type 2 (mennekes)
outputs at most 11 kw" - }, - "1": { - "then": "
Type 2 (mennekes)
outputs at most 22 kw" - } - }, - "question": "What power output does a single plug of type
Type 2 (mennekes)
offer?", - "render": "
Type 2 (mennekes)
outputs at most {socket:type2:output}" - }, - "power-output-8": { - "mappings": { - "0": { - "then": "
Type 2 CCS (mennekes)
outputs at most 50 kw" - } - }, - "question": "What power output does a single plug of type
Type 2 CCS (mennekes)
offer?", - "render": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:output}" - }, - "power-output-9": { - "mappings": { - "0": { - "then": "
Type 2 with cable (mennekes)
outputs at most 11 kw" - }, - "1": { - "then": "
Type 2 with cable (mennekes)
outputs at most 22 kw" - } - }, - "question": "What power output does a single plug of type
Type 2 with cable (mennekes)
offer?", - "render": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:output}" - }, "ref": { "question": "What is the reference number of this charging station?", "render": "Reference number is {ref}" }, - "voltage-0": { - "mappings": { - "0": { - "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs 230 volt" - } - }, - "question": "What voltage do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", - "render": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs {socket:schuko:voltage} volt" - }, - "voltage-1": { - "mappings": { - "0": { - "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs 230 volt" - } - }, - "question": "What voltage do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", - "render": "
European wall plug with ground pin (CEE7/4 type E)
outputs {socket:typee:voltage} volt" - }, - "voltage-10": { - "mappings": { - "0": { - "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs 500 volt" - }, - "1": { - "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs 920 volt" - } - }, - "question": "What voltage do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", - "render": "
Tesla Supercharger CCS (a branded type2_css)
outputs {socket:tesla_supercharger_ccs:voltage} volt" - }, - "voltage-11": { - "mappings": { - "0": { - "then": "
Tesla Supercharger (destination)
outputs 480 volt" - } - }, - "question": "What voltage do the plugs with
Tesla Supercharger (destination)
offer?", - "render": "
Tesla Supercharger (destination)
outputs {socket:tesla_destination:voltage} volt" - }, - "voltage-12": { - "mappings": { - "0": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 230 volt" - }, - "1": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 400 volt" - } - }, - "question": "What voltage do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", - "render": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs {socket:tesla_destination:voltage} volt" - }, - "voltage-13": { - "mappings": { - "0": { - "then": "
USB to charge phones and small electronics
outputs 5 volt" - } - }, - "question": "What voltage do the plugs with
USB to charge phones and small electronics
offer?", - "render": "
USB to charge phones and small electronics
outputs {socket:USB-A:voltage} volt" - }, - "voltage-14": { - "question": "What voltage do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", - "render": "
Bosch Active Connect with 3 pins and cable
outputs {socket:bosch_3pin:voltage} volt" - }, - "voltage-15": { - "question": "What voltage do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", - "render": "
Bosch Active Connect with 5 pins and cable
outputs {socket:bosch_5pin:voltage} volt" - }, - "voltage-2": { - "mappings": { - "0": { - "then": "
Chademo
outputs 500 volt" - } - }, - "question": "What voltage do the plugs with
Chademo
offer?", - "render": "
Chademo
outputs {socket:chademo:voltage} volt" - }, - "voltage-3": { - "mappings": { - "0": { - "then": "
Type 1 with cable (J1772)
outputs 200 volt" - }, - "1": { - "then": "
Type 1 with cable (J1772)
outputs 240 volt" - } - }, - "question": "What voltage do the plugs with
Type 1 with cable (J1772)
offer?", - "render": "
Type 1 with cable (J1772)
outputs {socket:type1_cable:voltage} volt" - }, - "voltage-4": { - "mappings": { - "0": { - "then": "
Type 1 without cable (J1772)
outputs 200 volt" - }, - "1": { - "then": "
Type 1 without cable (J1772)
outputs 240 volt" - } - }, - "question": "What voltage do the plugs with
Type 1 without cable (J1772)
offer?", - "render": "
Type 1 without cable (J1772)
outputs {socket:type1:voltage} volt" - }, - "voltage-5": { - "mappings": { - "0": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs 400 volt" - }, - "1": { - "then": "
Type 1 CCS (aka Type 1 Combo)
outputs 1000 volt" - } - }, - "question": "What voltage do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", - "render": "
Type 1 CCS (aka Type 1 Combo)
outputs {socket:type1_combo:voltage} volt" - }, - "voltage-6": { - "mappings": { - "0": { - "then": "
Tesla Supercharger
outputs 480 volt" - } - }, - "question": "What voltage do the plugs with
Tesla Supercharger
offer?", - "render": "
Tesla Supercharger
outputs {socket:tesla_supercharger:voltage} volt" - }, - "voltage-7": { - "mappings": { - "0": { - "then": "
Type 2 (mennekes)
outputs 230 volt" - }, - "1": { - "then": "
Type 2 (mennekes)
outputs 400 volt" - } - }, - "question": "What voltage do the plugs with
Type 2 (mennekes)
offer?", - "render": "
Type 2 (mennekes)
outputs {socket:type2:voltage} volt" - }, - "voltage-8": { - "mappings": { - "0": { - "then": "
Type 2 CCS (mennekes)
outputs 500 volt" - }, - "1": { - "then": "
Type 2 CCS (mennekes)
outputs 920 volt" - } - }, - "question": "What voltage do the plugs with
Type 2 CCS (mennekes)
offer?", - "render": "
Type 2 CCS (mennekes)
outputs {socket:type2_combo:voltage} volt" - }, - "voltage-9": { - "mappings": { - "0": { - "then": "
Type 2 with cable (mennekes)
outputs 230 volt" - }, - "1": { - "then": "
Type 2 with cable (mennekes)
outputs 400 volt" - } - }, - "question": "What voltage do the plugs with
Type 2 with cable (mennekes)
offer?", - "render": "
Type 2 with cable (mennekes)
outputs {socket:type2_cable:voltage} volt" - }, "website": { "question": "What is the website of the operator?", "render": "More info on {website}" diff --git a/langs/layers/it.json b/langs/layers/it.json index aa52a5224..efca2e950 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -752,11 +752,11 @@ "description": "Una stazione di ricarica", "name": "Stazioni di ricarica", "tagRenderings": { - "Auth phone": { + "Network": { "question": "A quale rete appartiene questa stazione di ricarica?", "render": "{network}" }, - "Authentication": { + "OH": { "question": "Quali sono gli orari di apertura di questa stazione di ricarica?" } }, diff --git a/langs/layers/ja.json b/langs/layers/ja.json index 5c5b0d1d6..b3385cb20 100644 --- a/langs/layers/ja.json +++ b/langs/layers/ja.json @@ -76,11 +76,11 @@ "description": "充電ステーション", "name": "充電ステーション", "tagRenderings": { - "Auth phone": { + "Network": { "question": "この充電ステーションの運営チェーンはどこですか?", "render": "{network}" }, - "Authentication": { + "OH": { "question": "この充電ステーションはいつオープンしますか?" } }, diff --git a/langs/layers/nb_NO.json b/langs/layers/nb_NO.json index 47a02bc8e..0ca42f3e8 100644 --- a/langs/layers/nb_NO.json +++ b/langs/layers/nb_NO.json @@ -174,10 +174,10 @@ "description": "En ladestasjon", "name": "Ladestasjoner", "tagRenderings": { - "Auth phone": { + "Network": { "render": "{network}" }, - "Authentication": { + "OH": { "question": "Når åpnet denne ladestasjonen?" } }, diff --git a/langs/layers/nl.json b/langs/layers/nl.json index fb5c7fbb8..fd947098d 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -1037,6 +1037,7 @@ } }, "charging_station": { + "description": "Oplaadpunten", "filter": { "0": { "options": { @@ -1107,7 +1108,41 @@ } } }, + "name": "Oplaadpunten", "tagRenderings": { + "Auth phone": { + "question": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", + "render": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}" + }, + "Authentication": { + "mappings": { + "0": { + "then": "Aanmelden met een lidkaart is mogelijk" + }, + "1": { + "then": "Aanmelden via een applicatie is mogelijk" + }, + "2": { + "then": "Aanmelden door te bellen naar een telefoonnummer is mogelijk" + }, + "3": { + "then": "Aanmelden via SMS is mogelijk" + }, + "4": { + "then": "Aanmelden via NFC is mogelijk" + }, + "5": { + "then": "Aanmelden met Money Card is mogelijk" + }, + "6": { + "then": "Aanmelden met een betaalkaart is mogelijk" + }, + "7": { + "then": "Hier opladen is (ook) mogelijk zonder aan te melden" + } + }, + "question": "Hoe kan men zich aanmelden aan dit oplaadstation?" + }, "Available_charging_stations (generated)": { "mappings": { "0": { @@ -1206,7 +1241,16 @@ "31": { "then": "
Bosch Active Connect met 5 pinnen aan een kabel
" } - } + }, + "question": "Welke aansluitingen zijn hier beschikbaar?" + }, + "OH": { + "mappings": { + "0": { + "then": "24/7 open - ook tijdens vakanties" + } + }, + "question": "Wanneer is dit oplaadpunt beschikbaar??" }, "Operational status": { "mappings": { @@ -1228,171 +1272,48 @@ }, "question": "Is dit oplaadpunt operationeel?" }, + "Type": { + "mappings": { + "0": { + "then": "Fietsen kunnen hier opgeladen worden" + }, + "1": { + "then": "Elektrische auto's kunnen hier opgeladen worden" + }, + "2": { + "then": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden" + }, + "3": { + "then": "Vrachtwagens kunnen hier opgeladen worden" + }, + "4": { + "then": "Bussen kunnen hier opgeladen worden" + } + }, + "question": "Welke voertuigen kunnen hier opgeladen worden?" + }, + "access": { + "mappings": { + "0": { + "then": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, + "1": { + "then": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, + "2": { + "then": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" + }, + "3": { + "then": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " + } + }, + "question": "Wie mag er dit oplaadpunt gebruiken?", + "render": "Toegang voor {access}" + }, "capacity": { "question": "Hoeveel voertuigen kunnen hier opgeladen worden?", "render": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden" }, - "current-0": { - "mappings": { - "0": { - "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal 16 A" - } - }, - "question": "Welke stroom levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?", - "render": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal {socket:schuko:current}A" - }, - "current-1": { - "mappings": { - "0": { - "then": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal 16 A" - } - }, - "question": "Welke stroom levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?", - "render": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal {socket:typee:current}A" - }, - "current-10": { - "mappings": { - "0": { - "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 125 A" - }, - "1": { - "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 350 A" - } - }, - "question": "Welke stroom levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?", - "render": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal {socket:tesla_supercharger_ccs:current}A" - }, - "current-11": { - "mappings": { - "0": { - "then": "
Tesla Supercharger (destination)
levert een stroom van maximaal 125 A" - }, - "1": { - "then": "
Tesla Supercharger (destination)
levert een stroom van maximaal 350 A" - } - }, - "question": "Welke stroom levert de stekker van type
Tesla Supercharger (destination)
?", - "render": "
Tesla Supercharger (destination)
levert een stroom van maximaal {socket:tesla_destination:current}A" - }, - "current-12": { - "mappings": { - "0": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 16 A" - }, - "1": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 32 A" - } - }, - "question": "Welke stroom levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?", - "render": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal {socket:tesla_destination:current}A" - }, - "current-13": { - "mappings": { - "0": { - "then": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 1 A" - }, - "1": { - "then": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 2 A" - } - }, - "question": "Welke stroom levert de stekker van type
USB om GSMs en kleine electronica op te laden
?", - "render": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal {socket:USB-A:current}A" - }, - "current-14": { - "question": "Welke stroom levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?", - "render": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_3pin:current}A" - }, - "current-15": { - "question": "Welke stroom levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?", - "render": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_5pin:current}A" - }, - "current-2": { - "mappings": { - "0": { - "then": "
Chademo
levert een stroom van maximaal 120 A" - } - }, - "question": "Welke stroom levert de stekker van type
Chademo
?", - "render": "
Chademo
levert een stroom van maximaal {socket:chademo:current}A" - }, - "current-3": { - "mappings": { - "0": { - "then": "
Type 1 met kabel (J1772)
levert een stroom van maximaal 32 A" - } - }, - "question": "Welke stroom levert de stekker van type
Type 1 met kabel (J1772)
?", - "render": "
Type 1 met kabel (J1772)
levert een stroom van maximaal {socket:type1_cable:current}A" - }, - "current-4": { - "mappings": { - "0": { - "then": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal 32 A" - } - }, - "question": "Welke stroom levert de stekker van type
Type 1 zonder kabel (J1772)
?", - "render": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal {socket:type1:current}A" - }, - "current-5": { - "mappings": { - "0": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 50 A" - }, - "1": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 125 A" - } - }, - "question": "Welke stroom levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?", - "render": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal {socket:type1_combo:current}A" - }, - "current-6": { - "mappings": { - "0": { - "then": "
Tesla Supercharger
levert een stroom van maximaal 125 A" - }, - "1": { - "then": "
Tesla Supercharger
levert een stroom van maximaal 350 A" - } - }, - "question": "Welke stroom levert de stekker van type
Tesla Supercharger
?", - "render": "
Tesla Supercharger
levert een stroom van maximaal {socket:tesla_supercharger:current}A" - }, - "current-7": { - "mappings": { - "0": { - "then": "
Type 2 (mennekes)
levert een stroom van maximaal 16 A" - }, - "1": { - "then": "
Type 2 (mennekes)
levert een stroom van maximaal 32 A" - } - }, - "question": "Welke stroom levert de stekker van type
Type 2 (mennekes)
?", - "render": "
Type 2 (mennekes)
levert een stroom van maximaal {socket:type2:current}A" - }, - "current-8": { - "mappings": { - "0": { - "then": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 125 A" - }, - "1": { - "then": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 350 A" - } - }, - "question": "Welke stroom levert de stekker van type
Type 2 CCS (mennekes)
?", - "render": "
Type 2 CCS (mennekes)
levert een stroom van maximaal {socket:type2_combo:current}A" - }, - "current-9": { - "mappings": { - "0": { - "then": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 16 A" - }, - "1": { - "then": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 32 A" - } - }, - "question": "Welke stroom levert de stekker van type
Type 2 met kabel (J1772)
?", - "render": "
Type 2 met kabel (J1772)
levert een stroom van maximaal {socket:type2_cable:current}A" - }, "fee/charge": { "mappings": { "0": { @@ -1487,347 +1408,13 @@ "question": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?", "render": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" }, - "power-output-0": { - "mappings": { - "0": { - "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal 3.6 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?", - "render": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal {socket:schuko:output}" - }, - "power-output-1": { - "mappings": { - "0": { - "then": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 3 kw" - }, - "1": { - "then": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 22 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?", - "render": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal {socket:typee:output}" - }, - "power-output-10": { - "mappings": { - "0": { - "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal 50 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?", - "render": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal {socket:tesla_supercharger_ccs:output}" - }, - "power-output-11": { - "mappings": { - "0": { - "then": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 120 kw" - }, - "1": { - "then": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 150 kw" - }, - "2": { - "then": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 250 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger (destination)
?", - "render": "
Tesla Supercharger (destination)
levert een vermogen van maximaal {socket:tesla_destination:output}" - }, - "power-output-12": { - "mappings": { - "0": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 11 kw" - }, - "1": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 22 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?", - "render": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal {socket:tesla_destination:output}" - }, - "power-output-13": { - "mappings": { - "0": { - "then": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 5w" - }, - "1": { - "then": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 10w" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
USB om GSMs en kleine electronica op te laden
?", - "render": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal {socket:USB-A:output}" - }, - "power-output-14": { - "question": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?", - "render": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_3pin:output}" - }, - "power-output-15": { - "question": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?", - "render": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_5pin:output}" - }, - "power-output-2": { - "mappings": { - "0": { - "then": "
Chademo
levert een vermogen van maximaal 50 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Chademo
?", - "render": "
Chademo
levert een vermogen van maximaal {socket:chademo:output}" - }, - "power-output-3": { - "mappings": { - "0": { - "then": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 3.7 kw" - }, - "1": { - "then": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 7 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Type 1 met kabel (J1772)
?", - "render": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal {socket:type1_cable:output}" - }, - "power-output-4": { - "mappings": { - "0": { - "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 3.7 kw" - }, - "1": { - "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 6.6 kw" - }, - "2": { - "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7 kw" - }, - "3": { - "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7.2 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Type 1 zonder kabel (J1772)
?", - "render": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal {socket:type1:output}" - }, - "power-output-5": { - "mappings": { - "0": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 50 kw" - }, - "1": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 62.5 kw" - }, - "2": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 150 kw" - }, - "3": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 350 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?", - "render": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal {socket:type1_combo:output}" - }, - "power-output-6": { - "mappings": { - "0": { - "then": "
Tesla Supercharger
levert een vermogen van maximaal 120 kw" - }, - "1": { - "then": "
Tesla Supercharger
levert een vermogen van maximaal 150 kw" - }, - "2": { - "then": "
Tesla Supercharger
levert een vermogen van maximaal 250 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger
?", - "render": "
Tesla Supercharger
levert een vermogen van maximaal {socket:tesla_supercharger:output}" - }, - "power-output-7": { - "mappings": { - "0": { - "then": "
Type 2 (mennekes)
levert een vermogen van maximaal 11 kw" - }, - "1": { - "then": "
Type 2 (mennekes)
levert een vermogen van maximaal 22 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Type 2 (mennekes)
?", - "render": "
Type 2 (mennekes)
levert een vermogen van maximaal {socket:type2:output}" - }, - "power-output-8": { - "mappings": { - "0": { - "then": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal 50 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Type 2 CCS (mennekes)
?", - "render": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal {socket:type2_combo:output}" - }, - "power-output-9": { - "mappings": { - "0": { - "then": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 11 kw" - }, - "1": { - "then": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 22 kw" - } - }, - "question": "Welk vermogen levert een enkele stekker van type
Type 2 met kabel (J1772)
?", - "render": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal {socket:type2_cable:output}" - }, - "voltage-0": { - "mappings": { - "0": { - "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van 230 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
", - "render": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van {socket:schuko:voltage} volt" - }, - "voltage-1": { - "mappings": { - "0": { - "then": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van 230 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
", - "render": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van {socket:typee:voltage} volt" - }, - "voltage-10": { - "mappings": { - "0": { - "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 500 volt" - }, - "1": { - "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 920 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", - "render": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van {socket:tesla_supercharger_ccs:voltage} volt" - }, - "voltage-11": { - "mappings": { - "0": { - "then": "
Tesla Supercharger (destination)
heeft een spanning van 480 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Tesla Supercharger (destination)
", - "render": "
Tesla Supercharger (destination)
heeft een spanning van {socket:tesla_destination:voltage} volt" - }, - "voltage-12": { - "mappings": { - "0": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 230 volt" - }, - "1": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 400 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
", - "render": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van {socket:tesla_destination:voltage} volt" - }, - "voltage-13": { - "mappings": { - "0": { - "then": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van 5 volt" - } - }, - "question": "Welke spanning levert de stekker van type
USB om GSMs en kleine electronica op te laden
", - "render": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van {socket:USB-A:voltage} volt" - }, - "voltage-14": { - "question": "Welke spanning levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
", - "render": "
Bosch Active Connect met 3 pinnen aan een kabel
heeft een spanning van {socket:bosch_3pin:voltage} volt" - }, - "voltage-15": { - "question": "Welke spanning levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
", - "render": "
Bosch Active Connect met 5 pinnen aan een kabel
heeft een spanning van {socket:bosch_5pin:voltage} volt" - }, - "voltage-2": { - "mappings": { - "0": { - "then": "
Chademo
heeft een spanning van 500 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Chademo
", - "render": "
Chademo
heeft een spanning van {socket:chademo:voltage} volt" - }, - "voltage-3": { - "mappings": { - "0": { - "then": "
Type 1 met kabel (J1772)
heeft een spanning van 200 volt" - }, - "1": { - "then": "
Type 1 met kabel (J1772)
heeft een spanning van 240 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Type 1 met kabel (J1772)
", - "render": "
Type 1 met kabel (J1772)
heeft een spanning van {socket:type1_cable:voltage} volt" - }, - "voltage-4": { - "mappings": { - "0": { - "then": "
Type 1 zonder kabel (J1772)
heeft een spanning van 200 volt" - }, - "1": { - "then": "
Type 1 zonder kabel (J1772)
heeft een spanning van 240 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Type 1 zonder kabel (J1772)
", - "render": "
Type 1 zonder kabel (J1772)
heeft een spanning van {socket:type1:voltage} volt" - }, - "voltage-5": { - "mappings": { - "0": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 400 volt" - }, - "1": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 1000 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
", - "render": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van {socket:type1_combo:voltage} volt" - }, - "voltage-6": { - "mappings": { - "0": { - "then": "
Tesla Supercharger
heeft een spanning van 480 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Tesla Supercharger
", - "render": "
Tesla Supercharger
heeft een spanning van {socket:tesla_supercharger:voltage} volt" - }, - "voltage-7": { - "mappings": { - "0": { - "then": "
Type 2 (mennekes)
heeft een spanning van 230 volt" - }, - "1": { - "then": "
Type 2 (mennekes)
heeft een spanning van 400 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Type 2 (mennekes)
", - "render": "
Type 2 (mennekes)
heeft een spanning van {socket:type2:voltage} volt" - }, - "voltage-8": { - "mappings": { - "0": { - "then": "
Type 2 CCS (mennekes)
heeft een spanning van 500 volt" - }, - "1": { - "then": "
Type 2 CCS (mennekes)
heeft een spanning van 920 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Type 2 CCS (mennekes)
", - "render": "
Type 2 CCS (mennekes)
heeft een spanning van {socket:type2_combo:voltage} volt" - }, - "voltage-9": { - "mappings": { - "0": { - "then": "
Type 2 met kabel (J1772)
heeft een spanning van 230 volt" - }, - "1": { - "then": "
Type 2 met kabel (J1772)
heeft een spanning van 400 volt" - } - }, - "question": "Welke spanning levert de stekker van type
Type 2 met kabel (J1772)
", - "render": "
Type 2 met kabel (J1772)
heeft een spanning van {socket:type2_cable:voltage} volt" + "ref": { + "render": "Het referentienummer van dit oplaadpunt is {ref}" } }, + "title": { + "render": "Oplaadpunten" + }, "units": { "0": { "applicableUnits": { diff --git a/langs/layers/ru.json b/langs/layers/ru.json index 66f7d0cb0..11ae28440 100644 --- a/langs/layers/ru.json +++ b/langs/layers/ru.json @@ -643,11 +643,11 @@ } }, "tagRenderings": { - "Auth phone": { + "Network": { "question": "К какой сети относится эта станция?", "render": "{network}" }, - "Authentication": { + "OH": { "question": "В какое время работает эта зарядная станция?" } }, diff --git a/langs/layers/zh_Hant.json b/langs/layers/zh_Hant.json index b0afffb78..e5e5f65bf 100644 --- a/langs/layers/zh_Hant.json +++ b/langs/layers/zh_Hant.json @@ -449,11 +449,11 @@ "description": "充電站", "name": "充電站", "tagRenderings": { - "Auth phone": { + "Network": { "question": "充電站所屬的網路是?", "render": "{network}" }, - "Authentication": { + "OH": { "question": "何時是充電站開放使用的時間?" } }, diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts index 4ee4d388c..e4c981dec 100644 --- a/scripts/generateLayerOverview.ts +++ b/scripts/generateLayerOverview.ts @@ -145,7 +145,7 @@ class LayerOverviewUtils { } } - const referencedLayers = Utils.NoNull(themeFile.layers.map(layer => { + const referencedLayers = Utils.NoNull([].concat(...themeFile.layers.map(layer => { if(typeof layer === "string"){ return layer } @@ -153,7 +153,12 @@ class LayerOverviewUtils { return layer["builtin"] } return undefined - })) + }).map(layerName => { + if(typeof layerName === "string"){ + return [layerName] + } + return layerName + }))) themeFile.layers = themeFile.layers .filter(l => typeof l != "string") // We remove all the builtin layer references as they don't work with ts-node for some weird reason @@ -172,7 +177,8 @@ class LayerOverviewUtils { const neededLanguages = themeFile["mustHaveLanguage"] if (neededLanguages !== undefined) { console.log("Checking language requerements for ", theme.id, "as it must have", neededLanguages.join(", ")) - const allTranslations = [].concat(Translation.ExtractAllTranslationsFrom(theme, theme.id), ...referencedLayers.map(layerId => Translation.ExtractAllTranslationsFrom(knownLayerIds.get(layerId), theme.id+"->"+layerId))) + const allTranslations = [].concat(Translation.ExtractAllTranslationsFrom(theme, theme.id), + ...referencedLayers.map(layerId => Translation.ExtractAllTranslationsFrom(knownLayerIds.get(layerId), theme.id+"->"+layerId))) for (const neededLanguage of neededLanguages) { allTranslations .filter(t => t.tr.translations[neededLanguage] === undefined && t.tr.translations["*"] === undefined) From 0252fd43abad1352846a5a27eebb6063229c29f3 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Oct 2021 23:58:42 +0200 Subject: [PATCH 24/30] Improvements to the charging station theme --- .../charging_station/charging_station.json | 3271 ++++++----------- .../charging_station.protojson | 306 +- 2 files changed, 1300 insertions(+), 2277 deletions(-) diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index fb14977e2..d353a778e 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -1,2175 +1,1102 @@ { - "id": "charging_station", - "name": { - "en": "Charging stations", - "nl": "Oplaadpunten", - "de": "Ladestationen", - "it": "Stazioni di ricarica", - "ja": "充電ステーション", - "nb_NO": "Ladestasjoner", - "ru": "Зарядные станции", - "zh_Hant": "充電站" - }, - "minzoom": 10, - "source": { - "osmTags": { - "or": [ - "amenity=charging_station", - "disused:amenity=charging_station", - "planned:amenity=charging_station", - "construction:amenity=charging_station" - ] - } - }, - "title": { - "render": { - "en": "Charging station", - "nl": "Oplaadpunten", - "de": "Ladestation", - "it": "Stazione di ricarica", - "ja": "充電ステーション", - "nb_NO": "Ladestasjon", - "ru": "Зарядная станция", - "zh_Hant": "充電站" - } - }, - "description": { - "en": "A charging station", - "nl": "Oplaadpunten", - "de": "Eine Ladestation", - "it": "Una stazione di ricarica", - "ja": "充電ステーション", - "nb_NO": "En ladestasjon", - "ru": "Зарядная станция", - "zh_Hant": "充電站" - }, - "tagRenderings": [ - "images", - { - "id": "Type", - "#": "Allowed vehicle types", - "question": { - "en": "Which vehicles are allowed to charge here?", - "nl": "Welke voertuigen kunnen hier opgeladen worden?", - "de": "Welche Fahrzeuge dürfen hier geladen werden?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "bicycle=yes", - "ifnot": "bicycle=no", - "then": { - "en": "bicycles can be charged here", - "nl": "Fietsen kunnen hier opgeladen worden", - "de": "Fahrräder können hier geladen werden" - } - }, - { - "if": "motorcar=yes", - "ifnot": "motorcar=no", - "then": { - "en": "Cars can be charged here", - "nl": "Elektrische auto's kunnen hier opgeladen worden", - "de": "Autos können hier geladen werden" - } - }, - { - "if": "scooter=yes", - "ifnot": "scooter=no", - "then": { - "en": "Scooters can be charged here", - "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden", - "de": " Roller können hier geladen werden" - } - }, - { - "if": "hgv=yes", - "ifnot": "hgv=no", - "then": { - "en": "Heavy good vehicles (such as trucks) can be charged here", - "nl": "Vrachtwagens kunnen hier opgeladen worden", - "de": "Lastkraftwagen (LKW) können hier geladen werden" - } - }, - { - "if": "bus=yes", - "ifnot": "bus=no", - "then": { - "en": "Buses can be charged here", - "nl": "Bussen kunnen hier opgeladen worden", - "de": "Busse können hier geladen werden" - } - } - ] - }, - { - "id": "access", - "question": { - "en": "Who is allowed to use this charging station?", - "nl": "Wie mag er dit oplaadpunt gebruiken?", - "de": "Wer darf diese Ladestation benutzen?" - }, - "render": { - "en": "Access is {access}", - "nl": "Toegang voor {access}", - "de": "Zugang ist {access}" - }, - "freeform": { - "key": "access", - "addExtraTags": [ - "fixme=Freeform field used for access - doublecheck the value" - ] - }, - "mappings": [ - { - "if": "access=yes", - "then": { - "en": "Anyone can use this charging station (payment might be needed)", - "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - } - }, - { - "if": { - "or": [ - "access=permissive", - "access=public" - ] - }, - "then": { - "en": "Anyone can use this charging station (payment might be needed)", - "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - }, - "hideInAnswer": true - }, - { - "if": "access=customers", - "then": { - "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", - "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" - } - }, - { - "if": "access=private", - "then": { - "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", - "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " - } - } - ] - }, - { - "id": "capacity", - "render": { - "en": "{capacity} vehicles can be charged here at the same time", - "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden", - "de": "{capacity} Fahrzeuge können hier gleichzeitig geladen werden" - }, - "question": { - "en": "How much vehicles can be charged here at the same time?", - "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?", - "de": "Wie viele Fahrzeuge können hier gleichzeitig geladen werden?" - }, - "freeform": { - "key": "capacity", - "type": "pnat" - } - }, - { - "id": "Available_charging_stations (generated)", - "question": { - "en": "Which charging stations are available here?", - "nl": "Welke aansluitingen zijn hier beschikbaar?", - "de": "Welche Ladestationen gibt es hier?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "socket:schuko=1", - "ifnot": "socket:schuko=", - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "hideInAnswer": { - "or": [ - "_country!=be", - "_country!=fr", - "_country!=ma", - "_country!=tn", - "_country!=pl", - "_country!=cs", - "_country!=sk", - "_country!=mo" - ] - } - }, - { - "if": { - "and": [ - "socket:schuko~*", - "socket:schuko!=1" - ] - }, - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:typee=1", - "ifnot": "socket:typee=", - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" - } - }, - { - "if": { - "and": [ - "socket:typee~*", - "socket:typee!=1" - ] - }, - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:chademo=1", - "ifnot": "socket:chademo=", - "then": { - "en": "
Chademo
", - "nl": "
Chademo
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:chademo~*", - "socket:chademo!=1" - ] - }, - "then": { - "en": "
Chademo
", - "nl": "
Chademo
", - "de": "
Chademo
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1_cable=1", - "ifnot": "socket:type1_cable=", - "then": { - "en": "
Type 1 with cable (J1772)
", - "nl": "
Type 1 met kabel (J1772)
", - "de": "
Typ 1 mit Kabel (J1772)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=1" - ] - }, - "then": { - "en": "
Type 1 with cable (J1772)
", - "nl": "
Type 1 met kabel (J1772)
", - "de": "
Typ 1 mit Kabel (J1772)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1=1", - "ifnot": "socket:type1=", - "then": { - "en": "
Type 1 without cable (J1772)
", - "nl": "
Type 1 zonder kabel (J1772)
", - "de": "
Typ 1 ohne Kabel (J1772)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1~*", - "socket:type1!=1" - ] - }, - "then": { - "en": "
Type 1 without cable (J1772)
", - "nl": "
Type 1 zonder kabel (J1772)
", - "de": "
Typ 1 ohne Kabel (J1772)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1_combo=1", - "ifnot": "socket:type1_combo=", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
", - "de": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=1" - ] - }, - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
", - "de": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_supercharger=1", - "ifnot": "socket:tesla_supercharger=", - "then": { - "en": "
Tesla Supercharger
", - "nl": "
Tesla Supercharger
", - "de": "
Tesla Supercharger
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger
", - "nl": "
Tesla Supercharger
", - "de": "
Tesla Supercharger
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2=1", - "ifnot": "socket:type2=", - "then": { - "en": "
Type 2 (mennekes)
", - "nl": "
Type 2 (mennekes)
", - "de": "
Typ 2 (Mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2~*", - "socket:type2!=1" - ] - }, - "then": { - "en": "
Type 2 (mennekes)
", - "nl": "
Type 2 (mennekes)
", - "de": "
Typ 2 (Mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2_combo=1", - "ifnot": "socket:type2_combo=", - "then": { - "en": "
Type 2 CCS (mennekes)
", - "nl": "
Type 2 CCS (mennekes)
", - "de": "
Typ 2 CCS (Mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=1" - ] - }, - "then": { - "en": "
Type 2 CCS (mennekes)
", - "nl": "
Type 2 CCS (mennekes)
", - "de": "
Typ 2 CCS (Mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2_cable=1", - "ifnot": "socket:type2_cable=", - "then": { - "en": "
Type 2 with cable (mennekes)
", - "nl": "
Type 2 met kabel (J1772)
", - "de": "
Typ 2 mit Kabel (Mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=1" - ] - }, - "then": { - "en": "
Type 2 with cable (mennekes)
", - "nl": "
Type 2 met kabel (J1772)
", - "de": "
Typ 2 mit Kabel (Mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_supercharger_ccs=1", - "ifnot": "socket:tesla_supercharger_ccs=", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", - "de": "
Tesla Supercharger CCS (Typ 2 CSS)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", - "de": "
Tesla Supercharger CCS (Typ 2 CSS)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_destination=1", - "ifnot": "socket:tesla_destination=", - "then": { - "en": "
Tesla Supercharger (destination)
", - "nl": "
Tesla Supercharger (destination)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - }, - { - "or": [ - "_country!=us" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger (destination)
", - "nl": "
Tesla Supercharger (destination)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_destination=1", - "ifnot": "socket:tesla_destination=", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - }, - { - "or": [ - "_country=us" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=1" - ] - }, - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:USB-A=1", - "ifnot": "socket:USB-A=", - "then": { - "en": "
USB to charge phones and small electronics
", - "nl": "
USB om GSMs en kleine electronica op te laden
", - "de": "
USB zum Laden von Smartphones oder Elektrokleingeräten
" - } - }, - { - "if": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=1" - ] - }, - "then": { - "en": "
USB to charge phones and small electronics
", - "nl": "
USB om GSMs en kleine electronica op te laden
", - "de": "
USB zum Laden von Smartphones und Elektrokleingeräten
" - }, - "hideInAnswer": true - }, - { - "if": "socket:bosch_3pin=1", - "ifnot": "socket:bosch_3pin=", - "then": { - "en": "
Bosch Active Connect with 3 pins and cable
", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "bicycle=no" - ] - }, - { - "and": [ - { - "or": [ - "car=yes", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - }, - "bicycle!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=1" - ] - }, - "then": { - "en": "
Bosch Active Connect with 3 pins and cable
", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "hideInAnswer": true - }, - { - "if": "socket:bosch_5pin=1", - "ifnot": "socket:bosch_5pin=", - "then": { - "en": "
Bosch Active Connect with 5 pins and cable
", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
", - "de": "
Bosch Active Connect mit 5 Pins und Kabel
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "bicycle=no" - ] - }, - { - "and": [ - { - "or": [ - "car=yes", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - }, - "bicycle!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=1" - ] - }, - "then": { - "en": "
Bosch Active Connect with 5 pins and cable
", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
", - "de": "
Bosch Active Connect mit 5 Pins und Kabel
" - }, - "hideInAnswer": true - } - ] - }, - { - "id": "plugs-0", - "question": { - "en": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", - "nl": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here", - "nl": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "freeform": { - "key": "socket:schuko", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:schuko~*", - "socket:schuko!=0" - ] - } - }, - { - "id": "plugs-1", - "question": { - "en": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", - "nl": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here", - "nl": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "freeform": { - "key": "socket:typee", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:typee~*", - "socket:typee!=0" - ] - } - }, - { - "id": "plugs-2", - "question": { - "en": "How much plugs of type
Chademo
are available here?", - "nl": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:chademo} plugs of type
Chademo
available here", - "nl": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" - }, - "freeform": { - "key": "socket:chademo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:chademo~*", - "socket:chademo!=0" - ] - } - }, - { - "id": "plugs-3", - "question": { - "en": "How much plugs of type
Type 1 with cable (J1772)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here", - "nl": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" - }, - "freeform": { - "key": "socket:type1_cable", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=0" - ] - } - }, - { - "id": "plugs-4", - "question": { - "en": "How much plugs of type
Type 1 without cable (J1772)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here", - "nl": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" - }, - "freeform": { - "key": "socket:type1", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1~*", - "socket:type1!=0" - ] - } - }, - { - "id": "plugs-5", - "question": { - "en": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here", - "nl": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "freeform": { - "key": "socket:type1_combo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=0" - ] - } - }, - { - "id": "plugs-6", - "question": { - "en": "How much plugs of type
Tesla Supercharger
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here", - "nl": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" - }, - "freeform": { - "key": "socket:tesla_supercharger", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=0" - ] - } - }, - { - "id": "plugs-7", - "question": { - "en": "How much plugs of type
Type 2 (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here", - "nl": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" - }, - "freeform": { - "key": "socket:type2", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2~*", - "socket:type2!=0" - ] - } - }, - { - "id": "plugs-8", - "question": { - "en": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here", - "nl": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" - }, - "freeform": { - "key": "socket:type2_combo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=0" - ] - } - }, - { - "id": "plugs-9", - "question": { - "en": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here", - "nl": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" - }, - "freeform": { - "key": "socket:type2_cable", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=0" - ] - } - }, - { - "id": "plugs-10", - "question": { - "en": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here", - "nl": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "freeform": { - "key": "socket:tesla_supercharger_ccs", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=0" - ] - } - }, - { - "id": "plugs-11", - "question": { - "en": "How much plugs of type
Tesla Supercharger (destination)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here", - "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" - }, - "freeform": { - "key": "socket:tesla_destination", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "plugs-12", - "question": { - "en": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here", - "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "freeform": { - "key": "socket:tesla_destination", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "plugs-13", - "question": { - "en": "How much plugs of type
USB to charge phones and small electronics
are available here?", - "nl": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here", - "nl": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" - }, - "freeform": { - "key": "socket:USB-A", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=0" - ] - } - }, - { - "id": "plugs-14", - "question": { - "en": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", - "nl": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here", - "nl": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "freeform": { - "key": "socket:bosch_3pin", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=0" - ] - } - }, - { - "id": "plugs-15", - "question": { - "en": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", - "nl": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here", - "nl": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "freeform": { - "key": "socket:bosch_5pin", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=0" - ] - } - }, - { - "id": "Authentication", - "question": { - "en": "What kind of authentication is available at the charging station?", - "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?", - "de": "Welche Authentifizierung ist an der Ladestation möglich?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "authentication:membership_card=yes", - "ifnot": "authentication:membership_card=no", - "then": { - "en": "Authentication by a membership card", - "nl": "Aanmelden met een lidkaart is mogelijk", - "de": "Authentifizierung durch eine Mitgliedskarte" - } - }, - { - "if": "authentication:app=yes", - "ifnot": "authentication:app=no", - "then": { - "en": "Authentication by an app", - "nl": "Aanmelden via een applicatie is mogelijk", - "de": "Authentifizierung durch eine App" - } - }, - { - "if": "authentication:phone_call=yes", - "ifnot": "authentication:phone_call=no", - "then": { - "en": "Authentication via phone call is available", - "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk", - "de": "Authentifizierung per Anruf ist möglich" - } - }, - { - "if": "authentication:short_message=yes", - "ifnot": "authentication:short_message=no", - "then": { - "en": "Authentication via phone call is available", - "nl": "Aanmelden via SMS is mogelijk", - "de": "Authentifizierung per Anruf ist möglich" - } - }, - { - "if": "authentication:nfc=yes", - "ifnot": "authentication:nfc=no", - "then": { - "en": "Authentication via NFC is available", - "nl": "Aanmelden via NFC is mogelijk", - "de": "Authentifizierung über NFC ist möglich" - } - }, - { - "if": "authentication:money_card=yes", - "ifnot": "authentication:money_card=no", - "then": { - "en": "Authentication via Money Card is available", - "nl": "Aanmelden met Money Card is mogelijk", - "de": "Authentifizierung über Geldkarte ist möglich" - } - }, - { - "if": "authentication:debit_card=yes", - "ifnot": "authentication:debit_card=no", - "then": { - "en": "Authentication via debit card is available", - "nl": "Aanmelden met een betaalkaart is mogelijk", - "de": "Authentifizierung per Debitkarte ist möglich" - } - }, - { - "if": "authentication:none=yes", - "ifnot": "authentication:none=no", - "then": { - "en": "Charging here is (also) possible without authentication", - "nl": "Hier opladen is (ook) mogelijk zonder aan te melden", - "de": "Das Aufladen ist hier (auch) ohne Authentifizierung möglich" - } - } - ] - }, - { - "id": "Auth phone", - "render": { - "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", - "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}", - "de": "Authentifizierung durch Anruf oder SMS an {authentication:phone_call:number}" - }, - "question": { - "en": "What's the phone number for authentication call or SMS?", - "nl": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", - "de": "Wie lautet die Telefonnummer für den Authentifizierungsanruf oder die SMS?" - }, - "freeform": { - "key": "authentication:phone_call:number", - "type": "phone" - }, - "condition": { - "or": [ - "authentication:phone_call=yes", - "authentication:short_message=yes" - ] - } - }, - { - "id": "OH", - "render": "{opening_hours_table(opening_hours)}", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "question": { - "en": "When is this charging station opened?", - "nl": "Wanneer is dit oplaadpunt beschikbaar??", - "de": "Wann ist diese Ladestation geöffnet?", - "it": "Quali sono gli orari di apertura di questa stazione di ricarica?", - "ja": "この充電ステーションはいつオープンしますか?", - "nb_NO": "Når åpnet denne ladestasjonen?", - "ru": "В какое время работает эта зарядная станция?", - "zh_Hant": "何時是充電站開放使用的時間?" - }, - "mappings": [ - { - "if": "opening_hours=24/7", - "then": { - "en": "24/7 opened (including holidays)", - "nl": "24/7 open - ook tijdens vakanties", - "de": "durchgehend geöffnet (auch an Feiertagen)" - } - } - ] - }, - { - "id": "fee/charge", - "question": { - "en": "How much does one have to pay to use this charging station?", - "nl": "Hoeveel kost het gebruik van dit oplaadpunt?", - "de": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?" - }, - "freeform": { - "key": "charge", - "addExtraTags": [ - "fee=yes" - ] - }, - "render": { - "en": "Using this charging station costs {charge}", - "nl": "Dit oplaadpunt gebruiken kost {charge}", - "de": "Die Nutzung dieser Ladestation kostet {charge}" - }, - "mappings": [ - { - "if": { - "and": [ - "fee=no", - "charge=" - ] - }, - "then": { - "nl": "Gratis te gebruiken", - "en": "Free to use", - "de": "Nutzung kostenlos" - } - } - ] - }, - { - "id": "payment-options", - "builtin": "payment-options", - "override": { - "condition": { - "or": [ - "fee=yes", - "charge~*" - ] - }, - "mappings+": [ - { - "if": "payment:app=yes", - "ifnot": "payment:app=no", - "then": { - "en": "Payment is done using a dedicated app", - "nl": "Betalen via een app van het netwerk", - "de": "Bezahlung mit einer speziellen App" - } - }, - { - "if": "payment:membership_card=yes", - "ifnot": "payment:membership_card=no", - "then": { - "en": "Payment is done using a membership card", - "nl": "Betalen via een lidkaart van het netwerk", - "de": "Bezahlung mit einer Mitgliedskarte" - } - } - ] - } - }, - { - "id": "maxstay", - "question": { - "en": "What is the maximum amount of time one is allowed to stay here?", - "nl": "Hoelang mag een voertuig hier blijven staan?", - "de": "Was ist die Höchstdauer des Aufenthalts hier?" - }, - "freeform": { - "key": "maxstay" - }, - "render": { - "en": "One can stay at most {canonical(maxstay)}", - "nl": "De maximale parkeertijd hier is {canonical(maxstay)}", - "de": "Die maximale Parkzeit beträgt {canonical(maxstay)}" - }, - "mappings": [ - { - "if": "maxstay=unlimited", - "then": { - "en": "No timelimit on leaving your vehicle here", - "nl": "Geen maximum parkeertijd", - "de": "Keine Höchstparkdauer" - } - } - ] - }, - { - "id": "Network", - "render": { - "en": "Part of the network {network}", - "de": "Teil des Netzwerks {network}", - "it": "{network}", - "ja": "{network}", - "nb_NO": "{network}", - "ru": "{network}", - "zh_Hant": "{network}" - }, - "question": { - "en": "Is this charging station part of a network?", - "de": "Ist diese Ladestation Teil eines Netzwerks?", - "it": "A quale rete appartiene questa stazione di ricarica?", - "ja": "この充電ステーションの運営チェーンはどこですか?", - "ru": "К какой сети относится эта станция?", - "zh_Hant": "充電站所屬的網路是?" - }, - "freeform": { - "key": "network" - }, - "mappings": [ - { - "if": "no:network=yes", - "then": { - "en": "Not part of a bigger network", - "de": "Nicht Teil eines größeren Netzwerks" - } - }, - { - "if": "network=none", - "then": { - "en": "Not part of a bigger network", - "de": "Nicht Teil eines größeren Netzwerks" - }, - "hideInAnswer": true - }, - { - "if": "network=AeroVironment", - "then": "AeroVironment" - }, - { - "if": "network=Blink", - "then": "Blink" - }, - { - "if": "network=eVgo", - "then": "eVgo" - } - ] - }, - { - "id": "Operator", - "question": { - "en": "Who is the operator of this charging station?", - "de": "Wer ist der Betreiber dieser Ladestation?" - }, - "render": { - "en": "This charging station is operated by {operator}", - "de": "Diese Ladestation wird betrieben von {operator}" - }, - "freeform": { - "key": "operator" - }, - "mappings": [ - { - "if": { - "and": [ - "network:={operator}" - ] - }, - "then": { - "en": "Actually, {operator} is the network", - "de": "Eigentlich ist {operator} das Netzwerk" - }, - "addExtraTags": [ - "operator=" - ], - "hideInAnswer": "operator=" - } - ] - }, - { - "id": "phone", - "question": { - "en": "What number can one call if there is a problem with this charging station?", - "de": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?" - }, - "render": { - "en": "In case of problems, call {phone}", - "de": "Bei Problemen, anrufen unter {phone}" - }, - "freeform": { - "key": "phone", - "type": "phone" - } - }, - { - "id": "email", - "question": { - "en": "What is the email address of the operator?", - "de": "Wie ist die Email-Adresse des Betreibers?" - }, - "render": { - "en": "In case of problems, send an email to {email}", - "de": "Bei Problemen senden Sie eine E-Mail an {email}" - }, - "freeform": { - "key": "email", - "type": "email" - } - }, - { - "id": "website", - "question": { - "en": "What is the website of the operator?", - "de": "Wie ist die Webseite des Betreibers?" - }, - "render": { - "en": "More info on {website}", - "de": "Weitere Informationen auf {website}" - }, - "freeform": { - "key": "website", - "type": "url" - } - }, - "level", - { - "id": "ref", - "question": { - "en": "What is the reference number of this charging station?", - "de": "Wie lautet die Kennung dieser Ladestation?" - }, - "render": { - "en": "Reference number is {ref}", - "nl": "Het referentienummer van dit oplaadpunt is {ref}", - "de": "Die Kennziffer ist {ref}" - }, - "freeform": { - "key": "ref" - } - }, - { - "id": "Operational status", - "question": { - "en": "Is this charging point in use?", - "nl": "Is dit oplaadpunt operationeel?", - "de": "Ist dieser Ladepunkt in Betrieb?" - }, - "mappings": [ - { - "if": "operational_status=broken", - "then": { - "en": "This charging station is broken", - "nl": "Dit oplaadpunt is kapot", - "de": "Diese Ladestation ist kaputt" - } - }, - { - "if": { - "and": [ - "planned:amenity=charging_station", - "amenity=" - ] - }, - "then": { - "en": "A charging station is planned here", - "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden", - "de": "Hier ist eine Ladestation geplant" - } - }, - { - "if": { - "and": [ - "construction:amenity=charging_station", - "amenity=" - ] - }, - "then": { - "en": "A charging station is constructed here", - "nl": "Hier wordt op dit moment een oplaadpunt gebouwd", - "de": "Hier wird eine Ladestation gebaut" - } - }, - { - "if": { - "and": [ - "disused:amenity=charging_station", - "amenity=" - ] - }, - "then": { - "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", - "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig", - "de": "Diese Ladestation wurde dauerhaft deaktiviert und wird nicht mehr benutzt, ist aber noch sichtbar" - } - }, - { - "if": { - "and": [ - "amenity=charging_station", - "operational_status=" - ] - }, - "then": { - "en": "This charging station works", - "nl": "Dit oplaadpunt werkt", - "de": "Diese Ladestation funktioniert" - } - } - ] - }, - { - "id": "Parking:fee", - "question": { - "en": "Does one have to pay a parking fee while charging?", - "de": "Muss man beim Laden eine Parkgebühr bezahlen?" - }, - "mappings": [ - { - "if": "parking:fee=no", - "then": { - "en": "No additional parking cost while charging", - "de": "Keine zusätzlichen Parkgebühren beim Laden" - } - }, - { - "if": "parking:fee=yes", - "then": { - "en": "An additional parking fee should be paid while charging", - "de": "Beim Laden ist eine zusätzliche Parkgebühr zu entrichten" - } - } - ], - "condition": { - "or": [ - "motor_vehicle=yes", - "hgv=yes", - "bus=yes", - "bicycle=no", - "bicycle=" - ] - } - } - ], - "icon": { - "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", - "mappings": [ - { - "if": "bicycle=yes", - "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" - }, - { - "if": { - "or": [ - "car=yes", - "motorcar=yes" - ] - }, - "then": "pin:#fff;./assets/themes/charging_stations/car.svg" - } - ] - }, - "iconOverlays": [ - { - "if": { - "or": [ - "disused:amenity=charging_station", - "operational_status=broken" - ] - }, - "then": "cross_bottom_right:#c22;" - }, - { - "if": { - "or": [ - "proposed:amenity=charging_station", - "planned:amenity=charging_station" - ] - }, - "then": "./assets/layers/charging_station/under_construction.svg", - "badge": true - }, - { - "if": { - "and": [ - "bicycle=yes", - { - "or": [ - "motorcar=yes", - "car=yes" - ] - } - ] - }, - "then": "circle:#fff;./assets/themes/charging_stations/car.svg", - "badge": true - } - ], - "width": { - "render": "8" - }, - "iconSize": { - "render": "50,50,bottom" - }, - "color": { - "render": "#00f" - }, - "presets": [ - { - "tags": [ - "amenity=charging_station" - ], - "title": { - "en": "Charging station", - "de": "Ladestation", - "ru": "Зарядная станция" - }, - "preciseInput": { - "preferredBackground": "map" - } - } - ], - "wayHandling": 1, - "filter": [ - { - "id": "vehicle-type", - "options": [ - { - "question": { - "en": "All vehicle types", - "nl": "Alle voertuigen", - "de": "Alle Fahrzeugtypen" - } - }, - { - "question": { - "en": "Charging station for bicycles", - "nl": "Oplaadpunten voor fietsen", - "de": "Ladestation für Fahrräder" - }, - "osmTags": "bicycle=yes" - }, - { - "question": { - "en": "Charging station for cars", - "nl": "Oplaadpunten voor auto's", - "de": "Ladestation für Autos" - }, - "osmTags": { - "or": [ - "car=yes", - "motorcar=yes" - ] - } - } - ] - }, - { - "id": "working", - "options": [ - { - "question": { - "en": "Only working charging stations", - "de": "Nur funktionierende Ladestationen" - }, - "osmTags": { - "and": [ - "operational_status!=broken", - "amenity=charging_station" - ] - } - } - ] - }, - { - "id": "connection_type", - "options": [ - { - "question": { - "en": "All connectors", - "nl": "Alle types", - "de": "Alle Anschlüsse" - } - }, - { - "question": { - "en": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector", - "nl": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "osmTags": "socket:schuko~*" - }, - { - "question": { - "en": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector", - "nl": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "osmTags": "socket:typee~*" - }, - { - "question": { - "en": "Has a
Chademo
connector", - "nl": "Heeft een
Chademo
", - "de": "Hat einen
Chademo
Stecker" - }, - "osmTags": "socket:chademo~*" - }, - { - "question": { - "en": "Has a
Type 1 with cable (J1772)
connector", - "nl": "Heeft een
Type 1 met kabel (J1772)
" - }, - "osmTags": "socket:type1_cable~*" - }, - { - "question": { - "en": "Has a
Type 1 without cable (J1772)
connector", - "nl": "Heeft een
Type 1 zonder kabel (J1772)
" - }, - "osmTags": "socket:type1~*" - }, - { - "question": { - "en": "Has a
Type 1 CCS (aka Type 1 Combo)
connector", - "nl": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "osmTags": "socket:type1_combo~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger
connector", - "nl": "Heeft een
Tesla Supercharger
", - "de": "Hat einen
Tesla Supercharger
Stecker" - }, - "osmTags": "socket:tesla_supercharger~*" - }, - { - "question": { - "en": "Has a
Type 2 (mennekes)
connector", - "nl": "Heeft een
Type 2 (mennekes)
" - }, - "osmTags": "socket:type2~*" - }, - { - "question": { - "en": "Has a
Type 2 CCS (mennekes)
connector", - "nl": "Heeft een
Type 2 CCS (mennekes)
" - }, - "osmTags": "socket:type2_combo~*" - }, - { - "question": { - "en": "Has a
Type 2 with cable (mennekes)
connector", - "nl": "Heeft een
Type 2 met kabel (J1772)
" - }, - "osmTags": "socket:type2_cable~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector", - "nl": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "osmTags": "socket:tesla_supercharger_ccs~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger (destination)
connector", - "nl": "Heeft een
Tesla Supercharger (destination)
" - }, - "osmTags": "socket:tesla_destination~*" - }, - { - "question": { - "en": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector", - "nl": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "osmTags": "socket:tesla_destination~*" - }, - { - "question": { - "en": "Has a
USB to charge phones and small electronics
connector", - "nl": "Heeft een
USB om GSMs en kleine electronica op te laden
" - }, - "osmTags": "socket:USB-A~*" - }, - { - "question": { - "en": "Has a
Bosch Active Connect with 3 pins and cable
connector", - "nl": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "osmTags": "socket:bosch_3pin~*" - }, - { - "question": { - "en": "Has a
Bosch Active Connect with 5 pins and cable
connector", - "nl": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "osmTags": "socket:bosch_5pin~*" - } - ] - } - ], - "units": [ - { - "appliesToKey": [ - "maxstay" - ], - "applicableUnits": [ - { - "canonicalDenomination": "minutes", - "canonicalDenominationSingular": "minute", - "alternativeDenomination": [ - "m", - "min", - "mins", - "minuten", - "mns" - ], - "human": { - "en": " minutes", - "nl": " minuten", - "de": " Minuten", - "ru": " минут" - }, - "humanSingular": { - "en": " minute", - "nl": " minuut", - "de": " Minute", - "ru": " минута" - } - }, - { - "canonicalDenomination": "hours", - "canonicalDenominationSingular": "hour", - "alternativeDenomination": [ - "h", - "hrs", - "hours", - "u", - "uur", - "uren" - ], - "human": { - "en": " hours", - "nl": " uren", - "de": " Stunden", - "ru": " часов" - }, - "humanSingular": { - "en": " hour", - "nl": " uur", - "de": " Stunde", - "ru": " час" - } - }, - { - "canonicalDenomination": "days", - "canonicalDenominationSingular": "day", - "alternativeDenomination": [ - "dys", - "dagen", - "dag" - ], - "human": { - "en": " days", - "nl": " day", - "de": " Tage", - "ru": " дней" - }, - "humanSingular": { - "en": " day", - "nl": " dag", - "de": " Tag", - "ru": " день" - } - } - ] - }, - { - "appliesToKey": [ - "socket:schuko:voltage", - "socket:typee:voltage", - "socket:chademo:voltage", - "socket:type1_cable:voltage", - "socket:type1:voltage", - "socket:type1_combo:voltage", - "socket:tesla_supercharger:voltage", - "socket:type2:voltage", - "socket:type2_combo:voltage", - "socket:type2_cable:voltage", - "socket:tesla_supercharger_ccs:voltage", - "socket:tesla_destination:voltage", - "socket:tesla_destination:voltage", - "socket:USB-A:voltage", - "socket:bosch_3pin:voltage", - "socket:bosch_5pin:voltage" - ], - "applicableUnits": [ - { - "canonicalDenomination": "V", - "alternativeDenomination": [ - "v", - "volt", - "voltage", - "V", - "Volt" - ], - "human": { - "en": "Volts", - "nl": "volt", - "de": "Volt", - "ru": "Вольт" - } - } - ], - "eraseInvalidValues": true - }, - { - "appliesToKey": [ - "socket:schuko:current", - "socket:typee:current", - "socket:chademo:current", - "socket:type1_cable:current", - "socket:type1:current", - "socket:type1_combo:current", - "socket:tesla_supercharger:current", - "socket:type2:current", - "socket:type2_combo:current", - "socket:type2_cable:current", - "socket:tesla_supercharger_ccs:current", - "socket:tesla_destination:current", - "socket:tesla_destination:current", - "socket:USB-A:current", - "socket:bosch_3pin:current", - "socket:bosch_5pin:current" - ], - "applicableUnits": [ - { - "canonicalDenomination": "A", - "alternativeDenomination": [ - "a", - "amp", - "amperage", - "A" - ], - "human": { - "en": "A", - "nl": "A" - } - } - ], - "eraseInvalidValues": true - }, - { - "appliesToKey": [ - "socket:schuko:output", - "socket:typee:output", - "socket:chademo:output", - "socket:type1_cable:output", - "socket:type1:output", - "socket:type1_combo:output", - "socket:tesla_supercharger:output", - "socket:type2:output", - "socket:type2_combo:output", - "socket:type2_cable:output", - "socket:tesla_supercharger_ccs:output", - "socket:tesla_destination:output", - "socket:tesla_destination:output", - "socket:USB-A:output", - "socket:bosch_3pin:output", - "socket:bosch_5pin:output" - ], - "applicableUnits": [ - { - "canonicalDenomination": "kW", - "alternativeDenomination": [ - "kilowatt" - ], - "human": { - "en": "kilowatt", - "nl": "kilowatt", - "de": "Kilowatt", - "ru": "киловатт" - } - }, - { - "canonicalDenomination": "mW", - "alternativeDenomination": [ - "megawatt" - ], - "human": { - "en": "megawatt", - "nl": "megawatt", - "de": "Megawatt", - "ru": "мегаватт" - } - } - ], - "eraseInvalidValues": true - } - ], - "allowMove": { - "enableRelocation": false, - "enableImproveAccuracy": true - }, - "deletion": { - "softDeletionTags": { - "and": [ - "amenity=", - "disused:amenity=charging_station" - ] - }, - "neededChangesets": 10 + "id": "charging_station", + "name": { + "en": "Charging stations", + "nl": "Oplaadpunten" + }, + "minzoom": 10, + "source": { + "osmTags": { + "or": [ + "amenity=charging_station", + "disused:amenity=charging_station", + "planned:amenity=charging_station", + "construction:amenity=charging_station" + ] } + }, + "title": { + "render": { + "en": "Charging station", + "nl": "Oplaadpunten" + } + }, + "description": { + "en": "A charging station", + "nl": "Oplaadpunten" + }, + "tagRenderings": [ + "images", + { + "id": "Type", + "#": "Allowed vehicle types", + "question": { + "en": "Which vehicles are allowed to charge here?", + "nl": "Welke voertuigen kunnen hier opgeladen worden?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "bicycle=yes", + "ifnot": "bicycle=no", + "then": { + "en": "Bcycles can be charged here", + "nl": "Fietsen kunnen hier opgeladen worden" + } + }, + { + "if": "motorcar=yes", + "ifnot": "motorcar=no", + "then": { + "en": "Cars can be charged here", + "nl": "Elektrische auto's kunnen hier opgeladen worden" + } + }, + { + "if": "scooter=yes", + "ifnot": "scooter=no", + "then": { + "en": "Scooters can be charged here", + "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden" + } + }, + { + "if": "hgv=yes", + "ifnot": "hgv=no", + "then": { + "en": "Heavy good vehicles (such as trucks) can be charged here", + "nl": "Vrachtwagens kunnen hier opgeladen worden" + } + }, + { + "if": "bus=yes", + "ifnot": "bus=no", + "then": { + "en": "Buses can be charged here", + "nl": "Bussen kunnen hier opgeladen worden" + } + } + ] + }, + { + "id": "access", + "question": { + "en": "Who is allowed to use this charging station?", + "nl": "Wie mag er dit oplaadpunt gebruiken?" + }, + "render": { + "en": "Access is {access}", + "nl": "Toegang voor {access}" + }, + "freeform": { + "key": "access", + "addExtraTags": [ + "fixme=Freeform field used for access - doublecheck the value" + ] + }, + "mappings": [ + { + "if": "access=yes", + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + } + }, + { + "if": { + "or": [ + "access=permissive", + "access=public" + ] + }, + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, + "hideInAnswer": true + }, + { + "if": "access=customers", + "then": { + "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", + "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" + } + }, + { + "if": "access=private", + "then": { + "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", + "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " + } + } + ] + }, + { + "id": "capacity", + "render": { + "en": "{capacity} vehicles can be charged here at the same time", + "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden" + }, + "question": { + "en": "How much vehicles can be charged here at the same time?", + "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?" + }, + "freeform": { + "key": "capacity", + "type": "pnat" + } + }, + { + "id": "$$$" + }, + { + "id": "OH", + "render": "{opening_hours_table(opening_hours)}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "question": { + "en": "When is this charging station opened?", + "nl": "Wanneer is dit oplaadpunt beschikbaar??" + }, + "mappings": [ + { + "if": "opening_hours=24/7", + "then": { + "en": "24/7 opened (including holidays)", + "nl": "24/7 open - ook tijdens vakanties" + } + } + ] + }, + { + "id": "fee", + "question": { + "en": "Does one have to pay to use this charging station?", + "nl": "Moet men betalen om dit oplaadpunt te gebruiken?" + }, + "mappings": [ + { + "if": { + "and": [ + "fee=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken", + "en": "Free to use" + }, + "hideInAnswer": true + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=yes" + ] + }, + "then": { + "nl": "Gratis te gebruiken (zonder aan te melden)", + "en": "Free to use (without authenticating)" + } + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht", + "en": "Free to use, but one has to authenticate" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=no @ customers" + ] + }, + "then": { + "nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/...", + "en": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=" + ] + }, + "then": { + "nl": "Betalend", + "en": "Paid use" + } + } + ] + }, + { + "id": "charge", + "question": { + "en": "How much does one have to pay to use this charging station?", + "nl": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?" + }, + "render": { + "en": "Using this charging station costs {charge}", + "nl": "Dit oplaadpunt gebruiken kost {charge}" + }, + "freeform": { + "key": "charge" + }, + "condition": "fee=yes" + }, + { + "id": "payment-options", + "builtin": "payment-options", + "override": { + "condition": { + "or": [ + "fee=yes", + "charge~*" + ] + }, + "mappings+": [ + { + "if": "payment:app=yes", + "ifnot": "payment:app=no", + "then": { + "en": "Payment is done using a dedicated app", + "nl": "Betalen via een app van het netwerk" + } + }, + { + "if": "payment:membership_card=yes", + "ifnot": "payment:membership_card=no", + "then": { + "en": "Payment is done using a membership card", + "nl": "Betalen via een lidkaart van het netwerk" + } + } + ] + } + }, + { + "id": "Authentication", + "#": "In some cases, charging is free but one has to be authenticated. We only ask for authentication if fee is no (or unset). By default one sees the questions for either the payment options or the authentication options, but normally not both", + "question": { + "en": "What kind of authentication is available at the charging station?", + "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "authentication:membership_card=yes", + "ifnot": "authentication:membership_card=no", + "then": { + "en": "Authentication by a membership card", + "nl": "Aanmelden met een lidkaart is mogelijk" + } + }, + { + "if": "authentication:app=yes", + "ifnot": "authentication:app=no", + "then": { + "en": "Authentication by an app", + "nl": "Aanmelden via een applicatie is mogelijk" + } + }, + { + "if": "authentication:phone_call=yes", + "ifnot": "authentication:phone_call=no", + "then": { + "en": "Authentication via phone call is available", + "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk" + } + }, + { + "if": "authentication:short_message=yes", + "ifnot": "authentication:short_message=no", + "then": { + "en": "Authentication via SMS is available", + "nl": "Aanmelden via SMS is mogelijk" + } + }, + { + "if": "authentication:nfc=yes", + "ifnot": "authentication:nfc=no", + "then": { + "en": "Authentication via NFC is available", + "nl": "Aanmelden via NFC is mogelijk" + } + }, + { + "if": "authentication:money_card=yes", + "ifnot": "authentication:money_card=no", + "then": { + "en": "Authentication via Money Card is available", + "nl": "Aanmelden met Money Card is mogelijk" + } + }, + { + "if": "authentication:debit_card=yes", + "ifnot": "authentication:debit_card=no", + "then": { + "en": "Authentication via debit card is available", + "nl": "Aanmelden met een betaalkaart is mogelijk" + } + }, + { + "if": "authentication:none=yes", + "ifnot": "authentication:none=no", + "then": { + "en": "Charging here is (also) possible without authentication", + "nl": "Hier opladen is (ook) mogelijk zonder aan te melden" + } + } + ], + "condition": { + "or": [ + "fee=no", + "fee=" + ] + } + }, + { + "id": "Auth phone", + "render": { + "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", + "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}" + }, + "question": { + "en": "What's the phone number for authentication call or SMS?", + "nl": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?" + }, + "freeform": { + "key": "authentication:phone_call:number", + "type": "phone" + }, + "condition": { + "or": [ + "authentication:phone_call=yes", + "authentication:short_message=yes" + ] + } + }, + { + "id": "maxstay", + "question": { + "en": "What is the maximum amount of time one is allowed to stay here?", + "nl": "Hoelang mag een voertuig hier blijven staan?" + }, + "freeform": { + "key": "maxstay" + }, + "render": { + "en": "One can stay at most {canonical(maxstay)}", + "nl": "De maximale parkeertijd hier is {canonical(maxstay)}" + }, + "mappings": [ + { + "if": "maxstay=unlimited", + "then": { + "en": "No timelimit on leaving your vehicle here", + "nl": "Geen maximum parkeertijd" + } + } + ], + "condition": { + "or": [ + "maxstay~*", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + } + }, + { + "id": "Network", + "render": { + "en": "Part of the network {network}" + }, + "question": { + "en": "Is this charging station part of a network?" + }, + "freeform": { + "key": "network" + }, + "mappings": [ + { + "if": "no:network=yes", + "then": { + "en": "Not part of a bigger network" + } + }, + { + "if": "network=none", + "then": { + "en": "Not part of a bigger network" + }, + "hideInAnswer": true + }, + { + "if": "network=AeroVironment", + "then": "AeroVironment" + }, + { + "if": "network=Blink", + "then": "Blink" + }, + { + "if": "network=eVgo", + "then": "eVgo" + } + ] + }, + { + "id": "Operator", + "question": { + "en": "Who is the operator of this charging station?" + }, + "render": { + "en": "This charging station is operated by {operator}" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": { + "and": [ + "network:={operator}" + ] + }, + "then": { + "en": "Actually, {operator} is the network" + }, + "addExtraTags": [ + "operator=" + ], + "hideInAnswer": "operator=" + } + ] + }, + { + "id": "phone", + "question": { + "en": "What number can one call if there is a problem with this charging station?" + }, + "render": { + "en": "In case of problems, call {phone}" + }, + "freeform": { + "key": "phone", + "type": "phone" + } + }, + { + "id": "email", + "question": { + "en": "What is the email address of the operator?" + }, + "render": { + "en": "In case of problems, send an email to {email}" + }, + "freeform": { + "key": "email", + "type": "email" + } + }, + { + "id": "website", + "question": { + "en": "What is the website of the operator?" + }, + "render": { + "en": "More info on {website}" + }, + "freeform": { + "key": "website", + "type": "url" + } + }, + "level", + { + "id": "ref", + "question": { + "en": "What is the reference number of this charging station?" + }, + "render": { + "en": "Reference number is {ref}", + "nl": "Het referentienummer van dit oplaadpunt is {ref}" + }, + "freeform": { + "key": "ref" + }, + "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", + "condition": "network!=" + }, + { + "id": "Operational status", + "question": { + "en": "Is this charging point in use?", + "nl": "Is dit oplaadpunt operationeel?" + }, + "mappings": [ + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=charging_station" + ] + }, + "then": { + "en": "This charging station works", + "nl": "Dit oplaadpunt werkt" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=broken", + "amenity=charging_station" + ] + }, + "then": { + "en": "This charging station is broken", + "nl": "Dit oplaadpunt is kapot" + } + }, + { + "if": { + "and": [ + "planned:amenity=charging_station", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=" + ] + }, + "then": { + "en": "A charging station is planned here", + "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=charging_station", + "disused:amenity=", + "operational_status=broken", + "amenity=" + ] + }, + "then": { + "en": "A charging station is constructed here", + "nl": "Hier wordt op dit moment een oplaadpunt gebouwd" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=charging_station", + "operational_status=broken", + "amenity=" + ] + }, + "then": { + "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", + "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig" + } + } + ] + }, + { + "id": "Parking:fee", + "question": { + "en": "Does one have to pay a parking fee while charging?" + }, + "mappings": [ + { + "if": "parking:fee=no", + "then": { + "en": "No additional parking cost while charging" + } + }, + { + "if": "parking:fee=yes", + "then": { + "en": "An additional parking fee should be paid while charging" + } + } + ], + "condition": { + "or": [ + "motor_vehicle=yes", + "hgv=yes", + "bus=yes", + "bicycle=no", + "bicycle=" + ] + } + } + ], + "icon": { + "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", + "mappings": [ + { + "if": "bicycle=yes", + "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" + }, + { + "if": { + "or": [ + "car=yes", + "motorcar=yes" + ] + }, + "then": "pin:#fff;./assets/themes/charging_stations/car.svg" + } + ] + }, + "iconOverlays": [ + { + "if": { + "or": [ + "disused:amenity=charging_station", + "operational_status=broken" + ] + }, + "then": "cross_bottom_right:#c22;" + }, + { + "if": { + "or": [ + "proposed:amenity=charging_station", + "planned:amenity=charging_station" + ] + }, + "then": "./assets/layers/charging_station/under_construction.svg", + "badge": true + }, + { + "if": { + "and": [ + "bicycle=yes", + { + "or": [ + "motorcar=yes", + "car=yes" + ] + } + ] + }, + "then": "circle:#fff;./assets/themes/charging_stations/car.svg", + "badge": true + } + ], + "width": { + "render": "8" + }, + "iconSize": { + "render": "50,50,bottom" + }, + "color": { + "render": "#00f" + }, + "presets": [ + { + "tags": [ + "amenity=charging_station" + ], + "title": { + "en": "Charging station" + }, + "preciseInput": { + "preferredBackground": "map" + } + } + ], + "wayHandling": 1, + "filter": [ + { + "id": "vehicle-type", + "options": [ + { + "question": { + "en": "All vehicle types", + "nl": "Alle voertuigen" + } + }, + { + "question": { + "en": "Charging station for bicycles", + "nl": "Oplaadpunten voor fietsen" + }, + "osmTags": "bicycle=yes" + }, + { + "question": { + "en": "Charging station for cars", + "nl": "Oplaadpunten voor auto's" + }, + "osmTags": { + "or": [ + "car=yes", + "motorcar=yes" + ] + } + } + ] + }, + { + "id": "working", + "options": [ + { + "question": { + "en": "Only working charging stations" + }, + "osmTags": { + "and": [ + "operational_status!=broken", + "amenity=charging_station" + ] + } + } + ] + }, + { + "id": "connection_type", + "options": [ + { + "question": { + "en": "All connectors", + "nl": "Alle types" + } + }, + { + "question": { + "en": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector", + "nl": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "osmTags": "socket:schuko~*" + }, + { + "question": { + "en": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector", + "nl": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "osmTags": "socket:typee~*" + }, + { + "question": { + "en": "Has a
Chademo
connector", + "nl": "Heeft een
Chademo
" + }, + "osmTags": "socket:chademo~*" + }, + { + "question": { + "en": "Has a
Type 1 with cable (J1772)
connector", + "nl": "Heeft een
Type 1 met kabel (J1772)
" + }, + "osmTags": "socket:type1_cable~*" + }, + { + "question": { + "en": "Has a
Type 1 without cable (J1772)
connector", + "nl": "Heeft een
Type 1 zonder kabel (J1772)
" + }, + "osmTags": "socket:type1~*" + }, + { + "question": { + "en": "Has a
Type 1 CCS (aka Type 1 Combo)
connector", + "nl": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "osmTags": "socket:type1_combo~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger
connector", + "nl": "Heeft een
Tesla Supercharger
" + }, + "osmTags": "socket:tesla_supercharger~*" + }, + { + "question": { + "en": "Has a
Type 2 (mennekes)
connector", + "nl": "Heeft een
Type 2 (mennekes)
" + }, + "osmTags": "socket:type2~*" + }, + { + "question": { + "en": "Has a
Type 2 CCS (mennekes)
connector", + "nl": "Heeft een
Type 2 CCS (mennekes)
" + }, + "osmTags": "socket:type2_combo~*" + }, + { + "question": { + "en": "Has a
Type 2 with cable (mennekes)
connector", + "nl": "Heeft een
Type 2 met kabel (J1772)
" + }, + "osmTags": "socket:type2_cable~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector", + "nl": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "osmTags": "socket:tesla_supercharger_ccs~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger (destination)
connector", + "nl": "Heeft een
Tesla Supercharger (destination)
" + }, + "osmTags": "socket:tesla_destination~*" + }, + { + "question": { + "en": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector", + "nl": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "osmTags": "socket:tesla_destination~*" + }, + { + "question": { + "en": "Has a
USB to charge phones and small electronics
connector", + "nl": "Heeft een
USB om GSMs en kleine electronica op te laden
" + }, + "osmTags": "socket:USB-A~*" + }, + { + "question": { + "en": "Has a
Bosch Active Connect with 3 pins and cable
connector", + "nl": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "osmTags": "socket:bosch_3pin~*" + }, + { + "question": { + "en": "Has a
Bosch Active Connect with 5 pins and cable
connector", + "nl": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "osmTags": "socket:bosch_5pin~*" + } + ] + } + ], + "units": [ + { + "appliesToKey": [ + "maxstay" + ], + "applicableUnits": [ + { + "canonicalDenomination": "minutes", + "canonicalDenominationSingular": "minute", + "alternativeDenomination": [ + "m", + "min", + "mins", + "minuten", + "mns" + ], + "human": { + "en": " minutes", + "nl": " minuten" + }, + "humanSingular": { + "en": " minute", + "nl": " minuut" + } + }, + { + "canonicalDenomination": "hours", + "canonicalDenominationSingular": "hour", + "alternativeDenomination": [ + "h", + "hrs", + "hours", + "u", + "uur", + "uren" + ], + "human": { + "en": " hours", + "nl": " uren" + }, + "humanSingular": { + "en": " hour", + "nl": " uur" + } + }, + { + "canonicalDenomination": "days", + "canonicalDenominationSingular": "day", + "alternativeDenomination": [ + "dys", + "dagen", + "dag" + ], + "human": { + "en": " days", + "nl": " day" + }, + "humanSingular": { + "en": " day", + "nl": " dag" + } + } + ] + }, + { + "appliesToKey": [ + "socket:schuko:voltage", + "socket:typee:voltage", + "socket:chademo:voltage", + "socket:type1_cable:voltage", + "socket:type1:voltage", + "socket:type1_combo:voltage", + "socket:tesla_supercharger:voltage", + "socket:type2:voltage", + "socket:type2_combo:voltage", + "socket:type2_cable:voltage", + "socket:tesla_supercharger_ccs:voltage", + "socket:tesla_destination:voltage", + "socket:tesla_destination:voltage", + "socket:USB-A:voltage", + "socket:bosch_3pin:voltage", + "socket:bosch_5pin:voltage" + ], + "applicableUnits": [ + { + "canonicalDenomination": "V", + "alternativeDenomination": [ + "v", + "volt", + "voltage", + "V", + "Volt" + ], + "human": { + "en": "Volts", + "nl": "volt" + } + } + ], + "eraseInvalidValues": true + }, + { + "appliesToKey": [ + "socket:schuko:current", + "socket:typee:current", + "socket:chademo:current", + "socket:type1_cable:current", + "socket:type1:current", + "socket:type1_combo:current", + "socket:tesla_supercharger:current", + "socket:type2:current", + "socket:type2_combo:current", + "socket:type2_cable:current", + "socket:tesla_supercharger_ccs:current", + "socket:tesla_destination:current", + "socket:tesla_destination:current", + "socket:USB-A:current", + "socket:bosch_3pin:current", + "socket:bosch_5pin:current" + ], + "applicableUnits": [ + { + "canonicalDenomination": "A", + "alternativeDenomination": [ + "a", + "amp", + "amperage", + "A" + ], + "human": { + "en": "A", + "nl": "A" + } + } + ], + "eraseInvalidValues": true + }, + { + "appliesToKey": [ + "socket:schuko:output", + "socket:typee:output", + "socket:chademo:output", + "socket:type1_cable:output", + "socket:type1:output", + "socket:type1_combo:output", + "socket:tesla_supercharger:output", + "socket:type2:output", + "socket:type2_combo:output", + "socket:type2_cable:output", + "socket:tesla_supercharger_ccs:output", + "socket:tesla_destination:output", + "socket:tesla_destination:output", + "socket:USB-A:output", + "socket:bosch_3pin:output", + "socket:bosch_5pin:output" + ], + "applicableUnits": [ + { + "canonicalDenomination": "kW", + "alternativeDenomination": [ + "kilowatt" + ], + "human": { + "en": "kilowatt", + "nl": "kilowatt" + } + }, + { + "canonicalDenomination": "mW", + "alternativeDenomination": [ + "megawatt" + ], + "human": { + "en": "megawatt", + "nl": "megawatt" + } + } + ], + "eraseInvalidValues": true + } + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuracy": true + }, + "deletion": { + "softDeletionTags": { + "and": [ + "amenity=", + "disused:amenity=charging_station" + ] + }, + "neededChangesets": 10 + } } \ No newline at end of file diff --git a/assets/layers/charging_station/charging_station.protojson b/assets/layers/charging_station/charging_station.protojson index 84e54298f..88ce35932 100644 --- a/assets/layers/charging_station/charging_station.protojson +++ b/assets/layers/charging_station/charging_station.protojson @@ -46,7 +46,7 @@ }, { "if": "motorcar=yes", - "ifnot": "motorcar=no", + "ifnot": "motorcar=no", "then": { "en": "Cars can be charged here", "nl": "Elektrische auto's kunnen hier opgeladen worden" @@ -98,7 +98,7 @@ { "if": "access=yes", "then": { - "en":"Anyone can use this charging station (payment might be needed)", + "en": "Anyone can use this charging station (payment might be needed)", "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" } }, @@ -110,7 +110,7 @@ ] }, "then": { - "en":"Anyone can use this charging station (payment might be needed)", + "en": "Anyone can use this charging station (payment might be needed)", "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" }, "hideInAnswer": true @@ -125,7 +125,7 @@ { "if": "access=private", "then": { - "en":"Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", + "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " } } @@ -146,9 +146,151 @@ "type": "pnat" } }, - {"id": "$$$"}, + { + "id": "$$$" + }, + { + "id": "OH", + "render": "{opening_hours_table(opening_hours)}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "question": { + "en": "When is this charging station opened?", + "nl": "Wanneer is dit oplaadpunt beschikbaar??" + }, + "mappings": [ + { + "if": "opening_hours=24/7", + "then": { + "en": "24/7 opened (including holidays)", + "nl": "24/7 open - ook tijdens vakanties" + } + } + ] + }, + { + "id": "fee", + "question": { + "en": "Does one have to pay to use this charging station?", + "nl": "Moet men betalen om dit oplaadpunt te gebruiken?" + }, + "mappings": [ + { + "if": { + "and": [ + "fee=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken", + "en": "Free to use" + }, + "hideInAnswer": true + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=yes" + ] + }, + "then": { + "nl": "Gratis te gebruiken (zonder aan te melden)", + "en": "Free to use (without authenticating)" + } + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht", + "en": "Free to use, but one has to authenticate" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=no @ customers" + ] + }, + "then": { + "nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/...", + "en": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=" + ] + }, + "then": { + "nl": "Betalend", + "en": "Paid use" + } + } + ] + }, + { + "id": "charge", + "question": { + "en": "How much does one have to pay to use this charging station?", + "nl": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?" + }, + "render": { + "en": "Using this charging station costs {charge}", + "nl": "Dit oplaadpunt gebruiken kost {charge}" + }, + "freeform": { + "key": "charge" + }, + "condition": "fee=yes" + }, + { + "id": "payment-options", + "builtin": "payment-options", + "override": { + "condition": { + "or": [ + "fee=yes", + "charge~*" + ] + }, + "mappings+": [ + { + "if": "payment:app=yes", + "ifnot": "payment:app=no", + "then": { + "en": "Payment is done using a dedicated app", + "nl": "Betalen via een app van het netwerk" + } + }, + { + "if": "payment:membership_card=yes", + "ifnot": "payment:membership_card=no", + "then": { + "en": "Payment is done using a membership card", + "nl": "Betalen via een lidkaart van het netwerk" + } + } + ] + } + }, { "id": "Authentication", + "#": "In some cases, charging is free but one has to be authenticated. We only ask for authentication if fee is no (or unset). By default one sees the questions for either the payment options or the authentication options, but normally not both", "question": { "en": "What kind of authentication is available at the charging station?", "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?" @@ -219,14 +361,19 @@ "nl": "Hier opladen is (ook) mogelijk zonder aan te melden" } } - ] + ], + "condition": { + "or": [ + "fee=no", + "fee=" + ] + } }, { "id": "Auth phone", "render": { "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}" - }, "question": { "en": "What's the phone number for authentication call or SMS?", @@ -243,88 +390,6 @@ ] } }, - { - "id": "OH", - "render": "{opening_hours_table(opening_hours)}", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "question": { - "en": "When is this charging station opened?", - "nl": "Wanneer is dit oplaadpunt beschikbaar??" - }, - "mappings": [ - { - "if": "opening_hours=24/7", - "then": { - "en": "24/7 opened (including holidays)", - "nl": "24/7 open - ook tijdens vakanties" - } - } - ] - }, - { - "id": "fee/charge", - "question": { - "en": "How much does one have to pay to use this charging station?", - "nl": "Hoeveel kost het gebruik van dit oplaadpunt?" - }, - "freeform": { - "key": "charge", - "addExtraTags": [ - "fee=yes" - ] - }, - "render": { - "en": "Using this charging station costs {charge}", - "nl": "Dit oplaadpunt gebruiken kost {charge}" - }, - "mappings": [ - { - "if": { - "and": [ - "fee=no", - "charge=" - ] - }, - "then": { - "nl": "Gratis te gebruiken", - "en": "Free to use" - } - } - ] - }, - { - "id": "payment-options", - "builtin": "payment-options", - "override": { - "condition": { - "or": [ - "fee=yes", - "charge~*" - ] - }, - "mappings+": [ - { - "if": "payment:app=yes", - "ifnot": "payment:app=no", - "then": { - "en": "Payment is done using a dedicated app", - "nl": "Betalen via een app van het netwerk" - } - }, - { - "if": "payment:membership_card=yes", - "ifnot": "payment:membership_card=no", - "then": { - "en": "Payment is done using a membership card", - "nl": "Betalen via een lidkaart van het netwerk" - } - } - ] - } - }, { "id": "maxstay", "question": { @@ -345,8 +410,11 @@ "en": "No timelimit on leaving your vehicle here", "nl": "Geen maximum parkeertijd" } - } - ] + } + ], + "condition": { + "or": ["maxstay~*","motorcar=yes","hgv=yes","bus=yes"] + } }, { "id": "Network", @@ -466,7 +534,9 @@ }, "freeform": { "key": "ref" - } + }, + "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", + "condition":"network!=" }, { "id": "Operational status", @@ -476,7 +546,30 @@ }, "mappings": [ { - "if": "operational_status=broken", + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=charging_station" + ] + }, + "then": { + "en": "This charging station works", + "nl": "Dit oplaadpunt werkt" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=broken", + "amenity=charging_station" + ] + }, "then": { "en": "This charging station is broken", "nl": "Dit oplaadpunt is kapot" @@ -486,6 +579,9 @@ "if": { "and": [ "planned:amenity=charging_station", + "construction:amenity=", + "disused:amenity=", + "operational_status=", "amenity=" ] }, @@ -495,9 +591,12 @@ } }, { - "if": { + "if":{ "and": [ + "planned:amenity=", "construction:amenity=charging_station", + "disused:amenity=", + "operational_status=broken", "amenity=" ] }, @@ -509,7 +608,10 @@ { "if": { "and": [ + "planned:amenity=", + "construction:amenity=", "disused:amenity=charging_station", + "operational_status=broken", "amenity=" ] }, @@ -517,15 +619,6 @@ "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig" } - }, - { - "if": { - "and": ["amenity=charging_station","operational_status="] - }, - "then": { - "en": "This charging station works", - "nl": "Dit oplaadpunt werkt" - } } ] }, @@ -741,7 +834,7 @@ "en": " days", "nl": " day" }, - "humanSingular":{ + "humanSingular": { "en": " day", "nl": " dag" } @@ -755,7 +848,10 @@ }, "deletion": { "softDeletionTags": { - "and": ["amenity=","disused:amenity=charging_station"] + "and": [ + "amenity=", + "disused:amenity=charging_station" + ] }, "neededChangesets": 10 } From e8b0c3f4c863c6ea3f52d6b77347310fd2e43b76 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Oct 2021 01:14:22 +0200 Subject: [PATCH 25/30] Add missing translations, improvements to charging stations theme --- Logic/FeatureSource/FeaturePipeline.ts | 2 +- UI/Popup/MoveWizard.ts | 6 +- .../bike_repair_station.json | 11 +- .../charging_station/charging_station.json | 1137 ++++++++++++++++- .../charging_station.protojson | 103 +- assets/layers/charging_station/csvToJson.ts | 2 +- assets/layers/waste_basket/waste_basket.json | 4 + 7 files changed, 1207 insertions(+), 58 deletions(-) diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts index bcda3f688..b5ea30bd3 100644 --- a/Logic/FeatureSource/FeaturePipeline.ts +++ b/Logic/FeatureSource/FeaturePipeline.ts @@ -100,7 +100,7 @@ export default class FeaturePipeline { this.relationTracker = new RelationsTracker() state.changes.allChanges.addCallbackAndRun(allChanges => { - allChanges.filter(ch => ch.id < 0) + allChanges.filter(ch => ch.id < 0 && ch.changes !== undefined) .map(ch => ch.changes) .filter(coor => coor["lat"] !== undefined && coor["lon"] !== undefined) .forEach(coor => { diff --git a/UI/Popup/MoveWizard.ts b/UI/Popup/MoveWizard.ts index 19c8b957d..254c7a0ca 100644 --- a/UI/Popup/MoveWizard.ts +++ b/UI/Popup/MoveWizard.ts @@ -198,7 +198,7 @@ export default class MoveWizard extends Toggle { moveDisallowedReason.setData(t.isWay) } else if (id.startsWith("relation")) { moveDisallowedReason.setData(t.isRelation) - } else { + } else if(id.indexOf("-") < 0) { OsmObject.DownloadReferencingWays(id).then(referencing => { if (referencing.length > 0) { @@ -207,8 +207,8 @@ export default class MoveWizard extends Toggle { } }) OsmObject.DownloadReferencingRelations(id).then(partOf => { - if(partOf.length > 0){ - moveDisallowedReason.setData(t.partOfRelation) + if(partOf.length > 0){ + moveDisallowedReason.setData(t.partOfRelation) } }) } diff --git a/assets/layers/bike_repair_station/bike_repair_station.json b/assets/layers/bike_repair_station/bike_repair_station.json index 891f8a599..6215ad1eb 100644 --- a/assets/layers/bike_repair_station/bike_repair_station.json +++ b/assets/layers/bike_repair_station/bike_repair_station.json @@ -615,16 +615,7 @@ "level" ], "icon": { - "render": { - "en": "./assets/layers/bike_repair_station/repair_station.svg", - "ru": "./assets/layers/bike_repair_station/repair_station.svg", - "it": "./assets/layers/bike_repair_station/repair_station.svg", - "fi": "./assets/layers/bike_repair_station/repair_station.svg", - "fr": "./assets/layers/bike_repair_station/repair_station.svg", - "pt_BR": "./assets/layers/bike_repair_station/repair_station.svg", - "de": "./assets/layers/bike_repair_station/repair_station.svg", - "pt": "./assets/layers/bike_repair_station/repair_station.svg" - }, + "render": "./assets/layers/bike_repair_station/repair_station.svg", "mappings": [ { "if": { diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index d353a778e..45855cf63 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -119,14 +119,14 @@ "if": "access=customers", "then": { "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", - "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" + "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel" } }, { "if": "access=private", "then": { "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", - "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " + "nl": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... " } } ] @@ -147,7 +147,1038 @@ } }, { - "id": "$$$" + "id": "Available_charging_stations (generated)", + "question": { + "en": "Which charging connections are available here?", + "nl": "Welke aansluitingen zijn hier beschikbaar?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "socket:schuko=1", + "ifnot": "socket:schuko=", + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "hideInAnswer": { + "or": [ + "_country!=be", + "_country!=fr", + "_country!=ma", + "_country!=tn", + "_country!=pl", + "_country!=cs", + "_country!=sk", + "_country!=mo" + ] + } + }, + { + "if": { + "and": [ + "socket:schuko~*", + "socket:schuko!=1" + ] + }, + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:typee=1", + "ifnot": "socket:typee=", + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" + } + }, + { + "if": { + "and": [ + "socket:typee~*", + "socket:typee!=1" + ] + }, + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:chademo=1", + "ifnot": "socket:chademo=", + "then": { + "en": "
Chademo
", + "nl": "
Chademo
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:chademo~*", + "socket:chademo!=1" + ] + }, + "then": { + "en": "
Chademo
", + "nl": "
Chademo
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1_cable=1", + "ifnot": "socket:type1_cable=", + "then": { + "en": "
Type 1 with cable (J1772)
", + "nl": "
Type 1 met kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=1" + ] + }, + "then": { + "en": "
Type 1 with cable (J1772)
", + "nl": "
Type 1 met kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1=1", + "ifnot": "socket:type1=", + "then": { + "en": "
Type 1 without cable (J1772)
", + "nl": "
Type 1 zonder kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1~*", + "socket:type1!=1" + ] + }, + "then": { + "en": "
Type 1 without cable (J1772)
", + "nl": "
Type 1 zonder kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1_combo=1", + "ifnot": "socket:type1_combo=", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=1" + ] + }, + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_supercharger=1", + "ifnot": "socket:tesla_supercharger=", + "then": { + "en": "
Tesla Supercharger
", + "nl": "
Tesla Supercharger
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger
", + "nl": "
Tesla Supercharger
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2=1", + "ifnot": "socket:type2=", + "then": { + "en": "
Type 2 (mennekes)
", + "nl": "
Type 2 (mennekes)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2~*", + "socket:type2!=1" + ] + }, + "then": { + "en": "
Type 2 (mennekes)
", + "nl": "
Type 2 (mennekes)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2_combo=1", + "ifnot": "socket:type2_combo=", + "then": { + "en": "
Type 2 CCS (mennekes)
", + "nl": "
Type 2 CCS (mennekes)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=1" + ] + }, + "then": { + "en": "
Type 2 CCS (mennekes)
", + "nl": "
Type 2 CCS (mennekes)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2_cable=1", + "ifnot": "socket:type2_cable=", + "then": { + "en": "
Type 2 with cable (mennekes)
", + "nl": "
Type 2 met kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=1" + ] + }, + "then": { + "en": "
Type 2 with cable (mennekes)
", + "nl": "
Type 2 met kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_supercharger_ccs=1", + "ifnot": "socket:tesla_supercharger_ccs=", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_destination=1", + "ifnot": "socket:tesla_destination=", + "then": { + "en": "
Tesla Supercharger (destination)
", + "nl": "
Tesla Supercharger (destination)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + }, + { + "or": [ + "_country!=us" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger (destination)
", + "nl": "
Tesla Supercharger (destination)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_destination=1", + "ifnot": "socket:tesla_destination=", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + }, + { + "or": [ + "_country=us" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=1" + ] + }, + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:USB-A=1", + "ifnot": "socket:USB-A=", + "then": { + "en": "
USB to charge phones and small electronics
", + "nl": "
USB om GSMs en kleine electronica op te laden
" + } + }, + { + "if": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=1" + ] + }, + "then": { + "en": "
USB to charge phones and small electronics
", + "nl": "
USB om GSMs en kleine electronica op te laden
" + }, + "hideInAnswer": true + }, + { + "if": "socket:bosch_3pin=1", + "ifnot": "socket:bosch_3pin=", + "then": { + "en": "
Bosch Active Connect with 3 pins and cable
", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "bicycle=no" + ] + }, + { + "and": [ + { + "or": [ + "car=yes", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + }, + "bicycle!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=1" + ] + }, + "then": { + "en": "
Bosch Active Connect with 3 pins and cable
", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "hideInAnswer": true + }, + { + "if": "socket:bosch_5pin=1", + "ifnot": "socket:bosch_5pin=", + "then": { + "en": "
Bosch Active Connect with 5 pins and cable
", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "bicycle=no" + ] + }, + { + "and": [ + { + "or": [ + "car=yes", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + }, + "bicycle!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=1" + ] + }, + "then": { + "en": "
Bosch Active Connect with 5 pins and cable
", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "hideInAnswer": true + } + ] + }, + { + "id": "plugs-0", + "question": { + "en": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", + "nl": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here", + "nl": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "freeform": { + "key": "socket:schuko", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:schuko~*", + "socket:schuko!=0" + ] + } + }, + { + "id": "plugs-1", + "question": { + "en": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", + "nl": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here", + "nl": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "freeform": { + "key": "socket:typee", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:typee~*", + "socket:typee!=0" + ] + } + }, + { + "id": "plugs-2", + "question": { + "en": "How much plugs of type
Chademo
are available here?", + "nl": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:chademo} plugs of type
Chademo
available here", + "nl": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" + }, + "freeform": { + "key": "socket:chademo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:chademo~*", + "socket:chademo!=0" + ] + } + }, + { + "id": "plugs-3", + "question": { + "en": "How much plugs of type
Type 1 with cable (J1772)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here", + "nl": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" + }, + "freeform": { + "key": "socket:type1_cable", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=0" + ] + } + }, + { + "id": "plugs-4", + "question": { + "en": "How much plugs of type
Type 1 without cable (J1772)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here", + "nl": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" + }, + "freeform": { + "key": "socket:type1", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1~*", + "socket:type1!=0" + ] + } + }, + { + "id": "plugs-5", + "question": { + "en": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here", + "nl": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "freeform": { + "key": "socket:type1_combo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=0" + ] + } + }, + { + "id": "plugs-6", + "question": { + "en": "How much plugs of type
Tesla Supercharger
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here", + "nl": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" + }, + "freeform": { + "key": "socket:tesla_supercharger", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=0" + ] + } + }, + { + "id": "plugs-7", + "question": { + "en": "How much plugs of type
Type 2 (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here", + "nl": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" + }, + "freeform": { + "key": "socket:type2", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2~*", + "socket:type2!=0" + ] + } + }, + { + "id": "plugs-8", + "question": { + "en": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here", + "nl": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" + }, + "freeform": { + "key": "socket:type2_combo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=0" + ] + } + }, + { + "id": "plugs-9", + "question": { + "en": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here", + "nl": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" + }, + "freeform": { + "key": "socket:type2_cable", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=0" + ] + } + }, + { + "id": "plugs-10", + "question": { + "en": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here", + "nl": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "freeform": { + "key": "socket:tesla_supercharger_ccs", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=0" + ] + } + }, + { + "id": "plugs-11", + "question": { + "en": "How much plugs of type
Tesla Supercharger (destination)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here", + "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" + }, + "freeform": { + "key": "socket:tesla_destination", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "plugs-12", + "question": { + "en": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here", + "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "freeform": { + "key": "socket:tesla_destination", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "plugs-13", + "question": { + "en": "How much plugs of type
USB to charge phones and small electronics
are available here?", + "nl": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here", + "nl": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" + }, + "freeform": { + "key": "socket:USB-A", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=0" + ] + } + }, + { + "id": "plugs-14", + "question": { + "en": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", + "nl": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here", + "nl": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "freeform": { + "key": "socket:bosch_3pin", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=0" + ] + } + }, + { + "id": "plugs-15", + "question": { + "en": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", + "nl": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here", + "nl": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "freeform": { + "key": "socket:bosch_5pin", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=0" + ] + } }, { "id": "OH", @@ -424,10 +1455,12 @@ { "id": "Network", "render": { - "en": "Part of the network {network}" + "en": "Part of the network {network}", + "nl": "Maakt deel uit van het {network}-netwerk" }, "question": { - "en": "Is this charging station part of a network?" + "en": "Is this charging station part of a network?", + "nl": "Is dit oplaadpunt deel van een groter netwerk?" }, "freeform": { "key": "network" @@ -436,13 +1469,15 @@ { "if": "no:network=yes", "then": { - "en": "Not part of a bigger network" + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk" } }, { "if": "network=none", "then": { - "en": "Not part of a bigger network" + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk" }, "hideInAnswer": true }, @@ -463,10 +1498,12 @@ { "id": "Operator", "question": { - "en": "Who is the operator of this charging station?" + "en": "Who is the operator of this charging station?", + "nl": "Wie beheert dit oplaadpunt?" }, "render": { - "en": "This charging station is operated by {operator}" + "en": "This charging station is operated by {operator}", + "nl": "Wordt beheerd door {operator}" }, "freeform": { "key": "operator" @@ -479,7 +1516,8 @@ ] }, "then": { - "en": "Actually, {operator} is the network" + "en": "Actually, {operator} is the network", + "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt" }, "addExtraTags": [ "operator=" @@ -491,10 +1529,12 @@ { "id": "phone", "question": { - "en": "What number can one call if there is a problem with this charging station?" + "en": "What number can one call if there is a problem with this charging station?", + "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?" }, "render": { - "en": "In case of problems, call {phone}" + "en": "In case of problems, call {phone}", + "nl": "Bij problemen, bel naar {phone}" }, "freeform": { "key": "phone", @@ -504,10 +1544,12 @@ { "id": "email", "question": { - "en": "What is the email address of the operator?" + "en": "What is the email address of the operator?", + "nl": "Wat is het email-adres van de operator?" }, "render": { - "en": "In case of problems, send an email to {email}" + "en": "In case of problems, send an email to {email}", + "nl": "Bij problemen, email naar {email}" }, "freeform": { "key": "email", @@ -517,10 +1559,12 @@ { "id": "website", "question": { - "en": "What is the website of the operator?" + "en": "What is the website where one can find more information about this charging station?", + "nl": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?" }, "render": { - "en": "More info on {website}" + "en": "More info on {website}", + "nl": "Meer informatie op {website}" }, "freeform": { "key": "website", @@ -531,7 +1575,8 @@ { "id": "ref", "question": { - "en": "What is the reference number of this charging station?" + "en": "What is the reference number of this charging station?", + "nl": "Wat is het referentienummer van dit oplaadstation?" }, "render": { "en": "Reference number is {ref}", @@ -630,19 +1675,22 @@ { "id": "Parking:fee", "question": { - "en": "Does one have to pay a parking fee while charging?" + "en": "Does one have to pay a parking fee while charging?", + "nl": "Moet men parkeergeld betalen tijdens het opladen?" }, "mappings": [ { "if": "parking:fee=no", "then": { - "en": "No additional parking cost while charging" + "en": "No additional parking cost while charging", + "nl": "Geen extra parkeerkost tijdens het opladen" } }, { "if": "parking:fee=yes", "then": { - "en": "An additional parking fee should be paid while charging" + "en": "An additional parking fee should be paid while charging", + "nl": "Tijdens het opladen moet er parkeergeld betaald worden" } } ], @@ -721,12 +1769,56 @@ "render": "#00f" }, "presets": [ + { + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes", + "socket:typee=1" + ], + "title": { + "en": "electrical outlet to charge e-bikes", + "nl": "gewone stekker (bedoeld om electrische fietsen op te laden)" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes" + ], + "title": { + "en": "charging station for e-bikes", + "nl": "oplaadpunt voor elektrische fietsen" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=yes", + "bicycle=no" + ], + "title": { + "en": "charging station for cars", + "nl": "oplaadstation voor elektrische auto's" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, { "tags": [ "amenity=charging_station" ], "title": { - "en": "Charging station" + "en": "charging station", + "nl": "oplaadstation" }, "preciseInput": { "preferredBackground": "map" @@ -770,7 +1862,8 @@ "options": [ { "question": { - "en": "Only working charging stations" + "en": "Only working charging stations", + "nl": "Enkel werkende oplaadpunten" }, "osmTags": { "and": [ diff --git a/assets/layers/charging_station/charging_station.protojson b/assets/layers/charging_station/charging_station.protojson index 88ce35932..5a941d6b0 100644 --- a/assets/layers/charging_station/charging_station.protojson +++ b/assets/layers/charging_station/charging_station.protojson @@ -119,14 +119,14 @@ "if": "access=customers", "then": { "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", - "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" + "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel" } }, { "if": "access=private", "then": { "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", - "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " + "nl": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... " } } ] @@ -419,10 +419,12 @@ { "id": "Network", "render": { - "en": "Part of the network {network}" + "en": "Part of the network {network}", + "nl": "Maakt deel uit van het {network}-netwerk" }, "question": { - "en": "Is this charging station part of a network?" + "en": "Is this charging station part of a network?", + "nl": "Is dit oplaadpunt deel van een groter netwerk?" }, "freeform": { "key": "network" @@ -431,13 +433,15 @@ { "if": "no:network=yes", "then": { - "en": "Not part of a bigger network" + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk" } }, { "if": "network=none", "then": { - "en": "Not part of a bigger network" + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk" }, "hideInAnswer": true }, @@ -458,10 +462,12 @@ { "id": "Operator", "question": { - "en": "Who is the operator of this charging station?" + "en": "Who is the operator of this charging station?", + "nl": "Wie beheert dit oplaadpunt?" }, "render": { - "en": "This charging station is operated by {operator}" + "en": "This charging station is operated by {operator}", + "nl": "Wordt beheerd door {operator}" }, "freeform": { "key": "operator" @@ -474,7 +480,8 @@ ] }, "then": { - "en": "Actually, {operator} is the network" + "en": "Actually, {operator} is the network", + "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt" }, "addExtraTags": [ "operator=" @@ -486,10 +493,11 @@ { "id": "phone", "question": { - "en": "What number can one call if there is a problem with this charging station?" + "en": "What number can one call if there is a problem with this charging station?", + "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?" }, "render": { - "en": "In case of problems, call {phone}" + "en": "In case of problems, call {phone}", "nl": "Bij problemen, bel naar {phone}" }, "freeform": { "key": "phone", @@ -499,10 +507,12 @@ { "id": "email", "question": { - "en": "What is the email address of the operator?" + "en": "What is the email address of the operator?", + "nl": "Wat is het email-adres van de operator?" }, "render": { - "en": "In case of problems, send an email to {email}" + "en": "In case of problems, send an email to {email}", + "nl": "Bij problemen, email naar {email}" }, "freeform": { "key": "email", @@ -512,10 +522,12 @@ { "id": "website", "question": { - "en": "What is the website of the operator?" + "en": "What is the website where one can find more information about this charging station?", + "nl": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?" }, "render": { - "en": "More info on {website}" + "en": "More info on {website}", + "nl": "Meer informatie op {website}" }, "freeform": { "key": "website", @@ -526,7 +538,8 @@ { "id": "ref", "question": { - "en": "What is the reference number of this charging station?" + "en": "What is the reference number of this charging station?", + "nl": "Wat is het referentienummer van dit oplaadstation?" }, "render": { "en": "Reference number is {ref}", @@ -625,19 +638,22 @@ { "id": "Parking:fee", "question": { - "en": "Does one have to pay a parking fee while charging?" + "en": "Does one have to pay a parking fee while charging?", + "nl": "Moet men parkeergeld betalen tijdens het opladen?" }, "mappings": [ { "if": "parking:fee=no", "then": { - "en": "No additional parking cost while charging" + "en": "No additional parking cost while charging", + "nl": "Geen extra parkeerkost tijdens het opladen" } }, { "if": "parking:fee=yes", "then": { - "en": "An additional parking fee should be paid while charging" + "en": "An additional parking fee should be paid while charging", + "nl": "Tijdens het opladen moet er parkeergeld betaald worden" } } ], @@ -716,12 +732,56 @@ "render": "#00f" }, "presets": [ + { + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes", + "socket:typee=1" + ], + "title": { + "en": "electrical outlet to charge e-bikes", + "nl": "laadpunt met gewone stekker(s) (bedoeld om electrische fietsen op te laden)" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes" + ], + "title": { + "en": "charging station for e-bikes", + "nl": "oplaadpunt voor elektrische fietsen" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=yes", + "bicycle=no" + ], + "title": { + "en": "charging station for cars", + "nl": "oplaadstation voor elektrische auto's" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, { "tags": [ "amenity=charging_station" ], "title": { - "en": "Charging station" + "en": "charging station", + "nl": "oplaadstation" }, "preciseInput": { "preferredBackground": "map" @@ -765,7 +825,8 @@ "options": [ { "question": { - "en": "Only working charging stations" + "en": "Only working charging stations", + "nl": "Enkel werkende oplaadpunten" }, "osmTags": { "and": [ diff --git a/assets/layers/charging_station/csvToJson.ts b/assets/layers/charging_station/csvToJson.ts index d781d33e7..4b2490b90 100644 --- a/assets/layers/charging_station/csvToJson.ts +++ b/assets/layers/charging_station/csvToJson.ts @@ -259,7 +259,7 @@ function run(file, protojson) { const stringified = questions.map(q => JSON.stringify(q, null, " ")) let protoString = readFileSync(protojson, "utf8") - protoString = protoString.replace("{\"id\": \"$$$\"}", stringified.join(",\n")) + protoString = protoString.replace(/{[ \t\n]*"id"[ \t\n]*:[ \t\n]*"\$\$\$"[ \t\n]*}/, stringified.join(",\n")) const proto = JSON.parse(protoString) proto.tagRenderings.forEach(tr => { if (typeof tr === "string") { diff --git a/assets/layers/waste_basket/waste_basket.json b/assets/layers/waste_basket/waste_basket.json index 612504a7b..7a3691a97 100644 --- a/assets/layers/waste_basket/waste_basket.json +++ b/assets/layers/waste_basket/waste_basket.json @@ -91,6 +91,7 @@ "id": "dispensing_dog_bags", "question": { "en": "Does this waste basket have a dispenser for dog excrement bags?", + "nl": "Heeft deze vuilnisbak een verdeler voor hondenpoepzakjes?", "de": "Verfügt dieser Abfalleimer über einen Spender für (Hunde-)Kotbeutel?" }, "condition": { @@ -110,6 +111,7 @@ }, "then": { "en": "This waste basket has a dispenser for (dog) excrement bags", + "nl": "Deze vuilnisbak heeft een verdeler voor hondenpoepzakjes", "de": "Dieser Abfalleimer verfügt über einen Spender für (Hunde-)Kotbeutel" } }, @@ -122,6 +124,7 @@ }, "then": { "en": "This waste basket does not have a dispenser for (dog) excrement bags", + "nl": "Deze vuilbak heeft geen verdeler voor hondenpoepzakjes", "de": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" } }, @@ -129,6 +132,7 @@ "if": "vending=", "then": { "en": "This waste basket does not have a dispenser for (dog) excrement bags", + "nl": "Deze vuilnisbak heeft geen verdeler voor hondenpoepzakjes", "de": "Dieser Abfalleimer hat keinen Spender für (Hunde-)Kotbeutel" }, "hideInAnwer": true From 93c6778a9d5ac974b7cc9031e6db0691c7444b43 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Oct 2021 01:14:33 +0200 Subject: [PATCH 26/30] version bump --- Models/Constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Models/Constants.ts b/Models/Constants.ts index 15f6e94f9..6405a34b6 100644 --- a/Models/Constants.ts +++ b/Models/Constants.ts @@ -2,7 +2,7 @@ import {Utils} from "../Utils"; export default class Constants { - public static vNumber = "0.11.1"; + public static vNumber = "0.11.2"; public static ImgurApiKey = '7070e7167f0a25a' public static readonly mapillary_client_token_v3 = 'TXhLaWthQ1d4RUg0czVxaTVoRjFJZzowNDczNjUzNmIyNTQyYzI2' public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85" From 289bf6f0dc43da6387da1d5582684432c7d52b21 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Mon, 25 Oct 2021 22:48:57 +0000 Subject: [PATCH 27/30] Translated using Weblate (English) Currently translated at 100.0% (228 of 228 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/en/ --- langs/en.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/langs/en.json b/langs/en.json index 6b7d7723a..cee2bae0c 100644 --- a/langs/en.json +++ b/langs/en.json @@ -33,7 +33,7 @@ "split": { "split": "Split", "cancel": "Cancel", - "inviteToSplit": "Split this road", + "inviteToSplit": "Split this road in smaller segments. This allows to give different properties to parts of the road.", "loginToSplit": "You must be logged in to split a road", "splitTitle": "Choose on the map where to split this road", "hasBeenSplit": "This way has been split" @@ -229,11 +229,11 @@ "wikipediaboxTitle": "Wikipedia", "failed": "Loading the wikipedia entry failed", "loading": "Loading Wikipedia...", - "noWikipediaPage": "This wikidata item has no corresponding wikipedia page yet.", - "searchWikidata": "Search on wikidata", + "noWikipediaPage": "This Wikidata item has no corresponding Wikipedia page yet.", + "searchWikidata": "Search on Wikidata", "noResults": "Nothing found for {search}", "doSearch": "Search above to see results", - "createNewWikidata": "Create a new wikidata item" + "createNewWikidata": "Create a new Wikidata item" } }, "favourite": { @@ -285,4 +285,4 @@ "partOfRelation": "This feature is part of a relation. Use another editor to move it", "cancel": "Cancel move" } -} \ No newline at end of file +} From 7474ceb395eeddbc8f6fca845a179158f1c0942f Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Mon, 25 Oct 2021 22:58:52 +0000 Subject: [PATCH 28/30] Translated using Weblate (Dutch) Currently translated at 98.6% (225 of 228 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/nl/ --- langs/nl.json | 101 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 90 insertions(+), 11 deletions(-) diff --git a/langs/nl.json b/langs/nl.json index 33a56e19a..33a2cf04e 100644 --- a/langs/nl.json +++ b/langs/nl.json @@ -10,10 +10,12 @@ "ccb": "onder de CC-BY-licentie", "uploadFailed": "Afbeelding uploaden mislukt. Heb je internet? Gebruik je Brave of UMatrix? Dan moet je derde partijen toelaten.", "respectPrivacy": "Fotografeer geen mensen of nummerplaten. Voeg geen Google Maps, Google Streetview of foto's met auteursrechten toe.", - "uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!", + "uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!", "dontDelete": "Terug", "doDelete": "Verwijder afbeelding", - "isDeleted": "Verwijderd" + "isDeleted": "Verwijderd", + "uploadMultipleDone": "{count} afbeeldingen zijn toegevoegd. Bedankt voor je bijdrage!", + "toBig": "Je afbeelding is te groot, namelijk {actual_size}. Gelieve afbeeldingen van maximaal {max_size} te gebruiken" }, "centerMessage": { "loadingData": "Data wordt geladen...", @@ -24,8 +26,9 @@ "index": { "#": "These texts are shown above the theme buttons when no theme is loaded", "title": "Welkom bij MapComplete", - "intro": "MapComplete is een OpenStreetMap applicatie waar informatie over een specifiek thema bekeken en aangepast kan worden.", - "pickTheme": "Kies hieronder een thema om te beginnen." + "intro": "MapComplete is een OpenStreetMap-applicatie waar informatie over een specifiek thema bekeken en aangepast kan worden.", + "pickTheme": "Kies hieronder een thema om te beginnen.", + "featuredThemeTitle": "Thema van de week" }, "general": { "loginWithOpenStreetMap": "Aanmelden met OpenStreetMap", @@ -51,7 +54,10 @@ "layerNotEnabled": "De laag {layer} is gedeactiveerd. Activeer deze om een punt toe te voegen", "presetInfo": "Het nieuwe punt krijgt de attributen {tags}", "disableFiltersExplanation": "Interessepunten kunnen verborgen zijn door een filter", - "disableFilters": "Zet alle filters af" + "disableFilters": "Zet alle filters af", + "hasBeenImported": "Dit punt is reeds geimporteerd", + "warnVisibleForEveryone": "Je toevoeging is voor iedereen zichtbaar", + "zoomInMore": "Zoom meer in om dit punt te importeren" }, "pickLanguage": "Kies je taal: ", "about": "Bewerk en voeg data toe aan OpenStreetMap over een specifiek onderwerp op een gemakkelijke manier", @@ -128,7 +134,9 @@ "intro": "

Meer thematische kaarten

Vind je het leuk om geodata te verzamelen?
Hier vind je meer kaartthemas.", "requestATheme": "Wil je een eigen kaartthema, vraag dit in de issue tracker.", "streetcomplete": "Een andere, gelijkaardige Android-applicatie is StreetComplete.", - "createYourOwnTheme": "Maak je eigen MapComplete-kaart" + "createYourOwnTheme": "Maak je eigen MapComplete-kaart", + "previouslyHiddenTitle": "Eerder bezochte verborgen themas", + "hiddenExplanation": "Deze thema's zijn enkel zichtbaar indien je de link kent. Je hebt {hidden_discovered} van {total_hidden} verborgen thema's ontdekt" }, "readYourMessages": "Gelieve eerst je berichten op OpenStreetMap te lezen alvorens nieuwe punten toe te voegen.", "fewChangesBefore": "Gelieve eerst enkele vragen van bestaande punten te beantwoorden vooraleer zelf punten toe te voegen.", @@ -181,7 +189,10 @@ "save": "Opslaan", "returnToTheMap": "Ga terug naar de kaart", "pdf": { - "versionInfo": "v{version} - gemaakt op {date}" + "versionInfo": "v{version} - gemaakt op {date}", + "attr": "Kaartgegevens © OpenStreetMap-bijdragers, herbruikbaar volgens ODbL", + "generatedWith": "Gemaakt met MapComplete.osm.be", + "attrBackground": "Achtergrondlaag: {background}" }, "osmLinkTooltip": "Bekijk dit object op OpenStreetMap om de geschiedenis te zien en meer te kunnen aanpassen", "oneSkippedQuestion": "Een vraag werd overgeslaan", @@ -196,9 +207,27 @@ "downloadGeoJsonHelper": "Compatibel met QGIS, ArcGIS, ESRI, ...", "downloadGeojson": "Download de zichtbare data als geojson", "downloadAsPdfHelper": "Perfect om de huidige kaart af te printen", - "downloadAsPdf": "Download een PDF van de huidig zichtbare kaart" + "downloadAsPdf": "Download een PDF van de huidig zichtbare kaart", + "title": "Download de zichtbare data", + "exporting": "Aan het exporteren..." }, - "cancel": "Annuleren" + "cancel": "Annuleren", + "testing": "Testmode - wijzigingen worden niet opgeslaan", + "openTheMap": "Naar de kaart", + "wikipedia": { + "failed": "Het wikipedia-artikel inladen is mislukt", + "wikipediaboxTitle": "Wikipedia", + "loading": "Wikipedia aan het laden...", + "noWikipediaPage": "Dit Wikidata-item heeft nog geen overeenkomstig Wikipedia-artikel", + "createNewWikidata": "Maak een nieuw Wikidata-item", + "searchWikidata": "Zoek op Wikidata", + "noResults": "Niet gevonden voor {search}", + "doSearch": "Zoek hierboven om resultaten te zien" + }, + "histogram": { + "error_loading": "Kan het histogram niet laden" + }, + "loading": "Aan het laden..." }, "reviews": { "title": "{count} beoordelingen", @@ -231,7 +260,57 @@ "reasons": { "notFound": "Het kon niet gevonden worden", "disused": "Het wordt niet meer onderhouden of is verwijderd", - "test": "Dit punt was een test en was nooit echt aanwezig" - } + "test": "Dit punt was een test en was nooit echt aanwezig", + "duplicate": "Dit punt is een duplicaat van een ander punt" + }, + "cancel": "Annuleer", + "isDeleted": "Dit object is verwijderd", + "delete": "Verwijder", + "partOfOthers": "Dit punt maakt deel uit van een lijn, oppervlakte of een relatie en kan niet verwijderd worden.", + "whyDelete": "Waarom moet dit punt van de kaart verwijderd worden?", + "loginToDelete": "Je moet aangemeld zijn om een object van de kaart te verwijderen", + "onlyEditedByLoggedInUser": "Dit punt is enkel door jezelf bewerkt, je kan dit veilig verwijderen.", + "cannotBeDeleted": "Dit object kan niet van de kaart verwijderd worden", + "safeDelete": "Dit punt kan veilig verwijderd worden van de kaart.", + "isntAPoint": "Enkel punten kunnen verwijderd worden, het geselecteerde object is een lijn, een oppervlakte of een relatie.", + "notEnoughExperience": "Dit punt is door iemand anders gemaakt.", + "useSomethingElse": "Gebruik een ander OpenStreetMap-editeerprogramma om dit object te verwijderen", + "loading": "Aan het bekijken of dit object veilig verwijderd kan worden." + }, + "move": { + "cannotBeMoved": "Dit object kan niet verplaatst worden.", + "inviteToMove": { + "reasonRelocation": "Verplaats dit punt naar een andere locatie omdat het verhuisd is", + "reasonInaccurate": "Verbeter de precieze locatie van dit punt", + "generic": "Verplaats dit punt" + }, + "pointIsMoved": "Dit punt is verplaatst", + "confirmMove": "Verplaats", + "reasons": { + "reasonRelocation": "Dit object is verhuisd naar een andere locatie", + "reasonInaccurate": "De locatie van dit object is niet accuraat en moet een paar meter verschoven worden" + }, + "partOfAWay": "Dit punt is deel van een lijn of een oppervlakte. Gebruik een ander OpenStreetMap-bewerkprogramma om het te verplaatsen", + "partOfRelation": "Dit punt maakt deel uit van een relatie. Gebruik een ander OpenStreetMap-bewerkprogramma om het te verplaatsen", + "cancel": "Annuleer verplaatsing", + "loginToMove": "Je moet aangemeld zijn om een punt te verplaatsen", + "zoomInFurther": "Zoom verder in om de verplaatsing te bevestigen", + "isRelation": "Dit object is een relatie en kan niet verplaatst worden", + "inviteToMoveAgain": "Verplaats dit punt opnieuw", + "moveTitle": "Verplaats dit punt", + "whyMove": "Waarom verplaats je dit punt?", + "selectReason": "Waarom verplaats je dit object?", + "isWay": "Dit object is een lijn of een oppervlakte. Gebruik een ander OpenStreetMap-bewerkprogramma op het te verplaatsen." + }, + "split": { + "cancel": "Annuleer knippen", + "split": "Knip weg", + "splitTitle": "Duid op de kaart aan waar de weg geknipt moet worden", + "inviteToSplit": "Knip deze weg in kleinere segmenten (om andere eigenschappen per segment toe te kennen)", + "loginToSplit": "Je moet aangemeld zijn om een weg te knippen", + "hasBeenSplit": "Deze weg is verknipt" + }, + "multi_apply": { + "autoApply": "Wijzigingen aan eigenschappen {attr_names} zullen ook worden uitgevoerd op {count} andere objecten." } } From 232ff5b27535920f08378c6371b23ed49288ae59 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Oct 2021 01:20:33 +0200 Subject: [PATCH 29/30] Regenerate translations, remove icons where applicable --- .../charging_station/charging_station.json | 4437 +++++++++-------- .../layers/defibrillator/defibrillator.json | 8 +- langs/layers/de.json | 19 - langs/layers/en.json | 40 +- langs/layers/fi.json | 3 - langs/layers/fr.json | 10 - langs/layers/it.json | 10 - langs/layers/nan.json | 1 - langs/layers/nl.json | 101 +- langs/layers/pt.json | 3 - langs/layers/pt_BR.json | 3 - langs/layers/ru.json | 10 - 12 files changed, 2411 insertions(+), 2234 deletions(-) delete mode 100644 langs/layers/nan.json diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index 45855cf63..ce39f6343 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -1,2195 +1,2328 @@ { - "id": "charging_station", - "name": { - "en": "Charging stations", - "nl": "Oplaadpunten" - }, - "minzoom": 10, - "source": { - "osmTags": { - "or": [ - "amenity=charging_station", - "disused:amenity=charging_station", - "planned:amenity=charging_station", - "construction:amenity=charging_station" - ] - } - }, - "title": { - "render": { - "en": "Charging station", - "nl": "Oplaadpunten" - } - }, - "description": { - "en": "A charging station", - "nl": "Oplaadpunten" - }, - "tagRenderings": [ - "images", - { - "id": "Type", - "#": "Allowed vehicle types", - "question": { - "en": "Which vehicles are allowed to charge here?", - "nl": "Welke voertuigen kunnen hier opgeladen worden?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "bicycle=yes", - "ifnot": "bicycle=no", - "then": { - "en": "Bcycles can be charged here", - "nl": "Fietsen kunnen hier opgeladen worden" - } - }, - { - "if": "motorcar=yes", - "ifnot": "motorcar=no", - "then": { - "en": "Cars can be charged here", - "nl": "Elektrische auto's kunnen hier opgeladen worden" - } - }, - { - "if": "scooter=yes", - "ifnot": "scooter=no", - "then": { - "en": "Scooters can be charged here", - "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden" - } - }, - { - "if": "hgv=yes", - "ifnot": "hgv=no", - "then": { - "en": "Heavy good vehicles (such as trucks) can be charged here", - "nl": "Vrachtwagens kunnen hier opgeladen worden" - } - }, - { - "if": "bus=yes", - "ifnot": "bus=no", - "then": { - "en": "Buses can be charged here", - "nl": "Bussen kunnen hier opgeladen worden" - } + "id": "charging_station", + "name": { + "en": "Charging stations", + "nl": "Oplaadpunten", + "de": "Ladestationen", + "it": "Stazioni di ricarica", + "ja": "充電ステーション", + "nb_NO": "Ladestasjoner", + "ru": "Зарядные станции", + "zh_Hant": "充電站" + }, + "minzoom": 10, + "source": { + "osmTags": { + "or": [ + "amenity=charging_station", + "disused:amenity=charging_station", + "planned:amenity=charging_station", + "construction:amenity=charging_station" + ] } - ] }, - { - "id": "access", - "question": { - "en": "Who is allowed to use this charging station?", - "nl": "Wie mag er dit oplaadpunt gebruiken?" - }, - "render": { - "en": "Access is {access}", - "nl": "Toegang voor {access}" - }, - "freeform": { - "key": "access", - "addExtraTags": [ - "fixme=Freeform field used for access - doublecheck the value" - ] - }, - "mappings": [ - { - "if": "access=yes", - "then": { - "en": "Anyone can use this charging station (payment might be needed)", - "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - } - }, - { - "if": { - "or": [ - "access=permissive", - "access=public" - ] - }, - "then": { - "en": "Anyone can use this charging station (payment might be needed)", - "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - }, - "hideInAnswer": true - }, - { - "if": "access=customers", - "then": { - "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", - "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel" - } - }, - { - "if": "access=private", - "then": { - "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", - "nl": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... " - } + "title": { + "render": { + "en": "Charging station", + "nl": "Oplaadpunten", + "de": "Ladestation", + "it": "Stazione di ricarica", + "ja": "充電ステーション", + "nb_NO": "Ladestasjon", + "ru": "Зарядная станция", + "zh_Hant": "充電站" } - ] }, - { - "id": "capacity", - "render": { - "en": "{capacity} vehicles can be charged here at the same time", - "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden" - }, - "question": { - "en": "How much vehicles can be charged here at the same time?", - "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?" - }, - "freeform": { - "key": "capacity", - "type": "pnat" - } + "description": { + "en": "A charging station", + "nl": "Oplaadpunten", + "de": "Eine Ladestation", + "it": "Una stazione di ricarica", + "ja": "充電ステーション", + "nb_NO": "En ladestasjon", + "ru": "Зарядная станция", + "zh_Hant": "充電站" }, - { - "id": "Available_charging_stations (generated)", - "question": { - "en": "Which charging connections are available here?", - "nl": "Welke aansluitingen zijn hier beschikbaar?" - }, - "multiAnswer": true, - "mappings": [ + "tagRenderings": [ + "images", { - "if": "socket:schuko=1", - "ifnot": "socket:schuko=", - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "hideInAnswer": { - "or": [ - "_country!=be", - "_country!=fr", - "_country!=ma", - "_country!=tn", - "_country!=pl", - "_country!=cs", - "_country!=sk", - "_country!=mo" + "id": "Type", + "#": "Allowed vehicle types", + "question": { + "en": "Which vehicles are allowed to charge here?", + "nl": "Welke voertuigen kunnen hier opgeladen worden?", + "de": "Welche Fahrzeuge dürfen hier geladen werden?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "bicycle=yes", + "ifnot": "bicycle=no", + "then": { + "en": "bicycles can be charged here", + "nl": "Fietsen kunnen hier opgeladen worden", + "de": "Fahrräder können hier geladen werden" + } + }, + { + "if": "motorcar=yes", + "ifnot": "motorcar=no", + "then": { + "en": "Cars can be charged here", + "nl": "Elektrische auto's kunnen hier opgeladen worden", + "de": "Autos können hier geladen werden" + } + }, + { + "if": "scooter=yes", + "ifnot": "scooter=no", + "then": { + "en": "Scooters can be charged here", + "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden", + "de": " Roller können hier geladen werden" + } + }, + { + "if": "hgv=yes", + "ifnot": "hgv=no", + "then": { + "en": "Heavy good vehicles (such as trucks) can be charged here", + "nl": "Vrachtwagens kunnen hier opgeladen worden", + "de": "Lastkraftwagen (LKW) können hier geladen werden" + } + }, + { + "if": "bus=yes", + "ifnot": "bus=no", + "then": { + "en": "Buses can be charged here", + "nl": "Bussen kunnen hier opgeladen worden", + "de": "Busse können hier geladen werden" + } + } ] - } }, { - "if": { - "and": [ - "socket:schuko~*", - "socket:schuko!=1" - ] - }, - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:typee=1", - "ifnot": "socket:typee=", - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" - } - }, - { - "if": { - "and": [ - "socket:typee~*", - "socket:typee!=1" - ] - }, - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:chademo=1", - "ifnot": "socket:chademo=", - "then": { - "en": "
Chademo
", - "nl": "
Chademo
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" + "id": "access", + "question": { + "en": "Who is allowed to use this charging station?", + "nl": "Wie mag er dit oplaadpunt gebruiken?", + "de": "Wer darf diese Ladestation benutzen?" + }, + "render": { + "en": "Access is {access}", + "nl": "Toegang voor {access}", + "de": "Zugang ist {access}" + }, + "freeform": { + "key": "access", + "addExtraTags": [ + "fixme=Freeform field used for access - doublecheck the value" ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } + }, + "mappings": [ + { + "if": "access=yes", + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + } + }, + { + "if": { + "or": [ + "access=permissive", + "access=public" + ] + }, + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, + "hideInAnswer": true + }, + { + "if": "access=customers", + "then": { + "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", + "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bijvoorbeeld een oplaadpunt op de parking van een restaurant dat enkel door klanten van het restaurant gebruikt mag worden" + } + }, + { + "if": "access=private", + "then": { + "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", + "nl": "Niet toegankelijk voor het publiek Enkel toegankelijk voor de eigenaar, medewerkers ,... " + } + } ] - } }, { - "if": { - "and": [ - "socket:chademo~*", - "socket:chademo!=1" - ] - }, - "then": { - "en": "
Chademo
", - "nl": "
Chademo
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1_cable=1", - "ifnot": "socket:type1_cable=", - "then": { - "en": "
Type 1 with cable (J1772)
", - "nl": "
Type 1 met kabel (J1772)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=1" - ] - }, - "then": { - "en": "
Type 1 with cable (J1772)
", - "nl": "
Type 1 met kabel (J1772)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1=1", - "ifnot": "socket:type1=", - "then": { - "en": "
Type 1 without cable (J1772)
", - "nl": "
Type 1 zonder kabel (J1772)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1~*", - "socket:type1!=1" - ] - }, - "then": { - "en": "
Type 1 without cable (J1772)
", - "nl": "
Type 1 zonder kabel (J1772)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1_combo=1", - "ifnot": "socket:type1_combo=", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=1" - ] - }, - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_supercharger=1", - "ifnot": "socket:tesla_supercharger=", - "then": { - "en": "
Tesla Supercharger
", - "nl": "
Tesla Supercharger
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger
", - "nl": "
Tesla Supercharger
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2=1", - "ifnot": "socket:type2=", - "then": { - "en": "
Type 2 (mennekes)
", - "nl": "
Type 2 (mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2~*", - "socket:type2!=1" - ] - }, - "then": { - "en": "
Type 2 (mennekes)
", - "nl": "
Type 2 (mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2_combo=1", - "ifnot": "socket:type2_combo=", - "then": { - "en": "
Type 2 CCS (mennekes)
", - "nl": "
Type 2 CCS (mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=1" - ] - }, - "then": { - "en": "
Type 2 CCS (mennekes)
", - "nl": "
Type 2 CCS (mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2_cable=1", - "ifnot": "socket:type2_cable=", - "then": { - "en": "
Type 2 with cable (mennekes)
", - "nl": "
Type 2 met kabel (J1772)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=1" - ] - }, - "then": { - "en": "
Type 2 with cable (mennekes)
", - "nl": "
Type 2 met kabel (J1772)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_supercharger_ccs=1", - "ifnot": "socket:tesla_supercharger_ccs=", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_destination=1", - "ifnot": "socket:tesla_destination=", - "then": { - "en": "
Tesla Supercharger (destination)
", - "nl": "
Tesla Supercharger (destination)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - }, - { - "or": [ - "_country!=us" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger (destination)
", - "nl": "
Tesla Supercharger (destination)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_destination=1", - "ifnot": "socket:tesla_destination=", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - }, - { - "or": [ - "_country=us" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=1" - ] - }, - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:USB-A=1", - "ifnot": "socket:USB-A=", - "then": { - "en": "
USB to charge phones and small electronics
", - "nl": "
USB om GSMs en kleine electronica op te laden
" - } - }, - { - "if": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=1" - ] - }, - "then": { - "en": "
USB to charge phones and small electronics
", - "nl": "
USB om GSMs en kleine electronica op te laden
" - }, - "hideInAnswer": true - }, - { - "if": "socket:bosch_3pin=1", - "ifnot": "socket:bosch_3pin=", - "then": { - "en": "
Bosch Active Connect with 3 pins and cable
", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "bicycle=no" - ] - }, - { - "and": [ - { - "or": [ - "car=yes", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - }, - "bicycle!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=1" - ] - }, - "then": { - "en": "
Bosch Active Connect with 3 pins and cable
", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "hideInAnswer": true - }, - { - "if": "socket:bosch_5pin=1", - "ifnot": "socket:bosch_5pin=", - "then": { - "en": "
Bosch Active Connect with 5 pins and cable
", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "bicycle=no" - ] - }, - { - "and": [ - { - "or": [ - "car=yes", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - }, - "bicycle!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=1" - ] - }, - "then": { - "en": "
Bosch Active Connect with 5 pins and cable
", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "hideInAnswer": true - } - ] - }, - { - "id": "plugs-0", - "question": { - "en": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", - "nl": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here", - "nl": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "freeform": { - "key": "socket:schuko", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:schuko~*", - "socket:schuko!=0" - ] - } - }, - { - "id": "plugs-1", - "question": { - "en": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", - "nl": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here", - "nl": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "freeform": { - "key": "socket:typee", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:typee~*", - "socket:typee!=0" - ] - } - }, - { - "id": "plugs-2", - "question": { - "en": "How much plugs of type
Chademo
are available here?", - "nl": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:chademo} plugs of type
Chademo
available here", - "nl": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" - }, - "freeform": { - "key": "socket:chademo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:chademo~*", - "socket:chademo!=0" - ] - } - }, - { - "id": "plugs-3", - "question": { - "en": "How much plugs of type
Type 1 with cable (J1772)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here", - "nl": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" - }, - "freeform": { - "key": "socket:type1_cable", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=0" - ] - } - }, - { - "id": "plugs-4", - "question": { - "en": "How much plugs of type
Type 1 without cable (J1772)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here", - "nl": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" - }, - "freeform": { - "key": "socket:type1", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1~*", - "socket:type1!=0" - ] - } - }, - { - "id": "plugs-5", - "question": { - "en": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here", - "nl": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "freeform": { - "key": "socket:type1_combo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=0" - ] - } - }, - { - "id": "plugs-6", - "question": { - "en": "How much plugs of type
Tesla Supercharger
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here", - "nl": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" - }, - "freeform": { - "key": "socket:tesla_supercharger", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=0" - ] - } - }, - { - "id": "plugs-7", - "question": { - "en": "How much plugs of type
Type 2 (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here", - "nl": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" - }, - "freeform": { - "key": "socket:type2", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2~*", - "socket:type2!=0" - ] - } - }, - { - "id": "plugs-8", - "question": { - "en": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here", - "nl": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" - }, - "freeform": { - "key": "socket:type2_combo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=0" - ] - } - }, - { - "id": "plugs-9", - "question": { - "en": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here", - "nl": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" - }, - "freeform": { - "key": "socket:type2_cable", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=0" - ] - } - }, - { - "id": "plugs-10", - "question": { - "en": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here", - "nl": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "freeform": { - "key": "socket:tesla_supercharger_ccs", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=0" - ] - } - }, - { - "id": "plugs-11", - "question": { - "en": "How much plugs of type
Tesla Supercharger (destination)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here", - "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" - }, - "freeform": { - "key": "socket:tesla_destination", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "plugs-12", - "question": { - "en": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here", - "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "freeform": { - "key": "socket:tesla_destination", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "plugs-13", - "question": { - "en": "How much plugs of type
USB to charge phones and small electronics
are available here?", - "nl": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here", - "nl": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" - }, - "freeform": { - "key": "socket:USB-A", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=0" - ] - } - }, - { - "id": "plugs-14", - "question": { - "en": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", - "nl": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here", - "nl": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "freeform": { - "key": "socket:bosch_3pin", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=0" - ] - } - }, - { - "id": "plugs-15", - "question": { - "en": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", - "nl": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here", - "nl": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "freeform": { - "key": "socket:bosch_5pin", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=0" - ] - } - }, - { - "id": "OH", - "render": "{opening_hours_table(opening_hours)}", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "question": { - "en": "When is this charging station opened?", - "nl": "Wanneer is dit oplaadpunt beschikbaar??" - }, - "mappings": [ - { - "if": "opening_hours=24/7", - "then": { - "en": "24/7 opened (including holidays)", - "nl": "24/7 open - ook tijdens vakanties" - } - } - ] - }, - { - "id": "fee", - "question": { - "en": "Does one have to pay to use this charging station?", - "nl": "Moet men betalen om dit oplaadpunt te gebruiken?" - }, - "mappings": [ - { - "if": { - "and": [ - "fee=no" - ] - }, - "then": { - "nl": "Gratis te gebruiken", - "en": "Free to use" - }, - "hideInAnswer": true - }, - { - "if": { - "and": [ - "fee=no", - "fee:conditional=", - "charge=", - "authentication:none=yes" - ] - }, - "then": { - "nl": "Gratis te gebruiken (zonder aan te melden)", - "en": "Free to use (without authenticating)" - } - }, - { - "if": { - "and": [ - "fee=no", - "fee:conditional=", - "charge=", - "authentication:none=no" - ] - }, - "then": { - "nl": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht", - "en": "Free to use, but one has to authenticate" - } - }, - { - "if": { - "and": [ - "fee=yes", - "fee:conditional=no @ customers" - ] - }, - "then": { - "nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/...", - "en": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" - } - }, - { - "if": { - "and": [ - "fee=yes", - "fee:conditional=" - ] - }, - "then": { - "nl": "Betalend", - "en": "Paid use" - } - } - ] - }, - { - "id": "charge", - "question": { - "en": "How much does one have to pay to use this charging station?", - "nl": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?" - }, - "render": { - "en": "Using this charging station costs {charge}", - "nl": "Dit oplaadpunt gebruiken kost {charge}" - }, - "freeform": { - "key": "charge" - }, - "condition": "fee=yes" - }, - { - "id": "payment-options", - "builtin": "payment-options", - "override": { - "condition": { - "or": [ - "fee=yes", - "charge~*" - ] - }, - "mappings+": [ - { - "if": "payment:app=yes", - "ifnot": "payment:app=no", - "then": { - "en": "Payment is done using a dedicated app", - "nl": "Betalen via een app van het netwerk" + "id": "capacity", + "render": { + "en": "{capacity} vehicles can be charged here at the same time", + "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden", + "de": "{capacity} Fahrzeuge können hier gleichzeitig geladen werden" + }, + "question": { + "en": "How much vehicles can be charged here at the same time?", + "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?", + "de": "Wie viele Fahrzeuge können hier gleichzeitig geladen werden?" + }, + "freeform": { + "key": "capacity", + "type": "pnat" } - }, - { - "if": "payment:membership_card=yes", - "ifnot": "payment:membership_card=no", - "then": { - "en": "Payment is done using a membership card", - "nl": "Betalen via een lidkaart van het netwerk" + }, + { + "id": "Available_charging_stations (generated)", + "question": { + "en": "Which charging stations are available here?", + "nl": "Welke aansluitingen zijn hier beschikbaar?", + "de": "Welche Ladestationen gibt es hier?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "socket:schuko=1", + "ifnot": "socket:schuko=", + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "hideInAnswer": { + "or": [ + "_country!=be", + "_country!=fr", + "_country!=ma", + "_country!=tn", + "_country!=pl", + "_country!=cs", + "_country!=sk", + "_country!=mo" + ] + } + }, + { + "if": { + "and": [ + "socket:schuko~*", + "socket:schuko!=1" + ] + }, + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:typee=1", + "ifnot": "socket:typee=", + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" + } + }, + { + "if": { + "and": [ + "socket:typee~*", + "socket:typee!=1" + ] + }, + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:chademo=1", + "ifnot": "socket:chademo=", + "then": { + "en": "
Chademo
", + "nl": "
Chademo
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:chademo~*", + "socket:chademo!=1" + ] + }, + "then": { + "en": "
Chademo
", + "nl": "
Chademo
", + "de": "
Chademo
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1_cable=1", + "ifnot": "socket:type1_cable=", + "then": { + "en": "
Type 1 with cable (J1772)
", + "nl": "
Type 1 met kabel (J1772)
", + "de": "
Typ 1 mit Kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=1" + ] + }, + "then": { + "en": "
Type 1 with cable (J1772)
", + "nl": "
Type 1 met kabel (J1772)
", + "de": "
Typ 1 mit Kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1=1", + "ifnot": "socket:type1=", + "then": { + "en": "
Type 1 without cable (J1772)
", + "nl": "
Type 1 zonder kabel (J1772)
", + "de": "
Typ 1 ohne Kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1~*", + "socket:type1!=1" + ] + }, + "then": { + "en": "
Type 1 without cable (J1772)
", + "nl": "
Type 1 zonder kabel (J1772)
", + "de": "
Typ 1 ohne Kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1_combo=1", + "ifnot": "socket:type1_combo=", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
", + "de": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=1" + ] + }, + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
", + "de": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_supercharger=1", + "ifnot": "socket:tesla_supercharger=", + "then": { + "en": "
Tesla Supercharger
", + "nl": "
Tesla Supercharger
", + "de": "
Tesla Supercharger
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger
", + "nl": "
Tesla Supercharger
", + "de": "
Tesla Supercharger
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2=1", + "ifnot": "socket:type2=", + "then": { + "en": "
Type 2 (mennekes)
", + "nl": "
Type 2 (mennekes)
", + "de": "
Typ 2 (Mennekes)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2~*", + "socket:type2!=1" + ] + }, + "then": { + "en": "
Type 2 (mennekes)
", + "nl": "
Type 2 (mennekes)
", + "de": "
Typ 2 (Mennekes)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2_combo=1", + "ifnot": "socket:type2_combo=", + "then": { + "en": "
Type 2 CCS (mennekes)
", + "nl": "
Type 2 CCS (mennekes)
", + "de": "
Typ 2 CCS (Mennekes)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=1" + ] + }, + "then": { + "en": "
Type 2 CCS (mennekes)
", + "nl": "
Type 2 CCS (mennekes)
", + "de": "
Typ 2 CCS (Mennekes)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2_cable=1", + "ifnot": "socket:type2_cable=", + "then": { + "en": "
Type 2 with cable (mennekes)
", + "nl": "
Type 2 met kabel (J1772)
", + "de": "
Typ 2 mit Kabel (Mennekes)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=1" + ] + }, + "then": { + "en": "
Type 2 with cable (mennekes)
", + "nl": "
Type 2 met kabel (J1772)
", + "de": "
Typ 2 mit Kabel (Mennekes)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_supercharger_ccs=1", + "ifnot": "socket:tesla_supercharger_ccs=", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", + "de": "
Tesla Supercharger CCS (Typ 2 CSS)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", + "de": "
Tesla Supercharger CCS (Typ 2 CSS)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_destination=1", + "ifnot": "socket:tesla_destination=", + "then": { + "en": "
Tesla Supercharger (destination)
", + "nl": "
Tesla Supercharger (destination)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + }, + { + "or": [ + "_country!=us" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger (destination)
", + "nl": "
Tesla Supercharger (destination)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_destination=1", + "ifnot": "socket:tesla_destination=", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + }, + { + "or": [ + "_country=us" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=1" + ] + }, + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:USB-A=1", + "ifnot": "socket:USB-A=", + "then": { + "en": "
USB to charge phones and small electronics
", + "nl": "
USB om GSMs en kleine electronica op te laden
", + "de": "
USB zum Laden von Smartphones oder Elektrokleingeräten
" + } + }, + { + "if": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=1" + ] + }, + "then": { + "en": "
USB to charge phones and small electronics
", + "nl": "
USB om GSMs en kleine electronica op te laden
", + "de": "
USB zum Laden von Smartphones und Elektrokleingeräten
" + }, + "hideInAnswer": true + }, + { + "if": "socket:bosch_3pin=1", + "ifnot": "socket:bosch_3pin=", + "then": { + "en": "
Bosch Active Connect with 3 pins and cable
", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "bicycle=no" + ] + }, + { + "and": [ + { + "or": [ + "car=yes", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + }, + "bicycle!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=1" + ] + }, + "then": { + "en": "
Bosch Active Connect with 3 pins and cable
", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "hideInAnswer": true + }, + { + "if": "socket:bosch_5pin=1", + "ifnot": "socket:bosch_5pin=", + "then": { + "en": "
Bosch Active Connect with 5 pins and cable
", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
", + "de": "
Bosch Active Connect mit 5 Pins und Kabel
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "bicycle=no" + ] + }, + { + "and": [ + { + "or": [ + "car=yes", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + }, + "bicycle!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=1" + ] + }, + "then": { + "en": "
Bosch Active Connect with 5 pins and cable
", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
", + "de": "
Bosch Active Connect mit 5 Pins und Kabel
" + }, + "hideInAnswer": true + } + ] + }, + { + "id": "plugs-0", + "question": { + "en": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", + "nl": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here", + "nl": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "freeform": { + "key": "socket:schuko", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:schuko~*", + "socket:schuko!=0" + ] + } + }, + { + "id": "plugs-1", + "question": { + "en": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", + "nl": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here", + "nl": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "freeform": { + "key": "socket:typee", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:typee~*", + "socket:typee!=0" + ] + } + }, + { + "id": "plugs-2", + "question": { + "en": "How much plugs of type
Chademo
are available here?", + "nl": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:chademo} plugs of type
Chademo
available here", + "nl": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" + }, + "freeform": { + "key": "socket:chademo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:chademo~*", + "socket:chademo!=0" + ] + } + }, + { + "id": "plugs-3", + "question": { + "en": "How much plugs of type
Type 1 with cable (J1772)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here", + "nl": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" + }, + "freeform": { + "key": "socket:type1_cable", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=0" + ] + } + }, + { + "id": "plugs-4", + "question": { + "en": "How much plugs of type
Type 1 without cable (J1772)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here", + "nl": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" + }, + "freeform": { + "key": "socket:type1", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1~*", + "socket:type1!=0" + ] + } + }, + { + "id": "plugs-5", + "question": { + "en": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here", + "nl": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "freeform": { + "key": "socket:type1_combo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=0" + ] + } + }, + { + "id": "plugs-6", + "question": { + "en": "How much plugs of type
Tesla Supercharger
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here", + "nl": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" + }, + "freeform": { + "key": "socket:tesla_supercharger", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=0" + ] + } + }, + { + "id": "plugs-7", + "question": { + "en": "How much plugs of type
Type 2 (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here", + "nl": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" + }, + "freeform": { + "key": "socket:type2", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2~*", + "socket:type2!=0" + ] + } + }, + { + "id": "plugs-8", + "question": { + "en": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here", + "nl": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" + }, + "freeform": { + "key": "socket:type2_combo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=0" + ] + } + }, + { + "id": "plugs-9", + "question": { + "en": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here", + "nl": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" + }, + "freeform": { + "key": "socket:type2_cable", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=0" + ] + } + }, + { + "id": "plugs-10", + "question": { + "en": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here", + "nl": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "freeform": { + "key": "socket:tesla_supercharger_ccs", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=0" + ] + } + }, + { + "id": "plugs-11", + "question": { + "en": "How much plugs of type
Tesla Supercharger (destination)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here", + "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" + }, + "freeform": { + "key": "socket:tesla_destination", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "plugs-12", + "question": { + "en": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here", + "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "freeform": { + "key": "socket:tesla_destination", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "plugs-13", + "question": { + "en": "How much plugs of type
USB to charge phones and small electronics
are available here?", + "nl": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here", + "nl": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" + }, + "freeform": { + "key": "socket:USB-A", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=0" + ] + } + }, + { + "id": "plugs-14", + "question": { + "en": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", + "nl": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here", + "nl": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "freeform": { + "key": "socket:bosch_3pin", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=0" + ] + } + }, + { + "id": "plugs-15", + "question": { + "en": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", + "nl": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here", + "nl": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "freeform": { + "key": "socket:bosch_5pin", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=0" + ] + } + }, + { + "id": "OH", + "render": "{opening_hours_table(opening_hours)}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "question": { + "en": "When is this charging station opened?", + "nl": "Wanneer is dit oplaadpunt beschikbaar??", + "de": "Wann ist diese Ladestation geöffnet?", + "it": "Quali sono gli orari di apertura di questa stazione di ricarica?", + "ja": "この充電ステーションはいつオープンしますか?", + "nb_NO": "Når åpnet denne ladestasjonen?", + "ru": "В какое время работает эта зарядная станция?", + "zh_Hant": "何時是充電站開放使用的時間?" + }, + "mappings": [ + { + "if": "opening_hours=24/7", + "then": { + "en": "24/7 opened (including holidays)", + "nl": "24/7 open - ook tijdens vakanties", + "de": "durchgehend geöffnet (auch an Feiertagen)" + } + } + ] + }, + { + "id": "fee", + "question": { + "en": "Does one have to pay to use this charging station?", + "nl": "Moet men betalen om dit oplaadpunt te gebruiken?" + }, + "mappings": [ + { + "if": { + "and": [ + "fee=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken", + "en": "Free to use" + }, + "hideInAnswer": true + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=yes" + ] + }, + "then": { + "nl": "Gratis te gebruiken (zonder aan te melden)", + "en": "Free to use (without authenticating)" + } + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht", + "en": "Free to use, but one has to authenticate" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=no @ customers" + ] + }, + "then": { + "nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/...", + "en": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=" + ] + }, + "then": { + "nl": "Betalend", + "en": "Paid use" + } + } + ] + }, + { + "id": "charge", + "question": { + "en": "How much does one have to pay to use this charging station?", + "nl": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?" + }, + "render": { + "en": "Using this charging station costs {charge}", + "nl": "Dit oplaadpunt gebruiken kost {charge}" + }, + "freeform": { + "key": "charge" + }, + "condition": "fee=yes" + }, + { + "id": "payment-options", + "builtin": "payment-options", + "override": { + "condition": { + "or": [ + "fee=yes", + "charge~*" + ] + }, + "mappings+": [ + { + "if": "payment:app=yes", + "ifnot": "payment:app=no", + "then": { + "en": "Payment is done using a dedicated app", + "nl": "Betalen via een app van het netwerk", + "de": "Bezahlung mit einer speziellen App" + } + }, + { + "if": "payment:membership_card=yes", + "ifnot": "payment:membership_card=no", + "then": { + "en": "Payment is done using a membership card", + "nl": "Betalen via een lidkaart van het netwerk", + "de": "Bezahlung mit einer Mitgliedskarte" + } + } + ] + } + }, + { + "id": "Authentication", + "#": "In some cases, charging is free but one has to be authenticated. We only ask for authentication if fee is no (or unset). By default one sees the questions for either the payment options or the authentication options, but normally not both", + "question": { + "en": "What kind of authentication is available at the charging station?", + "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?", + "de": "Welche Authentifizierung ist an der Ladestation möglich?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "authentication:membership_card=yes", + "ifnot": "authentication:membership_card=no", + "then": { + "en": "Authentication by a membership card", + "nl": "Aanmelden met een lidkaart is mogelijk", + "de": "Authentifizierung durch eine Mitgliedskarte" + } + }, + { + "if": "authentication:app=yes", + "ifnot": "authentication:app=no", + "then": { + "en": "Authentication by an app", + "nl": "Aanmelden via een applicatie is mogelijk", + "de": "Authentifizierung durch eine App" + } + }, + { + "if": "authentication:phone_call=yes", + "ifnot": "authentication:phone_call=no", + "then": { + "en": "Authentication via phone call is available", + "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk", + "de": "Authentifizierung per Anruf ist möglich" + } + }, + { + "if": "authentication:short_message=yes", + "ifnot": "authentication:short_message=no", + "then": { + "en": "Authentication via phone call is available", + "nl": "Aanmelden via SMS is mogelijk", + "de": "Authentifizierung per Anruf ist möglich" + } + }, + { + "if": "authentication:nfc=yes", + "ifnot": "authentication:nfc=no", + "then": { + "en": "Authentication via NFC is available", + "nl": "Aanmelden via NFC is mogelijk", + "de": "Authentifizierung über NFC ist möglich" + } + }, + { + "if": "authentication:money_card=yes", + "ifnot": "authentication:money_card=no", + "then": { + "en": "Authentication via Money Card is available", + "nl": "Aanmelden met Money Card is mogelijk", + "de": "Authentifizierung über Geldkarte ist möglich" + } + }, + { + "if": "authentication:debit_card=yes", + "ifnot": "authentication:debit_card=no", + "then": { + "en": "Authentication via debit card is available", + "nl": "Aanmelden met een betaalkaart is mogelijk", + "de": "Authentifizierung per Debitkarte ist möglich" + } + }, + { + "if": "authentication:none=yes", + "ifnot": "authentication:none=no", + "then": { + "en": "Charging here is (also) possible without authentication", + "nl": "Hier opladen is (ook) mogelijk zonder aan te melden", + "de": "Das Aufladen ist hier (auch) ohne Authentifizierung möglich" + } + } + ], + "condition": { + "or": [ + "fee=no", + "fee=" + ] + } + }, + { + "id": "Auth phone", + "render": { + "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", + "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}", + "de": "Authentifizierung durch Anruf oder SMS an {authentication:phone_call:number}" + }, + "question": { + "en": "What's the phone number for authentication call or SMS?", + "nl": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", + "de": "Wie lautet die Telefonnummer für den Authentifizierungsanruf oder die SMS?" + }, + "freeform": { + "key": "authentication:phone_call:number", + "type": "phone" + }, + "condition": { + "or": [ + "authentication:phone_call=yes", + "authentication:short_message=yes" + ] + } + }, + { + "id": "maxstay", + "question": { + "en": "What is the maximum amount of time one is allowed to stay here?", + "nl": "Hoelang mag een voertuig hier blijven staan?", + "de": "Was ist die Höchstdauer des Aufenthalts hier?" + }, + "freeform": { + "key": "maxstay" + }, + "render": { + "en": "One can stay at most {canonical(maxstay)}", + "nl": "De maximale parkeertijd hier is {canonical(maxstay)}", + "de": "Die maximale Parkzeit beträgt {canonical(maxstay)}" + }, + "mappings": [ + { + "if": "maxstay=unlimited", + "then": { + "en": "No timelimit on leaving your vehicle here", + "nl": "Geen maximum parkeertijd", + "de": "Keine Höchstparkdauer" + } + } + ], + "condition": { + "or": [ + "maxstay~*", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + } + }, + { + "id": "Network", + "render": { + "en": "Part of the network {network}", + "nl": "Maakt deel uit van het {network}-netwerk", + "de": "Teil des Netzwerks {network}", + "it": "{network}", + "ja": "{network}", + "nb_NO": "{network}", + "ru": "{network}", + "zh_Hant": "{network}" + }, + "question": { + "en": "Is this charging station part of a network?", + "nl": "Is dit oplaadpunt deel van een groter netwerk?", + "de": "Ist diese Ladestation Teil eines Netzwerks?", + "it": "A quale rete appartiene questa stazione di ricarica?", + "ja": "この充電ステーションの運営チェーンはどこですか?", + "ru": "К какой сети относится эта станция?", + "zh_Hant": "充電站所屬的網路是?" + }, + "freeform": { + "key": "network" + }, + "mappings": [ + { + "if": "no:network=yes", + "then": { + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk", + "de": "Nicht Teil eines größeren Netzwerks" + } + }, + { + "if": "network=none", + "then": { + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk", + "de": "Nicht Teil eines größeren Netzwerks" + }, + "hideInAnswer": true + }, + { + "if": "network=AeroVironment", + "then": "AeroVironment" + }, + { + "if": "network=Blink", + "then": "Blink" + }, + { + "if": "network=eVgo", + "then": "eVgo" + } + ] + }, + { + "id": "Operator", + "question": { + "en": "Who is the operator of this charging station?", + "nl": "Wie beheert dit oplaadpunt?", + "de": "Wer ist der Betreiber dieser Ladestation?" + }, + "render": { + "en": "This charging station is operated by {operator}", + "nl": "Wordt beheerd door {operator}", + "de": "Diese Ladestation wird betrieben von {operator}" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": { + "and": [ + "network:={operator}" + ] + }, + "then": { + "en": "Actually, {operator} is the network", + "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt", + "de": "Eigentlich ist {operator} das Netzwerk" + }, + "addExtraTags": [ + "operator=" + ], + "hideInAnswer": "operator=" + } + ] + }, + { + "id": "phone", + "question": { + "en": "What number can one call if there is a problem with this charging station?", + "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?", + "de": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?" + }, + "render": { + "en": "In case of problems, call {phone}", + "nl": "Bij problemen, bel naar {phone}", + "de": "Bei Problemen, anrufen unter {phone}" + }, + "freeform": { + "key": "phone", + "type": "phone" + } + }, + { + "id": "email", + "question": { + "en": "What is the email address of the operator?", + "nl": "Wat is het email-adres van de operator?", + "de": "Wie ist die Email-Adresse des Betreibers?" + }, + "render": { + "en": "In case of problems, send an email to {email}", + "nl": "Bij problemen, email naar {email}", + "de": "Bei Problemen senden Sie eine E-Mail an {email}" + }, + "freeform": { + "key": "email", + "type": "email" + } + }, + { + "id": "website", + "question": { + "en": "What is the website of the operator?", + "nl": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?", + "de": "Wie ist die Webseite des Betreibers?" + }, + "render": { + "en": "More info on {website}", + "nl": "Meer informatie op {website}", + "de": "Weitere Informationen auf {website}" + }, + "freeform": { + "key": "website", + "type": "url" + } + }, + "level", + { + "id": "ref", + "question": { + "en": "What is the reference number of this charging station?", + "nl": "Wat is het referentienummer van dit oplaadstation?", + "de": "Wie lautet die Kennung dieser Ladestation?" + }, + "render": { + "en": "Reference number is {ref}", + "nl": "Het referentienummer van dit oplaadpunt is {ref}", + "de": "Die Kennziffer ist {ref}" + }, + "freeform": { + "key": "ref" + }, + "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", + "condition": "network!=" + }, + { + "id": "Operational status", + "question": { + "en": "Is this charging point in use?", + "nl": "Is dit oplaadpunt operationeel?", + "de": "Ist dieser Ladepunkt in Betrieb?" + }, + "mappings": [ + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=charging_station" + ] + }, + "then": { + "en": "This charging station is broken", + "nl": "Dit oplaadpunt is kapot", + "de": "Diese Ladestation ist kaputt" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=broken", + "amenity=charging_station" + ] + }, + "then": { + "en": "A charging station is planned here", + "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden", + "de": "Hier ist eine Ladestation geplant" + } + }, + { + "if": { + "and": [ + "planned:amenity=charging_station", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=" + ] + }, + "then": { + "en": "A charging station is constructed here", + "nl": "Hier wordt op dit moment een oplaadpunt gebouwd", + "de": "Hier wird eine Ladestation gebaut" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=charging_station", + "disused:amenity=", + "operational_status=broken", + "amenity=" + ] + }, + "then": { + "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", + "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig", + "de": "Diese Ladestation wurde dauerhaft deaktiviert und wird nicht mehr benutzt, ist aber noch sichtbar" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=charging_station", + "operational_status=broken", + "amenity=" + ] + }, + "then": { + "en": "This charging station works", + "nl": "Dit oplaadpunt werkt", + "de": "Diese Ladestation funktioniert" + } + } + ] + }, + { + "id": "Parking:fee", + "question": { + "en": "Does one have to pay a parking fee while charging?", + "nl": "Moet men parkeergeld betalen tijdens het opladen?", + "de": "Muss man beim Laden eine Parkgebühr bezahlen?" + }, + "mappings": [ + { + "if": "parking:fee=no", + "then": { + "en": "No additional parking cost while charging", + "nl": "Geen extra parkeerkost tijdens het opladen", + "de": "Keine zusätzlichen Parkgebühren beim Laden" + } + }, + { + "if": "parking:fee=yes", + "then": { + "en": "An additional parking fee should be paid while charging", + "nl": "Tijdens het opladen moet er parkeergeld betaald worden", + "de": "Beim Laden ist eine zusätzliche Parkgebühr zu entrichten" + } + } + ], + "condition": { + "or": [ + "motor_vehicle=yes", + "hgv=yes", + "bus=yes", + "bicycle=no", + "bicycle=" + ] + } + } + ], + "icon": { + "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", + "mappings": [ + { + "if": "bicycle=yes", + "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" + }, + { + "if": { + "or": [ + "car=yes", + "motorcar=yes" + ] + }, + "then": "pin:#fff;./assets/themes/charging_stations/car.svg" } - } ] - } }, - { - "id": "Authentication", - "#": "In some cases, charging is free but one has to be authenticated. We only ask for authentication if fee is no (or unset). By default one sees the questions for either the payment options or the authentication options, but normally not both", - "question": { - "en": "What kind of authentication is available at the charging station?", - "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?" - }, - "multiAnswer": true, - "mappings": [ + "iconOverlays": [ { - "if": "authentication:membership_card=yes", - "ifnot": "authentication:membership_card=no", - "then": { - "en": "Authentication by a membership card", - "nl": "Aanmelden met een lidkaart is mogelijk" - } + "if": { + "or": [ + "disused:amenity=charging_station", + "operational_status=broken" + ] + }, + "then": "cross_bottom_right:#c22;" }, { - "if": "authentication:app=yes", - "ifnot": "authentication:app=no", - "then": { - "en": "Authentication by an app", - "nl": "Aanmelden via een applicatie is mogelijk" - } + "if": { + "or": [ + "proposed:amenity=charging_station", + "planned:amenity=charging_station" + ] + }, + "then": "./assets/layers/charging_station/under_construction.svg", + "badge": true }, { - "if": "authentication:phone_call=yes", - "ifnot": "authentication:phone_call=no", - "then": { - "en": "Authentication via phone call is available", - "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk" - } - }, - { - "if": "authentication:short_message=yes", - "ifnot": "authentication:short_message=no", - "then": { - "en": "Authentication via SMS is available", - "nl": "Aanmelden via SMS is mogelijk" - } - }, - { - "if": "authentication:nfc=yes", - "ifnot": "authentication:nfc=no", - "then": { - "en": "Authentication via NFC is available", - "nl": "Aanmelden via NFC is mogelijk" - } - }, - { - "if": "authentication:money_card=yes", - "ifnot": "authentication:money_card=no", - "then": { - "en": "Authentication via Money Card is available", - "nl": "Aanmelden met Money Card is mogelijk" - } - }, - { - "if": "authentication:debit_card=yes", - "ifnot": "authentication:debit_card=no", - "then": { - "en": "Authentication via debit card is available", - "nl": "Aanmelden met een betaalkaart is mogelijk" - } - }, - { - "if": "authentication:none=yes", - "ifnot": "authentication:none=no", - "then": { - "en": "Charging here is (also) possible without authentication", - "nl": "Hier opladen is (ook) mogelijk zonder aan te melden" - } + "if": { + "and": [ + "bicycle=yes", + { + "or": [ + "motorcar=yes", + "car=yes" + ] + } + ] + }, + "then": "circle:#fff;./assets/themes/charging_stations/car.svg", + "badge": true } - ], - "condition": { - "or": [ - "fee=no", - "fee=" - ] - } + ], + "width": { + "render": "8" }, - { - "id": "Auth phone", - "render": { - "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", - "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}" - }, - "question": { - "en": "What's the phone number for authentication call or SMS?", - "nl": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?" - }, - "freeform": { - "key": "authentication:phone_call:number", - "type": "phone" - }, - "condition": { - "or": [ - "authentication:phone_call=yes", - "authentication:short_message=yes" - ] - } + "iconSize": { + "render": "50,50,bottom" }, - { - "id": "maxstay", - "question": { - "en": "What is the maximum amount of time one is allowed to stay here?", - "nl": "Hoelang mag een voertuig hier blijven staan?" - }, - "freeform": { - "key": "maxstay" - }, - "render": { - "en": "One can stay at most {canonical(maxstay)}", - "nl": "De maximale parkeertijd hier is {canonical(maxstay)}" - }, - "mappings": [ + "color": { + "render": "#00f" + }, + "presets": [ { - "if": "maxstay=unlimited", - "then": { - "en": "No timelimit on leaving your vehicle here", - "nl": "Geen maximum parkeertijd" - } + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes", + "socket:typee=1" + ], + "title": { + "en": "Charging station", + "nl": "gewone stekker (bedoeld om electrische fietsen op te laden)", + "de": "Ladestation", + "ru": "Зарядная станция" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes" + ], + "title": { + "en": "charging station for e-bikes", + "nl": "oplaadpunt voor elektrische fietsen" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=yes", + "bicycle=no" + ], + "title": { + "en": "charging station for cars", + "nl": "oplaadstation voor elektrische auto's" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station" + ], + "title": { + "en": "charging station", + "nl": "oplaadstation" + }, + "preciseInput": { + "preferredBackground": "map" + } } - ], - "condition": { - "or": [ - "maxstay~*", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - } - }, - { - "id": "Network", - "render": { - "en": "Part of the network {network}", - "nl": "Maakt deel uit van het {network}-netwerk" - }, - "question": { - "en": "Is this charging station part of a network?", - "nl": "Is dit oplaadpunt deel van een groter netwerk?" - }, - "freeform": { - "key": "network" - }, - "mappings": [ + ], + "wayHandling": 1, + "filter": [ { - "if": "no:network=yes", - "then": { - "en": "Not part of a bigger network", - "nl": "Maakt geen deel uit van een groter netwerk" - } + "id": "vehicle-type", + "options": [ + { + "question": { + "en": "All vehicle types", + "nl": "Alle voertuigen", + "de": "Alle Fahrzeugtypen" + } + }, + { + "question": { + "en": "Charging station for bicycles", + "nl": "Oplaadpunten voor fietsen", + "de": "Ladestation für Fahrräder" + }, + "osmTags": "bicycle=yes" + }, + { + "question": { + "en": "Charging station for cars", + "nl": "Oplaadpunten voor auto's", + "de": "Ladestation für Autos" + }, + "osmTags": { + "or": [ + "car=yes", + "motorcar=yes" + ] + } + } + ] }, { - "if": "network=none", - "then": { - "en": "Not part of a bigger network", - "nl": "Maakt geen deel uit van een groter netwerk" - }, - "hideInAnswer": true + "id": "working", + "options": [ + { + "question": { + "en": "Only working charging stations", + "nl": "Enkel werkende oplaadpunten", + "de": "Nur funktionierende Ladestationen" + }, + "osmTags": { + "and": [ + "operational_status!=broken", + "amenity=charging_station" + ] + } + } + ] }, { - "if": "network=AeroVironment", - "then": "AeroVironment" - }, - { - "if": "network=Blink", - "then": "Blink" - }, - { - "if": "network=eVgo", - "then": "eVgo" + "id": "connection_type", + "options": [ + { + "question": { + "en": "All connectors", + "nl": "Alle types", + "de": "Alle Anschlüsse" + } + }, + { + "question": { + "en": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector", + "nl": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "osmTags": "socket:schuko~*" + }, + { + "question": { + "en": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector", + "nl": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "osmTags": "socket:typee~*" + }, + { + "question": { + "en": "Has a
Chademo
connector", + "nl": "Heeft een
Chademo
", + "de": "Hat einen
Chademo
Stecker" + }, + "osmTags": "socket:chademo~*" + }, + { + "question": { + "en": "Has a
Type 1 with cable (J1772)
connector", + "nl": "Heeft een
Type 1 met kabel (J1772)
" + }, + "osmTags": "socket:type1_cable~*" + }, + { + "question": { + "en": "Has a
Type 1 without cable (J1772)
connector", + "nl": "Heeft een
Type 1 zonder kabel (J1772)
" + }, + "osmTags": "socket:type1~*" + }, + { + "question": { + "en": "Has a
Type 1 CCS (aka Type 1 Combo)
connector", + "nl": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "osmTags": "socket:type1_combo~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger
connector", + "nl": "Heeft een
Tesla Supercharger
", + "de": "Hat einen
Tesla Supercharger
Stecker" + }, + "osmTags": "socket:tesla_supercharger~*" + }, + { + "question": { + "en": "Has a
Type 2 (mennekes)
connector", + "nl": "Heeft een
Type 2 (mennekes)
" + }, + "osmTags": "socket:type2~*" + }, + { + "question": { + "en": "Has a
Type 2 CCS (mennekes)
connector", + "nl": "Heeft een
Type 2 CCS (mennekes)
" + }, + "osmTags": "socket:type2_combo~*" + }, + { + "question": { + "en": "Has a
Type 2 with cable (mennekes)
connector", + "nl": "Heeft een
Type 2 met kabel (J1772)
" + }, + "osmTags": "socket:type2_cable~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector", + "nl": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "osmTags": "socket:tesla_supercharger_ccs~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger (destination)
connector", + "nl": "Heeft een
Tesla Supercharger (destination)
" + }, + "osmTags": "socket:tesla_destination~*" + }, + { + "question": { + "en": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector", + "nl": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "osmTags": "socket:tesla_destination~*" + }, + { + "question": { + "en": "Has a
USB to charge phones and small electronics
connector", + "nl": "Heeft een
USB om GSMs en kleine electronica op te laden
" + }, + "osmTags": "socket:USB-A~*" + }, + { + "question": { + "en": "Has a
Bosch Active Connect with 3 pins and cable
connector", + "nl": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "osmTags": "socket:bosch_3pin~*" + }, + { + "question": { + "en": "Has a
Bosch Active Connect with 5 pins and cable
connector", + "nl": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "osmTags": "socket:bosch_5pin~*" + } + ] } - ] - }, - { - "id": "Operator", - "question": { - "en": "Who is the operator of this charging station?", - "nl": "Wie beheert dit oplaadpunt?" - }, - "render": { - "en": "This charging station is operated by {operator}", - "nl": "Wordt beheerd door {operator}" - }, - "freeform": { - "key": "operator" - }, - "mappings": [ + ], + "units": [ { - "if": { - "and": [ - "network:={operator}" + "appliesToKey": [ + "maxstay" + ], + "applicableUnits": [ + { + "canonicalDenomination": "minutes", + "canonicalDenominationSingular": "minute", + "alternativeDenomination": [ + "m", + "min", + "mins", + "minuten", + "mns" + ], + "human": { + "en": " minutes", + "nl": " minuten", + "de": " Minuten", + "ru": " минут" + }, + "humanSingular": { + "en": " minute", + "nl": " minuut", + "de": " Minute", + "ru": " минута" + } + }, + { + "canonicalDenomination": "hours", + "canonicalDenominationSingular": "hour", + "alternativeDenomination": [ + "h", + "hrs", + "hours", + "u", + "uur", + "uren" + ], + "human": { + "en": " hours", + "nl": " uren", + "de": " Stunden", + "ru": " часов" + }, + "humanSingular": { + "en": " hour", + "nl": " uur", + "de": " Stunde", + "ru": " час" + } + }, + { + "canonicalDenomination": "days", + "canonicalDenominationSingular": "day", + "alternativeDenomination": [ + "dys", + "dagen", + "dag" + ], + "human": { + "en": " days", + "nl": " day", + "de": " Tage", + "ru": " дней" + }, + "humanSingular": { + "en": " day", + "nl": " dag", + "de": " Tag", + "ru": " день" + } + } ] - }, - "then": { - "en": "Actually, {operator} is the network", - "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt" - }, - "addExtraTags": [ - "operator=" - ], - "hideInAnswer": "operator=" + }, + { + "appliesToKey": [ + "socket:schuko:voltage", + "socket:typee:voltage", + "socket:chademo:voltage", + "socket:type1_cable:voltage", + "socket:type1:voltage", + "socket:type1_combo:voltage", + "socket:tesla_supercharger:voltage", + "socket:type2:voltage", + "socket:type2_combo:voltage", + "socket:type2_cable:voltage", + "socket:tesla_supercharger_ccs:voltage", + "socket:tesla_destination:voltage", + "socket:tesla_destination:voltage", + "socket:USB-A:voltage", + "socket:bosch_3pin:voltage", + "socket:bosch_5pin:voltage" + ], + "applicableUnits": [ + { + "canonicalDenomination": "V", + "alternativeDenomination": [ + "v", + "volt", + "voltage", + "V", + "Volt" + ], + "human": { + "en": "Volts", + "nl": "volt", + "de": "Volt", + "ru": "Вольт" + } + } + ], + "eraseInvalidValues": true + }, + { + "appliesToKey": [ + "socket:schuko:current", + "socket:typee:current", + "socket:chademo:current", + "socket:type1_cable:current", + "socket:type1:current", + "socket:type1_combo:current", + "socket:tesla_supercharger:current", + "socket:type2:current", + "socket:type2_combo:current", + "socket:type2_cable:current", + "socket:tesla_supercharger_ccs:current", + "socket:tesla_destination:current", + "socket:tesla_destination:current", + "socket:USB-A:current", + "socket:bosch_3pin:current", + "socket:bosch_5pin:current" + ], + "applicableUnits": [ + { + "canonicalDenomination": "A", + "alternativeDenomination": [ + "a", + "amp", + "amperage", + "A" + ], + "human": { + "en": "A", + "nl": "A" + } + } + ], + "eraseInvalidValues": true + }, + { + "appliesToKey": [ + "socket:schuko:output", + "socket:typee:output", + "socket:chademo:output", + "socket:type1_cable:output", + "socket:type1:output", + "socket:type1_combo:output", + "socket:tesla_supercharger:output", + "socket:type2:output", + "socket:type2_combo:output", + "socket:type2_cable:output", + "socket:tesla_supercharger_ccs:output", + "socket:tesla_destination:output", + "socket:tesla_destination:output", + "socket:USB-A:output", + "socket:bosch_3pin:output", + "socket:bosch_5pin:output" + ], + "applicableUnits": [ + { + "canonicalDenomination": "kW", + "alternativeDenomination": [ + "kilowatt" + ], + "human": { + "en": "kilowatt", + "nl": "kilowatt", + "de": "Kilowatt", + "ru": "киловатт" + } + }, + { + "canonicalDenomination": "mW", + "alternativeDenomination": [ + "megawatt" + ], + "human": { + "en": "megawatt", + "nl": "megawatt", + "de": "Megawatt", + "ru": "мегаватт" + } + } + ], + "eraseInvalidValues": true } - ] + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuracy": true }, - { - "id": "phone", - "question": { - "en": "What number can one call if there is a problem with this charging station?", - "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?" - }, - "render": { - "en": "In case of problems, call {phone}", - "nl": "Bij problemen, bel naar {phone}" - }, - "freeform": { - "key": "phone", - "type": "phone" - } - }, - { - "id": "email", - "question": { - "en": "What is the email address of the operator?", - "nl": "Wat is het email-adres van de operator?" - }, - "render": { - "en": "In case of problems, send an email to {email}", - "nl": "Bij problemen, email naar {email}" - }, - "freeform": { - "key": "email", - "type": "email" - } - }, - { - "id": "website", - "question": { - "en": "What is the website where one can find more information about this charging station?", - "nl": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?" - }, - "render": { - "en": "More info on {website}", - "nl": "Meer informatie op {website}" - }, - "freeform": { - "key": "website", - "type": "url" - } - }, - "level", - { - "id": "ref", - "question": { - "en": "What is the reference number of this charging station?", - "nl": "Wat is het referentienummer van dit oplaadstation?" - }, - "render": { - "en": "Reference number is {ref}", - "nl": "Het referentienummer van dit oplaadpunt is {ref}" - }, - "freeform": { - "key": "ref" - }, - "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", - "condition": "network!=" - }, - { - "id": "Operational status", - "question": { - "en": "Is this charging point in use?", - "nl": "Is dit oplaadpunt operationeel?" - }, - "mappings": [ - { - "if": { + "deletion": { + "softDeletionTags": { "and": [ - "planned:amenity=", - "construction:amenity=", - "disused:amenity=", - "operational_status=", - "amenity=charging_station" + "amenity=", + "disused:amenity=charging_station" ] - }, - "then": { - "en": "This charging station works", - "nl": "Dit oplaadpunt werkt" - } }, - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=", - "disused:amenity=", - "operational_status=broken", - "amenity=charging_station" - ] - }, - "then": { - "en": "This charging station is broken", - "nl": "Dit oplaadpunt is kapot" - } - }, - { - "if": { - "and": [ - "planned:amenity=charging_station", - "construction:amenity=", - "disused:amenity=", - "operational_status=", - "amenity=" - ] - }, - "then": { - "en": "A charging station is planned here", - "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden" - } - }, - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=charging_station", - "disused:amenity=", - "operational_status=broken", - "amenity=" - ] - }, - "then": { - "en": "A charging station is constructed here", - "nl": "Hier wordt op dit moment een oplaadpunt gebouwd" - } - }, - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=", - "disused:amenity=charging_station", - "operational_status=broken", - "amenity=" - ] - }, - "then": { - "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", - "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig" - } - } - ] - }, - { - "id": "Parking:fee", - "question": { - "en": "Does one have to pay a parking fee while charging?", - "nl": "Moet men parkeergeld betalen tijdens het opladen?" - }, - "mappings": [ - { - "if": "parking:fee=no", - "then": { - "en": "No additional parking cost while charging", - "nl": "Geen extra parkeerkost tijdens het opladen" - } - }, - { - "if": "parking:fee=yes", - "then": { - "en": "An additional parking fee should be paid while charging", - "nl": "Tijdens het opladen moet er parkeergeld betaald worden" - } - } - ], - "condition": { - "or": [ - "motor_vehicle=yes", - "hgv=yes", - "bus=yes", - "bicycle=no", - "bicycle=" - ] - } + "neededChangesets": 10 } - ], - "icon": { - "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", - "mappings": [ - { - "if": "bicycle=yes", - "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" - }, - { - "if": { - "or": [ - "car=yes", - "motorcar=yes" - ] - }, - "then": "pin:#fff;./assets/themes/charging_stations/car.svg" - } - ] - }, - "iconOverlays": [ - { - "if": { - "or": [ - "disused:amenity=charging_station", - "operational_status=broken" - ] - }, - "then": "cross_bottom_right:#c22;" - }, - { - "if": { - "or": [ - "proposed:amenity=charging_station", - "planned:amenity=charging_station" - ] - }, - "then": "./assets/layers/charging_station/under_construction.svg", - "badge": true - }, - { - "if": { - "and": [ - "bicycle=yes", - { - "or": [ - "motorcar=yes", - "car=yes" - ] - } - ] - }, - "then": "circle:#fff;./assets/themes/charging_stations/car.svg", - "badge": true - } - ], - "width": { - "render": "8" - }, - "iconSize": { - "render": "50,50,bottom" - }, - "color": { - "render": "#00f" - }, - "presets": [ - { - "tags": [ - "amenity=charging_station", - "motorcar=no", - "bicycle=yes", - "socket:typee=1" - ], - "title": { - "en": "electrical outlet to charge e-bikes", - "nl": "gewone stekker (bedoeld om electrische fietsen op te laden)" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=charging_station", - "motorcar=no", - "bicycle=yes" - ], - "title": { - "en": "charging station for e-bikes", - "nl": "oplaadpunt voor elektrische fietsen" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=charging_station", - "motorcar=yes", - "bicycle=no" - ], - "title": { - "en": "charging station for cars", - "nl": "oplaadstation voor elektrische auto's" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=charging_station" - ], - "title": { - "en": "charging station", - "nl": "oplaadstation" - }, - "preciseInput": { - "preferredBackground": "map" - } - } - ], - "wayHandling": 1, - "filter": [ - { - "id": "vehicle-type", - "options": [ - { - "question": { - "en": "All vehicle types", - "nl": "Alle voertuigen" - } - }, - { - "question": { - "en": "Charging station for bicycles", - "nl": "Oplaadpunten voor fietsen" - }, - "osmTags": "bicycle=yes" - }, - { - "question": { - "en": "Charging station for cars", - "nl": "Oplaadpunten voor auto's" - }, - "osmTags": { - "or": [ - "car=yes", - "motorcar=yes" - ] - } - } - ] - }, - { - "id": "working", - "options": [ - { - "question": { - "en": "Only working charging stations", - "nl": "Enkel werkende oplaadpunten" - }, - "osmTags": { - "and": [ - "operational_status!=broken", - "amenity=charging_station" - ] - } - } - ] - }, - { - "id": "connection_type", - "options": [ - { - "question": { - "en": "All connectors", - "nl": "Alle types" - } - }, - { - "question": { - "en": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector", - "nl": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "osmTags": "socket:schuko~*" - }, - { - "question": { - "en": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector", - "nl": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "osmTags": "socket:typee~*" - }, - { - "question": { - "en": "Has a
Chademo
connector", - "nl": "Heeft een
Chademo
" - }, - "osmTags": "socket:chademo~*" - }, - { - "question": { - "en": "Has a
Type 1 with cable (J1772)
connector", - "nl": "Heeft een
Type 1 met kabel (J1772)
" - }, - "osmTags": "socket:type1_cable~*" - }, - { - "question": { - "en": "Has a
Type 1 without cable (J1772)
connector", - "nl": "Heeft een
Type 1 zonder kabel (J1772)
" - }, - "osmTags": "socket:type1~*" - }, - { - "question": { - "en": "Has a
Type 1 CCS (aka Type 1 Combo)
connector", - "nl": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "osmTags": "socket:type1_combo~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger
connector", - "nl": "Heeft een
Tesla Supercharger
" - }, - "osmTags": "socket:tesla_supercharger~*" - }, - { - "question": { - "en": "Has a
Type 2 (mennekes)
connector", - "nl": "Heeft een
Type 2 (mennekes)
" - }, - "osmTags": "socket:type2~*" - }, - { - "question": { - "en": "Has a
Type 2 CCS (mennekes)
connector", - "nl": "Heeft een
Type 2 CCS (mennekes)
" - }, - "osmTags": "socket:type2_combo~*" - }, - { - "question": { - "en": "Has a
Type 2 with cable (mennekes)
connector", - "nl": "Heeft een
Type 2 met kabel (J1772)
" - }, - "osmTags": "socket:type2_cable~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector", - "nl": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "osmTags": "socket:tesla_supercharger_ccs~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger (destination)
connector", - "nl": "Heeft een
Tesla Supercharger (destination)
" - }, - "osmTags": "socket:tesla_destination~*" - }, - { - "question": { - "en": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector", - "nl": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "osmTags": "socket:tesla_destination~*" - }, - { - "question": { - "en": "Has a
USB to charge phones and small electronics
connector", - "nl": "Heeft een
USB om GSMs en kleine electronica op te laden
" - }, - "osmTags": "socket:USB-A~*" - }, - { - "question": { - "en": "Has a
Bosch Active Connect with 3 pins and cable
connector", - "nl": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "osmTags": "socket:bosch_3pin~*" - }, - { - "question": { - "en": "Has a
Bosch Active Connect with 5 pins and cable
connector", - "nl": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "osmTags": "socket:bosch_5pin~*" - } - ] - } - ], - "units": [ - { - "appliesToKey": [ - "maxstay" - ], - "applicableUnits": [ - { - "canonicalDenomination": "minutes", - "canonicalDenominationSingular": "minute", - "alternativeDenomination": [ - "m", - "min", - "mins", - "minuten", - "mns" - ], - "human": { - "en": " minutes", - "nl": " minuten" - }, - "humanSingular": { - "en": " minute", - "nl": " minuut" - } - }, - { - "canonicalDenomination": "hours", - "canonicalDenominationSingular": "hour", - "alternativeDenomination": [ - "h", - "hrs", - "hours", - "u", - "uur", - "uren" - ], - "human": { - "en": " hours", - "nl": " uren" - }, - "humanSingular": { - "en": " hour", - "nl": " uur" - } - }, - { - "canonicalDenomination": "days", - "canonicalDenominationSingular": "day", - "alternativeDenomination": [ - "dys", - "dagen", - "dag" - ], - "human": { - "en": " days", - "nl": " day" - }, - "humanSingular": { - "en": " day", - "nl": " dag" - } - } - ] - }, - { - "appliesToKey": [ - "socket:schuko:voltage", - "socket:typee:voltage", - "socket:chademo:voltage", - "socket:type1_cable:voltage", - "socket:type1:voltage", - "socket:type1_combo:voltage", - "socket:tesla_supercharger:voltage", - "socket:type2:voltage", - "socket:type2_combo:voltage", - "socket:type2_cable:voltage", - "socket:tesla_supercharger_ccs:voltage", - "socket:tesla_destination:voltage", - "socket:tesla_destination:voltage", - "socket:USB-A:voltage", - "socket:bosch_3pin:voltage", - "socket:bosch_5pin:voltage" - ], - "applicableUnits": [ - { - "canonicalDenomination": "V", - "alternativeDenomination": [ - "v", - "volt", - "voltage", - "V", - "Volt" - ], - "human": { - "en": "Volts", - "nl": "volt" - } - } - ], - "eraseInvalidValues": true - }, - { - "appliesToKey": [ - "socket:schuko:current", - "socket:typee:current", - "socket:chademo:current", - "socket:type1_cable:current", - "socket:type1:current", - "socket:type1_combo:current", - "socket:tesla_supercharger:current", - "socket:type2:current", - "socket:type2_combo:current", - "socket:type2_cable:current", - "socket:tesla_supercharger_ccs:current", - "socket:tesla_destination:current", - "socket:tesla_destination:current", - "socket:USB-A:current", - "socket:bosch_3pin:current", - "socket:bosch_5pin:current" - ], - "applicableUnits": [ - { - "canonicalDenomination": "A", - "alternativeDenomination": [ - "a", - "amp", - "amperage", - "A" - ], - "human": { - "en": "A", - "nl": "A" - } - } - ], - "eraseInvalidValues": true - }, - { - "appliesToKey": [ - "socket:schuko:output", - "socket:typee:output", - "socket:chademo:output", - "socket:type1_cable:output", - "socket:type1:output", - "socket:type1_combo:output", - "socket:tesla_supercharger:output", - "socket:type2:output", - "socket:type2_combo:output", - "socket:type2_cable:output", - "socket:tesla_supercharger_ccs:output", - "socket:tesla_destination:output", - "socket:tesla_destination:output", - "socket:USB-A:output", - "socket:bosch_3pin:output", - "socket:bosch_5pin:output" - ], - "applicableUnits": [ - { - "canonicalDenomination": "kW", - "alternativeDenomination": [ - "kilowatt" - ], - "human": { - "en": "kilowatt", - "nl": "kilowatt" - } - }, - { - "canonicalDenomination": "mW", - "alternativeDenomination": [ - "megawatt" - ], - "human": { - "en": "megawatt", - "nl": "megawatt" - } - } - ], - "eraseInvalidValues": true - } - ], - "allowMove": { - "enableRelocation": false, - "enableImproveAccuracy": true - }, - "deletion": { - "softDeletionTags": { - "and": [ - "amenity=", - "disused:amenity=charging_station" - ] - }, - "neededChangesets": 10 - } } \ No newline at end of file diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json index f6b335358..105536678 100644 --- a/assets/layers/defibrillator/defibrillator.json +++ b/assets/layers/defibrillator/defibrillator.json @@ -35,13 +35,7 @@ "mappings": [ { "if": "_recently_surveyed=true", - "then": { - "en": "./assets/layers/defibrillator/aed_checked.svg", - "ru": "./assets/layers/defibrillator/aed_checked.svg", - "it": "./assets/layers/defibrillator/aed_checked.svg", - "fr": "./assets/layers/defibrillator/aed_checked.svg", - "de": "./assets/layers/defibrillator/aed_checked.svg" - } + "then": "./assets/layers/defibrillator/aed_checked.svg" } ] }, diff --git a/langs/layers/de.json b/langs/layers/de.json index 73735975b..664c8efa0 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -541,9 +541,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "name": "Fahrradstationen (Reparatur, Pumpe oder beides)", "presets": { "0": { @@ -1157,15 +1154,6 @@ "question": "Wie ist die Email-Adresse des Betreibers?", "render": "Bei Problemen senden Sie eine E-Mail an {email}" }, - "fee/charge": { - "mappings": { - "0": { - "then": "Nutzung kostenlos" - } - }, - "question": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?", - "render": "Die Nutzung dieser Ladestation kostet {charge}" - }, "maxstay": { "mappings": { "0": { @@ -1701,13 +1689,6 @@ } }, "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, "name": "Defibrillatoren", "presets": { "0": { diff --git a/langs/layers/en.json b/langs/layers/en.json index 3c5dae71a..c5dbcbbc4 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -544,9 +544,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "name": "Bike stations (repair, pump or both)", "presets": { "0": { @@ -1009,6 +1006,15 @@ "presets": { "0": { "title": "Charging station" + }, + "1": { + "title": "charging station for e-bikes" + }, + "2": { + "title": "charging station for cars" + }, + "3": { + "title": "charging station" } }, "tagRenderings": { @@ -1248,18 +1254,33 @@ "question": "How much vehicles can be charged here at the same time?", "render": "{capacity} vehicles can be charged here at the same time" }, + "charge": { + "question": "How much does one have to pay to use this charging station?", + "render": "Using this charging station costs {charge}" + }, "email": { "question": "What is the email address of the operator?", "render": "In case of problems, send an email to {email}" }, - "fee/charge": { + "fee": { "mappings": { "0": { "then": "Free to use" + }, + "1": { + "then": "Free to use (without authenticating)" + }, + "2": { + "then": "Free to use, but one has to authenticate" + }, + "3": { + "then": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" + }, + "4": { + "then": "Paid use" } }, - "question": "How much does one have to pay to use this charging station?", - "render": "Using this charging station costs {charge}" + "question": "Does one have to pay to use this charging station?" }, "maxstay": { "mappings": { @@ -1915,13 +1936,6 @@ } }, "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, "name": "Defibrillators", "presets": { "0": { diff --git a/langs/layers/fi.json b/langs/layers/fi.json index a13231cd6..91972fd66 100644 --- a/langs/layers/fi.json +++ b/langs/layers/fi.json @@ -90,9 +90,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "presets": { "0": { "title": "Pyöräpumppu" diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 7892204ad..b4c06d558 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -453,9 +453,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "name": "Station velo (réparation, pompe à vélo)", "presets": { "0": { @@ -749,13 +746,6 @@ } }, "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, "name": "Défibrillateurs", "presets": { "0": { diff --git a/langs/layers/it.json b/langs/layers/it.json index efca2e950..229bb82e0 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -453,9 +453,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "name": "Stazioni bici (riparazione, gonfiaggio o entrambi)", "presets": { "0": { @@ -765,13 +762,6 @@ } }, "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, "name": "Defibrillatori", "presets": { "0": { diff --git a/langs/layers/nan.json b/langs/layers/nan.json deleted file mode 100644 index 0967ef424..000000000 --- a/langs/layers/nan.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/langs/layers/nl.json b/langs/layers/nl.json index fd947098d..317a63c55 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -1052,6 +1052,13 @@ } } }, + "1": { + "options": { + "0": { + "question": "Enkel werkende oplaadpunten" + } + } + }, "2": { "options": { "0": { @@ -1109,6 +1116,20 @@ } }, "name": "Oplaadpunten", + "presets": { + "0": { + "title": "gewone stekker (bedoeld om electrische fietsen op te laden)" + }, + "1": { + "title": "oplaadpunt voor elektrische fietsen" + }, + "2": { + "title": "oplaadstation voor elektrische auto's" + }, + "3": { + "title": "oplaadstation" + } + }, "tagRenderings": { "Auth phone": { "question": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", @@ -1244,6 +1265,18 @@ }, "question": "Welke aansluitingen zijn hier beschikbaar?" }, + "Network": { + "mappings": { + "0": { + "then": "Maakt geen deel uit van een groter netwerk" + }, + "1": { + "then": "Maakt geen deel uit van een groter netwerk" + } + }, + "question": "Is dit oplaadpunt deel van een groter netwerk?", + "render": "Maakt deel uit van het {network}-netwerk" + }, "OH": { "mappings": { "0": { @@ -1272,6 +1305,26 @@ }, "question": "Is dit oplaadpunt operationeel?" }, + "Operator": { + "mappings": { + "0": { + "then": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt" + } + }, + "question": "Wie beheert dit oplaadpunt?", + "render": "Wordt beheerd door {operator}" + }, + "Parking:fee": { + "mappings": { + "0": { + "then": "Geen extra parkeerkost tijdens het opladen" + }, + "1": { + "then": "Tijdens het opladen moet er parkeergeld betaald worden" + } + }, + "question": "Moet men parkeergeld betalen tijdens het opladen?" + }, "Type": { "mappings": { "0": { @@ -1314,14 +1367,33 @@ "question": "Hoeveel voertuigen kunnen hier opgeladen worden?", "render": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden" }, - "fee/charge": { + "charge": { + "question": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?", + "render": "Dit oplaadpunt gebruiken kost {charge}" + }, + "email": { + "question": "Wat is het email-adres van de operator?", + "render": "Bij problemen, email naar {email}" + }, + "fee": { "mappings": { "0": { "then": "Gratis te gebruiken" + }, + "1": { + "then": "Gratis te gebruiken (zonder aan te melden)" + }, + "2": { + "then": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht" + }, + "3": { + "then": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/..." + }, + "4": { + "then": "Betalend" } }, - "question": "Hoeveel kost het gebruik van dit oplaadpunt?", - "render": "Dit oplaadpunt gebruiken kost {charge}" + "question": "Moet men betalen om dit oplaadpunt te gebruiken?" }, "maxstay": { "mappings": { @@ -1344,6 +1416,10 @@ } } }, + "phone": { + "question": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?", + "render": "Bij problemen, bel naar {phone}" + }, "plugs-0": { "question": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?", "render": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" @@ -1409,7 +1485,12 @@ "render": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" }, "ref": { + "question": "Wat is het referentienummer van dit oplaadstation?", "render": "Het referentienummer van dit oplaadpunt is {ref}" + }, + "website": { + "question": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?", + "render": "Meer informatie op {website}" } }, "title": { @@ -3725,6 +3806,20 @@ } }, "tagRenderings": { + "dispensing_dog_bags": { + "mappings": { + "0": { + "then": "Deze vuilnisbak heeft een verdeler voor hondenpoepzakjes" + }, + "1": { + "then": "Deze vuilbak heeft geen verdeler voor hondenpoepzakjes" + }, + "2": { + "then": "Deze vuilnisbak heeft geen verdeler voor hondenpoepzakjes" + } + }, + "question": "Heeft deze vuilnisbak een verdeler voor hondenpoepzakjes?" + }, "waste-basket-waste-types": { "mappings": { "0": { diff --git a/langs/layers/pt.json b/langs/layers/pt.json index 5cdf2f56a..461c8c541 100644 --- a/langs/layers/pt.json +++ b/langs/layers/pt.json @@ -338,9 +338,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "presets": { "0": { "description": "Um aparelho para encher os seus pneus num local fixa no espaço público

Exemplos de bombas de bicicletas

" diff --git a/langs/layers/pt_BR.json b/langs/layers/pt_BR.json index 923a5d76d..1bea7cdf8 100644 --- a/langs/layers/pt_BR.json +++ b/langs/layers/pt_BR.json @@ -338,9 +338,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "name": "Estações de bicicletas (reparo, bomba ou ambos)", "presets": { "0": { diff --git a/langs/layers/ru.json b/langs/layers/ru.json index 11ae28440..33c93089d 100644 --- a/langs/layers/ru.json +++ b/langs/layers/ru.json @@ -400,9 +400,6 @@ } }, "bike_repair_station": { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg" - }, "presets": { "0": { "title": "Велосипедный насос" @@ -715,13 +712,6 @@ } }, "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, "name": "Дефибрилляторы", "presets": { "0": { From fa012b024db90cb84886066a164d30f749246921 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Oct 2021 01:21:56 +0200 Subject: [PATCH 30/30] Remove wrong translation --- langs/layers/ru.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/langs/layers/ru.json b/langs/layers/ru.json index 33c93089d..534da2e01 100644 --- a/langs/layers/ru.json +++ b/langs/layers/ru.json @@ -1429,13 +1429,6 @@ } }, "waste_basket": { - "iconSize": { - "mappings": { - "0": { - "then": "Контейнер для мусора" - } - } - }, "name": "Контейнер для мусора", "presets": { "0": {