forked from MapComplete/MapComplete
		
	Add bike cafes
This commit is contained in:
		
							parent
							
								
									e4df5ffcb4
								
							
						
					
					
						commit
						581ec9d2a7
					
				
					 11 changed files with 292 additions and 90 deletions
				
			
		| 
						 | 
					@ -0,0 +1,73 @@
 | 
				
			||||||
 | 
					import {LayerDefinition} from "../LayerDefinition";
 | 
				
			||||||
 | 
					import FixedText from "../Questions/FixedText";
 | 
				
			||||||
 | 
					import {ImageCarouselWithUploadConstructor} from "../../UI/Image/ImageCarouselWithUpload";
 | 
				
			||||||
 | 
					import Translations from "../../UI/i18n/Translations";
 | 
				
			||||||
 | 
					import CafeName from "../Questions/bike/CafeName";
 | 
				
			||||||
 | 
					import { Or, And, Tag, anyValueExcept, Regex } from "../../Logic/TagsFilter";
 | 
				
			||||||
 | 
					import { PhoneNumberQuestion } from "../Questions/PhoneNumberQuestion";
 | 
				
			||||||
 | 
					import Website from "../Questions/Website";
 | 
				
			||||||
 | 
					import CafeRepair from "../Questions/bike/CafeRepair";
 | 
				
			||||||
 | 
					import CafeDiy from "../Questions/bike/CafeDiy";
 | 
				
			||||||
 | 
					import CafePump from "../Questions/bike/CafePump";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class BikeCafes extends LayerDefinition {
 | 
				
			||||||
 | 
					    private readonly repairsBikes = anyValueExcept("service:bicycle:repair", "no")
 | 
				
			||||||
 | 
					    private readonly hasPump = new Tag("service:bicycle:pump", "yes")
 | 
				
			||||||
 | 
					    private readonly diy = new Tag("service:bicycle:diy", "yes")
 | 
				
			||||||
 | 
					    private readonly bikeServices = [
 | 
				
			||||||
 | 
					        this.diy,
 | 
				
			||||||
 | 
					        this.repairsBikes,
 | 
				
			||||||
 | 
					        this.hasPump
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					    private readonly to = Translations.t.cyclofix.cafe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    constructor() {
 | 
				
			||||||
 | 
					        super();
 | 
				
			||||||
 | 
					        this.name = this.to.name;
 | 
				
			||||||
 | 
					        this.icon = "./assets/bike/cafe.svg";
 | 
				
			||||||
 | 
					        this.overpassFilter = new And([
 | 
				
			||||||
 | 
					            new Or([
 | 
				
			||||||
 | 
					                new Regex("amenity", "^pub|bar|cafe")
 | 
				
			||||||
 | 
					            ]),
 | 
				
			||||||
 | 
					            new Or([
 | 
				
			||||||
 | 
					                ...this.bikeServices,
 | 
				
			||||||
 | 
					                new Tag("pub", "cycling")
 | 
				
			||||||
 | 
					            ])
 | 
				
			||||||
 | 
					        ]) 
 | 
				
			||||||
 | 
					        this.newElementTags = [
 | 
				
			||||||
 | 
					            new Tag("amenity", "pub"),
 | 
				
			||||||
 | 
					            new Tag("pub", "cycling"),
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        this.maxAllowedOverlapPercentage = 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.minzoom = 13;
 | 
				
			||||||
 | 
					        this.style = this.generateStyleFunction();
 | 
				
			||||||
 | 
					        this.title = new FixedText(this.to.title)
 | 
				
			||||||
 | 
					        this.elementsToShow = [
 | 
				
			||||||
 | 
					            new ImageCarouselWithUploadConstructor(),
 | 
				
			||||||
 | 
					            new CafeName(),
 | 
				
			||||||
 | 
					            new PhoneNumberQuestion("{name}"),
 | 
				
			||||||
 | 
					            new Website("{name}"),
 | 
				
			||||||
 | 
					            new CafeRepair(),
 | 
				
			||||||
 | 
					            new CafeDiy(),
 | 
				
			||||||
 | 
					            new CafePump()
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        this.wayHandling = LayerDefinition.WAYHANDLING_CENTER_AND_WAY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private generateStyleFunction() {
 | 
				
			||||||
 | 
					        const self = this;
 | 
				
			||||||
 | 
					        return function (properties: any) {
 | 
				
			||||||
 | 
					            return {
 | 
				
			||||||
 | 
					                color: "#00bb00",
 | 
				
			||||||
 | 
					                icon: {
 | 
				
			||||||
 | 
					                    iconUrl: self.icon,
 | 
				
			||||||
 | 
					                    iconSize: [50, 50],
 | 
				
			||||||
 | 
					                    iconAnchor: [25,50]
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
import { LayerDefinition } from "../LayerDefinition";
 | 
					import { LayerDefinition } from "../LayerDefinition";
 | 
				
			||||||
import Translations from "../../UI/i18n/Translations";
 | 
					import Translations from "../../UI/i18n/Translations";
 | 
				
			||||||
import {And, Tag, Or} from "../../Logic/TagsFilter";
 | 
					import {And, Tag, Or, anyValueExcept} from "../../Logic/TagsFilter";
 | 
				
			||||||
import { ImageCarouselWithUploadConstructor } from "../../UI/Image/ImageCarouselWithUpload";
 | 
					import { ImageCarouselWithUploadConstructor } from "../../UI/Image/ImageCarouselWithUpload";
 | 
				
			||||||
import ShopRetail from "../Questions/bike/ShopRetail";
 | 
					import ShopRetail from "../Questions/bike/ShopRetail";
 | 
				
			||||||
import ShopPump from "../Questions/bike/ShopPump";
 | 
					import ShopPump from "../Questions/bike/ShopPump";
 | 
				
			||||||
| 
						 | 
					@ -14,13 +14,6 @@ import { PhoneNumberQuestion } from "../Questions/PhoneNumberQuestion";
 | 
				
			||||||
import Website from "../Questions/Website";
 | 
					import Website from "../Questions/Website";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function anyValueExcept(key: string, exceptValue: string) {
 | 
					 | 
				
			||||||
    return new And([
 | 
					 | 
				
			||||||
        new Tag(key, "*"),
 | 
					 | 
				
			||||||
        new Tag(key, exceptValue, true)
 | 
					 | 
				
			||||||
    ])
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default class BikeOtherShops extends LayerDefinition {
 | 
					export default class BikeOtherShops extends LayerDefinition {
 | 
				
			||||||
    private readonly sellsBikes = new Tag("service:bicycle:retail", "yes")
 | 
					    private readonly sellsBikes = new Tag("service:bicycle:retail", "yes")
 | 
				
			||||||
    private readonly repairsBikes = anyValueExcept("service:bicycle:repair", "no")
 | 
					    private readonly repairsBikes = anyValueExcept("service:bicycle:repair", "no")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ import Translations from "../../UI/i18n/Translations";
 | 
				
			||||||
import {DrinkingWater} from "../Layers/DrinkingWater";
 | 
					import {DrinkingWater} from "../Layers/DrinkingWater";
 | 
				
			||||||
import Combine from "../../UI/Base/Combine";
 | 
					import Combine from "../../UI/Base/Combine";
 | 
				
			||||||
import BikeOtherShops from "../Layers/BikeOtherShops";
 | 
					import BikeOtherShops from "../Layers/BikeOtherShops";
 | 
				
			||||||
 | 
					import BikeCafes from "../Layers/BikeCafes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class Cyclofix extends Layout {
 | 
					export default class Cyclofix extends Layout {
 | 
				
			||||||
| 
						 | 
					@ -14,7 +15,7 @@ export default class Cyclofix extends Layout {
 | 
				
			||||||
            "cyclofix",
 | 
					            "cyclofix",
 | 
				
			||||||
            ["en", "nl", "fr"],
 | 
					            ["en", "nl", "fr"],
 | 
				
			||||||
            Translations.t.cyclofix.title,
 | 
					            Translations.t.cyclofix.title,
 | 
				
			||||||
            [new BikeServices(), new BikeShops(), new DrinkingWater(), new BikeParkings(), new BikeOtherShops()],
 | 
					            [new BikeServices(), new BikeShops(), new DrinkingWater(), new BikeParkings(), new BikeOtherShops(), new BikeCafes()],
 | 
				
			||||||
            16,
 | 
					            16,
 | 
				
			||||||
            50.8465573,
 | 
					            50.8465573,
 | 
				
			||||||
            4.3516970,
 | 
					            4.3516970,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ export default class Website extends TagRenderingOptions {
 | 
				
			||||||
        super({
 | 
					        super({
 | 
				
			||||||
            question: Translations.t.general.questions.websiteOf.Subs({category: category}),
 | 
					            question: Translations.t.general.questions.websiteOf.Subs({category: category}),
 | 
				
			||||||
            freeform: {
 | 
					            freeform: {
 | 
				
			||||||
                renderTemplate: Translations.t.general.questions.websiteIs.Subs({category: category}),
 | 
					                renderTemplate: Translations.t.general.questions.websiteIs,
 | 
				
			||||||
                template: "$phone$",
 | 
					                template: "$phone$",
 | 
				
			||||||
                key: "phone"
 | 
					                key: "phone"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								Customizations/Questions/bike/CafeDiy.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Customizations/Questions/bike/CafeDiy.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					import {TagRenderingOptions} from "../../TagRendering";
 | 
				
			||||||
 | 
					import {Tag} from "../../../Logic/TagsFilter";
 | 
				
			||||||
 | 
					import Translations from "../../../UI/i18n/Translations";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class CafeDiy extends TagRenderingOptions {
 | 
				
			||||||
 | 
					    constructor() {
 | 
				
			||||||
 | 
					        const key = 'service:bicycle:diy'
 | 
				
			||||||
 | 
					        const to = Translations.t.cyclofix.cafe.diy
 | 
				
			||||||
 | 
					        super({
 | 
				
			||||||
 | 
					            question: to.question,
 | 
				
			||||||
 | 
					            mappings: [
 | 
				
			||||||
 | 
					                {k: new Tag(key, "yes"), txt: to.yes},
 | 
				
			||||||
 | 
					                {k: new Tag(key, "no"), txt: to.no},
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								Customizations/Questions/bike/CafeName.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Customizations/Questions/bike/CafeName.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					import {TagRenderingOptions} from "../../TagRendering";
 | 
				
			||||||
 | 
					import Translations from "../../../UI/i18n/Translations";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class CafeName extends TagRenderingOptions {
 | 
				
			||||||
 | 
					    constructor() {
 | 
				
			||||||
 | 
					        const to = Translations.t.cyclofix.cafe.qName
 | 
				
			||||||
 | 
					        super({
 | 
				
			||||||
 | 
					            question: to.question,
 | 
				
			||||||
 | 
					            freeform: {
 | 
				
			||||||
 | 
					                key: "name",
 | 
				
			||||||
 | 
					                renderTemplate: to.render,
 | 
				
			||||||
 | 
					                template: to.template
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								Customizations/Questions/bike/CafePump.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Customizations/Questions/bike/CafePump.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					import {TagRenderingOptions} from "../../TagRendering";
 | 
				
			||||||
 | 
					import {Tag} from "../../../Logic/TagsFilter";
 | 
				
			||||||
 | 
					import Translations from "../../../UI/i18n/Translations";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class CafePump extends TagRenderingOptions {
 | 
				
			||||||
 | 
					    constructor() {
 | 
				
			||||||
 | 
					        const key = 'service:bicycle:pump'
 | 
				
			||||||
 | 
					        const to = Translations.t.cyclofix.cafe.pump
 | 
				
			||||||
 | 
					        super({
 | 
				
			||||||
 | 
					            question: to.question,
 | 
				
			||||||
 | 
					            mappings: [
 | 
				
			||||||
 | 
					                {k: new Tag(key, "yes"), txt: to.yes},
 | 
				
			||||||
 | 
					                {k: new Tag(key, "no"), txt: to.no},
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								Customizations/Questions/bike/CafeRepair.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Customizations/Questions/bike/CafeRepair.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					import {TagRenderingOptions} from "../../TagRendering";
 | 
				
			||||||
 | 
					import {Tag} from "../../../Logic/TagsFilter";
 | 
				
			||||||
 | 
					import Translations from "../../../UI/i18n/Translations";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class CafeRepair extends TagRenderingOptions {
 | 
				
			||||||
 | 
					    constructor() {
 | 
				
			||||||
 | 
					        const key = 'service:bicycle:repair'
 | 
				
			||||||
 | 
					        const to = Translations.t.cyclofix.cafe.repair
 | 
				
			||||||
 | 
					        super({
 | 
				
			||||||
 | 
					            question: to.question,
 | 
				
			||||||
 | 
					            mappings: [
 | 
				
			||||||
 | 
					                {k: new Tag(key, "yes"), txt: to.yes},
 | 
				
			||||||
 | 
					                {k: new Tag(key, "no"), txt: to.no}
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@ import {Tag} from "../../../Logic/TagsFilter";
 | 
				
			||||||
import Translations from "../../../UI/i18n/Translations";
 | 
					import Translations from "../../../UI/i18n/Translations";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class ShopPump extends TagRenderingOptions {
 | 
					export default class ShopDiy extends TagRenderingOptions {
 | 
				
			||||||
    constructor() {
 | 
					    constructor() {
 | 
				
			||||||
        const key = 'service:bicycle:diy'
 | 
					        const key = 'service:bicycle:diy'
 | 
				
			||||||
        const to = Translations.t.cyclofix.shop.diy
 | 
					        const to = Translations.t.cyclofix.shop.diy
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,6 +111,14 @@ export class Tag extends TagsFilter {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function anyValueExcept(key: string, exceptValue: string) {
 | 
				
			||||||
 | 
					    return new And([
 | 
				
			||||||
 | 
					        new Tag(key, "*"),
 | 
				
			||||||
 | 
					        new Tag(key, exceptValue, true)
 | 
				
			||||||
 | 
					    ])
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class Or extends TagsFilter {
 | 
					export class Or extends TagsFilter {
 | 
				
			||||||
    public or: TagsFilter[]
 | 
					    public or: TagsFilter[]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -263,147 +263,203 @@ export default class Translations {
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                services: {
 | 
					                services: {
 | 
				
			||||||
                    question: new T({
 | 
					                    question: new T({
 | 
				
			||||||
                        en: 'Which services are available at this bike station?',
 | 
					                        en: "Which services are available at this bike station?",
 | 
				
			||||||
                        nl: 'Welke functies biedt dit fietspunt?',
 | 
					                        nl: "Welke functies biedt dit fietspunt?",
 | 
				
			||||||
                        fr: 'Quels services sont valables à cette station vélo?'
 | 
					                        fr: "Quels services sont valables à cette station vélo?"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    pump: new T({
 | 
					                    pump: new T({
 | 
				
			||||||
                        // Note: this previously read: a pump is available. It is not because the pump is present, that it is available (e.g. broken)
 | 
					                        // Note: this previously read: a pump is available. It is not because the pump is present, that it is available (e.g. broken)
 | 
				
			||||||
                        en: 'There is only a pump present',
 | 
					                        en: "There is only a pump present",
 | 
				
			||||||
                        nl: 'Er is enkel een pomp aanwezig',
 | 
					                        nl: "Er is enkel een pomp aanwezig",
 | 
				
			||||||
                        fr: 'Il y a seulement une pompe'
 | 
					                        fr: "Il y a seulement une pompe"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    tools: new T({
 | 
					                    tools: new T({
 | 
				
			||||||
                        en: 'There are only tools (screwdrivers, pliers...) aanwezig',
 | 
					                        en: "There are only tools (screwdrivers, pliers...) aanwezig",
 | 
				
			||||||
                        nl: 'Er is enkel gereedschap aanwezig (schroevendraaier, tang...)',
 | 
					                        nl: "Er is enkel gereedschap aanwezig (schroevendraaier, tang...)",
 | 
				
			||||||
                        fr: 'Il y a seulement des outils (tournevis, pinces...'
 | 
					                        fr: "Il y a seulement des outils (tournevis, pinces..."
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    both: new T({
 | 
					                    both: new T({
 | 
				
			||||||
                        en: 'There are both tools and a pump present',
 | 
					                        en: "There are both tools and a pump present",
 | 
				
			||||||
                        nl: 'Er is zowel een pomp als gereedschap aanwezig',
 | 
					                        nl: "Er is zowel een pomp als gereedschap aanwezig",
 | 
				
			||||||
                        fr: 'IL y a des outils et une pompe'
 | 
					                        fr: "IL y a des outils et une pompe"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                stand: {
 | 
					                stand: {
 | 
				
			||||||
                    question: new T({
 | 
					                    question: new T({
 | 
				
			||||||
                        en: 'Does this bike station have a hook to suspend your bike with or a stand to elevate it?',
 | 
					                        en: "Does this bike station have a hook to suspend your bike with or a stand to elevate it?",
 | 
				
			||||||
                        nl: 'Heeft dit herstelpunt een haak of standaard om je fiets op te hangen/zetten?',
 | 
					                        nl: "Heeft dit herstelpunt een haak of standaard om je fiets op te hangen/zetten?",
 | 
				
			||||||
                        fr: 'Est-ce que cette station vélo à un crochet pour suspendre son velo ou une accroche pour l\'élevé?'
 | 
					                        fr: "Est-ce que cette station vélo à un crochet pour suspendre son velo ou une accroche pour l'élevé?"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    yes: new T({en: 'There is a hook or stand', nl: 'Er is een haak of standaard', fr: 'Oui il y a un crochet ou une accroche'}),
 | 
					                    yes: new T({en: "There is a hook or stand", nl: "Er is een haak of standaard", fr: "Oui il y a un crochet ou une accroche"}),
 | 
				
			||||||
                    no: new T({en: 'There is no hook or stand', nl: 'Er is geen haak of standaard', fr: 'Non il n\'y pas de crochet ou d\'accroche'}),
 | 
					                    no: new T({en: "There is no hook or stand", nl: "Er is geen haak of standaard", fr: "Non il n'y pas de crochet ou d'accroche"}),
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            shop: {
 | 
					            shop: {
 | 
				
			||||||
                name: new T({en: 'bike repair/shop', nl: 'fietszaak', fr: 'magasin ou réparateur de vélo'}),
 | 
					                name: new T({en: "bike repair/shop", nl: "fietszaak", fr: "magasin ou réparateur de vélo"}),
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                title: new T({en: 'Bike repair/shop', nl: 'Fietszaak', fr: 'Magasin et réparateur de vélo'}),
 | 
					                title: new T({en: "Bike repair/shop", nl: "Fietszaak", fr: "Magasin et réparateur de vélo"}),
 | 
				
			||||||
                titleRepair: new T({en: 'Bike repair', nl: 'Fietsenmaker', fr: 'Réparateur de vélo'}),
 | 
					                titleRepair: new T({en: "Bike repair", nl: "Fietsenmaker", fr: "Réparateur de vélo"}),
 | 
				
			||||||
                titleShop: new T({en: 'Bike shop', nl: 'Fietswinkel', fr: 'Magasin de vélo'}),
 | 
					                titleShop: new T({en: "Bike shop", nl: "Fietswinkel", fr: "Magasin de vélo"}),
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                titleNamed: new T({en: 'Bike repair/shop {name}', nl: 'Fietszaak {name}', fr: 'Magasin et réparateur de vélo {name}'}),
 | 
					                titleNamed: new T({en: "Bike repair/shop {name}", nl: "Fietszaak {name}", fr: "Magasin et réparateur de vélo {name}"}),
 | 
				
			||||||
                titleRepairNamed: new T({en: 'Bike repair {name}', nl: 'Fietsenmaker {name}', fr: 'Réparateur de vélo {name}'}),
 | 
					                titleRepairNamed: new T({en: "Bike repair {name}", nl: "Fietsenmaker {name}", fr: "Réparateur de vélo {name}"}),
 | 
				
			||||||
                titleShopNamed: new T({en: 'Bike shop {name}', nl: 'Fietswinkel {name}', fr: 'Magasin de vélo {name}'}),
 | 
					                titleShopNamed: new T({en: "Bike shop {name}", nl: "Fietswinkel {name}", fr: "Magasin de vélo {name}"}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                retail: {
 | 
					                retail: {
 | 
				
			||||||
                    question: new T({
 | 
					                    question: new T({
 | 
				
			||||||
                        en: 'Does this shop sell bikes?',
 | 
					                        en: "Does this shop sell bikes?",
 | 
				
			||||||
                        nl: 'Verkoopt deze winkel fietsen?',
 | 
					                        nl: "Verkoopt deze winkel fietsen?",
 | 
				
			||||||
                        fr: 'Est-ce que ce magasin vend des vélos?'
 | 
					                        fr: "Est-ce que ce magasin vend des vélos?"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    yes: new T({en: 'This shop sells bikes', nl: 'Deze winkel verkoopt fietsen', fr: 'Ce magasin vend des vélos'}),
 | 
					                    yes: new T({en: "This shop sells bikes", nl: "Deze winkel verkoopt fietsen", fr: "Ce magasin vend des vélos"}),
 | 
				
			||||||
                    no: new T({
 | 
					                    no: new T({
 | 
				
			||||||
                        en: 'This shop doesn\'t sell bikes',
 | 
					                        en: "This shop doesn't sell bikes",
 | 
				
			||||||
                        nl: 'Deze winkel verkoopt geen fietsen',
 | 
					                        nl: "Deze winkel verkoopt geen fietsen",
 | 
				
			||||||
                        fr: 'Ce magasin ne vend pas de vélo'
 | 
					                        fr: "Ce magasin ne vend pas de vélo"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                repair: {
 | 
					                repair: {
 | 
				
			||||||
                    question: new T({
 | 
					                    question: new T({
 | 
				
			||||||
                        en: 'Does this shop repair bikes?',
 | 
					                        en: "Does this shop repair bikes?",
 | 
				
			||||||
                        nl: 'Verkoopt deze winkel fietsen?',
 | 
					                        nl: "Herstelt deze winkel fietsen?",
 | 
				
			||||||
                        fr: 'Est-ce que ce magasin répare des vélos?'
 | 
					                        fr: "Est-ce que ce magasin répare des vélos?"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    yes: new T({en: 'This shop repairs bikes', nl: 'Deze winkel herstelt fietsen', fr: 'Ce magasin répare des vélos'}),
 | 
					                    yes: new T({en: "This shop repairs bikes", nl: "Deze winkel herstelt fietsen", fr: "Ce magasin répare des vélos"}),
 | 
				
			||||||
                    no: new T({
 | 
					                    no: new T({
 | 
				
			||||||
                        en: 'This shop doesn\'t repair bikes',
 | 
					                        en: "This shop doesn;t repair bikes",
 | 
				
			||||||
                        nl: 'Deze winkel herstelt geen fietsen',
 | 
					                        nl: "Deze winkel herstelt geen fietsen",
 | 
				
			||||||
                        fr: 'Ce magasin ne répare pas les vélos'
 | 
					                        fr: "Ce magasin ne répare pas les vélos"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    sold: new T({en: 'This shop only repairs bikes bought here', nl: 'Deze winkel herstelt enkel fietsen die hier werden gekocht', fr: 'Ce magasin ne répare seulement les vélos achetés là-bas'}),
 | 
					                    sold: new T({en: "This shop only repairs bikes bought here", nl: "Deze winkel herstelt enkel fietsen die hier werden gekocht", fr: "Ce magasin ne répare seulement les vélos achetés là-bas"}),
 | 
				
			||||||
                    brand: new T({en: 'This shop only repairs bikes of a certain brand', nl: 'Deze winkel herstelt enkel fietsen van een bepaald merk', fr: 'Ce magasin ne répare seulement des marques spécifiques'}),
 | 
					                    brand: new T({en: "This shop only repairs bikes of a certain brand", nl: "Deze winkel herstelt enkel fietsen van een bepaald merk", fr: "Ce magasin ne répare seulement des marques spécifiques"}),
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                rental: {
 | 
					                rental: {
 | 
				
			||||||
                    question: new T({
 | 
					                    question: new T({
 | 
				
			||||||
                        en: 'Does this shop rent out bikes?',
 | 
					                        en: "Does this shop rent out bikes?",
 | 
				
			||||||
                        nl: 'Verhuurt deze winkel fietsen?',
 | 
					                        nl: "Verhuurt deze winkel fietsen?",
 | 
				
			||||||
                        fr: 'Est-ce ce magasin loue des vélos?'
 | 
					                        fr: "Est-ce ce magasin loue des vélos?"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    yes: new T({en: 'This shop rents out bikes', nl: 'Deze winkel verhuurt fietsen', fr: 'Ce magasin loue des vélos'}),
 | 
					                    yes: new T({en: "This shop rents out bikes", nl: "Deze winkel verhuurt fietsen", fr: "Ce magasin loue des vélos"}),
 | 
				
			||||||
                    no: new T({
 | 
					                    no: new T({
 | 
				
			||||||
                        en: 'This shop doesn\'t rent out bikes',
 | 
					                        en: "This shop doesn't rent out bikes",
 | 
				
			||||||
                        nl: 'Deze winkel verhuurt geen fietsen',
 | 
					                        nl: "Deze winkel verhuurt geen fietsen",
 | 
				
			||||||
                        fr: 'Ce magasin ne loue pas de vélos'
 | 
					                        fr: "Ce magasin ne loue pas de vélos"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                pump: {
 | 
					                pump: {
 | 
				
			||||||
                    question: new T({
 | 
					                    question: new T({
 | 
				
			||||||
                        en: 'Does this shop offer a bike pump for use by anyone?',
 | 
					                        en: "Does this shop offer a bike pump for use by anyone?",
 | 
				
			||||||
                        nl: 'Biedt deze winkel een fietspomp aan voor iedereen?',
 | 
					                        nl: "Biedt deze winkel een fietspomp aan voor iedereen?",
 | 
				
			||||||
                        fr: 'Est-ce que ce magasin offre une pompe en accès libre?'
 | 
					                        fr: "Est-ce que ce magasin offre une pompe en accès libre?"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    yes: new T({
 | 
					                    yes: new T({
 | 
				
			||||||
                        en: 'This shop offers a bike pump for anyone',
 | 
					                        en: "This shop offers a bike pump for anyone",
 | 
				
			||||||
                        nl: 'Deze winkel biedt geen fietspomp aan voor eender wie',
 | 
					                        nl: "Deze winkel biedt geen fietspomp aan voor eender wie",
 | 
				
			||||||
                        fr: 'Ce magasin offre une pompe en acces libre'
 | 
					                        fr: "Ce magasin offre une pompe en acces libre"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    no: new T({
 | 
					                    no: new T({
 | 
				
			||||||
                        en: 'This shop doesn\'t offer a bike pump for anyone',
 | 
					                        en: "This shop doesn't offer a bike pump for anyone",
 | 
				
			||||||
                        nl: 'Deze winkel biedt een fietspomp aan voor iedereen',
 | 
					                        nl: "Deze winkel biedt een fietspomp aan voor iedereen",
 | 
				
			||||||
                        fr: 'Ce magasin n\offre pas de pompe en libre accès'
 | 
					                        fr: "Ce magasin n'offre pas de pompe en libre accès"
 | 
				
			||||||
                    })
 | 
					                    })
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                qName: {
 | 
					                qName: {
 | 
				
			||||||
                    question: new T({en: 'What is the name of this bicycle shop?', nl: 'Wat is de naam van deze fietszaak?', fr: 'Quel est le nom du magasin de vélo?'}),
 | 
					                    question: new T({en: "What is the name of this bicycle shop?", nl: "Wat is de naam van deze fietszaak?", fr: "Quel est le nom du magasin de vélo?"}),
 | 
				
			||||||
                    render: new T({en: 'This bicycle shop is called {name}', nl: 'Deze fietszaak heet <b>{name}</b>', fr: 'Ce magasin s\appelle <b>{name}</b>'}),
 | 
					                    render: new T({en: "This bicycle shop is called {name}", nl: "Deze fietszaak heet <b>{name}</b>", fr: "Ce magasin s'appelle <b>{name}</b>"}),
 | 
				
			||||||
                    template: new T({en: 'This bicycle shop is called: $$$', nl: 'Deze fietszaak heet: <b>$$$</b>', fr: 'Ce magasin s\appelle <b>{$$$</b>'})
 | 
					                    template: new T({en: "This bicycle shop is called: $$$", nl: "Deze fietszaak heet: <b>$$$</b>", fr: "Ce magasin s'appelle <b>$$$</b>"})
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                secondHand: {
 | 
					                secondHand: {
 | 
				
			||||||
                    question: new T({en: 'Does this shop sell second-hand bikes?', nl: 'Verkoopt deze winkel tweedehands fietsen?', fr: 'Est-ce ce magasin vend des vélos d\'occasion'}),
 | 
					                    question: new T({en: "Does this shop sell second-hand bikes?", nl: "Verkoopt deze winkel tweedehands fietsen?", fr: "Est-ce ce magasin vend des vélos d'occasion"}),
 | 
				
			||||||
                    yes: new T({en: 'This shop sells second-hand bikes', nl: 'Deze winkel verkoopt tweedehands fietsen', fr: 'Ce magasin vend des vélos d\'occasion'}),
 | 
					                    yes: new T({en: "This shop sells second-hand bikes", nl: "Deze winkel verkoopt tweedehands fietsen", fr: "Ce magasin vend des vélos d'occasion"}),
 | 
				
			||||||
                    no: new T({en: 'This shop doesn\'t sell second-hand bikes', nl: 'Deze winkel verkoopt geen tweedehands fietsen', fr: 'Ce magasin ne vend pas de vélos d\'occasion'}),
 | 
					                    no: new T({en: "This shop doesn't sell second-hand bikes", nl: "Deze winkel verkoopt geen tweedehands fietsen", fr: "Ce magasin ne vend pas de vélos d'occasion"}),
 | 
				
			||||||
                    only: new T({en: 'This shop only sells second-hand bikes', nl: 'Deze winkel verkoopt enkel tweedehands fietsen', fr: 'Ce magasin vend seulement des vélos d\'occasion'}),
 | 
					                    only: new T({en: "This shop only sells second-hand bikes", nl: "Deze winkel verkoopt enkel tweedehands fietsen", fr: "Ce magasin vend seulement des vélos d'occasion"}),
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                diy: {
 | 
					                diy: {
 | 
				
			||||||
                    question: new T({
 | 
					                    question: new T({
 | 
				
			||||||
                        en: 'Are there tools here to repair your own bike?',
 | 
					                        en: "Are there tools here to repair your own bike?",
 | 
				
			||||||
                        nl: 'Biedt deze winkel gereedschap aan om je fiets zelf te herstellen?',
 | 
					                        nl: "Biedt deze winkel gereedschap aan om je fiets zelf te herstellen?",
 | 
				
			||||||
                        fr: 'Est-ce qu\'il y a des outils pour réparer son vélo dans ce magasin?',
 | 
					                        fr: "Est-ce qu'il y a des outils pour réparer son vélo dans ce magasin?",
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    yes: new T({
 | 
					                    yes: new T({
 | 
				
			||||||
                        en: 'This shop offers tools for DIY repair',
 | 
					                        en: "This shop offers tools for DIY repair",
 | 
				
			||||||
                        nl: 'Deze winkel biedt gereedschap aan om je fiets zelf te herstellen',
 | 
					                        nl: "Deze winkel biedt gereedschap aan om je fiets zelf te herstellen",
 | 
				
			||||||
                        fr: 'Ce magasin offre des outils pour réparer son vélo soi-même'
 | 
					                        fr: "Ce magasin offre des outils pour réparer son vélo soi-même"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                    no: new T({
 | 
					                    no: new T({
 | 
				
			||||||
                        en: 'This shop doesn\'t offer tools for DIY repair',
 | 
					                        en: "This shop doesn't offer tools for DIY repair",
 | 
				
			||||||
                        nl: 'Deze winkel biedt geen gereedschap aan om je fiets zelf te herstellen',
 | 
					                        nl: "Deze winkel biedt geen gereedschap aan om je fiets zelf te herstellen",
 | 
				
			||||||
                        fr: 'Ce magasin n\'offre pas des outils pour réparer son vélo soi-même'
 | 
					                        fr: "Ce magasin n'offre pas des outils pour réparer son vélo soi-même"
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
 | 
					            cafe: {
 | 
				
			||||||
 | 
					                name: new T({en: "bike cafe", nl: "fietscafé", fr: "TODO: fr"}),
 | 
				
			||||||
 | 
					                title: new T({en: "Bike cafe", nl: "fietscafé", fr: "TODO: fr"}),
 | 
				
			||||||
 | 
					                qName: {
 | 
				
			||||||
 | 
					                    question: new T({en: "What is the name of this bike cafe?", nl: "Wat is de naam van dit fietscafé?", fr: "TODO: fr"}),
 | 
				
			||||||
 | 
					                    render: new T({en: "This bike cafe is called {name}", nl: "Dit fietscafé heet <b>{name}</b>", fr: "TODO: fr"}),
 | 
				
			||||||
 | 
					                    template: new T({en: "This bike cafe is called: $$$", nl: "Dit fietscafé heet: <b>$$$</b>", fr: "TODO: fr"})
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                repair: {
 | 
				
			||||||
 | 
					                    question: new T({
 | 
				
			||||||
 | 
					                        en: "Does this bike cafe repair bikes?",
 | 
				
			||||||
 | 
					                        nl: "Verkoopt dit fietscafé fietsen?",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr?"
 | 
				
			||||||
 | 
					                    }),
 | 
				
			||||||
 | 
					                    yes: new T({en: "This bike cafe repairs bikes", nl: "Dit fietscafé herstelt fietsen", fr: "TODO: fr"}),
 | 
				
			||||||
 | 
					                    no: new T({
 | 
				
			||||||
 | 
					                        en: "This bike cafe doesn;t repair bikes",
 | 
				
			||||||
 | 
					                        nl: "Dit fietscafé herstelt geen fietsen",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr"
 | 
				
			||||||
 | 
					                    })
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                pump: {
 | 
				
			||||||
 | 
					                    question: new T({
 | 
				
			||||||
 | 
					                        en: "Does this bike cafe offer a bike pump for use by anyone?",
 | 
				
			||||||
 | 
					                        nl: "Biedt dit fietscafé een fietspomp aan voor iedereen?",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr"
 | 
				
			||||||
 | 
					                    }),
 | 
				
			||||||
 | 
					                    yes: new T({
 | 
				
			||||||
 | 
					                        en: "This bike cafe offers a bike pump for anyone",
 | 
				
			||||||
 | 
					                        nl: "Dit fietscafé biedt geen fietspomp aan voor eender wie",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr"
 | 
				
			||||||
 | 
					                    }),
 | 
				
			||||||
 | 
					                    no: new T({
 | 
				
			||||||
 | 
					                        en: "This bike cafe doesn't offer a bike pump for anyone",
 | 
				
			||||||
 | 
					                        nl: "Dit fietscafé biedt een fietspomp aan voor iedereen",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr"
 | 
				
			||||||
 | 
					                    })
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                diy: {
 | 
				
			||||||
 | 
					                    question: new T({
 | 
				
			||||||
 | 
					                        en: "Are there tools here to repair your own bike?",
 | 
				
			||||||
 | 
					                        nl: "Biedt dit fietscafé gereedschap aan om je fiets zelf te herstellen?",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr",
 | 
				
			||||||
 | 
					                    }),
 | 
				
			||||||
 | 
					                    yes: new T({
 | 
				
			||||||
 | 
					                        en: "This bike cafe offers tools for DIY repair",
 | 
				
			||||||
 | 
					                        nl: "Dit fietscafé biedt gereedschap aan om je fiets zelf te herstellen",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr"
 | 
				
			||||||
 | 
					                    }),
 | 
				
			||||||
 | 
					                    no: new T({
 | 
				
			||||||
 | 
					                        en: "This bike cafe doesn't offer tools for DIY repair",
 | 
				
			||||||
 | 
					                        nl: "Dit fietscafé biedt geen gereedschap aan om je fiets zelf te herstellen",
 | 
				
			||||||
 | 
					                        fr: "TODO: fr"
 | 
				
			||||||
 | 
					                    })
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            nonBikeShop: {             
 | 
					            nonBikeShop: {             
 | 
				
			||||||
                name: new T({en: 'shop that sells/repairs bikes', nl: 'winkel die fietsen verkoopt/herstelt', fr: 'TODO: fr'}),
 | 
					                name: new T({en: "shop that sells/repairs bikes", nl: "winkel die fietsen verkoopt/herstelt", fr: "TODO: fr"}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                title: new T({en: 'Shop that sells/repairs bikes', nl: 'Winkel die fietsen verkoopt/herstelt', fr: 'TODO: fr'}),
 | 
					                title: new T({en: "Shop that sells/repairs bikes", nl: "Winkel die fietsen verkoopt/herstelt", fr: "TODO: fr"}),
 | 
				
			||||||
                titleRepair: new T({en: 'Shop that repairs bikes', nl: 'Winkel die fietsen herstelt', fr: 'TODO: fr'}),
 | 
					                titleRepair: new T({en: "Shop that repairs bikes", nl: "Winkel die fietsen herstelt", fr: "TODO: fr"}),
 | 
				
			||||||
                titleShop: new T({en: 'Shop that sells bikes', nl: 'Winkel die fietsen verkoopt', fr: 'TODO: fr'}),
 | 
					                titleShop: new T({en: "Shop that sells bikes", nl: "Winkel die fietsen verkoopt", fr: "TODO: fr"}),
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                titleNamed: new T({en: '{name} (sells/repairs bikes)', nl: '{name} (verkoopt/herstelt fietsen)', fr: 'TODO: fr'}),
 | 
					                titleNamed: new T({en: "{name} (sells/repairs bikes)", nl: "{name} (verkoopt/herstelt fietsen)", fr: "TODO: fr"}),
 | 
				
			||||||
                titleRepairNamed: new T({en: '{name} (repairs bikes)', nl: '{name} (herstelt fietsen)', fr: 'TODO: fr'}),
 | 
					                titleRepairNamed: new T({en: "{name} (repairs bikes)", nl: "{name} (herstelt fietsen)", fr: "TODO: fr"}),
 | 
				
			||||||
                titleShopNamed: new T({en: '{name} (sells bikes)', nl: '{name} (verkoopt fietsen)', fr: 'TODO: fr'}),
 | 
					                titleShopNamed: new T({en: "{name} (sells bikes)", nl: "{name} (verkoopt fietsen)", fr: "TODO: fr"}),
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            drinking_water: {
 | 
					            drinking_water: {
 | 
				
			||||||
                title: new T({
 | 
					                title: new T({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue