Another sanity check, another bunch of fixed layers; add tagrendering-steal possibility, add some styling to TV-theme

This commit is contained in:
Pieter Vander Vennet 2021-11-10 18:42:31 +01:00
parent 10ac6a72e2
commit 746273f594
57 changed files with 602 additions and 940 deletions

View file

@ -1,16 +1,18 @@
import * as known_layers from "../assets/generated/known_layers_and_themes.json" import * as known_layers from "../assets/generated/known_layers_and_themes.json"
import {Utils} from "../Utils"; import {Utils} from "../Utils";
import LayerConfig from "../Models/ThemeConfig/LayerConfig"; import LayerConfig from "../Models/ThemeConfig/LayerConfig";
import BaseUIElement from "../UI/BaseUIElement"; import {TagRenderingConfigJson} from "../Models/ThemeConfig/Json/TagRenderingConfigJson";
import Combine from "../UI/Base/Combine"; import SharedTagRenderings from "./SharedTagRenderings";
import Title from "../UI/Base/Title"; import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson";
import List from "../UI/Base/List"; import WithContextLoader from "../Models/ThemeConfig/WithContextLoader";
import {AllKnownLayouts} from "./AllKnownLayouts";
import {isNullOrUndefined} from "util";
import {Layer} from "leaflet";
export default class AllKnownLayers { export default class AllKnownLayers {
public static inited = (_ => {
WithContextLoader.getKnownTagRenderings = (id => AllKnownLayers.getTagRendering(id))
return true
})()
// Must be below the list... // Must be below the list...
public static sharedLayers: Map<string, LayerConfig> = AllKnownLayers.getSharedLayers(); public static sharedLayers: Map<string, LayerConfig> = AllKnownLayers.getSharedLayers();
@ -64,7 +66,7 @@ export default class AllKnownLayers {
return sharedLayers; return sharedLayers;
} }
private static getSharedLayersJson(): Map<string, any> { private static getSharedLayersJson(): Map<string, LayerConfigJson> {
const sharedLayers = new Map<string, any>(); const sharedLayers = new Map<string, any>();
for (const layer of known_layers.layers) { for (const layer of known_layers.layers) {
sharedLayers.set(layer.id, layer); sharedLayers.set(layer.id, layer);
@ -73,4 +75,41 @@ export default class AllKnownLayers {
return sharedLayers; return sharedLayers;
} }
/**
* Gets the appropriate tagRenderingJSON
* Allows to steal them from other layers.
* This will add the tags of the layer to the configuration though!
* @param renderingId
*/
static getTagRendering(renderingId: string): TagRenderingConfigJson {
if(renderingId.indexOf(".") < 0){
return SharedTagRenderings.SharedTagRenderingJson.get(renderingId)
}
const [layerId, id] = renderingId.split(".")
const layer = AllKnownLayers.getSharedLayersJson().get(layerId)
if(layer === undefined){
if(Utils.runningFromConsole){
// Probably generating the layer overview
return <TagRenderingConfigJson> {
id: "dummy"
}
}
throw "Builtin layer "+layerId+" not found"
}
const renderings = layer?.tagRenderings ?? []
for (const rendering of renderings) {
if(rendering["id"] === id){
const found = <TagRenderingConfigJson> JSON.parse(JSON.stringify(rendering))
if(found.condition === undefined){
found.condition = layer.source.osmTags
}else{
found.condition = {and: [found.condition, layer.source.osmTags]}
}
return found
}
}
throw `The rendering with id ${id} was not found in the builtin layer ${layerId}. Try one of ${Utils.NoNull(renderings.map(r => r["id"])).join(", ")}`
}
} }

View file

@ -43,4 +43,5 @@ export default class SharedTagRenderings {
return dict; return dict;
} }
} }

View file

@ -2,7 +2,7 @@ import {Utils} from "../Utils";
export default class Constants { export default class Constants {
public static vNumber = "0.12.5"; public static vNumber = "0.12.6";
public static ImgurApiKey = '7070e7167f0a25a' public static ImgurApiKey = '7070e7167f0a25a'
public static readonly mapillary_client_token_v3 = 'TXhLaWthQ1d4RUg0czVxaTVoRjFJZzowNDczNjUzNmIyNTQyYzI2' public static readonly mapillary_client_token_v3 = 'TXhLaWthQ1d4RUg0czVxaTVoRjFJZzowNDczNjUzNmIyNTQyYzI2'
public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85" public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"

View file

@ -173,9 +173,46 @@ export default class TagRenderingConfig {
throw `${context}: A question is defined, but no mappings nor freeform (key) are. The question is ${this.question.txt} at ${context}` throw `${context}: A question is defined, but no mappings nor freeform (key) are. The question is ${this.question.txt} at ${context}`
} }
if (this.freeform && this.render === undefined) { if (this.freeform) {
if(this.render === undefined){
throw `${context}: Detected a freeform key without rendering... Key: ${this.freeform.key} in ${context}` throw `${context}: Detected a freeform key without rendering... Key: ${this.freeform.key} in ${context}`
} }
for (const ln in this.render.translations) {
const txt :string = this.render.translations[ln]
if(txt === ""){
throw context+" Rendering for language "+ln+" is empty"
}
if(txt.indexOf("{"+this.freeform.key+"}") >= 0){
continue
}
if(txt.indexOf("{canonical("+this.freeform.key+")") >= 0){
continue
}
if(this.freeform.type === "opening_hours" && txt.indexOf("{opening_hours_table(") >= 0){
continue
}
if(this.freeform.type === "wikidata" && txt.indexOf("{wikipedia("+this.freeform.key) >= 0){
continue
}
if(this.freeform.key === "wikidata" && txt.indexOf("{wikipedia()") >= 0){
continue
}
throw `${context}: The rendering for language ${ln} does not contain the freeform key {${this.freeform.key}}. This is a bug, as this rendering should show exactly this freeform key!\nThe rendering is ${txt} `
}
}
if (this.id === "questions" && this.render !== undefined) {
for (const ln in this.render.translations) {
const txt :string = this.render.translations[ln]
if(txt.indexOf("{questions}") >= 0){
continue
}
throw `${context}: The rendering for language ${ln} does not contain {questions}. This is a bug, as this rendering should include exactly this to trigger those questions to be shown!`
}
}
if (this.render && this.question && this.freeform === undefined) { if (this.render && this.question && this.freeform === undefined) {
throw `${context}: Detected a tagrendering which takes input without freeform key in ${context}; the question is ${this.question.txt}` throw `${context}: Detected a tagrendering which takes input without freeform key in ${context}; the question is ${this.question.txt}`
@ -238,7 +275,7 @@ export default class TagRenderingConfig {
public IsKnown(tags: any): boolean { public IsKnown(tags: any): boolean {
if (this.condition && if (this.condition &&
!this.condition.matchesProperties(tags)) { !this.condition.matchesProperties(tags)) {
// Filtered away by the condition // Filtered away by the condition, so it is kindof known
return true; return true;
} }
if (this.multiAnswer) { if (this.multiAnswer) {

View file

@ -7,6 +7,10 @@ export default class WithContextLoader {
protected readonly _context: string; protected readonly _context: string;
private readonly _json: any; private readonly _json: any;
public static getKnownTagRenderings : ((id: string) => TagRenderingConfigJson)= function(id) {
return SharedTagRenderings.SharedTagRenderingJson.get(id)
}
constructor(json: any, context: string) { constructor(json: any, context: string) {
this._json = json; this._json = json;
this._context = context; this._context = context;
@ -71,7 +75,7 @@ export default class WithContextLoader {
continue; continue;
} }
let sharedJson = SharedTagRenderings.SharedTagRenderingJson.get(renderingId) let sharedJson = WithContextLoader.getKnownTagRenderings(renderingId)
if (sharedJson === undefined) { if (sharedJson === undefined) {
const keys = Array.from(SharedTagRenderings.SharedTagRenderingJson.keys()); const keys = Array.from(SharedTagRenderings.SharedTagRenderingJson.keys());
throw `Predefined tagRendering ${renderingId} not found in ${context}.\n Try one of ${keys.join( throw `Predefined tagRendering ${renderingId} not found in ${context}.\n Try one of ${keys.join(

View file

@ -44,6 +44,11 @@ export default class DefaultGUI {
this.SetupUIElements(); this.SetupUIElements();
this.SetupMap() this.SetupMap()
if(state.layoutToUse.customCss !== undefined && window.location.pathname.indexOf("index") >= 0){
Utils.LoadCustomCss(state.layoutToUse.customCss)
}
} }
public setupClickDialogOnMap(filterViewIsOpened: UIEventSource<boolean>, state: FeaturePipelineState) { public setupClickDialogOnMap(filterViewIsOpened: UIEventSource<boolean>, state: FeaturePipelineState) {

View file

@ -17,6 +17,7 @@ import {Translation} from "../i18n/Translation";
import {Utils} from "../../Utils"; import {Utils} from "../../Utils";
import {SubstitutedTranslation} from "../SubstitutedTranslation"; import {SubstitutedTranslation} from "../SubstitutedTranslation";
import MoveWizard from "./MoveWizard"; import MoveWizard from "./MoveWizard";
import Toggle from "../Input/Toggle";
export default class FeatureInfoBox extends ScrollableFullScreen { export default class FeatureInfoBox extends ScrollableFullScreen {
@ -51,13 +52,13 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
private static GenerateContent(tags: UIEventSource<any>, private static GenerateContent(tags: UIEventSource<any>,
layerConfig: LayerConfig): BaseUIElement { layerConfig: LayerConfig): BaseUIElement {
let questionBoxes: Map<string, BaseUIElement> = new Map<string, BaseUIElement>(); let questionBoxes: Map<string, QuestionBox> = new Map<string, QuestionBox>();
const allGroupNames = Utils.Dedup(layerConfig.tagRenderings.map(tr => tr.group)) const allGroupNames = Utils.Dedup(layerConfig.tagRenderings.map(tr => tr.group))
if (State.state.featureSwitchUserbadge.data) { if (State.state.featureSwitchUserbadge.data) {
for (const groupName of allGroupNames) { for (const groupName of allGroupNames) {
const questions = layerConfig.tagRenderings.filter(tr => tr.group === groupName) const questions = layerConfig.tagRenderings.filter(tr => tr.group === groupName)
const questionBox = new QuestionBox(tags, questions, layerConfig.units); const questionBox = new QuestionBox({tagsSource: tags, tagRenderings: questions, units:layerConfig.units});
questionBoxes.set(groupName, questionBox) questionBoxes.set(groupName, questionBox)
} }
} }
@ -75,7 +76,20 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
const questionBox = questionBoxes.get(tr.group) const questionBox = questionBoxes.get(tr.group)
questionBoxes.delete(tr.group) questionBoxes.delete(tr.group)
if(tr.render !== undefined){
const renderedQuestion = new TagRenderingAnswer(tags, tr, tr.group + " questions", "", {
specialViz: new Map<string, BaseUIElement>([["questions", questionBox]])
})
const possiblyHidden = new Toggle(
renderedQuestion,
undefined,
questionBox.currentQuestion.map(i => i !== undefined)
)
renderingsForGroup.push(possiblyHidden)
}else{
renderingsForGroup.push(questionBox) renderingsForGroup.push(questionBox)
}
} else { } else {
let classes = innerClasses let classes = innerClasses
let isHeader = renderingsForGroup.length === 0 && i > 0 let isHeader = renderingsForGroup.length === 0 && i > 0

View file

@ -1,7 +1,6 @@
import {UIEventSource} from "../../Logic/UIEventSource"; import {UIEventSource} from "../../Logic/UIEventSource";
import TagRenderingQuestion from "./TagRenderingQuestion"; import TagRenderingQuestion from "./TagRenderingQuestion";
import Translations from "../i18n/Translations"; import Translations from "../i18n/Translations";
import State from "../../State";
import Combine from "../Base/Combine"; import Combine from "../Base/Combine";
import BaseUIElement from "../BaseUIElement"; import BaseUIElement from "../BaseUIElement";
import {VariableUiElement} from "../Base/VariableUIElement"; import {VariableUiElement} from "../Base/VariableUIElement";
@ -14,19 +13,19 @@ import Lazy from "../Base/Lazy";
* Generates all the questions, one by one * Generates all the questions, one by one
*/ */
export default class QuestionBox extends VariableUiElement { export default class QuestionBox extends VariableUiElement {
public readonly skippedQuestions: UIEventSource<number[]>;
public readonly currentQuestion: UIEventSource<number | undefined>;
constructor(tagsSource: UIEventSource<any>, tagRenderings: TagRenderingConfig[], units: Unit[]) { constructor(options: { tagsSource: UIEventSource<any>, tagRenderings: TagRenderingConfig[], units: Unit[] }) {
const skippedQuestions: UIEventSource<number[]> = new UIEventSource<number[]>([]) const skippedQuestions: UIEventSource<number[]> = new UIEventSource<number[]>([])
tagRenderings = tagRenderings const tagsSource = options.tagsSource
const units = options.units
const tagRenderings = options.tagRenderings
.filter(tr => tr.question !== undefined) .filter(tr => tr.question !== undefined)
.filter(tr => tr.question !== null); .filter(tr => tr.question !== null)
super(tagsSource.map(tags => {
if (tags === undefined) {
return undefined;
}
const tagRenderingQuestions = tagRenderings const tagRenderingQuestions = tagRenderings
.map((tagRendering, i) => .map((tagRendering, i) =>
@ -46,39 +45,56 @@ export default class QuestionBox extends VariableUiElement {
} }
))); )));
const skippedQuestionsButton = Translations.t.general.skippedQuestions const skippedQuestionsButton = Translations.t.general.skippedQuestions
.onClick(() => { .onClick(() => {
skippedQuestions.setData([]); skippedQuestions.setData([]);
}) })
const currentQuestion: UIEventSource<number | undefined> = tagsSource.map(tags => {
const allQuestions: BaseUIElement[] = [] if (tags === undefined) {
return undefined;
}
for (let i = 0; i < tagRenderingQuestions.length; i++) { for (let i = 0; i < tagRenderingQuestions.length; i++) {
let tagRendering = tagRenderings[i]; let tagRendering = tagRenderings[i];
if (tagRendering.IsKnown(tags)) {
continue;
}
if (skippedQuestions.data.indexOf(i) >= 0) { if (skippedQuestions.data.indexOf(i) >= 0) {
continue; continue;
} }
// this value is NOT known - we show the questions for it if (tagRendering.IsKnown(tags)) {
if (State.state.featureSwitchShowAllQuestions.data || allQuestions.length == 0) { continue;
allQuestions.push(tagRenderingQuestions[i]) }
if (tagRendering.condition &&
!tagRendering.condition.matchesProperties(tags)) {
// Filtered away by the condition, so it is kindof known
continue;
} }
// this value is NOT known - this is the question we have to show!
return i
}
return undefined; // The questions are depleted
}, [skippedQuestions])
super(currentQuestion.map(i => {
const els: BaseUIElement[] = []
if (i !== undefined) {
els.push(tagRenderingQuestions[i])
} }
if (skippedQuestions.data.length > 0) { if (skippedQuestions.data.length > 0) {
allQuestions.push(skippedQuestionsButton) els.push(skippedQuestionsButton)
} }
return new Combine(els).SetClass("block mb-8")
return new Combine(allQuestions).SetClass("block mb-8") })
}, [skippedQuestions])
) )
this.skippedQuestions = skippedQuestions;
this.currentQuestion = currentQuestion
} }
} }

View file

@ -12,7 +12,9 @@ import TagRenderingConfig from "../../Models/ThemeConfig/TagRenderingConfig";
export default class TagRenderingAnswer extends VariableUiElement { export default class TagRenderingAnswer extends VariableUiElement {
constructor(tagsSource: UIEventSource<any>, configuration: TagRenderingConfig, constructor(tagsSource: UIEventSource<any>, configuration: TagRenderingConfig,
contentClasses: string = "", contentStyle: string = "") { contentClasses: string = "", contentStyle: string = "", options?:{
specialViz: Map<string, BaseUIElement>
}) {
if (configuration === undefined) { if (configuration === undefined) {
throw "Trying to generate a tagRenderingAnswer without configuration..." throw "Trying to generate a tagRenderingAnswer without configuration..."
} }
@ -35,7 +37,7 @@ export default class TagRenderingAnswer extends VariableUiElement {
return undefined; return undefined;
} }
const valuesToRender: BaseUIElement[] = trs.map(tr => new SubstitutedTranslation(tr, tagsSource)) const valuesToRender: BaseUIElement[] = trs.map(tr => new SubstitutedTranslation(tr, tagsSource, options?.specialViz))
if (valuesToRender.length === 1) { if (valuesToRender.length === 1) {
return valuesToRender[0]; return valuesToRender[0];
} else if (valuesToRender.length > 1) { } else if (valuesToRender.length > 1) {

View file

@ -224,7 +224,7 @@ Note that these values can be prepare with javascript in the theme by using a [c
link.href = location; link.href = location;
link.media = 'all'; link.media = 'all';
head.appendChild(link); head.appendChild(link);
console.log("Added custom layout ", location) console.log("Added custom css file ", location)
} }
/** /**

View file

@ -244,9 +244,9 @@
}, },
{ {
"render": { "render": {
"en": "Space between barriers (along the length of the road): {spacing} m", "en": "Space between barriers (along the length of the road): {width:separation} m",
"nl": "Ruimte tussen barrières (langs de lengte van de weg): {spacing} m", "nl": "Ruimte tussen barrières (langs de lengte van de weg): {width:separation} m",
"de": "Abstand zwischen den Barrieren (entlang der Straße): {spacing} m" "de": "Abstand zwischen den Barrieren (entlang der Straße): {width:separation} m"
}, },
"question": { "question": {
"en": "How much space is there between the barriers (along the length of the road)?", "en": "How much space is there between the barriers (along the length of the road)?",
@ -271,9 +271,9 @@
}, },
{ {
"render": { "render": {
"en": "Width of opening: {opening} m", "en": "Width of opening: {width:opening} m",
"nl": "Breedte van de opening: {opening} m", "nl": "Breedte van de opening: {width:opening} m",
"de": "Breite der Öffnung: {opening} m" "de": "Breite der Öffnung: {width:opening} m"
}, },
"question": { "question": {
"en": "How wide is the smallest opening next to the barriers?", "en": "How wide is the smallest opening next to the barriers?",

View file

@ -45,27 +45,6 @@
"tagRenderings": [ "tagRenderings": [
"images", "images",
{ {
"render": {
"en": "Backrest",
"de": "Rückenlehne",
"fr": "Dossier",
"nl": "Rugleuning",
"es": "Respaldo",
"hu": "Háttámla",
"id": "Sandaran",
"it": "Schienale",
"ru": "Спинка",
"zh_Hans": "靠背",
"zh_Hant": "靠背",
"nb_NO": "Rygglene",
"fi": "Selkänoja",
"pl": "Oparcie",
"pt_BR": "Encosto",
"pt": "Encosto"
},
"freeform": {
"key": "backrest"
},
"mappings": [ "mappings": [
{ {
"if": "backrest=yes", "if": "backrest=yes",

View file

@ -116,7 +116,21 @@
"id": "bench_at_pt-name" "id": "bench_at_pt-name"
}, },
{ {
"render": { "id": "bench_at_pt-bench_type",
"question": {
"en": "What kind of bench is this?",
"nl": "Wat voor soort bank is dit?"
},
"mappings": [
{
"if": "bench=yes",
"then": {
"en": "There is a normal, sit-down bench here"
}
},
{
"if": "bench=stand_up_bench",
"then": {
"en": "Stand up bench", "en": "Stand up bench",
"de": "Stehbank", "de": "Stehbank",
"fr": "Banc assis debout", "fr": "Banc assis debout",
@ -125,17 +139,15 @@
"zh_Hans": "站立长凳", "zh_Hans": "站立长凳",
"ru": "Встаньте на скамейке", "ru": "Встаньте на скамейке",
"zh_Hant": "站立長椅" "zh_Hant": "站立長椅"
}
}, },
"freeform": { {
"key": "bench", "if": "bench=no",
"addExtraTags": [] "then": {
}, "en": "There is no bench here"
"condition": { }
"and": [ }
"bench=stand_up_bench"
] ]
},
"id": "bench_at_pt-bench"
} }
], ],
"mapRendering": [ "mapRendering": [

View file

@ -81,15 +81,15 @@
"pt": "Esta máquina de venda automática ainda está operacional?" "pt": "Esta máquina de venda automática ainda está operacional?"
}, },
"render": { "render": {
"en": "The operational status is <i>{operational_status</i>", "en": "The operational status is <i>{operational_status}</i>",
"nl": "Deze verkoopsautomaat is <i>{operational_status}</i>", "nl": "Deze verkoopsautomaat is <i>{operational_status}</i>",
"fr": "L'état opérationnel est <i>{operational_status}</i>", "fr": "L'état opérationnel est <i>{operational_status}</i>",
"it": "Lo stato operativo è <i>{operational_status}</i>", "it": "Lo stato operativo è <i>{operational_status}</i>",
"de": "Der Betriebszustand ist <i>{operational_status</i>", "de": "Der Betriebszustand ist <i>{operational_status}</i>",
"ru": "Рабочий статус: <i> {operational_status</i>", "ru": "Рабочий статус: <i> {operational_status}</i>",
"zh_Hant": "運作狀態是 <i>{operational_status</i>", "zh_Hant": "運作狀態是 <i>{operational_status}</i>",
"pt_BR": "O estado operacional é: <i>{operational_status</i>", "pt_BR": "O estado operacional é: <i>{operational_status}</i>",
"pt": "O estado operacional é: <i>{operational_status</i>" "pt": "O estado operacional é: <i>{operational_status}</i>"
}, },
"freeform": { "freeform": {
"key": "operational_status" "key": "operational_status"

View file

@ -72,35 +72,50 @@
"tagRenderings": [ "tagRenderings": [
"images", "images",
{ {
"question": "How much does it cost to use the cleaning service?", "question": {
"render": "Using the cleaning service costs {charge}", "en": "How much does it cost to use the cleaning service?"
},
"render": {
"en": "Using the cleaning service costs {service:bicycle:cleaning:charge}"
},
"condition": "amenity!=bike_wash", "condition": "amenity!=bike_wash",
"freeform": { "freeform": {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"addExtraTags": [ "addExtraTags": [
"service:bicycle:cleaning:fee=yes" "service:bicycle:cleaning:fee=yes"
] ],
"inline": true
}, },
"mappings": [ "mappings": [
{ {
"if": "service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=", "if": "service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=",
"then": "The cleaning service is free to use" "then": {
"en": "The cleaning service is free to use"
}
}, },
{ {
"if": "service:bicycle:cleaning:fee=no&", "if": "service:bicycle:cleaning:fee=no",
"then": "Free to use", "then": {
"en": "Free to use"
},
"hideInAnswer": true "hideInAnswer": true
}, },
{ {
"if": "service:bicycle:cleaning:fee=yes", "if": "service:bicycle:cleaning:fee=yes",
"then": "The cleaning service has a fee" "then": {
"en": "The cleaning service has a fee, but the amount is not known"
}
} }
], ],
"id": "bike_cleaning-service:bicycle:cleaning:charge" "id": "bike_cleaning-service:bicycle:cleaning:charge"
}, },
{ {
"question": "How much does it cost to use the cleaning service?", "question": {
"render": "Using the cleaning service costs {charge}", "en": "How much does it cost to use the cleaning service?"
},
"render": {
"en": "Using the cleaning service costs {charge}"
},
"condition": "amenity=bike_wash", "condition": "amenity=bike_wash",
"freeform": { "freeform": {
"key": "charge", "key": "charge",
@ -111,16 +126,22 @@
"mappings": [ "mappings": [
{ {
"if": "fee=no&charge=", "if": "fee=no&charge=",
"then": "Free to use cleaning service" "then": {
"en": "Free to use cleaning service"
}
}, },
{ {
"if": "fee=no&", "if": "fee=no",
"then": "Free to use", "then": {
"en": "Free to use"
},
"hideInAnswer": true "hideInAnswer": true
}, },
{ {
"if": "fee=yes", "if": "fee=yes",
"then": "The cleaning service has a fee" "then": {
"en": "The cleaning service has a fee"
}
} }
], ],
"id": "bike_cleaning-charge" "id": "bike_cleaning-charge"

View file

@ -231,8 +231,8 @@
"de": "Dieses Fahrradgeschäft heißt {name}", "de": "Dieses Fahrradgeschäft heißt {name}",
"it": "Questo negozio di biciclette è chiamato {name}", "it": "Questo negozio di biciclette è chiamato {name}",
"ru": "Этот магазин велосипедов называется {name}", "ru": "Этот магазин велосипедов называется {name}",
"pt_BR": "Esta loja de bicicletas se chama {nome}", "pt_BR": "Esta loja de bicicletas se chama {name}",
"pt": "Esta loja de bicicletas se chama {nome}" "pt": "Esta loja de bicicletas se chama {name}"
}, },
"freeform": { "freeform": {
"key": "name" "key": "name"
@ -664,32 +664,7 @@
} }
] ]
}, },
{ "bike_cleaning.bike_cleaning-service:bicycle:cleaning:charge"
"question": "How much does it cost to use the cleaning service?",
"render": "Using the cleaning service costs {charge}",
"freeform": {
"key": "service:bicycle:cleaning:charge",
"addExtraTags": [
"service:bicycle:cleaning:fee=yes"
]
},
"mappings": [
{
"if": "service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=",
"then": "The cleaning service is free to use"
},
{
"if": "service:bicycle:cleaning:fee=no&",
"then": "Free to use",
"hideInAnswer": true
},
{
"if": "service:bicycle:cleaning:fee=yes",
"then": "The cleaning service has a fee"
}
],
"id": "bike_cleaning-service:bicycle:cleaning:charge"
}
], ],
"presets": [ "presets": [
{ {

View file

@ -23,8 +23,7 @@
}, },
"description": { "description": {
"en": "A charging station", "en": "A charging station",
"nl": "Oplaadpunten", "nl": "Oplaadpunten"
"de": "Eine Ladestation"
}, },
"tagRenderings": [ "tagRenderings": [
"images", "images",
@ -33,8 +32,7 @@
"#": "Allowed vehicle types", "#": "Allowed vehicle types",
"question": { "question": {
"en": "Which vehicles are allowed to charge here?", "en": "Which vehicles are allowed to charge here?",
"nl": "Welke voertuigen kunnen hier opgeladen worden?", "nl": "Welke voertuigen kunnen hier opgeladen worden?"
"de": "Welche Fahrzeuge dürfen hier geladen werden?"
}, },
"multiAnswer": true, "multiAnswer": true,
"mappings": [ "mappings": [
@ -43,8 +41,7 @@
"ifnot": "bicycle=no", "ifnot": "bicycle=no",
"then": { "then": {
"en": "<b>Bcycles</b> can be charged here", "en": "<b>Bcycles</b> can be charged here",
"nl": "<b>Fietsen</b> kunnen hier opgeladen worden", "nl": "<b>Fietsen</b> kunnen hier opgeladen worden"
"de": "<b>Fahrräder</b> können hier geladen werden"
} }
}, },
{ {
@ -52,8 +49,7 @@
"ifnot": "motorcar=no", "ifnot": "motorcar=no",
"then": { "then": {
"en": "<b>Cars</b> can be charged here", "en": "<b>Cars</b> can be charged here",
"nl": "<b>Elektrische auto's</b> kunnen hier opgeladen worden", "nl": "<b>Elektrische auto's</b> kunnen hier opgeladen worden"
"de": "<b>Autos</b> können hier geladen werden"
} }
}, },
{ {
@ -61,8 +57,7 @@
"ifnot": "scooter=no", "ifnot": "scooter=no",
"then": { "then": {
"en": "<b>Scooters</b> can be charged here", "en": "<b>Scooters</b> can be charged here",
"nl": "<b>Electrische scooters</b> (snorfiets of bromfiets) kunnen hier opgeladen worden", "nl": "<b>Electrische scooters</b> (snorfiets of bromfiets) kunnen hier opgeladen worden"
"de": "<b> Roller</b> können hier geladen werden"
} }
}, },
{ {
@ -70,8 +65,7 @@
"ifnot": "hgv=no", "ifnot": "hgv=no",
"then": { "then": {
"en": "<b>Heavy good vehicles</b> (such as trucks) can be charged here", "en": "<b>Heavy good vehicles</b> (such as trucks) can be charged here",
"nl": "<b>Vrachtwagens</b> kunnen hier opgeladen worden", "nl": "<b>Vrachtwagens</b> kunnen hier opgeladen worden"
"de": "<b>Lastkraftwagen</b> (LKW) können hier geladen werden"
} }
}, },
{ {
@ -79,8 +73,7 @@
"ifnot": "bus=no", "ifnot": "bus=no",
"then": { "then": {
"en": "<b>Buses</b> can be charged here", "en": "<b>Buses</b> can be charged here",
"nl": "<b>Bussen</b> kunnen hier opgeladen worden", "nl": "<b>Bussen</b> kunnen hier opgeladen worden"
"de": "<b>Busse</b> können hier geladen werden"
} }
} }
] ]
@ -89,13 +82,11 @@
"id": "access", "id": "access",
"question": { "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?", "nl": "Wie mag er dit oplaadpunt gebruiken?"
"de": "Wer darf diese Ladestation benutzen?"
}, },
"render": { "render": {
"en": "Access is {access}", "en": "Access is {access}",
"nl": "Toegang voor {access}", "nl": "Toegang voor {access}"
"de": "Zugang ist {access}"
}, },
"freeform": { "freeform": {
"key": "access", "key": "access",
@ -144,13 +135,11 @@
"id": "capacity", "id": "capacity",
"render": { "render": {
"en": "{capacity} vehicles can be charged here at the same time", "en": "{capacity} vehicles can be charged here at the same time",
"nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden", "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden"
"de": "{capacity} Fahrzeuge können hier gleichzeitig geladen werden"
}, },
"question": { "question": {
"en": "How much vehicles can be charged here at the same time?", "en": "How much vehicles can be charged here at the same time?",
"nl": "Hoeveel voertuigen kunnen hier opgeladen worden?", "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?"
"de": "Wie viele Fahrzeuge können hier gleichzeitig geladen werden?"
}, },
"freeform": { "freeform": {
"key": "capacity", "key": "capacity",
@ -161,8 +150,7 @@
"id": "Available_charging_stations (generated)", "id": "Available_charging_stations (generated)",
"question": { "question": {
"en": "Which charging connections are available here?", "en": "Which charging connections are available here?",
"nl": "Welke aansluitingen zijn hier beschikbaar?", "nl": "Welke aansluitingen zijn hier beschikbaar?"
"de": "Welche Ladestationen gibt es hier?"
}, },
"multiAnswer": true, "multiAnswer": true,
"mappings": [ "mappings": [
@ -263,8 +251,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Chademo_type4.svg'/> <span><b>Chademo</b></span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Chademo_type4.svg'/> <span><b>Chademo</b></span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Chademo_type4.svg'/> <span><b>Chademo</b></span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Chademo_type4.svg'/> <span><b>Chademo</b></span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Chademo_type4.svg'/> <span><b>Chademo</b></span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -273,8 +260,7 @@
"ifnot": "socket:type1_cable=", "ifnot": "socket:type1_cable=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 with cable</b> (J1772)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 with cable</b> (J1772)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 met kabel</b> (J1772)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 met kabel</b> (J1772)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 mit Kabel</b> (J1772)</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -312,8 +298,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 with cable</b> (J1772)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 with cable</b> (J1772)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 met kabel</b> (J1772)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 met kabel</b> (J1772)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 mit Kabel</b> (J1772)</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -322,8 +307,7 @@
"ifnot": "socket:type1=", "ifnot": "socket:type1=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>without</i> cable</b> (J1772)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>without</i> cable</b> (J1772)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>zonder</i> kabel</b> (J1772)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>zonder</i> kabel</b> (J1772)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 <i>ohne</i> Kabel</b> (J1772)</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -361,8 +345,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>without</i> cable</b> (J1772)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>without</i> cable</b> (J1772)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>zonder</i> kabel</b> (J1772)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Type 1 <i>zonder</i> kabel</b> (J1772)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 <i>ohne</i> Kabel</b> (J1772)</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -371,8 +354,7 @@
"ifnot": "socket:type1_combo=", "ifnot": "socket:type1_combo=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (aka Type 1 Combo)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (aka Type 1 Combo)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (ook gekend als Type 1 Combo)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (ook gekend als Type 1 Combo)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Typ 1 CCS</b> (auch bekannt als Typ 1 Combo)</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -410,8 +392,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (aka Type 1 Combo)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (aka Type 1 Combo)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (ook gekend als Type 1 Combo)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Type 1 CCS</b> (ook gekend als Type 1 Combo)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Typ 1 CCS</b> (auch bekannt als Typ 1 Combo)</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -420,8 +401,7 @@
"ifnot": "socket:tesla_supercharger=", "ifnot": "socket:tesla_supercharger=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -459,8 +439,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -469,8 +448,7 @@
"ifnot": "socket:type2=", "ifnot": "socket:type2=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Typ 2</b> (Mennekes)</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -508,8 +486,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Type 2</b> (mennekes)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Typ 2</b> (Mennekes)</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -518,8 +495,7 @@
"ifnot": "socket:type2_combo=", "ifnot": "socket:type2_combo=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Typ 2 CCS</b> (Mennekes)</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -557,8 +533,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Type 2 CCS</b> (mennekes)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Typ 2 CCS</b> (Mennekes)</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -567,8 +542,7 @@
"ifnot": "socket:type2_cable=", "ifnot": "socket:type2_cable=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 with cable</b> (mennekes)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 with cable</b> (mennekes)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 met kabel</b> (J1772)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 met kabel</b> (J1772)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Typ 2 mit Kabel</b> (Mennekes)</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -606,8 +580,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 with cable</b> (mennekes)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 with cable</b> (mennekes)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 met kabel</b> (J1772)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Type 2 met kabel</b> (J1772)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Typ 2 mit Kabel</b> (Mennekes)</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -616,8 +589,7 @@
"ifnot": "socket:tesla_supercharger_ccs=", "ifnot": "socket:tesla_supercharger_ccs=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (a branded type2_css)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (a branded type2_css)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (een type2 CCS met Tesla-logo)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (een type2 CCS met Tesla-logo)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (Typ 2 CSS)</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -655,8 +627,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (a branded type2_css)</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (a branded type2_css)</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (een type2 CCS met Tesla-logo)</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (een type2 CCS met Tesla-logo)</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (Typ 2 CSS)</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -769,8 +740,7 @@
"ifnot": "socket:USB-A=", "ifnot": "socket:USB-A=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> to charge phones and small electronics</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> to charge phones and small electronics</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> om GSMs en kleine electronica op te laden</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> om GSMs en kleine electronica op te laden</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> zum Laden von Smartphones oder Elektrokleingeräten</span></div>"
} }
}, },
{ {
@ -782,8 +752,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> to charge phones and small electronics</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> to charge phones and small electronics</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> om GSMs en kleine electronica op te laden</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> om GSMs en kleine electronica op te laden</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> zum Laden von Smartphones und Elektrokleingeräten</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -835,8 +804,7 @@
"ifnot": "socket:bosch_5pin=", "ifnot": "socket:bosch_5pin=",
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect with 5 pins</b> and cable</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect with 5 pins</b> and cable</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect met 5 pinnen</b> aan een kabel</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect met 5 pinnen</b> aan een kabel</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect mit 5 Pins</b> und Kabel</span></div>"
}, },
"hideInAnswer": { "hideInAnswer": {
"or": [ "or": [
@ -870,8 +838,7 @@
}, },
"then": { "then": {
"en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect with 5 pins</b> and cable</span></div>", "en": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect with 5 pins</b> and cable</span></div>",
"nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect met 5 pinnen</b> aan een kabel</span></div>", "nl": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect met 5 pinnen</b> aan een kabel</span></div>"
"de": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect mit 5 Pins</b> und Kabel</span></div>"
}, },
"hideInAnswer": true "hideInAnswer": true
} }
@ -2893,21 +2860,14 @@
}, },
"question": { "question": {
"en": "When is this charging station opened?", "en": "When is this charging station opened?",
"nl": "Wanneer is dit oplaadpunt beschikbaar??", "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": [ "mappings": [
{ {
"if": "opening_hours=24/7", "if": "opening_hours=24/7",
"then": { "then": {
"en": "24/7 opened (including holidays)", "en": "24/7 opened (including holidays)",
"nl": "24/7 open - ook tijdens vakanties", "nl": "24/7 open - ook tijdens vakanties"
"de": "durchgehend geöffnet (auch an Feiertagen)"
} }
} }
] ]
@ -3016,8 +2976,7 @@
"ifnot": "payment:app=no", "ifnot": "payment:app=no",
"then": { "then": {
"en": "Payment is done using a dedicated app", "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"
} }
}, },
{ {
@ -3025,8 +2984,7 @@
"ifnot": "payment:membership_card=no", "ifnot": "payment:membership_card=no",
"then": { "then": {
"en": "Payment is done using a membership card", "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"
} }
} }
] ]
@ -3037,8 +2995,7 @@
"#": "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", "#": "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": { "question": {
"en": "What kind of authentication is available at the charging station?", "en": "What kind of authentication is available at the charging station?",
"nl": "Hoe kan men zich aanmelden aan dit oplaadstation?", "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?"
"de": "Welche Authentifizierung ist an der Ladestation möglich?"
}, },
"multiAnswer": true, "multiAnswer": true,
"mappings": [ "mappings": [
@ -3047,8 +3004,7 @@
"ifnot": "authentication:membership_card=no", "ifnot": "authentication:membership_card=no",
"then": { "then": {
"en": "Authentication by a membership card", "en": "Authentication by a membership card",
"nl": "Aanmelden met een lidkaart is mogelijk", "nl": "Aanmelden met een lidkaart is mogelijk"
"de": "Authentifizierung durch eine Mitgliedskarte"
} }
}, },
{ {
@ -3056,8 +3012,7 @@
"ifnot": "authentication:app=no", "ifnot": "authentication:app=no",
"then": { "then": {
"en": "Authentication by an app", "en": "Authentication by an app",
"nl": "Aanmelden via een applicatie is mogelijk", "nl": "Aanmelden via een applicatie is mogelijk"
"de": "Authentifizierung durch eine App"
} }
}, },
{ {
@ -3065,8 +3020,7 @@
"ifnot": "authentication:phone_call=no", "ifnot": "authentication:phone_call=no",
"then": { "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", "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk"
"de": "Authentifizierung per Anruf ist möglich"
} }
}, },
{ {
@ -3074,8 +3028,7 @@
"ifnot": "authentication:short_message=no", "ifnot": "authentication:short_message=no",
"then": { "then": {
"en": "Authentication via SMS is available", "en": "Authentication via SMS is available",
"nl": "Aanmelden via SMS is mogelijk", "nl": "Aanmelden via SMS is mogelijk"
"de": "Authentifizierung per Anruf ist möglich"
} }
}, },
{ {
@ -3083,8 +3036,7 @@
"ifnot": "authentication:nfc=no", "ifnot": "authentication:nfc=no",
"then": { "then": {
"en": "Authentication via NFC is available", "en": "Authentication via NFC is available",
"nl": "Aanmelden via NFC is mogelijk", "nl": "Aanmelden via NFC is mogelijk"
"de": "Authentifizierung über NFC ist möglich"
} }
}, },
{ {
@ -3092,8 +3044,7 @@
"ifnot": "authentication:money_card=no", "ifnot": "authentication:money_card=no",
"then": { "then": {
"en": "Authentication via Money Card is available", "en": "Authentication via Money Card is available",
"nl": "Aanmelden met Money Card is mogelijk", "nl": "Aanmelden met Money Card is mogelijk"
"de": "Authentifizierung über Geldkarte ist möglich"
} }
}, },
{ {
@ -3101,8 +3052,7 @@
"ifnot": "authentication:debit_card=no", "ifnot": "authentication:debit_card=no",
"then": { "then": {
"en": "Authentication via debit card is available", "en": "Authentication via debit card is available",
"nl": "Aanmelden met een betaalkaart is mogelijk", "nl": "Aanmelden met een betaalkaart is mogelijk"
"de": "Authentifizierung per Debitkarte ist möglich"
} }
}, },
{ {
@ -3110,8 +3060,7 @@
"ifnot": "authentication:none=no", "ifnot": "authentication:none=no",
"then": { "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", "nl": "Hier opladen is (ook) mogelijk zonder aan te melden"
"de": "Das Aufladen ist hier (auch) ohne Authentifizierung möglich"
} }
} }
], ],
@ -3126,13 +3075,11 @@
"id": "Auth phone", "id": "Auth phone",
"render": { "render": {
"en": "Authenticate by calling or SMS'ing to <a href='tel:{authentication:phone_call:number}'>{authentication:phone_call:number}</a>", "en": "Authenticate by calling or SMS'ing to <a href='tel:{authentication:phone_call:number}'>{authentication:phone_call:number}</a>",
"nl": "Aanmelden door te bellen of te SMS'en naar <a href='tel:{authentication:phone_call:number}'>{authentication:phone_call:number}</a>", "nl": "Aanmelden door te bellen of te SMS'en naar <a href='tel:{authentication:phone_call:number}'>{authentication:phone_call:number}</a>"
"de": "Authentifizierung durch Anruf oder SMS an <a href='tel:{authentication:phone_call:number}'>{authentication:phone_call:number}</a>"
}, },
"question": { "question": {
"en": "What's the phone number for authentication call or SMS?", "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?", "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": { "freeform": {
"key": "authentication:phone_call:number", "key": "authentication:phone_call:number",
@ -3149,24 +3096,21 @@
"id": "maxstay", "id": "maxstay",
"question": { "question": {
"en": "What is the maximum amount of time one is allowed to stay here?", "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": { "freeform": {
"key": "maxstay" "key": "maxstay"
}, },
"render": { "render": {
"en": "One can stay at most <b>{canonical(maxstay)}</b>", "en": "One can stay at most <b>{canonical(maxstay)}</b>",
"nl": "De maximale parkeertijd hier is <b>{canonical(maxstay)}</b>", "nl": "De maximale parkeertijd hier is <b>{canonical(maxstay)}</b>"
"de": "Die maximale Parkzeit beträgt <b>{canonical(maxstay)}</b>"
}, },
"mappings": [ "mappings": [
{ {
"if": "maxstay=unlimited", "if": "maxstay=unlimited",
"then": { "then": {
"en": "No timelimit on leaving your vehicle here", "en": "No timelimit on leaving your vehicle here",
"nl": "Geen maximum parkeertijd", "nl": "Geen maximum parkeertijd"
"de": "Keine Höchstparkdauer"
} }
} }
], ],
@ -3183,22 +3127,11 @@
"id": "Network", "id": "Network",
"render": { "render": {
"en": "Part of the network <b>{network}</b>", "en": "Part of the network <b>{network}</b>",
"nl": "Maakt deel uit van het <b>{network}</b>-netwerk", "nl": "Maakt deel uit van het <b>{network}</b>-netwerk"
"de": "Teil des Netzwerks <b>{network}</b>",
"it": "{network}",
"ja": "{network}",
"nb_NO": "{network}",
"ru": "{network}",
"zh_Hant": "{network}"
}, },
"question": { "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?", "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": { "freeform": {
"key": "network" "key": "network"
@ -3208,16 +3141,14 @@
"if": "no:network=yes", "if": "no:network=yes",
"then": { "then": {
"en": "Not part of a bigger network", "en": "Not part of a bigger network",
"nl": "Maakt geen deel uit van een groter netwerk", "nl": "Maakt geen deel uit van een groter netwerk"
"de": "Nicht Teil eines größeren Netzwerks"
} }
}, },
{ {
"if": "network=none", "if": "network=none",
"then": { "then": {
"en": "Not part of a bigger network", "en": "Not part of a bigger network",
"nl": "Maakt geen deel uit van een groter netwerk", "nl": "Maakt geen deel uit van een groter netwerk"
"de": "Nicht Teil eines größeren Netzwerks"
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -3239,13 +3170,11 @@
"id": "Operator", "id": "Operator",
"question": { "question": {
"en": "Who is the operator of this charging station?", "en": "Who is the operator of this charging station?",
"nl": "Wie beheert dit oplaadpunt?", "nl": "Wie beheert dit oplaadpunt?"
"de": "Wer ist der Betreiber dieser Ladestation?"
}, },
"render": { "render": {
"en": "This charging station is operated by {operator}", "en": "This charging station is operated by {operator}",
"nl": "Wordt beheerd door {operator}", "nl": "Wordt beheerd door {operator}"
"de": "Diese Ladestation wird betrieben von {operator}"
}, },
"freeform": { "freeform": {
"key": "operator" "key": "operator"
@ -3259,8 +3188,7 @@
}, },
"then": { "then": {
"en": "Actually, {operator} is the network", "en": "Actually, {operator} is the network",
"nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt", "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt"
"de": "Eigentlich ist {operator} das Netzwerk"
}, },
"addExtraTags": [ "addExtraTags": [
"operator=" "operator="
@ -3273,13 +3201,11 @@
"id": "phone", "id": "phone",
"question": { "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?", "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": { "render": {
"en": "In case of problems, call <a href='tel:{phone}'>{phone}</a>", "en": "In case of problems, call <a href='tel:{phone}'>{phone}</a>",
"nl": "Bij problemen, bel naar <a href='tel:{phone}'>{phone}</a>", "nl": "Bij problemen, bel naar <a href='tel:{phone}'>{phone}</a>"
"de": "Bei Problemen, anrufen unter <a href='tel:{phone}'>{phone}</a>"
}, },
"freeform": { "freeform": {
"key": "phone", "key": "phone",
@ -3290,13 +3216,11 @@
"id": "email", "id": "email",
"question": { "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?", "nl": "Wat is het email-adres van de operator?"
"de": "Wie ist die Email-Adresse des Betreibers?"
}, },
"render": { "render": {
"en": "In case of problems, send an email to <a href='mailto:{email}'>{email}</a>", "en": "In case of problems, send an email to <a href='mailto:{email}'>{email}</a>",
"nl": "Bij problemen, email naar <a href='mailto:{email}'>{email}</a>", "nl": "Bij problemen, email naar <a href='mailto:{email}'>{email}</a>"
"de": "Bei Problemen senden Sie eine E-Mail an <a href='mailto:{email}'>{email}</a>"
}, },
"freeform": { "freeform": {
"key": "email", "key": "email",
@ -3307,13 +3231,11 @@
"id": "website", "id": "website",
"question": { "question": {
"en": "What is the website where one can find more information about this charging station?", "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?", "nl": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?"
"de": "Wie ist die Webseite des Betreibers?"
}, },
"render": { "render": {
"en": "More info on <a href='{website}'>{website}</a>", "en": "More info on <a href='{website}'>{website}</a>",
"nl": "Meer informatie op <a href='{website}'>{website}</a>", "nl": "Meer informatie op <a href='{website}'>{website}</a>"
"de": "Weitere Informationen auf <a href='{website}'>{website}</a>"
}, },
"freeform": { "freeform": {
"key": "website", "key": "website",
@ -3325,13 +3247,11 @@
"id": "ref", "id": "ref",
"question": { "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?", "nl": "Wat is het referentienummer van dit oplaadstation?"
"de": "Wie lautet die Kennung dieser Ladestation?"
}, },
"render": { "render": {
"en": "Reference number is <b>{ref}</b>", "en": "Reference number is <b>{ref}</b>",
"nl": "Het referentienummer van dit oplaadpunt is <b>{ref}</b>", "nl": "Het referentienummer van dit oplaadpunt is <b>{ref}</b>"
"de": "Die Kennziffer ist <b>{ref}</b>"
}, },
"freeform": { "freeform": {
"key": "ref" "key": "ref"
@ -3343,8 +3263,7 @@
"id": "Operational status", "id": "Operational status",
"question": { "question": {
"en": "Is this charging point in use?", "en": "Is this charging point in use?",
"nl": "Is dit oplaadpunt operationeel?", "nl": "Is dit oplaadpunt operationeel?"
"de": "Ist dieser Ladepunkt in Betrieb?"
}, },
"mappings": [ "mappings": [
{ {
@ -3359,8 +3278,7 @@
}, },
"then": { "then": {
"en": "This charging station works", "en": "This charging station works",
"nl": "Dit oplaadpunt werkt", "nl": "Dit oplaadpunt werkt"
"de": "Diese Ladestation funktioniert"
} }
}, },
{ {
@ -3375,8 +3293,7 @@
}, },
"then": { "then": {
"en": "This charging station is broken", "en": "This charging station is broken",
"nl": "Dit oplaadpunt is kapot", "nl": "Dit oplaadpunt is kapot"
"de": "Diese Ladestation ist kaputt"
} }
}, },
{ {
@ -3391,8 +3308,7 @@
}, },
"then": { "then": {
"en": "A charging station is planned here", "en": "A charging station is planned here",
"nl": "Hier zal binnenkort een oplaadpunt gebouwd worden", "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden"
"de": "Hier ist eine Ladestation geplant"
} }
}, },
{ {
@ -3407,8 +3323,7 @@
}, },
"then": { "then": {
"en": "A charging station is constructed here", "en": "A charging station is constructed here",
"nl": "Hier wordt op dit moment een oplaadpunt gebouwd", "nl": "Hier wordt op dit moment een oplaadpunt gebouwd"
"de": "Hier wird eine Ladestation gebaut"
} }
}, },
{ {
@ -3423,8 +3338,7 @@
}, },
"then": { "then": {
"en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", "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", "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"
} }
} }
] ]
@ -3433,24 +3347,21 @@
"id": "Parking:fee", "id": "Parking:fee",
"question": { "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?", "nl": "Moet men parkeergeld betalen tijdens het opladen?"
"de": "Muss man beim Laden eine Parkgebühr bezahlen?"
}, },
"mappings": [ "mappings": [
{ {
"if": "parking:fee=no", "if": "parking:fee=no",
"then": { "then": {
"en": "No additional parking cost while charging", "en": "No additional parking cost while charging",
"nl": "Geen extra parkeerkost tijdens het opladen", "nl": "Geen extra parkeerkost tijdens het opladen"
"de": "Keine zusätzlichen Parkgebühren beim Laden"
} }
}, },
{ {
"if": "parking:fee=yes", "if": "parking:fee=yes",
"then": { "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", "nl": "Tijdens het opladen moet er parkeergeld betaald worden"
"de": "Beim Laden ist eine zusätzliche Parkgebühr zu entrichten"
} }
} }
], ],
@ -3469,7 +3380,11 @@
}, },
{ {
"id": "questions", "id": "questions",
"group": "technical" "group": "technical",
"render": {
"en": "<h3>Technical questions</h3>The questions below are very technical. Feel free to ignore them<br/>{questions}",
"nl": "<h3>Technische vragen</h3>De vragen hieronder zijn erg technisch - sla deze over indien je hier geen tijd voor hebt<br/>{questions}"
}
} }
], ],
"mapRendering": [ "mapRendering": [
@ -3545,9 +3460,7 @@
], ],
"title": { "title": {
"en": "charging station with a normal european wall plug <img src='./assets/layers/charging_station/TypeE.svg' style='width: 2rem; height: 2rem; float: left; background: white; border-radius: 1rem; margin-right: 0.5rem'/> (meant to charge electrical bikes)", "en": "charging station with a normal european wall plug <img src='./assets/layers/charging_station/TypeE.svg' style='width: 2rem; height: 2rem; float: left; background: white; border-radius: 1rem; margin-right: 0.5rem'/> (meant to charge electrical bikes)",
"nl": "laadpunt met gewone stekker(s) <img src='./assets/layers/charging_station/TypeE.svg' style='width: 2rem; height: 2rem; float: left; background: white; border-radius: 1rem; margin-right: 0.5rem'/> (bedoeld om electrische fietsen op te laden)", "nl": "laadpunt met gewone stekker(s) <img src='./assets/layers/charging_station/TypeE.svg' style='width: 2rem; height: 2rem; float: left; background: white; border-radius: 1rem; margin-right: 0.5rem'/> (bedoeld om electrische fietsen op te laden)"
"de": "Ladestation",
"ru": "Зарядная станция"
}, },
"preciseInput": { "preciseInput": {
"preferredBackground": "map" "preferredBackground": "map"
@ -3601,23 +3514,20 @@
{ {
"question": { "question": {
"en": "All vehicle types", "en": "All vehicle types",
"nl": "Alle voertuigen", "nl": "Alle voertuigen"
"de": "Alle Fahrzeugtypen"
} }
}, },
{ {
"question": { "question": {
"en": "Charging station for bicycles", "en": "Charging station for bicycles",
"nl": "Oplaadpunten voor fietsen", "nl": "Oplaadpunten voor fietsen"
"de": "Ladestation für Fahrräder"
}, },
"osmTags": "bicycle=yes" "osmTags": "bicycle=yes"
}, },
{ {
"question": { "question": {
"en": "Charging station for cars", "en": "Charging station for cars",
"nl": "Oplaadpunten voor auto's", "nl": "Oplaadpunten voor auto's"
"de": "Ladestation für Autos"
}, },
"osmTags": { "osmTags": {
"or": [ "or": [
@ -3634,8 +3544,7 @@
{ {
"question": { "question": {
"en": "Only working charging stations", "en": "Only working charging stations",
"nl": "Enkel werkende oplaadpunten", "nl": "Enkel werkende oplaadpunten"
"de": "Nur funktionierende Ladestationen"
}, },
"osmTags": { "osmTags": {
"and": [ "and": [
@ -3652,8 +3561,7 @@
{ {
"question": { "question": {
"en": "All connectors", "en": "All connectors",
"nl": "Alle types", "nl": "Alle types"
"de": "Alle Anschlüsse"
} }
}, },
{ {
@ -3673,8 +3581,7 @@
{ {
"question": { "question": {
"en": "Has a <div style='display: inline-block'><b><b>Chademo</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Chademo_type4.svg'/></div> connector", "en": "Has a <div style='display: inline-block'><b><b>Chademo</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Chademo_type4.svg'/></div> connector",
"nl": "Heeft een <div style='display: inline-block'><b><b>Chademo</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Chademo_type4.svg'/></div>", "nl": "Heeft een <div style='display: inline-block'><b><b>Chademo</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Chademo_type4.svg'/></div>"
"de": "Hat einen <div style='display: inline-block'><b><b>Chademo</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Chademo_type4.svg'/></div> Stecker"
}, },
"osmTags": "socket:chademo~*" "osmTags": "socket:chademo~*"
}, },
@ -3702,8 +3609,7 @@
{ {
"question": { "question": {
"en": "Has a <div style='display: inline-block'><b><b>Tesla Supercharger</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> connector", "en": "Has a <div style='display: inline-block'><b><b>Tesla Supercharger</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> connector",
"nl": "Heeft een <div style='display: inline-block'><b><b>Tesla Supercharger</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>", "nl": "Heeft een <div style='display: inline-block'><b><b>Tesla Supercharger</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>"
"de": "Hat einen <div style='display: inline-block'><b><b>Tesla Supercharger</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> Stecker"
}, },
"osmTags": "socket:tesla_supercharger~*" "osmTags": "socket:tesla_supercharger~*"
}, },
@ -3791,15 +3697,11 @@
], ],
"human": { "human": {
"en": " minutes", "en": " minutes",
"nl": " minuten", "nl": " minuten"
"de": " Minuten",
"ru": " минут"
}, },
"humanSingular": { "humanSingular": {
"en": " minute", "en": " minute",
"nl": " minuut", "nl": " minuut"
"de": " Minute",
"ru": " минута"
} }
}, },
{ {
@ -3815,15 +3717,11 @@
], ],
"human": { "human": {
"en": " hours", "en": " hours",
"nl": " uren", "nl": " uren"
"de": " Stunden",
"ru": " часов"
}, },
"humanSingular": { "humanSingular": {
"en": " hour", "en": " hour",
"nl": " uur", "nl": " uur"
"de": " Stunde",
"ru": " час"
} }
}, },
{ {
@ -3836,15 +3734,11 @@
], ],
"human": { "human": {
"en": " days", "en": " days",
"nl": " day", "nl": " day"
"de": " Tage",
"ru": " дней"
}, },
"humanSingular": { "humanSingular": {
"en": " day", "en": " day",
"nl": " dag", "nl": " dag"
"de": " Tag",
"ru": " день"
} }
} }
] ]
@ -3880,9 +3774,7 @@
], ],
"human": { "human": {
"en": "Volts", "en": "Volts",
"nl": "volt", "nl": "volt"
"de": "Volt",
"ru": "Вольт"
} }
} }
], ],
@ -3951,9 +3843,7 @@
], ],
"human": { "human": {
"en": "kilowatt", "en": "kilowatt",
"nl": "kilowatt", "nl": "kilowatt"
"de": "Kilowatt",
"ru": "киловатт"
} }
}, },
{ {
@ -3963,9 +3853,7 @@
], ],
"human": { "human": {
"en": "megawatt", "en": "megawatt",
"nl": "megawatt", "nl": "megawatt"
"de": "Megawatt",
"ru": "мегаватт"
} }
} }
], ],

View file

@ -678,7 +678,11 @@
}, },
{ {
"id": "questions", "id": "questions",
"group": "technical" "group": "technical",
"render": {
"en": "<h3>Technical questions</h3>The questions below are very technical. Feel free to ignore them<br/>{questions}",
"nl": "<h3>Technische vragen</h3>De vragen hieronder zijn erg technisch - sla deze over indien je hier geen tijd voor hebt<br/>{questions}"
}
} }
], ],
"mapRendering": [ "mapRendering": [

View file

@ -182,13 +182,6 @@
"id": "defibrillator-access" "id": "defibrillator-access"
}, },
{ {
"render": {
"en": "There is no info about the type of device",
"nl": "Er is geen info over het soort toestel",
"fr": "Il n'y a pas d'information sur le type de dispositif",
"it": "Non vi sono informazioni riguardanti il tipo di questo dispositivo",
"de": "Es gibt keine Informationen über den Gerätetyp"
},
"question": { "question": {
"en": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?", "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?", "nl": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?",
@ -196,15 +189,24 @@
"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?" "de": "Ist dies ein normaler automatischer Defibrillator oder ein manueller Defibrillator nur für Profis?"
}, },
"freeform": {
"key": "defibrillator"
},
"condition": { "condition": {
"and": [ "and": [
"access=no" "access=no"
] ]
}, },
"mappings": [ "mappings": [
{
"if": "defibrillator=",
"then": {
"en": "There is no info about the type of device",
"nl": "Er is geen info over het soort toestel",
"fr": "Il n'y a pas d'information sur le type de dispositif",
"it": "Non vi sono informazioni riguardanti il tipo di questo dispositivo",
"de": "Es gibt keine Informationen über den Gerätetyp"
},
"hideInAnswer": true
},
{ {
"if": "defibrillator=manual", "if": "defibrillator=manual",
"then": { "then": {
@ -225,6 +227,13 @@
"ru": "Это обычный автоматический дефибриллятор", "ru": "Это обычный автоматический дефибриллятор",
"de": "Dies ist ein normaler automatischer Defibrillator" "de": "Dies ist ein normaler automatischer Defibrillator"
} }
},
{
"if": "defibrillator~",
"then": {
"en": "This is a special type of defibrillator: {defibrillator}"
},
"hideInAnswer": true
} }
], ],
"id": "defibrillator-defibrillator" "id": "defibrillator-defibrillator"
@ -308,9 +317,9 @@
"render": { "render": {
"nl": "<i>Meer informatie over de locatie (in het Engels):</i><br/>{defibrillator:location:en}", "nl": "<i>Meer informatie over de locatie (in het Engels):</i><br/>{defibrillator:location:en}",
"en": "<i>Extra information about the location (in English):</i><br/>{defibrillator:location:en}", "en": "<i>Extra information about the location (in English):</i><br/>{defibrillator:location:en}",
"fr": "<i>Informations supplémentaires à propos de l'emplacement (en anglais) :</i><br/>{defibrillator:location}", "fr": "<i>Informations supplémentaires à propos de l'emplacement (en anglais) :</i><br/>{defibrillator:location:en}",
"it": "<i>Informazioni supplementari circa la posizione (in inglese):</i><br/>{defibrillator:location:en}", "it": "<i>Informazioni supplementari circa la posizione (in inglese):</i><br/>{defibrillator:location:en}",
"de": "<i>Zusätzliche Informationen über den Standort (auf Englisch):</i><br/>{defibrillator:location}" "de": "<i>Zusätzliche Informationen über den Standort (auf Englisch):</i><br/>{defibrillator:location:en}"
}, },
"question": { "question": {
"en": "Please give some explanation on where the defibrillator can be found (in English)", "en": "Please give some explanation on where the defibrillator can be found (in English)",
@ -331,9 +340,9 @@
"render": { "render": {
"nl": "<i>Meer informatie over de locatie (in het Frans):</i><br/>{defibrillator:location:fr}", "nl": "<i>Meer informatie over de locatie (in het Frans):</i><br/>{defibrillator:location:fr}",
"en": "<i>Extra information about the location (in French):</i><br/>{defibrillator:location:fr}", "en": "<i>Extra information about the location (in French):</i><br/>{defibrillator:location:fr}",
"fr": "<i>Informations supplémentaires à propos de l'emplacement (en Français) :</i><br/>{defibrillator:location}", "fr": "<i>Informations supplémentaires à propos de l'emplacement (en Français) :</i><br/>{defibrillator:location:fr}",
"it": "<i>Informazioni supplementari circa la posizione (in francese):</i><br/>{defibrillator:location:fr}", "it": "<i>Informazioni supplementari circa la posizione (in francese):</i><br/>{defibrillator:location:fr}",
"de": "<i>Zusätzliche Informationen zum Standort (auf Französisch):</i><br/>{defibrillator:Standort:fr}" "de": "<i>Zusätzliche Informationen zum Standort (auf Französisch):</i><br/>{defibrillator:location:fr}"
}, },
"question": { "question": {
"en": "Please give some explanation on where the defibrillator can be found (in French)", "en": "Please give some explanation on where the defibrillator can be found (in French)",

View file

@ -65,11 +65,11 @@
"de": "Ist diese Trinkwasserstelle noch in Betrieb?" "de": "Ist diese Trinkwasserstelle noch in Betrieb?"
}, },
"render": { "render": {
"en": "The operational status is <i>{operational_status</i>", "en": "The operational status is <i>{operational_status}</i>",
"nl": "Deze waterkraan-status is <i>{operational_status}</i>", "nl": "Deze waterkraan-status is <i>{operational_status}</i>",
"it": "Lo stato operativo è <i>{operational_status}</i>", "it": "Lo stato operativo è <i>{operational_status}</i>",
"fr": "L'état opérationnel est <i>{operational_status</i>", "fr": "L'état opérationnel est <i>{operational_status}</i>",
"de": "Der Betriebsstatus ist <i>{operational_status</i>" "de": "Der Betriebsstatus ist <i>{operational_status}/i>"
}, },
"freeform": { "freeform": {
"key": "operational_status" "key": "operational_status"

View file

@ -409,11 +409,11 @@
"de": "Wie ist diese Kamera montiert?" "de": "Wie ist diese Kamera montiert?"
}, },
"render": { "render": {
"en": "Mounting method: {mount}", "en": "Mounting method: {camera:mount}",
"nl": "Montage: {camera:mount}", "nl": "Montage: {camera:mount}",
"fr": "Méthode de montage : {mount}", "fr": "Méthode de montage : {camera:mount}",
"it": "Metodo di montaggio: {mount}", "it": "Metodo di montaggio: {camera:mount}",
"de": "Montageart: {mount}" "de": "Montageart: {camera:mount}"
}, },
"freeform": { "freeform": {
"key": "camera:mount" "key": "camera:mount"

View file

@ -454,8 +454,7 @@
"en": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>", "en": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>",
"it": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>", "it": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>",
"ru": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>", "ru": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>",
"fr": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Identifiant Onroerend Erfgoed : <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>", "fr": "<img src=\"./assets/layers/tree_node/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Identifiant Onroerend Erfgoed : <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>"
"de": ""
}, },
"question": { "question": {
"nl": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?", "nl": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?",

View file

@ -484,7 +484,7 @@
"fr": "Étage {level}", "fr": "Étage {level}",
"pl": "Znajduje się na {level} piętrze", "pl": "Znajduje się na {level} piętrze",
"sv": "Ligger på {level}:e våningen", "sv": "Ligger på {level}:e våningen",
"pt": "Está no {vel}º andar", "pt": "Está no {level}º andar",
"eo": "En la {level}a etaĝo", "eo": "En la {level}a etaĝo",
"hu": "{level}. emeleten található", "hu": "{level}. emeleten található",
"it": "Si trova al piano numero {level}" "it": "Si trova al piano numero {level}"

View file

@ -128,7 +128,7 @@
"it": "Questo luogo è chiamato {name}", "it": "Questo luogo è chiamato {name}",
"ru": "Это место называется {name}", "ru": "Это место называется {name}",
"ja": "この場所は {name} と呼ばれています", "ja": "この場所は {name} と呼ばれています",
"fr": "Cet endroit s'appelle {nom}", "fr": "Cet endroit s'appelle {name}",
"zh_Hant": "這個地方叫做 {name}", "zh_Hant": "這個地方叫做 {name}",
"nl": "Deze plaats heet {name}", "nl": "Deze plaats heet {name}",
"pt_BR": "Este lugar é chamado de {name}", "pt_BR": "Este lugar é chamado de {name}",

View file

@ -1335,7 +1335,7 @@
"it": "Qual è il livello della via più difficile qua, secondo il sistema di classificazione francese?" "it": "Qual è il livello della via più difficile qua, secondo il sistema di classificazione francese?"
}, },
"render": { "render": {
"de": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:min} (französisch/belgisches System)", "de": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:max} (französisch/belgisches System)",
"en": "The maximal difficulty is {climbing:grade:french:max} according to the french/belgian system", "en": "The maximal difficulty is {climbing:grade:french:max} according to the french/belgian system",
"nl": "De maximale klimmoeilijkheid is {climbing:grade:french:max} volgens het Franse/Belgische systeem", "nl": "De maximale klimmoeilijkheid is {climbing:grade:french:max} volgens het Franse/Belgische systeem",
"ja": "フランス/ベルギーのランク評価システムでは、最大の難易度は{climbing:grade:french:max}です", "ja": "フランス/ベルギーのランク評価システムでは、最大の難易度は{climbing:grade:french:max}です",

View file

@ -102,7 +102,7 @@
}, },
"render": { "render": {
"en": "The hydrant color is {colour}", "en": "The hydrant color is {colour}",
"ja": "消火栓の色は{color}です", "ja": "消火栓の色は{colour}です",
"nb_NO": "Brannhydranter er {colour}", "nb_NO": "Brannhydranter er {colour}",
"ru": "Цвет гидранта {colour}", "ru": "Цвет гидранта {colour}",
"fr": "La borne est {colour}", "fr": "La borne est {colour}",
@ -262,22 +262,12 @@
{ {
"id": "hydrant-state", "id": "hydrant-state",
"question": { "question": {
"en": "Update the lifecycle status of the hydrant.", "en": "Is this hydrant still working?",
"ja": "消火栓のライフサイクルステータスを更新します。", "ja": "消火栓のライフサイクルステータスを更新します。",
"fr": "Mettre à jour létat de la borne.", "fr": "Mettre à jour létat de la borne.",
"de": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten.", "de": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten.",
"it": "Aggiorna lo stato di funzionamento dellidrante." "it": "Aggiorna lo stato di funzionamento dellidrante."
}, },
"render": {
"en": "Lifecycle status",
"ja": "ライフサイクルステータス",
"fr": "État",
"de": "Lebenszyklus-Status",
"it": "Stato di funzionamento"
},
"freeform": {
"key": "disused:emergency"
},
"mappings": [ "mappings": [
{ {
"if": { "if": {
@ -286,7 +276,7 @@
] ]
}, },
"then": { "then": {
"en": "The hydrant is (fully or partially) working.", "en": "The hydrant is (fully or partially) working",
"ja": "消火栓は(完全にまたは部分的に)機能しています。", "ja": "消火栓は(完全にまたは部分的に)機能しています。",
"ru": "Гидрант (полностью или частично) в рабочем состоянии.", "ru": "Гидрант (полностью или частично) в рабочем состоянии.",
"fr": "La borne est en état, ou partiellement en état, de fonctionner.", "fr": "La borne est en état, ou partiellement en état, de fonctionner.",
@ -302,7 +292,7 @@
] ]
}, },
"then": { "then": {
"en": "The hydrant is unavailable.", "en": "The hydrant is unavailable",
"ja": "消火栓は使用できません。", "ja": "消火栓は使用できません。",
"fr": "La borne est hors-service.", "fr": "La borne est hors-service.",
"de": "Der Hydrant ist nicht verfügbar.", "de": "Der Hydrant ist nicht verfügbar.",
@ -317,7 +307,7 @@
] ]
}, },
"then": { "then": {
"en": "The hydrant has been removed.", "en": "The hydrant has been removed",
"ja": "消火栓が撤去されました。", "ja": "消火栓が撤去されました。",
"ru": "Гидрант демонтирован.", "ru": "Гидрант демонтирован.",
"fr": "La borne a été retirée.", "fr": "La borne a été retirée.",

View file

@ -0,0 +1,3 @@
.technical.questions {
display: none
}

View file

@ -3,6 +3,7 @@
"credits": "Commissioned theme for <a href='https://www.toerismevlaanderen.be/'>Toerisme Vlaandere</a>", "credits": "Commissioned theme for <a href='https://www.toerismevlaanderen.be/'>Toerisme Vlaandere</a>",
"maintainer": "MapComplete", "maintainer": "MapComplete",
"version": "0.0.1", "version": "0.0.1",
"customCss": "./assets/themes/toerisme_vlaanderen/custom.css",
"language": [ "language": [
"en", "en",
"nl" "nl"

View file

@ -325,7 +325,7 @@
}, },
{ {
"id": "fixme", "id": "fixme",
"render": "<b>Fixme description</b>{render}", "render": "<b>Fixme description</b>{fixme}",
"question": { "question": {
"en": "What should be fixed here? Please explain" "en": "What should be fixed here? Please explain"
}, },

View file

@ -1482,6 +1482,11 @@ video {
line-height: 1.75rem; line-height: 1.75rem;
} }
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem;
}
.text-sm { .text-sm {
font-size: 0.875rem; font-size: 0.875rem;
line-height: 1.25rem; line-height: 1.25rem;
@ -1497,11 +1502,6 @@ video {
line-height: 1.5rem; line-height: 1.5rem;
} }
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem;
}
.text-4xl { .text-4xl {
font-size: 2.25rem; font-size: 2.25rem;
line-height: 2.5rem; line-height: 2.5rem;
@ -1998,12 +1998,6 @@ li::marker {
padding: 0.15em 0.3em; padding: 0.15em 0.3em;
} }
.question form {
display: inline-block;
max-width: 90vw;
width: 100%;
}
.invalid { .invalid {
box-shadow: 0 0 10px #ff5353; box-shadow: 0 0 10px #ff5353;
height: -webkit-min-content; height: -webkit-min-content;

View file

@ -12,7 +12,13 @@
padding: 1em; padding: 1em;
border-radius: 1em; border-radius: 1em;
font-size: larger; font-size: larger;
overflow-wrap: initial;
}
.question form {
display: inline-block;
max-width: 90vw;
width: 100%;
} }
.question svg { .question svg {

View file

@ -289,12 +289,6 @@ li::marker {
padding: 0.15em 0.3em; padding: 0.15em 0.3em;
} }
.question form {
display: inline-block;
max-width: 90vw;
width: 100%;
}
.invalid { .invalid {
box-shadow: 0 0 10px #ff5353; box-shadow: 0 0 10px #ff5353;
height: min-content; height: min-content;

View file

@ -133,11 +133,11 @@
}, },
"Space between barrier (cyclebarrier)": { "Space between barrier (cyclebarrier)": {
"question": "Wie groß ist der Abstand zwischen den Barrieren (entlang der Straße)?", "question": "Wie groß ist der Abstand zwischen den Barrieren (entlang der Straße)?",
"render": "Abstand zwischen den Barrieren (entlang der Straße): {spacing} m" "render": "Abstand zwischen den Barrieren (entlang der Straße): {width:separation} m"
}, },
"Width of opening (cyclebarrier)": { "Width of opening (cyclebarrier)": {
"question": "Wie breit ist die kleinste Öffnung neben den Barrieren?", "question": "Wie breit ist die kleinste Öffnung neben den Barrieren?",
"render": "Breite der Öffnung: {opening} m" "render": "Breite der Öffnung: {width:opening} m"
}, },
"bicycle=yes/no": { "bicycle=yes/no": {
"mappings": { "mappings": {
@ -180,8 +180,7 @@
"then": "Rückenlehne: Nein" "then": "Rückenlehne: Nein"
} }
}, },
"question": "Hat diese Bank eine Rückenlehne?", "question": "Hat diese Bank eine Rückenlehne?"
"render": "Rückenlehne"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -257,8 +256,12 @@
"bench_at_pt": { "bench_at_pt": {
"name": "Sitzbänke bei Haltestellen", "name": "Sitzbänke bei Haltestellen",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "Stehbank" "mappings": {
"1": {
"then": "Stehbank"
}
}
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"
@ -342,7 +345,7 @@
} }
}, },
"question": "Ist dieser Automat noch in Betrieb?", "question": "Ist dieser Automat noch in Betrieb?",
"render": "Der Betriebszustand ist <i>{operational_status</i>" "render": "Der Betriebszustand ist <i>{operational_status}</i>"
} }
}, },
"title": { "title": {
@ -923,312 +926,6 @@
} }
} }
}, },
"charging_station": {
"description": "Eine Ladestation",
"filter": {
"0": {
"options": {
"0": {
"question": "Alle Fahrzeugtypen"
},
"1": {
"question": "Ladestation für Fahrräder"
},
"2": {
"question": "Ladestation für Autos"
}
}
},
"1": {
"options": {
"0": {
"question": "Nur funktionierende Ladestationen"
}
}
},
"2": {
"options": {
"0": {
"question": "Alle Anschlüsse"
},
"3": {
"question": "Hat einen <div style='display: inline-block'><b><b>Chademo</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Chademo_type4.svg'/></div> Stecker"
},
"7": {
"question": "Hat einen <div style='display: inline-block'><b><b>Tesla Supercharger</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> Stecker"
}
}
}
},
"presets": {
"0": {
"title": "Ladestation"
}
},
"tagRenderings": {
"Auth phone": {
"question": "Wie lautet die Telefonnummer für den Authentifizierungsanruf oder die SMS?",
"render": "Authentifizierung durch Anruf oder SMS an <a href='tel:{authentication:phone_call:number}'>{authentication:phone_call:number}</a>"
},
"Authentication": {
"mappings": {
"0": {
"then": "Authentifizierung durch eine Mitgliedskarte"
},
"1": {
"then": "Authentifizierung durch eine App"
},
"2": {
"then": "Authentifizierung per Anruf ist möglich"
},
"3": {
"then": "Authentifizierung per Anruf ist möglich"
},
"4": {
"then": "Authentifizierung über NFC ist möglich"
},
"5": {
"then": "Authentifizierung über Geldkarte ist möglich"
},
"6": {
"then": "Authentifizierung per Debitkarte ist möglich"
},
"7": {
"then": "Das Aufladen ist hier (auch) ohne Authentifizierung möglich"
}
},
"question": "Welche Authentifizierung ist an der Ladestation möglich?"
},
"Available_charging_stations (generated)": {
"mappings": {
"5": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Chademo_type4.svg'/> <span><b>Chademo</b></span></div>"
},
"6": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 mit Kabel</b> (J1772)</span></div>"
},
"7": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 mit Kabel</b> (J1772)</span></div>"
},
"8": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 <i>ohne</i> Kabel</b> (J1772)</span></div>"
},
"9": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1_J1772.svg'/> <span><b>Typ 1 <i>ohne</i> Kabel</b> (J1772)</span></div>"
},
"10": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Typ 1 CCS</b> (auch bekannt als Typ 1 Combo)</span></div>"
},
"11": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type1-ccs.svg'/> <span><b>Typ 1 CCS</b> (auch bekannt als Typ 1 Combo)</span></div>"
},
"12": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>"
},
"13": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/> <span><b>Tesla Supercharger</b></span></div>"
},
"14": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Typ 2</b> (Mennekes)</span></div>"
},
"15": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_socket.svg'/> <span><b>Typ 2</b> (Mennekes)</span></div>"
},
"16": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Typ 2 CCS</b> (Mennekes)</span></div>"
},
"17": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Typ 2 CCS</b> (Mennekes)</span></div>"
},
"18": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Typ 2 mit Kabel</b> (Mennekes)</span></div>"
},
"19": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_tethered.svg'/> <span><b>Typ 2 mit Kabel</b> (Mennekes)</span></div>"
},
"20": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (Typ 2 CSS)</span></div>"
},
"21": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/Type2_CCS.svg'/> <span><b>Tesla Supercharger CCS</b> (Typ 2 CSS)</span></div>"
},
"26": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> zum Laden von Smartphones oder Elektrokleingeräten</span></div>"
},
"27": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/usb_port.svg'/> <span><b>USB</b> zum Laden von Smartphones und Elektrokleingeräten</span></div>"
},
"30": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect mit 5 Pins</b> und Kabel</span></div>"
},
"31": {
"then": "<div class='flex'><img class='w-12 mx-4' src='./assets/layers/charging_station/bosch-5pin.svg'/> <span><b>Bosch Active Connect mit 5 Pins</b> und Kabel</span></div>"
}
},
"question": "Welche Ladestationen gibt es hier?"
},
"Network": {
"mappings": {
"0": {
"then": "Nicht Teil eines größeren Netzwerks"
},
"1": {
"then": "Nicht Teil eines größeren Netzwerks"
}
},
"question": "Ist diese Ladestation Teil eines Netzwerks?",
"render": "Teil des Netzwerks <b>{network}</b>"
},
"OH": {
"mappings": {
"0": {
"then": "durchgehend geöffnet (auch an Feiertagen)"
}
},
"question": "Wann ist diese Ladestation geöffnet?"
},
"Operational status": {
"mappings": {
"0": {
"then": "Diese Ladestation funktioniert"
},
"1": {
"then": "Diese Ladestation ist kaputt"
},
"2": {
"then": "Hier ist eine Ladestation geplant"
},
"3": {
"then": "Hier wird eine Ladestation gebaut"
},
"4": {
"then": "Diese Ladestation wurde dauerhaft deaktiviert und wird nicht mehr benutzt, ist aber noch sichtbar"
}
},
"question": "Ist dieser Ladepunkt in Betrieb?"
},
"Operator": {
"mappings": {
"0": {
"then": "Eigentlich ist {operator} das Netzwerk"
}
},
"question": "Wer ist der Betreiber dieser Ladestation?",
"render": "Diese Ladestation wird betrieben von {operator}"
},
"Parking:fee": {
"mappings": {
"0": {
"then": "Keine zusätzlichen Parkgebühren beim Laden"
},
"1": {
"then": "Beim Laden ist eine zusätzliche Parkgebühr zu entrichten"
}
},
"question": "Muss man beim Laden eine Parkgebühr bezahlen?"
},
"Type": {
"mappings": {
"0": {
"then": "<b>Fahrräder</b> können hier geladen werden"
},
"1": {
"then": "<b>Autos</b> können hier geladen werden"
},
"2": {
"then": "<b> Roller</b> können hier geladen werden"
},
"3": {
"then": "<b>Lastkraftwagen</b> (LKW) können hier geladen werden"
},
"4": {
"then": "<b>Busse</b> können hier geladen werden"
}
},
"question": "Welche Fahrzeuge dürfen hier geladen werden?"
},
"access": {
"question": "Wer darf diese Ladestation benutzen?",
"render": "Zugang ist {access}"
},
"capacity": {
"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 <a href='mailto:{email}'>{email}</a>"
},
"maxstay": {
"mappings": {
"0": {
"then": "Keine Höchstparkdauer"
}
},
"question": "Was ist die Höchstdauer des Aufenthalts hier?",
"render": "Die maximale Parkzeit beträgt <b>{canonical(maxstay)}</b>"
},
"payment-options": {
"override": {
"mappings+": {
"0": {
"then": "Bezahlung mit einer speziellen App"
},
"1": {
"then": "Bezahlung mit einer Mitgliedskarte"
}
}
}
},
"phone": {
"question": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?",
"render": "Bei Problemen, anrufen unter <a href='tel:{phone}'>{phone}</a>"
},
"ref": {
"question": "Wie lautet die Kennung dieser Ladestation?",
"render": "Die Kennziffer ist <b>{ref}</b>"
},
"website": {
"question": "Wie ist die Webseite des Betreibers?",
"render": "Weitere Informationen auf <a href='{website}'>{website}</a>"
}
},
"units": {
"0": {
"applicableUnits": {
"0": {
"human": " Minuten",
"humanSingular": " Minute"
},
"1": {
"human": " Stunden",
"humanSingular": " Stunde"
},
"2": {
"human": " Tage",
"humanSingular": " Tag"
}
}
},
"1": {
"applicableUnits": {
"0": {
"human": "Volt"
}
}
},
"3": {
"applicableUnits": {
"0": {
"human": "Kilowatt"
},
"1": {
"human": "Megawatt"
}
}
}
}
},
"crossings": { "crossings": {
"description": "Übergänge für Fußgänger und Radfahrer", "description": "Übergänge für Fußgänger und Radfahrer",
"name": "Kreuzungen", "name": "Kreuzungen",
@ -1737,14 +1434,16 @@
"defibrillator-defibrillator": { "defibrillator-defibrillator": {
"mappings": { "mappings": {
"0": { "0": {
"then": "Dies ist ein manueller Defibrillator für den professionellen Einsatz" "then": "Es gibt keine Informationen über den Gerätetyp"
}, },
"1": { "1": {
"then": "Dies ist ein manueller Defibrillator für den professionellen Einsatz"
},
"2": {
"then": "Dies ist ein normaler automatischer Defibrillator" "then": "Dies ist ein normaler automatischer Defibrillator"
} }
}, },
"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": { "defibrillator-defibrillator:location": {
"question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)", "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)",
@ -1752,11 +1451,11 @@
}, },
"defibrillator-defibrillator:location:en": { "defibrillator-defibrillator:location:en": {
"question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Englisch)", "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Englisch)",
"render": "<i>Zusätzliche Informationen über den Standort (auf Englisch):</i><br/>{defibrillator:location}" "render": "<i>Zusätzliche Informationen über den Standort (auf Englisch):</i><br/>{defibrillator:location:en}"
}, },
"defibrillator-defibrillator:location:fr": { "defibrillator-defibrillator:location:fr": {
"question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Französisch)", "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Französisch)",
"render": "<i>Zusätzliche Informationen zum Standort (auf Französisch):</i><br/>{defibrillator:Standort:fr}" "render": "<i>Zusätzliche Informationen zum Standort (auf Französisch):</i><br/>{defibrillator:location:fr}"
}, },
"defibrillator-description": { "defibrillator-description": {
"question": "Gibt es nützliche Informationen für Benutzer, die Sie oben nicht beschreiben konnten? (leer lassen, wenn nein)", "question": "Gibt es nützliche Informationen für Benutzer, die Sie oben nicht beschreiben konnten? (leer lassen, wenn nein)",
@ -1860,7 +1559,7 @@
} }
}, },
"question": "Ist diese Trinkwasserstelle noch in Betrieb?", "question": "Ist diese Trinkwasserstelle noch in Betrieb?",
"render": "Der Betriebsstatus ist <i>{operational_status</i>" "render": "Der Betriebsstatus ist <i>{operational_status}/i>"
}, },
"render-closest-drinking-water": { "render-closest-drinking-water": {
"render": "<a href='#{_closest_other_drinking_water_id}'>Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter</a>" "render": "<a href='#{_closest_other_drinking_water_id}'>Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter</a>"
@ -2771,7 +2470,7 @@
} }
}, },
"question": "Wie ist diese Kamera montiert?", "question": "Wie ist diese Kamera montiert?",
"render": "Montageart: {mount}" "render": "Montageart: {camera:mount}"
}, },
"direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { "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?" "question": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?"
@ -3064,8 +2763,7 @@
"render": "Name: {name}" "render": "Name: {name}"
}, },
"tree_node-ref:OnroerendErfgoed": { "tree_node-ref:OnroerendErfgoed": {
"question": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?", "question": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?"
"render": ""
}, },
"tree_node-wikidata": { "tree_node-wikidata": {
"question": "Was ist das passende Wikidata Element zu diesem Baum?", "question": "Was ist das passende Wikidata Element zu diesem Baum?",

View file

@ -133,11 +133,11 @@
}, },
"Space between barrier (cyclebarrier)": { "Space between barrier (cyclebarrier)": {
"question": "How much space is there between the barriers (along the length of the road)?", "question": "How much space is there between the barriers (along the length of the road)?",
"render": "Space between barriers (along the length of the road): {spacing} m" "render": "Space between barriers (along the length of the road): {width:separation} m"
}, },
"Width of opening (cyclebarrier)": { "Width of opening (cyclebarrier)": {
"question": "How wide is the smallest opening next to the barriers?", "question": "How wide is the smallest opening next to the barriers?",
"render": "Width of opening: {opening} m" "render": "Width of opening: {width:opening} m"
}, },
"bicycle=yes/no": { "bicycle=yes/no": {
"mappings": { "mappings": {
@ -180,8 +180,7 @@
"then": "Backrest: No" "then": "Backrest: No"
} }
}, },
"question": "Does this bench have a backrest?", "question": "Does this bench have a backrest?"
"render": "Backrest"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -257,8 +256,19 @@
"bench_at_pt": { "bench_at_pt": {
"name": "Benches at public transport stops", "name": "Benches at public transport stops",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "Stand up bench" "mappings": {
"0": {
"then": "There is a normal, sit-down bench here"
},
"1": {
"then": "Stand up bench"
},
"2": {
"then": "There is no bench here"
}
},
"question": "What kind of bench is this?"
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"
@ -342,7 +352,7 @@
} }
}, },
"question": "Is this vending machine still operational?", "question": "Is this vending machine still operational?",
"render": "The operational status is <i>{operational_status</i>" "render": "The operational status is <i>{operational_status}</i>"
} }
}, },
"title": { "title": {
@ -423,6 +433,38 @@
"title": "Bike cleaning service" "title": "Bike cleaning service"
} }
}, },
"tagRenderings": {
"bike_cleaning-charge": {
"mappings": {
"0": {
"then": "Free to use cleaning service"
},
"1": {
"then": "Free to use"
},
"2": {
"then": "The cleaning service has a fee"
}
},
"question": "How much does it cost to use the cleaning service?",
"render": "Using the cleaning service costs {charge}"
},
"bike_cleaning-service:bicycle:cleaning:charge": {
"mappings": {
"0": {
"then": "The cleaning service is free to use"
},
"1": {
"then": "Free to use"
},
"2": {
"then": "The cleaning service has a fee, but the amount is not known"
}
},
"question": "How much does it cost to use the cleaning service?",
"render": "Using the cleaning service costs {service:bicycle:cleaning:charge}"
}
},
"title": { "title": {
"mappings": { "mappings": {
"0": { "0": {
@ -1714,6 +1756,9 @@
"question": "What power output does a single plug of type <div style='display: inline-block'><b><b>Type 2 with cable</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> offer?", "question": "What power output does a single plug of type <div style='display: inline-block'><b><b>Type 2 with cable</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> offer?",
"render": "<div style='display: inline-block'><b><b>Type 2 with cable</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> outputs at most {socket:type2_cable:output}" "render": "<div style='display: inline-block'><b><b>Type 2 with cable</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> outputs at most {socket:type2_cable:output}"
}, },
"questions": {
"render": "<h3>Technical questions</h3>The questions below are very technical. Feel free to ignore them<br/>{questions}"
},
"ref": { "ref": {
"question": "What is the reference number of this charging station?", "question": "What is the reference number of this charging station?",
"render": "Reference number is <b>{ref}</b>" "render": "Reference number is <b>{ref}</b>"
@ -2468,14 +2513,19 @@
"defibrillator-defibrillator": { "defibrillator-defibrillator": {
"mappings": { "mappings": {
"0": { "0": {
"then": "This is a manual defibrillator for professionals" "then": "There is no info about the type of device"
}, },
"1": { "1": {
"then": "This is a manual defibrillator for professionals"
},
"2": {
"then": "This is a normal automatic defibrillator" "then": "This is a normal automatic defibrillator"
},
"3": {
"then": "This is a special type of defibrillator: {defibrillator}"
} }
}, },
"question": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?", "question": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?"
"render": "There is no info about the type of device"
}, },
"defibrillator-defibrillator:location": { "defibrillator-defibrillator:location": {
"question": "Please give some explanation on where the defibrillator can be found (in the local language)", "question": "Please give some explanation on where the defibrillator can be found (in the local language)",
@ -2591,7 +2641,7 @@
} }
}, },
"question": "Is this drinking water spot still operational?", "question": "Is this drinking water spot still operational?",
"render": "The operational status is <i>{operational_status</i>" "render": "The operational status is <i>{operational_status}</i>"
}, },
"render-closest-drinking-water": { "render-closest-drinking-water": {
"render": "<a href='#{_closest_other_drinking_water_id}'>There is another drinking water fountain at {_closest_other_drinking_water_distance} meter</a>" "render": "<a href='#{_closest_other_drinking_water_id}'>There is another drinking water fountain at {_closest_other_drinking_water_distance} meter</a>"
@ -3679,7 +3729,7 @@
} }
}, },
"question": "How is this camera placed?", "question": "How is this camera placed?",
"render": "Mounting method: {mount}" "render": "Mounting method: {camera:mount}"
}, },
"direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": {
"mappings": { "mappings": {

View file

@ -39,8 +39,7 @@
"then": "Respaldo: No" "then": "Respaldo: No"
} }
}, },
"question": "¿Este banco tiene un respaldo?", "question": "¿Este banco tiene un respaldo?"
"render": "Respaldo"
}, },
"bench-material": { "bench-material": {
"mappings": { "mappings": {

View file

@ -30,8 +30,7 @@
"1": { "1": {
"then": "Selkänoja: ei" "then": "Selkänoja: ei"
} }
}, }
"render": "Selkänoja"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {

View file

@ -89,8 +89,7 @@
"then": "Dossier : Non" "then": "Dossier : Non"
} }
}, },
"question": "Ce banc dispose-t-il d'un dossier ?", "question": "Ce banc dispose-t-il d'un dossier ?"
"render": "Dossier"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -166,8 +165,12 @@
"bench_at_pt": { "bench_at_pt": {
"name": "Bancs des arrêts de transport en commun", "name": "Bancs des arrêts de transport en commun",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "Banc assis debout" "mappings": {
"1": {
"then": "Banc assis debout"
}
}
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"
@ -777,14 +780,16 @@
"defibrillator-defibrillator": { "defibrillator-defibrillator": {
"mappings": { "mappings": {
"0": { "0": {
"then": "C'est un défibrillateur manuel pour professionnel" "then": "Il n'y a pas d'information sur le type de dispositif"
}, },
"1": { "1": {
"then": "C'est un défibrillateur manuel pour professionnel"
},
"2": {
"then": "C'est un défibrillateur automatique manuel" "then": "C'est un défibrillateur automatique manuel"
} }
}, },
"question": "Est-ce un défibrillateur automatique normal ou un défibrillateur manuel à usage professionnel uniquement ?", "question": "Est-ce un défibrillateur automatique normal ou un défibrillateur manuel à usage professionnel uniquement ?"
"render": "Il n'y a pas d'information sur le type de dispositif"
}, },
"defibrillator-defibrillator:location": { "defibrillator-defibrillator:location": {
"question": "Veuillez indiquez plus précisément où se situe le défibrillateur (dans la langue local)", "question": "Veuillez indiquez plus précisément où se situe le défibrillateur (dans la langue local)",
@ -792,11 +797,11 @@
}, },
"defibrillator-defibrillator:location:en": { "defibrillator-defibrillator:location:en": {
"question": "Veuillez indiquez plus précisément où se situe le défibrillateur (en englais)", "question": "Veuillez indiquez plus précisément où se situe le défibrillateur (en englais)",
"render": "<i>Informations supplémentaires à propos de l'emplacement (en anglais) :</i><br/>{defibrillator:location}" "render": "<i>Informations supplémentaires à propos de l'emplacement (en anglais) :</i><br/>{defibrillator:location:en}"
}, },
"defibrillator-defibrillator:location:fr": { "defibrillator-defibrillator:location:fr": {
"question": "Veuillez indiquez plus précisément où se situe le défibrillateur (en français)", "question": "Veuillez indiquez plus précisément où se situe le défibrillateur (en français)",
"render": "<i>Informations supplémentaires à propos de l'emplacement (en Français) :</i><br/>{defibrillator:location}" "render": "<i>Informations supplémentaires à propos de l'emplacement (en Français) :</i><br/>{defibrillator:location:fr}"
}, },
"defibrillator-description": { "defibrillator-description": {
"question": "Y a-t-il des informations utiles pour les utilisateurs que vous n'avez pas pu décrire ci-dessus ? (laisser vide sinon)", "question": "Y a-t-il des informations utiles pour les utilisateurs que vous n'avez pas pu décrire ci-dessus ? (laisser vide sinon)",
@ -900,7 +905,7 @@
} }
}, },
"question": "Ce point d'eau potable est-il toujours opérationnel ?", "question": "Ce point d'eau potable est-il toujours opérationnel ?",
"render": "L'état opérationnel est <i>{operational_status</i>" "render": "L'état opérationnel est <i>{operational_status}</i>"
}, },
"render-closest-drinking-water": { "render-closest-drinking-water": {
"render": "<a href='#{_closest_other_drinking_water_id}'>Une autre source deau potable est à {_closest_other_drinking_water_distance} mètres a>" "render": "<a href='#{_closest_other_drinking_water_id}'>Une autre source deau potable est à {_closest_other_drinking_water_distance} mètres a>"
@ -1660,7 +1665,7 @@
} }
}, },
"question": "Comment cette caméra est-elle placée ?", "question": "Comment cette caméra est-elle placée ?",
"render": "Méthode de montage : {mount}" "render": "Méthode de montage : {camera:mount}"
}, },
"direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": {
"mappings": { "mappings": {

View file

@ -26,8 +26,7 @@
"then": "Háttámla: Nem" "then": "Háttámla: Nem"
} }
}, },
"question": "Van háttámlája ennek a padnak?", "question": "Van háttámlája ennek a padnak?"
"render": "Háttámla"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {

View file

@ -80,8 +80,7 @@
"then": "Sandaran: Tidak" "then": "Sandaran: Tidak"
} }
}, },
"question": "Apakah bangku ini memiliki sandaran?", "question": "Apakah bangku ini memiliki sandaran?"
"render": "Sandaran"
}, },
"bench-colour": { "bench-colour": {
"render": "Warna: {colour}" "render": "Warna: {colour}"

View file

@ -89,8 +89,7 @@
"then": "Schienale: No" "then": "Schienale: No"
} }
}, },
"question": "Questa panchina ha lo schienale?", "question": "Questa panchina ha lo schienale?"
"render": "Schienale"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -166,8 +165,12 @@
"bench_at_pt": { "bench_at_pt": {
"name": "Panchine alle fermate del trasporto pubblico", "name": "Panchine alle fermate del trasporto pubblico",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "Panca in piedi" "mappings": {
"1": {
"then": "Panca in piedi"
}
}
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"
@ -745,17 +748,6 @@
"render": "Oggetto relativo alle bici" "render": "Oggetto relativo alle bici"
} }
}, },
"charging_station": {
"tagRenderings": {
"Network": {
"question": "A quale rete appartiene questa stazione di ricarica?",
"render": "{network}"
},
"OH": {
"question": "Quali sono gli orari di apertura di questa stazione di ricarica?"
}
}
},
"defibrillator": { "defibrillator": {
"name": "Defibrillatori", "name": "Defibrillatori",
"presets": { "presets": {
@ -788,14 +780,16 @@
"defibrillator-defibrillator": { "defibrillator-defibrillator": {
"mappings": { "mappings": {
"0": { "0": {
"then": "Questo è un defibrillatore manuale per professionisti" "then": "Non vi sono informazioni riguardanti il tipo di questo dispositivo"
}, },
"1": { "1": {
"then": "Questo è un defibrillatore manuale per professionisti"
},
"2": {
"then": "È un normale defibrillatore automatico" "then": "È un normale defibrillatore automatico"
} }
}, },
"question": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?", "question": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?"
"render": "Non vi sono informazioni riguardanti il tipo di questo dispositivo"
}, },
"defibrillator-defibrillator:location": { "defibrillator-defibrillator:location": {
"question": "Indica più precisamente dove si trova il defibrillatore (in lingua locale)", "question": "Indica più precisamente dove si trova il defibrillatore (in lingua locale)",
@ -1556,7 +1550,7 @@
} }
}, },
"question": "Com'è posizionata questa telecamera?", "question": "Com'è posizionata questa telecamera?",
"render": "Metodo di montaggio: {mount}" "render": "Metodo di montaggio: {camera:mount}"
}, },
"direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": {
"mappings": { "mappings": {

View file

@ -72,17 +72,6 @@
"render": "アートワーク" "render": "アートワーク"
} }
}, },
"charging_station": {
"tagRenderings": {
"Network": {
"question": "この充電ステーションの運営チェーンはどこですか?",
"render": "{network}"
},
"OH": {
"question": "この充電ステーションはいつオープンしますか?"
}
}
},
"food": { "food": {
"tagRenderings": { "tagRenderings": {
"friture-take-your-container": { "friture-take-your-container": {

View file

@ -88,8 +88,7 @@
"then": "Rygglene: Nei" "then": "Rygglene: Nei"
} }
}, },
"question": "Har denne beken et rygglene?", "question": "Har denne beken et rygglene?"
"render": "Rygglene"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -175,16 +174,6 @@
} }
} }
}, },
"charging_station": {
"tagRenderings": {
"Network": {
"render": "{network}"
},
"OH": {
"question": "Når åpnet denne ladestasjonen?"
}
}
},
"ghost_bike": { "ghost_bike": {
"name": "Spøkelsessykler", "name": "Spøkelsessykler",
"title": { "title": {

View file

@ -132,11 +132,11 @@
}, },
"Space between barrier (cyclebarrier)": { "Space between barrier (cyclebarrier)": {
"question": "Hoeveel ruimte is er tussen de barrières (langs de lengte van de weg)?", "question": "Hoeveel ruimte is er tussen de barrières (langs de lengte van de weg)?",
"render": "Ruimte tussen barrières (langs de lengte van de weg): {spacing} m" "render": "Ruimte tussen barrières (langs de lengte van de weg): {width:separation} m"
}, },
"Width of opening (cyclebarrier)": { "Width of opening (cyclebarrier)": {
"question": "Hoe breed is de smalste opening naast de barrières?", "question": "Hoe breed is de smalste opening naast de barrières?",
"render": "Breedte van de opening: {opening} m" "render": "Breedte van de opening: {width:opening} m"
}, },
"bicycle=yes/no": { "bicycle=yes/no": {
"mappings": { "mappings": {
@ -179,8 +179,7 @@
"then": "Rugleuning ontbreekt" "then": "Rugleuning ontbreekt"
} }
}, },
"question": "Heeft deze zitbank een rugleuning?", "question": "Heeft deze zitbank een rugleuning?"
"render": "Rugleuning"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -256,8 +255,13 @@
"bench_at_pt": { "bench_at_pt": {
"name": "Zitbanken aan bushaltes", "name": "Zitbanken aan bushaltes",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "Leunbank" "mappings": {
"1": {
"then": "Leunbank"
}
},
"question": "Wat voor soort bank is dit?"
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"
@ -1828,6 +1832,9 @@
"question": "Welk vermogen levert een enkele stekker van type <div style='display: inline-block'><b><b>Type 2 met kabel</b> (J1772)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?", "question": "Welk vermogen levert een enkele stekker van type <div style='display: inline-block'><b><b>Type 2 met kabel</b> (J1772)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?",
"render": "<div style='display: inline-block'><b><b>Type 2 met kabel</b> (J1772)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> levert een vermogen van maximaal {socket:type2_cable:output}" "render": "<div style='display: inline-block'><b><b>Type 2 met kabel</b> (J1772)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> levert een vermogen van maximaal {socket:type2_cable:output}"
}, },
"questions": {
"render": "<h3>Technische vragen</h3>De vragen hieronder zijn erg technisch - sla deze over indien je hier geen tijd voor hebt<br/>{questions}"
},
"ref": { "ref": {
"question": "Wat is het referentienummer van dit oplaadstation?", "question": "Wat is het referentienummer van dit oplaadstation?",
"render": "Het referentienummer van dit oplaadpunt is <b>{ref}</b>" "render": "Het referentienummer van dit oplaadpunt is <b>{ref}</b>"
@ -2556,14 +2563,16 @@
"defibrillator-defibrillator": { "defibrillator-defibrillator": {
"mappings": { "mappings": {
"0": { "0": {
"then": "Dit is een manueel toestel enkel voor professionals" "then": "Er is geen info over het soort toestel"
}, },
"1": { "1": {
"then": "Dit is een manueel toestel enkel voor professionals"
},
"2": {
"then": "Dit is een gewone automatische defibrillator" "then": "Dit is een gewone automatische defibrillator"
} }
}, },
"question": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?", "question": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?"
"render": "Er is geen info over het soort toestel"
}, },
"defibrillator-defibrillator:location": { "defibrillator-defibrillator:location": {
"question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in de plaatselijke taal)", "question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in de plaatselijke taal)",

View file

@ -31,8 +31,7 @@
"then": "Oparcie: Nie" "then": "Oparcie: Nie"
} }
}, },
"question": "Czy ta ławka ma oparcie?", "question": "Czy ta ławka ma oparcie?"
"render": "Oparcie"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {

View file

@ -31,8 +31,7 @@
"then": "Encosto: Não" "then": "Encosto: Não"
} }
}, },
"question": "Este assento tem um escosto?", "question": "Este assento tem um escosto?"
"render": "Encosto"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -189,7 +188,7 @@
} }
}, },
"question": "Esta máquina de venda automática ainda está operacional?", "question": "Esta máquina de venda automática ainda está operacional?",
"render": "O estado operacional é: <i>{operational_status</i>" "render": "O estado operacional é: <i>{operational_status}</i>"
} }
}, },
"title": { "title": {
@ -493,7 +492,7 @@
}, },
"bike_shop-name": { "bike_shop-name": {
"question": "Qual o nome desta loja de bicicletas?", "question": "Qual o nome desta loja de bicicletas?",
"render": "Esta loja de bicicletas se chama {nome}" "render": "Esta loja de bicicletas se chama {name}"
}, },
"bike_shop-phone": { "bike_shop-phone": {
"question": "Qual é o número de telefone de {name}?" "question": "Qual é o número de telefone de {name}?"

View file

@ -31,8 +31,7 @@
"then": "Encosto: Não" "then": "Encosto: Não"
} }
}, },
"question": "Este assento tem um escosto?", "question": "Este assento tem um escosto?"
"render": "Encosto"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -189,7 +188,7 @@
} }
}, },
"question": "Esta máquina de venda automática ainda está operacional?", "question": "Esta máquina de venda automática ainda está operacional?",
"render": "O estado operacional é: <i>{operational_status</i>" "render": "O estado operacional é: <i>{operational_status}</i>"
} }
}, },
"title": { "title": {
@ -505,7 +504,7 @@
}, },
"bike_shop-name": { "bike_shop-name": {
"question": "Qual o nome desta loja de bicicletas?", "question": "Qual o nome desta loja de bicicletas?",
"render": "Esta loja de bicicletas se chama {nome}" "render": "Esta loja de bicicletas se chama {name}"
}, },
"bike_shop-phone": { "bike_shop-phone": {
"question": "Qual o número de telefone de {name}?" "question": "Qual o número de telefone de {name}?"

View file

@ -105,8 +105,7 @@
"then": "Без спинки" "then": "Без спинки"
} }
}, },
"question": "Есть ли у этой скамейки спинка?", "question": "Есть ли у этой скамейки спинка?"
"render": "Спинка"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -182,8 +181,12 @@
"bench_at_pt": { "bench_at_pt": {
"name": "Скамейки на остановках общественного транспорта", "name": "Скамейки на остановках общественного транспорта",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "Встаньте на скамейке" "mappings": {
"1": {
"then": "Встаньте на скамейке"
}
}
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"
@ -267,7 +270,7 @@
} }
}, },
"question": "Этот торговый автомат все еще работает?", "question": "Этот торговый автомат все еще работает?",
"render": "Рабочий статус: <i> {operational_status</i>" "render": "Рабочий статус: <i> {operational_status}</i>"
} }
}, },
"title": { "title": {
@ -634,57 +637,6 @@
} }
} }
}, },
"charging_station": {
"presets": {
"0": {
"title": "Зарядная станция"
}
},
"tagRenderings": {
"Network": {
"question": "К какой сети относится эта станция?",
"render": "{network}"
},
"OH": {
"question": "В какое время работает эта зарядная станция?"
}
},
"units": {
"0": {
"applicableUnits": {
"0": {
"human": " минут",
"humanSingular": " минута"
},
"1": {
"human": " часов",
"humanSingular": " час"
},
"2": {
"human": " дней",
"humanSingular": " день"
}
}
},
"1": {
"applicableUnits": {
"0": {
"human": "Вольт"
}
}
},
"3": {
"applicableUnits": {
"0": {
"human": "киловатт"
},
"1": {
"human": "мегаватт"
}
}
}
}
},
"crossings": { "crossings": {
"presets": { "presets": {
"1": { "1": {
@ -732,7 +684,7 @@
}, },
"defibrillator-defibrillator": { "defibrillator-defibrillator": {
"mappings": { "mappings": {
"1": { "2": {
"then": "Это обычный автоматический дефибриллятор" "then": "Это обычный автоматический дефибриллятор"
} }
} }

View file

@ -16,8 +16,7 @@
"then": "靠背:无" "then": "靠背:无"
} }
}, },
"question": "这个长椅有靠背吗?", "question": "这个长椅有靠背吗?"
"render": "靠背"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -92,8 +91,12 @@
"bench_at_pt": { "bench_at_pt": {
"name": "在公交站点的长椅", "name": "在公交站点的长椅",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "站立长凳" "mappings": {
"1": {
"then": "站立长凳"
}
}
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"

View file

@ -89,8 +89,7 @@
"then": "靠背:無" "then": "靠背:無"
} }
}, },
"question": "這個長椅是否有靠背?", "question": "這個長椅是否有靠背?"
"render": "靠背"
}, },
"bench-colour": { "bench-colour": {
"mappings": { "mappings": {
@ -166,8 +165,12 @@
"bench_at_pt": { "bench_at_pt": {
"name": "大眾運輸站點的長椅", "name": "大眾運輸站點的長椅",
"tagRenderings": { "tagRenderings": {
"bench_at_pt-bench": { "bench_at_pt-bench_type": {
"render": "站立長椅" "mappings": {
"1": {
"then": "站立長椅"
}
}
}, },
"bench_at_pt-name": { "bench_at_pt-name": {
"render": "{name}" "render": "{name}"
@ -251,7 +254,7 @@
} }
}, },
"question": "這個自動販賣機仍有運作嗎?", "question": "這個自動販賣機仍有運作嗎?",
"render": "運作狀態是 <i>{operational_status</i>" "render": "運作狀態是 <i>{operational_status}</i>"
} }
}, },
"title": { "title": {
@ -445,17 +448,6 @@
"render": "單車停車場" "render": "單車停車場"
} }
}, },
"charging_station": {
"tagRenderings": {
"Network": {
"question": "充電站所屬的網路是?",
"render": "{network}"
},
"OH": {
"question": "何時是充電站開放使用的時間?"
}
}
},
"ghost_bike": { "ghost_bike": {
"name": "幽靈單車", "name": "幽靈單車",
"title": { "title": {

View file

@ -39,7 +39,7 @@
} }
}, },
"question": "Em que nível se encontra este elemento?", "question": "Em que nível se encontra este elemento?",
"render": "Está no {vel}º andar" "render": "Está no {level}º andar"
}, },
"opening_hours": { "opening_hours": {
"question": "Qual é o horário de funcionamento de {name}?", "question": "Qual é o horário de funcionamento de {name}?",

View file

@ -473,7 +473,7 @@
}, },
"6": { "6": {
"question": "Welche Schwierigkeit hat hier die schwerste Route (französisch/belgisches System)?", "question": "Welche Schwierigkeit hat hier die schwerste Route (französisch/belgisches System)?",
"render": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:min} (französisch/belgisches System)" "render": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:max} (französisch/belgisches System)"
}, },
"7": { "7": {
"mappings": { "mappings": {
@ -874,8 +874,7 @@
"then": "Der Hydrant wurde entfernt." "then": "Der Hydrant wurde entfernt."
} }
}, },
"question": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten.", "question": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten."
"render": "Lebenszyklus-Status"
}, },
"hydrant-type": { "hydrant-type": {
"mappings": { "mappings": {

View file

@ -905,17 +905,16 @@
"hydrant-state": { "hydrant-state": {
"mappings": { "mappings": {
"0": { "0": {
"then": "The hydrant is (fully or partially) working." "then": "The hydrant is (fully or partially) working"
}, },
"1": { "1": {
"then": "The hydrant is unavailable." "then": "The hydrant is unavailable"
}, },
"2": { "2": {
"then": "The hydrant has been removed." "then": "The hydrant has been removed"
} }
}, },
"question": "Update the lifecycle status of the hydrant.", "question": "Is this hydrant still working?"
"render": "Lifecycle status"
}, },
"hydrant-type": { "hydrant-type": {
"mappings": { "mappings": {

View file

@ -97,7 +97,7 @@
}, },
"caravansites-name": { "caravansites-name": {
"question": "Comment s'appelle cet endroit ?", "question": "Comment s'appelle cet endroit ?",
"render": "Cet endroit s'appelle {nom}" "render": "Cet endroit s'appelle {name}"
}, },
"caravansites-sanitary-dump": { "caravansites-sanitary-dump": {
"mappings": { "mappings": {
@ -686,8 +686,7 @@
"then": "La borne a été retirée." "then": "La borne a été retirée."
} }
}, },
"question": "Mettre à jour létat de la borne.", "question": "Mettre à jour létat de la borne."
"render": "État"
}, },
"hydrant-type": { "hydrant-type": {
"mappings": { "mappings": {

View file

@ -829,8 +829,7 @@
"then": "Lidrante è stato rimosso." "then": "Lidrante è stato rimosso."
} }
}, },
"question": "Aggiorna lo stato di funzionamento dellidrante.", "question": "Aggiorna lo stato di funzionamento dellidrante."
"render": "Stato di funzionamento"
}, },
"hydrant-type": { "hydrant-type": {
"mappings": { "mappings": {

View file

@ -655,7 +655,7 @@
} }
}, },
"question": "消火栓の色は何色ですか?", "question": "消火栓の色は何色ですか?",
"render": "消火栓の色は{color}です" "render": "消火栓の色は{colour}です"
}, },
"hydrant-state": { "hydrant-state": {
"mappings": { "mappings": {
@ -669,8 +669,7 @@
"then": "消火栓が撤去されました。" "then": "消火栓が撤去されました。"
} }
}, },
"question": "消火栓のライフサイクルステータスを更新します。", "question": "消火栓のライフサイクルステータスを更新します。"
"render": "ライフサイクルステータス"
}, },
"hydrant-type": { "hydrant-type": {
"mappings": { "mappings": {

View file

@ -11,7 +11,7 @@
"start": "npm run start:prepare && npm-run-all --parallel start:parallel:*", "start": "npm run start:prepare && npm-run-all --parallel start:parallel:*",
"strt": "npm run start:prepare && npm run start:parallel:parcel", "strt": "npm run start:prepare && npm run start:parallel:parcel",
"start:prepare": "ts-node scripts/generateLayerOverview.ts --no-fail && npm run increase-memory", "start:prepare": "ts-node scripts/generateLayerOverview.ts --no-fail && npm run increase-memory",
"start:parallel:parcel": "node --max_old_space_size=8000 $(which parcel) serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.jpg assets/themes/*/*.png vendor/* vendor/*/*", "start:parallel:parcel": "node --max_old_space_size=8000 $(which parcel) serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/layers/*/*.css assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.css assets/themes/*/*.jpg assets/themes/*/*.png vendor/* vendor/*/*",
"start:parallel:tailwindcli": "tailwindcss -i index.css -o css/index-tailwind-output.css --watch", "start:parallel:tailwindcli": "tailwindcss -i index.css -o css/index-tailwind-output.css --watch",
"generate:css": "tailwindcss -i index.css -o css/index-tailwind-output.css", "generate:css": "tailwindcss -i index.css -o css/index-tailwind-output.css",
"test": "ts-node test/TestAll.ts", "test": "ts-node test/TestAll.ts",

View file

@ -188,7 +188,7 @@ class LayerOverviewUtils {
allTranslations allTranslations
.filter(t => t.tr.translations[neededLanguage] === undefined && t.tr.translations["*"] === undefined) .filter(t => t.tr.translations[neededLanguage] === undefined && t.tr.translations["*"] === undefined)
.forEach(missing => { .forEach(missing => {
themeErrorCount.push("The theme " + theme.id + " should be translation-complete for " + neededLanguage + ", but it lacks a translation for " + missing.context) themeErrorCount.push("The theme " + theme.id + " should be translation-complete for " + neededLanguage + ", but it lacks a translation for " + missing.context+".\n\tThe full translation is "+missing.tr.translations)
}) })
} }