diff --git a/Customizations/Layers/BikeCafes.ts b/Customizations/Layers/BikeCafes.ts
index e69de29bb..29ff9ef27 100644
--- a/Customizations/Layers/BikeCafes.ts
+++ b/Customizations/Layers/BikeCafes.ts
@@ -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]
+ }
+ };
+ };
+ }
+}
diff --git a/Customizations/Layers/BikeOtherShops.ts b/Customizations/Layers/BikeOtherShops.ts
index 80d7c799a..5c8bacc6e 100644
--- a/Customizations/Layers/BikeOtherShops.ts
+++ b/Customizations/Layers/BikeOtherShops.ts
@@ -1,6 +1,6 @@
import { LayerDefinition } from "../LayerDefinition";
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 ShopRetail from "../Questions/bike/ShopRetail";
import ShopPump from "../Questions/bike/ShopPump";
@@ -14,13 +14,6 @@ import { PhoneNumberQuestion } from "../Questions/PhoneNumberQuestion";
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 {
private readonly sellsBikes = new Tag("service:bicycle:retail", "yes")
private readonly repairsBikes = anyValueExcept("service:bicycle:repair", "no")
diff --git a/Customizations/Layouts/Cyclofix.ts b/Customizations/Layouts/Cyclofix.ts
index 7aae50f81..728225766 100644
--- a/Customizations/Layouts/Cyclofix.ts
+++ b/Customizations/Layouts/Cyclofix.ts
@@ -6,6 +6,7 @@ import Translations from "../../UI/i18n/Translations";
import {DrinkingWater} from "../Layers/DrinkingWater";
import Combine from "../../UI/Base/Combine";
import BikeOtherShops from "../Layers/BikeOtherShops";
+import BikeCafes from "../Layers/BikeCafes";
export default class Cyclofix extends Layout {
@@ -14,7 +15,7 @@ export default class Cyclofix extends Layout {
"cyclofix",
["en", "nl", "fr"],
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,
50.8465573,
4.3516970,
diff --git a/Customizations/Questions/Website.ts b/Customizations/Questions/Website.ts
index fff24cfbc..34051d343 100644
--- a/Customizations/Questions/Website.ts
+++ b/Customizations/Questions/Website.ts
@@ -8,7 +8,7 @@ export default class Website extends TagRenderingOptions {
super({
question: Translations.t.general.questions.websiteOf.Subs({category: category}),
freeform: {
- renderTemplate: Translations.t.general.questions.websiteIs.Subs({category: category}),
+ renderTemplate: Translations.t.general.questions.websiteIs,
template: "$phone$",
key: "phone"
}
diff --git a/Customizations/Questions/bike/CafeDiy.ts b/Customizations/Questions/bike/CafeDiy.ts
new file mode 100644
index 000000000..b72ff7bca
--- /dev/null
+++ b/Customizations/Questions/bike/CafeDiy.ts
@@ -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},
+ ]
+ });
+ }
+}
diff --git a/Customizations/Questions/bike/CafeName.ts b/Customizations/Questions/bike/CafeName.ts
new file mode 100644
index 000000000..a834ac573
--- /dev/null
+++ b/Customizations/Questions/bike/CafeName.ts
@@ -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
+ }
+ })
+ }
+}
diff --git a/Customizations/Questions/bike/CafePump.ts b/Customizations/Questions/bike/CafePump.ts
new file mode 100644
index 000000000..a5754af63
--- /dev/null
+++ b/Customizations/Questions/bike/CafePump.ts
@@ -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},
+ ]
+ });
+ }
+}
diff --git a/Customizations/Questions/bike/CafeRepair.ts b/Customizations/Questions/bike/CafeRepair.ts
new file mode 100644
index 000000000..f46f64440
--- /dev/null
+++ b/Customizations/Questions/bike/CafeRepair.ts
@@ -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}
+ ]
+ });
+ }
+}
diff --git a/Customizations/Questions/bike/ShopDiy.ts b/Customizations/Questions/bike/ShopDiy.ts
index 8ddbdf4e1..afc11105f 100644
--- a/Customizations/Questions/bike/ShopDiy.ts
+++ b/Customizations/Questions/bike/ShopDiy.ts
@@ -3,7 +3,7 @@ import {Tag} from "../../../Logic/TagsFilter";
import Translations from "../../../UI/i18n/Translations";
-export default class ShopPump extends TagRenderingOptions {
+export default class ShopDiy extends TagRenderingOptions {
constructor() {
const key = 'service:bicycle:diy'
const to = Translations.t.cyclofix.shop.diy
diff --git a/Logic/TagsFilter.ts b/Logic/TagsFilter.ts
index 021fdd8bd..0a2d3a556 100644
--- a/Logic/TagsFilter.ts
+++ b/Logic/TagsFilter.ts
@@ -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 {
public or: TagsFilter[]
diff --git a/UI/i18n/Translations.ts b/UI/i18n/Translations.ts
index 447b082a4..2d34a7f15 100644
--- a/UI/i18n/Translations.ts
+++ b/UI/i18n/Translations.ts
@@ -271,174 +271,246 @@ export default class Translations {
},
services: {
question: new T({
- en: 'Which services are available at this bike station?',
- nl: 'Welke functies biedt dit fietspunt?',
- fr: 'Quels services sont valables à cette station vélo?'
+ en: "Which services are available at this bike station?",
+ nl: "Welke functies biedt dit fietspunt?",
+ fr: "Quels services sont valables à cette station vélo?"
}),
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)
- en: 'There is only a pump present',
- nl: 'Er is enkel een pomp aanwezig',
- fr: 'Il y a seulement une pompe'
+ en: "There is only a pump present",
+ nl: "Er is enkel een pomp aanwezig",
+ fr: "Il y a seulement une pompe"
}),
tools: new T({
- en: 'There are only tools (screwdrivers, pliers...) aanwezig',
- nl: 'Er is enkel gereedschap aanwezig (schroevendraaier, tang...)',
- fr: 'Il y a seulement des outils (tournevis, pinces...'
+ en: "There are only tools (screwdrivers, pliers...) aanwezig",
+ nl: "Er is enkel gereedschap aanwezig (schroevendraaier, tang...)",
+ fr: "Il y a seulement des outils (tournevis, pinces..."
}),
both: new T({
- en: 'There are both tools and a pump present',
- nl: 'Er is zowel een pomp als gereedschap aanwezig',
- fr: 'IL y a des outils et une pompe'
+ en: "There are both tools and a pump present",
+ nl: "Er is zowel een pomp als gereedschap aanwezig",
+ fr: "IL y a des outils et une pompe"
}),
},
stand: {
question: new T({
- 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?',
- fr: 'Est-ce que cette station vélo à un crochet pour suspendre son velo ou une accroche pour l\'élevé?'
+ 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?",
+ 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'}),
- 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'}),
+ 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"}),
}
},
shop: {
- 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'}),
- 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'}),
+ 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"}),
+ 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"}),
titleNamed: new T({
- en: 'Bike repair/shop {name}',
- nl: 'Fietszaak {name}',
- fr: 'Magasin et réparateur de vélo {name}'
+ 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}'
+ 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: {
question: new T({
- en: 'Does this shop sell bikes?',
- nl: 'Verkoopt deze winkel fietsen?',
- fr: 'Est-ce que ce magasin vend des vélos?'
+ en: "Does this shop sell bikes?",
+ nl: "Verkoopt deze winkel fietsen?",
+ 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'
+ en: "This shop sells bikes",
+ nl: "Deze winkel verkoopt fietsen",
+ fr: "Ce magasin vend des vélos"
}),
no: new T({
- en: 'This shop doesn\'t sell bikes',
- nl: 'Deze winkel verkoopt geen fietsen',
- fr: 'Ce magasin ne vend pas de vélo'
+ en: "This shop doesn't sell bikes",
+ nl: "Deze winkel verkoopt geen fietsen",
+ fr: "Ce magasin ne vend pas de vélo"
}),
},
repair: {
question: new T({
- en: 'Does this shop repair bikes?',
- nl: 'Verkoopt deze winkel fietsen?',
- fr: 'Est-ce que ce magasin répare des vélos?'
+ en: "Does this shop repair bikes?",
+ nl: "Herstelt deze winkel fietsen?",
+ 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({
- en: 'This shop doesn\'t repair bikes',
- nl: 'Deze winkel herstelt geen fietsen',
- fr: 'Ce magasin ne répare pas les vélos'
+ en: "This shop doesn;t repair bikes",
+ nl: "Deze winkel herstelt geen fietsen",
+ 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'}),
- 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'}),
+ 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"}),
},
rental: {
question: new T({
- en: 'Does this shop rent out bikes?',
- nl: 'Verhuurt deze winkel fietsen?',
- fr: 'Est-ce ce magasin loue des vélos?'
+ en: "Does this shop rent out bikes?",
+ nl: "Verhuurt deze winkel fietsen?",
+ 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({
- en: 'This shop doesn\'t rent out bikes',
- nl: 'Deze winkel verhuurt geen fietsen',
- fr: 'Ce magasin ne loue pas de vélos'
+ en: "This shop doesn't rent out bikes",
+ nl: "Deze winkel verhuurt geen fietsen",
+ fr: "Ce magasin ne loue pas de vélos"
}),
},
pump: {
question: new T({
- en: 'Does this shop offer a bike pump for use by anyone?',
- nl: 'Biedt deze winkel een fietspomp aan voor iedereen?',
- fr: 'Est-ce que ce magasin offre une pompe en accès libre?'
+ en: "Does this shop offer a bike pump for use by anyone?",
+ nl: "Biedt deze winkel een fietspomp aan voor iedereen?",
+ fr: "Est-ce que ce magasin offre une pompe en accès libre?"
}),
yes: new T({
- en: 'This shop offers a bike pump for anyone',
- nl: 'Deze winkel biedt geen fietspomp aan voor eender wie',
- fr: 'Ce magasin offre une pompe en acces libre'
+ en: "This shop offers a bike pump for anyone",
+ nl: "Deze winkel biedt geen fietspomp aan voor eender wie",
+ fr: "Ce magasin offre une pompe en acces libre"
}),
no: new T({
- en: 'This shop doesn\'t offer a bike pump for anyone',
- nl: 'Deze winkel biedt een fietspomp aan voor iedereen',
- fr: 'Ce magasin n\offre pas de pompe en libre accès'
+ en: "This shop doesn't offer a bike pump for anyone",
+ nl: "Deze winkel biedt een fietspomp aan voor iedereen",
+ fr: "Ce magasin n'offre pas de pompe en libre accès"
})
},
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?'}),
- render: new T({en: 'This bicycle shop is called {name}', nl: 'Deze fietszaak heet {name}', fr: 'Ce magasin s\appelle {name}'}),
- template: new T({en: 'This bicycle shop is called: $$$', nl: 'Deze fietszaak heet: $$$', fr: 'Ce magasin s\appelle {$$$'})
+ 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 {name}", fr: "Ce magasin s'appelle {name}"}),
+ template: new T({en: "This bicycle shop is called: $$$", nl: "Deze fietszaak heet: $$$", fr: "Ce magasin s'appelle $$$"})
},
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'}),
- 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'}),
- 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'}),
+ 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"}),
+ 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"}),
},
diy: {
question: new T({
- en: 'Are there tools here to repair your own bike?',
- 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?',
+ en: "Are there tools here to repair your own bike?",
+ 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?",
}),
yes: new T({
- en: 'This shop offers tools for DIY repair',
- 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'
+ en: "This shop offers tools for DIY repair",
+ 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"
}),
no: new T({
- en: 'This shop doesn\'t offer tools for DIY repair',
- 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'
+ en: "This shop doesn't offer tools for DIY repair",
+ 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"
}),
}
},
- nonBikeShop: {
+ 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 {name}", fr: "TODO: fr"}),
+ template: new T({en: "This bike cafe is called: $$$", nl: "Dit fietscafé heet: $$$", 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: {
name: new T({
- en: 'shop that sells/repairs bikes',
- nl: 'winkel die fietsen verkoopt/herstelt',
- fr: 'TODO: fr'
+ 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'
+ 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'}),
- titleShop: new T({en: 'Shop that sells bikes', nl: 'Winkel die fietsen verkoopt', 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"
+ }),
+
titleNamed: new T({
- en: '{name} (sells/repairs bikes)',
- nl: '{name} (verkoopt/herstelt fietsen)',
- fr: 'TODO: fr'
+ 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'
+ 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: {
title: new T({