mapcomplete/UI/i18n/Translations.ts

732 lines
40 KiB
TypeScript
Raw Normal View History

2020-07-20 10:39:43 +00:00
import Translation from "./Translation";
2020-07-20 21:43:42 +00:00
import T from "./Translation";
2020-07-20 22:07:04 +00:00
import {UIElement} from "../UIElement";
import {FixedUiElement} from "../Base/FixedUiElement";
2020-07-20 10:39:43 +00:00
export default class Translations {
2020-07-21 21:31:41 +00:00
constructor() {
throw "Translations is static. If you want to intitialize a new translation, use the singular form"
}
2020-07-20 10:39:43 +00:00
static t = {
cyclofix: {
title: new T({
en: 'Cyclofix - an open map for cyclists',
nl: 'Cyclofix - een open kaart voor fietsers',
2020-07-27 15:08:18 +00:00
fr: 'Cyclofix - Une carte ouverte pour les cyclistes'
2020-07-20 22:38:03 +00:00
}),
2020-07-20 21:43:42 +00:00
description: new T({
2020-07-29 11:38:01 +00:00
en: "The goal of this map is to present cyclists with an easy-to-use solution to find the appropriate infrastructure for their needs.<br><br>" + //this works in spoken language: ; think about the nearest bike repair station for example
"You can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. " +
"You can also use this tool to add or edit pins (points of interest) to the map and provide more data by answering the questions.<br><br>" +
"All changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others.<br><br>" +
"For more information about the cyclofix project, go to <a href='https://cyclofix.osm.be/'>cyclofix.osm.be</a>.",
nl: "Het doel van deze kaart is om fietsers een gebruiksvriendelijke oplossing te bieden voor het vinden van de juiste infrastructuur voor hun behoeften.<br><br>" + //; denk bijvoorbeeld aan de dichtstbijzijnde fietsherstelplaats.
"U kunt uw exacte locatie volgen (enkel mobiel) en in de linkerbenedenhoek categorieën selecteren die voor u relevant zijn. " +
"U kunt deze tool ook gebruiken om 'spelden' aan de kaart toe te voegen of te bewerken en meer gegevens te verstrekken door de vragen te beantwoorden.<br><br>" +
"Alle wijzigingen die u maakt worden automatisch opgeslagen in de wereldwijde database van OpenStreetMap en kunnen door anderen vrij worden hergebruikt.<br><br>" +
"Bekijk voor meer info over cyclofix ook <a href='https://cyclofix.osm.be/'>cyclofix.osm.be</a>.",
fr: "Le but de cette carte est de présenter aux cyclistes une solution facile à utiliser pour trouver l'infrastructure appropriée à leurs besoins.<br><br>" + //; pensez par exemple à la station de réparation de vélos la plus proche.
"Vous pouvez suivre votre localisation précise (mobile uniquement) et sélectionner les couches qui vous concernent dans le coin inférieur gauche. " +
"Vous pouvez également utiliser cet outil pour ajouter ou modifier des épingles (points d'intérêt) sur la carte et fournir plus de données en répondant aux questions.<br><br>" +
"Toutes les modifications que vous apportez seront automatiquement enregistrées dans la base de données mondiale d'OpenStreetMap et peuvent être librement réutilisées par d'autres.<br><br>" +
"Pour plus d'informations sur le projet cyclofix, rendez-vous sur <a href='https://cyclofix.osm.be/'>cyclofix.osm.be</a>."
2020-07-20 22:38:03 +00:00
}),
2020-07-20 21:43:42 +00:00
freeFormPlaceholder: new T({en: 'specify', nl: 'specifieer', fr: 'TODO: fr'}),
parking: {
2020-07-27 15:08:18 +00:00
name: new T({en: 'bike parking', nl: 'fietsparking', fr: 'parking à vélo'}),
title: new T({en: 'Bike parking', nl: 'Fietsparking', fr: 'Parking à vélo'}),
2020-07-20 21:43:42 +00:00
type: {
render: new T({
en: 'This is a bicycle parking of the type: {bicycle_parking}',
nl: 'Dit is een fietsparking van het type: {bicycle_parking}',
2020-07-27 15:08:18 +00:00
fr: 'Ceci est un parking à vélo de type {bicycle_parking}'
}),
2020-07-27 15:08:18 +00:00
template: new T({en: 'Some other type: $$$', nl: 'Een ander type: $$$', fr: "D'autres types: $$$"}),
question: new T({
en: 'What is the type of this bicycle parking?',
nl: 'Van welk type is deze fietsparking?',
2020-07-27 15:08:18 +00:00
fr: 'Quelle type de parking s\'agit il? '
}),
2020-07-29 07:57:24 +00:00
eg: new T({en: ", for example", nl: ", bijvoorbeeld", fr: ",par example"}),
2020-07-27 15:08:18 +00:00
stands: new T({en: 'Staple racks', nl: 'Nietjes', fr: 'Arceaux'}),
wall_loops: new T({en: 'Wheel rack/loops', nl: 'Wielrek/lussen', fr: 'Pinces-roues'}),
handlebar_holder: new T({en: 'Handlebar holder', nl: 'Stuurhouder', fr: 'Support guidon'}),
shed: new T({en: 'Shed', nl: 'Schuur', fr: 'Abri'}),
rack: new T({en: 'Rack', nl: 'Rek', fr: 'Râtelier'}),
"two-tier": new T({en: 'Two-tiered', nl: 'Dubbel (twee verdiepingen)', fr: 'Superposé'}),
2020-07-20 21:43:42 +00:00
},
operator: {
render: new T({
en: 'This bike parking is operated by {operator}',
nl: 'Deze fietsparking wordt beheerd door {operator}',
2020-07-27 15:08:18 +00:00
fr: 'Ce parking est opéré par {operator}'
}),
2020-07-20 21:43:42 +00:00
template: new T({en: 'A different operator: $$$', nl: 'Een andere beheerder: $$$', fr: 'TODO: fr'}),
question: new T({
en: 'Who operates this bike station (name of university, shop, city...)?',
nl: 'Wie beheert deze fietsenparking (naam universiteit, winkel, stad...)?',
2020-07-27 15:08:18 +00:00
fr: 'Qui opére cette station vélo (nom de l\'université, magasin, vile...)'
}),
private: new T({
en: 'Operated by a private person',
nl: 'Wordt beheerd door een privépersoon',
2020-07-27 15:08:18 +00:00
fr: 'Opéré par un tier privé'
}),
},
covered: {
question: new T({
en: 'Is this parking covered? Also select "covered" for indoor parkings.',
nl: 'Is deze parking overdekt? Selecteer ook "overdekt" voor fietsparkings binnen een gebouw.',
fr: 'TODO: fr'
}),
yes: new T({
en: 'This parking is covered (it has a roof)',
nl: 'Deze parking is overdekt (er is een afdak)',
fr: 'TODO: fr'
}),
no: new T({
en: 'This parking is not covered',
nl: 'Deze parking is niet overdekt',
fr: 'TODO: fr'
})
},
capacity: {
question: new T({
en: "How many bicycles fit in this bicycle parking (including possible cargo bicycles)?",
nl: "Voor hoeveel fietsen is er bij deze fietsparking plaats (inclusief potentiëel bakfietsen)?",
fr: "TODO: fr"
}),
template: new T({
en: "This parking fits $nat$ bikes",
nl: "Deze parking heeft plaats voor $nat$ fietsen",
fr: "TODO: fr"
}),
render: new T({
en: "Place for {capacity} bikes (in total)",
nl: "Plaats voor {capacity} fietsen (in totaal)",
fr: "TODO: fr"
}),
},
capacity_cargo: {
question: new T({
en: "How many cargo bicycles fit in this bicycle parking?",
nl: "Voor hoeveel bakfietsen heeft deze fietsparking plaats?",
fr: "TODO: fr"
}),
template: new T({
en: "This parking fits $nat$ cargo bikes",
nl: "Deze parking heeft plaats voor $nat$ fietsen",
fr: "TODO: fr"
}),
render: new T({
en: "Place for {capacity:cargo_bike} cargo bikes",
nl: "Plaats voor {capacity:cargo_bike} bakfietsen",
fr: "TODO: fr"
}),
},
access_cargo: {
question: new T({
en: "Does this bicycle parking have spots for cargo bikes?",
nl: "Heeft deze fietsparking plaats voor bakfietsen?",
fr: "TODO: fr"
}),
yes: new T({
en: "This parking has room for cargo bikes",
nl: "Deze parking is overdekt (er is een afdak)",
fr: "TODO: fr"
}),
designated: new T({
en: "This parking has designated (official) spots for cargo bikes.",
nl: "Deze parking is overdekt (er is een afdak)",
fr: "TODO: fr"
}),
no: new T({
en: "You're not allowed to park cargo bikes",
nl: "Je mag hier geen bakfietsen parkeren",
fr: "TODO: fr"
})
2020-07-20 21:43:42 +00:00
}
},
station: {
name: new T({
en: 'bike station (repair, pump or both)',
nl: 'fietspunt (herstel, pomp of allebei)',
2020-07-27 15:08:18 +00:00
fr: 'station velo (réparation, pompe à vélo)'
}),
// title: new T({en: 'Bike station', nl: 'Fietsstation', fr: 'Station vélo'}), Old, non-dynamic title
titlePump: new T({en: 'Bike pump', nl: 'Fietspomp', fr: 'TODO: fr'}),
titleRepair: new T({en: 'Bike repair station', nl: 'Herstelpunt', fr: 'TODO: fr'}),
titlePumpAndRepair: new T({en: 'Bike station (pump & repair)', nl: 'Herstelpunt met pomp', fr: 'TODO: fr'}),
2020-07-20 21:43:42 +00:00
manometer: {
question: new T({
en: 'Does the pump have a pressure indicator or manometer?',
nl: 'Heeft deze pomp een luchtdrukmeter?',
2020-07-27 15:08:18 +00:00
fr: 'Est-ce que la pompe à un manomètre integré?'
}),
2020-07-27 15:08:18 +00:00
yes: new T({en: 'There is a manometer', nl: 'Er is een luchtdrukmeter', fr: 'Il y a un manomètre'}),
no: new T({en: 'There is no manometer', nl: 'Er is geen luchtdrukmeter', fr: 'Il n\'y a pas de manomètre'}),
broken: new T({
en: 'There is manometer but it is broken',
nl: 'Er is een luchtdrukmeter maar die is momenteel defect',
2020-07-27 15:08:18 +00:00
fr: 'Il y a un manomètre mais il est cassé'
})
2020-07-20 21:43:42 +00:00
},
electric: {
question: new T({
en: 'Is this an electric bike pump?',
nl: 'Is dit een electrische fietspomp?',
2020-07-27 15:08:18 +00:00
fr: 'Est-ce que cette pompe est électrique?'
}),
2020-07-27 15:08:18 +00:00
manual: new T({en: 'Manual pump', nl: 'Manuele pomp', fr: 'Pompe manuelle'}),
electric: new T({en: 'Electrical pump', nl: 'Electrische pomp', fr: 'Pompe électrique'})
2020-07-20 21:43:42 +00:00
},
operational: {
question: new T({
en: 'Is the bike pump still operational?',
nl: 'Werkt de fietspomp nog?',
2020-07-27 15:08:18 +00:00
fr: 'Est-ce que cette pompe marche t\'elle toujours?'
}),
operational: new T({
en: 'The bike pump is operational',
nl: 'De fietspomp werkt nog',
2020-07-27 15:08:18 +00:00
fr: 'La pompe est opérationnelle'
}),
2020-07-27 15:08:18 +00:00
broken: new T({en: 'The bike pump is broken', nl: 'De fietspomp is kapot', fr: 'La pompe est cassé'})
2020-07-20 21:43:42 +00:00
},
valves: {
question: new T({
en: 'What valves are supported?',
nl: 'Welke ventielen werken er met de pomp?',
2020-07-27 15:08:18 +00:00
fr: 'Quelles valves sont compatibles?'
}),
default: new T({
en: 'There is a default head, so Dunlop, Sclaverand and auto',
nl: 'Er is een standaard aansluiting, die dus voor Dunlop, Sclaverand en auto\'s werkt',
2020-07-27 15:08:18 +00:00
fr: 'Il y a une valve par défaut, fonctionnant sur les valves Dunlop, Sclaverand et les valves de voitures'
}),
2020-07-20 21:43:42 +00:00
dunlop: new T({en: 'Only Dunlop', nl: 'Enkel Dunlop', fr: 'TODO: fr'}),
sclaverand: new T({
en: 'Only Sclaverand (also known as Presta)',
nl: 'Enkel Sclaverand (ook gekend als Presta)',
2020-07-27 15:08:18 +00:00
fr: 'Seulement Sclaverand (aussi appelé Presta)'
}),
2020-07-20 21:43:42 +00:00
auto: new T({en: 'Only for cars', nl: 'Enkel voor auto\'s', fr: 'TODO: fr'}),
render: new T({
en: 'This pump supports the following valves: {valves}',
nl: 'Deze pomp werkt met de volgende ventielen: {valves}',
2020-07-27 15:08:18 +00:00
fr: 'Cette pompe est compatible avec les valves suivantes: {valves}'
}),
template: new T({
en: 'Some other valve(s): $$$',
nl: 'Een ander type ventiel(en): $$$',
2020-07-27 15:08:18 +00:00
fr: 'Autre(s) type(s) de valve(s): $$$'
})
2020-07-20 21:43:42 +00:00
},
chain: {
question: new T({
en: 'Does this bike repair station have a special tool to repair your bike chain?',
nl: 'Heeft dit herstelpunt een speciale reparatieset voor je ketting?',
2020-07-27 15:08:18 +00:00
fr: 'Est-ce que cette station vélo a un outils specifique pour réparer la chaîne du velo?'
}),
yes: new T({
en: 'There is a chain tool',
nl: 'Er is een reparatieset voor je ketting',
2020-07-27 15:08:18 +00:00
fr: 'Il y a un outil pour réparer la chaine'
}),
no: new T({
en: 'There is no chain tool',
nl: 'Er is geen reparatieset voor je ketting',
2020-07-27 15:08:18 +00:00
fr: 'Il n\'y a pas d\'outil pour réparer la chaine'
}),
2020-07-20 21:43:42 +00:00
},
operator: {
render: new T({
en: 'This bike station is operated by {operator}',
nl: 'Dit fietspunt wordt beheerd door {operator}',
2020-07-27 15:08:18 +00:00
fr: 'Cette station vélo est opéré par {operator}'
}),
2020-07-20 21:43:42 +00:00
template: new T({en: 'A different operator: $$$', nl: 'Een andere beheerder: $$$', fr: 'TODO: fr'}),
question: new T({
en: 'Who operates this bike station (name of university, shop, city...)?',
nl: 'Wie beheert dit fietsstation (naam universiteit, winkel, stad...)?',
2020-07-27 15:08:18 +00:00
fr: 'Qui opére cette station vélo (nom de l\'université, magasin, ville...)?'
}),
private: new T({
en: 'Operated by a private person',
nl: 'Wordt beheerd door een privépersoon',
2020-07-27 15:08:18 +00:00
fr: 'Operé par un tier privé'
}),
2020-07-20 21:43:42 +00:00
},
services: {
question: new T({
2020-07-29 13:55:50 +00:00
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({
2020-07-24 11:46:03 +00:00
// Note: this previously read: a pump is available. It is not because the pump is present, that it is available (e.g. broken)
2020-07-29 13:55:50 +00:00
en: "There is only a pump present",
nl: "Er is enkel een pomp aanwezig",
fr: "Il y a seulement une pompe"
}),
tools: new T({
2020-07-29 13:55:50 +00:00
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({
2020-07-29 13:55:50 +00:00
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"
}),
2020-07-20 21:43:42 +00:00
},
stand: {
question: new T({
2020-07-29 13:55:50 +00:00
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é?"
}),
2020-07-29 13:55:50 +00:00
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"}),
2020-07-20 21:43:42 +00:00
}
},
shop: {
2020-07-29 13:55:50 +00:00
name: new T({en: "bike repair/shop", nl: "fietszaak", fr: "magasin ou réparateur de vélo"}),
2020-07-21 21:31:41 +00:00
2020-07-29 13:55:50 +00:00
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"}),
2020-07-21 21:31:41 +00:00
2020-07-29 13:55:50 +00:00
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}"}),
titleShopNamed: new T({en: "Bike shop {name}", nl: "Fietswinkel {name}", fr: "Magasin de vélo {name}"}),
2020-07-21 21:31:41 +00:00
2020-07-20 21:43:42 +00:00
retail: {
question: new T({
2020-07-29 13:55:50 +00:00
en: "Does this shop sell bikes?",
nl: "Verkoopt deze winkel fietsen?",
fr: "Est-ce que ce magasin vend des vélos?"
}),
2020-07-29 13:55:50 +00:00
yes: new T({en: "This shop sells bikes", nl: "Deze winkel verkoopt fietsen", fr: "Ce magasin vend des vélos"}),
no: new T({
2020-07-29 13:55:50 +00:00
en: "This shop doesn't sell bikes",
nl: "Deze winkel verkoopt geen fietsen",
fr: "Ce magasin ne vend pas de vélo"
}),
2020-07-20 21:43:42 +00:00
},
repair: {
question: new T({
2020-07-29 13:55:50 +00:00
en: "Does this shop repair bikes?",
nl: "Herstelt deze winkel fietsen?",
fr: "Est-ce que ce magasin répare des vélos?"
}),
2020-07-29 13:55:50 +00:00
yes: new T({en: "This shop repairs bikes", nl: "Deze winkel herstelt fietsen", fr: "Ce magasin répare des vélos"}),
no: new T({
2020-07-29 13:55:50 +00:00
en: "This shop doesn;t repair bikes",
nl: "Deze winkel herstelt geen fietsen",
fr: "Ce magasin ne répare pas les vélos"
}),
2020-07-29 13:55:50 +00:00
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"}),
2020-07-20 21:43:42 +00:00
},
rental: {
question: new T({
2020-07-29 13:55:50 +00:00
en: "Does this shop rent out bikes?",
nl: "Verhuurt deze winkel fietsen?",
fr: "Est-ce ce magasin loue des vélos?"
}),
2020-07-29 13:55:50 +00:00
yes: new T({en: "This shop rents out bikes", nl: "Deze winkel verhuurt fietsen", fr: "Ce magasin loue des vélos"}),
no: new T({
2020-07-29 13:55:50 +00:00
en: "This shop doesn't rent out bikes",
nl: "Deze winkel verhuurt geen fietsen",
fr: "Ce magasin ne loue pas de vélos"
}),
2020-07-20 21:43:42 +00:00
},
pump: {
question: new T({
2020-07-29 13:55:50 +00:00
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({
2020-07-29 13:55:50 +00:00
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({
2020-07-29 13:55:50 +00:00
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"
2020-07-21 13:42:55 +00:00
})
2020-07-21 10:14:56 +00:00
},
qName: {
2020-07-29 13:55:50 +00:00
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>"}),
template: new T({en: "This bicycle shop is called: $$$", nl: "Deze fietszaak heet: <b>$$$</b>", fr: "Ce magasin s'appelle <b>$$$</b>"})
2020-07-21 10:14:56 +00:00
},
secondHand: {
2020-07-29 13:55:50 +00:00
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"}),
2020-07-21 10:14:56 +00:00
},
diy: {
question: new T({
2020-07-29 13:55:50 +00:00
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({
2020-07-29 13:55:50 +00:00
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({
2020-07-29 13:55:50 +00:00
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"
}),
2020-07-20 21:43:42 +00:00
}
2020-07-22 15:59:38 +00:00
},
2020-07-29 13:55:50 +00:00
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: {
2020-07-29 13:55:50 +00:00
name: new T({en: "shop that sells/repairs bikes", nl: "winkel die fietsen verkoopt/herstelt", fr: "TODO: fr"}),
2020-07-29 13:55:50 +00:00
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"}),
titleShop: new T({en: "Shop that sells bikes", nl: "Winkel die fietsen verkoopt", fr: "TODO: fr"}),
2020-07-29 13:55:50 +00:00
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"}),
titleShopNamed: new T({en: "{name} (sells bikes)", nl: "{name} (verkoopt fietsen)", fr: "TODO: fr"}),
},
2020-07-22 15:59:38 +00:00
drinking_water: {
title: new T({
en: 'Drinking water',
2020-07-27 15:08:18 +00:00
nl: "Drinkbaar water",
fr: "Eau potable"
2020-07-22 15:59:38 +00:00
})
2020-07-20 21:43:42 +00:00
}
2020-07-20 22:38:03 +00:00
},
bookcases: {
2020-07-27 15:08:18 +00:00
title: new T({en: "Open Bookcase Map", nl: "Open Boekenkastjes kaart"}, ),
description: new T({
en: "Search a bookcase near you and add information about them in the biggest shared map of the world.",
nl: "Help mee met het creëeren van een volledige kaart met alle boekenruilkastjes!" +
"Een boekenruilkastje is een vaste plaats in publieke ruimte waar iedereen een boek in kan zetten of uit kan meenemen." +
"Meestal een klein kastje of doosje dat op straat staat, maar ook een oude telefooncellen of een schap in een station valt hieronder."
}
),
bookcase: new T({
2020-07-26 23:19:38 +00:00
nl: "Boekenruilkastje",
en: "Public bookcase"
}),
questions: {
hasName: new T(
{
nl: "Heeft dit boekenruilkastje een naam?",
en: "Does this bookcase have a name?"
}),
noname: new T({
nl: "Neen, er is geen naam aangeduid op het boekenruilkastje",
en: "No, there is no clearly visible name on the public bookcase"
},
),
capacity: new T({
nl: "Hoeveel boeken passen in dit boekenruilkastje?",
en: "How much books fit into this public bookcase?"
}),
capacityRender: new T({
nl: "Er passen {capacity} boeken in dit boekenruilkastje",
en: "{capacity} books fit in this bookcase"
}),
capacityInput: new T({
nl: "Er passen $nat$ boeken in dit boekenruilkastje",
en: "$nat$ books fit into this public bookcase"
}),
bookkinds: new T({
nl: "Wat voor soort boeken heeft dit boekenruilkastje?",
en: "What kind of books can be found in this public bookcase"
})
}
},
2020-07-20 21:43:42 +00:00
image: {
addPicture: new T({en: 'Add picture', nl: 'Voeg foto toe', fr: 'TODO: fr'}),
uploadingPicture: new T({
en: 'Uploading your picture...',
nl: 'Bezig met een foto te uploaden...',
2020-07-27 15:08:18 +00:00
fr: 'Mettre votre photo en ligne'
2020-07-20 22:38:03 +00:00
}),
pleaseLogin: new T({
en: 'Please login to add a picure or to answer questions',
nl: 'Gelieve je aan te melden om een foto toe te voegen of vragen te beantwoorden',
2020-07-27 15:08:18 +00:00
fr: 'Merci de vous connecter pour mettre une photo en ligne ou répondre aux questions'
2020-07-20 22:38:03 +00:00
}),
willBePublished: new T({
en: 'Your picture will be published: ',
nl: 'Jouw foto wordt gepubliceerd: ',
2020-07-27 15:08:18 +00:00
fr: 'Votre photo va être publié'
2020-07-20 22:38:03 +00:00
}),
2020-07-27 15:08:18 +00:00
cco: new T({en: 'in the public domain', nl: 'in het publiek domein', fr: 'sur le domaine publique'}),
ccbs: new T({en: 'under the CC-BY-SA-license', nl: 'onder de CC-BY-SA-licentie', fr: 'sous la license CC-BY-SA'}),
2020-07-29 07:57:24 +00:00
ccb: new T({en: 'under the CC-BY-license', nl: 'onder de CC-BY-licentie', fr: 'sous la license CC-BY'}),
respectPrivacy: new T({
en: "Please respect privacy. Do not photograph people nor license plates",
nl: "Respecteer privacy. Fotografeer geen mensen of nummerplaten",
fr: "TODO: fr"
})
2020-07-20 21:43:42 +00:00
},
centerMessage: {
2020-07-27 15:08:18 +00:00
loadingData: new T({en: 'Loading data...', nl: 'Data wordt geladen...', fr: 'chargement des données'}),
zoomIn: new T({
en: 'Zoom in to view or edit the data',
nl: 'Zoom in om de data te zien en te bewerken',
2020-07-29 08:00:42 +00:00
fr: 'TODO Fr',
2020-07-20 22:38:03 +00:00
}),
2020-07-27 15:08:18 +00:00
ready: new T({en: 'Done!', nl: 'Klaar!', fr: 'Finis!'}),
},
general: {
2020-07-27 15:08:18 +00:00
loginWithOpenStreetMap: new T({en: "Login with OpenStreetMap", nl: "Aanmelden met OpenStreetMap", fr:'Se connecter avec OpenStreeMap'}),
getStarted: new T({
en: "<span class='activate-osm-authentication'>Login with OpenStreetMap</span> or <a href='https://www.openstreetmap.org/user/new' target='_blank'>make a free account to get started</a>",
2020-07-22 16:02:02 +00:00
nl: "<span class='activate-osm-authentication'>Meld je aan met je OpenStreetMap-account</span> of <a href='https://www.openstreetmap.org/user/new' target='_blank'>maak snel en gratis een account om te beginnen</a>",
2020-07-27 15:08:18 +00:00
fr: "<span class='activate-osm-authentication'>Se connecter avec OpenStreetMap</span> ou <a href='https://www.openstreetmap.org/user/new' target='_blank'>créer un compte gratuitement pour commencer</a>",
}),
welcomeBack: new T({
en: "You are logged in, welcome back!",
2020-07-27 15:08:18 +00:00
nl: "Je bent aangemeld. Welkom terug!",
fr: "Vous êtes connecté, bienvenue"
}),
search: {
search: new Translation({
en: "Search a location",
2020-07-27 15:08:18 +00:00
nl: "Zoek naar een locatie",
fr: "Chercher une location"
}),
searching: new Translation({
en: "Searching...",
2020-07-27 15:08:18 +00:00
nl: "Aan het zoeken...",
fr: "Chargement"
}),
nothing: new Translation({
en: "Nothing found...",
2020-07-27 15:08:18 +00:00
nl: "Niet gevonden...",
fr: "Rien n'a été trouvé "
}),
error: new Translation({
en: "Something went wrong...",
2020-07-27 15:08:18 +00:00
nl: "Niet gelukt...",
fr: "Quelque chose n\'a pas marché..."
})
},
returnToTheMap: new T({
en: "Return to the map",
2020-07-27 15:08:18 +00:00
nl: "Naar de kaart",
fr: "Retourner sur la carte"
}),
save: new T({
en: "Save",
2020-07-27 15:08:18 +00:00
nl: "Opslaan",
fr: "Sauvegarder"
}),
cancel: new T({
en: "Cancel",
2020-07-27 15:08:18 +00:00
nl: "Annuleren",
fr: "Annuler"
}),
skip: new T({
en: "Skip this question",
2020-07-27 15:08:18 +00:00
nl: "Vraag overslaan",
fr: "Passer la question"
}),
oneSkippedQuestion: new T({
en: "One question is skipped",
2020-07-27 15:08:18 +00:00
nl: "Een vraag is overgeslaan",
fr: "Une question a été passé"
}),
skippedQuestions: new T({
en: "Some questions are skipped",
2020-07-27 15:08:18 +00:00
nl: "Sommige vragen zijn overgeslaan",
fr: "Questions passées"
2020-07-23 15:32:18 +00:00
}),
number: new T({
en: "number",
2020-07-27 15:08:18 +00:00
nl: "getal",
fr: "Nombre"
}),
2020-07-24 22:20:52 +00:00
osmLinkTooltip: new T({
en: "See this object on OpenStreetMap for history and more editing options",
nl: "Bekijk dit object op OpenStreetMap waar geschiedenis en meer aanpasopties zijn"
}),
add: {
addNew: new T({
en: "Add a new {category} here",
nl: "Voeg hier een {category} toe"
}),
header: new T({
en: "<h2>No data</h2>You clicked somewhere where no data is known yet.<br/>",
nl: "<h2>Geen selectie</h2>Je klikte ergens waar er nog geen data is.<br/>"
}),
pleaseLogin: new T({
en: "<a class='activate-osm-authentication'>Please log in to add a new point</a>",
nl: "<a class='activate-osm-authentication'>Gelieve je aan te melden om een punt to te voegen</a>"
}),
zoomInFurther: new T({
en: "Zoom in further to add a point.",
nl: "Gelieve verder in te zoomen om een punt toe te voegen"
}),
stillLoading: new T({
en: "The data is still loading. Please wait a bit before you add a new point",
nl: "De data wordt nog geladen. Nog even geduld en dan kan je een punt toevoegen."
})
2020-07-25 16:00:08 +00:00
},
pickLanguage: new T({
en: "Choose a language",
nl: "Kies je taal"
}),
about: new T({
en: "Easily edit and add OpenStreetMap for a certain theme",
nl: "Easily edit and add OpenStreetMap for a certain theme"
}),
nameInlineQuestion: new T({
nl: "De naam van dit {category} is $$$"
}),
noNameCategory: new T({
nl: "{category} zonder naam"
2020-07-26 22:14:41 +00:00
}),
questions: {
phoneNumberOf: new T({
en: "What is the phone number of {category}?",
nl: "Wat is het telefoonnummer van {category}?"
}),
phoneNumberIs: new T({
2020-07-26 23:19:38 +00:00
en: "The phone number of this {category} is <a href='tel:{phone}' target='_blank'>{phone}</a>",
nl: "Het telefoonnummer van {category} is <a href='tel:{phone}' target='_blank'>{phone}</a>"
}),
websiteOf: new T({
en: "What is the website of {category}?",
nl: "Wat is de website van {category}?"
}),
websiteIs: new T({
en: "Website: <a href='{website}' target='_blank'>{website}</a>",
nl: "Website: <a href='{website}' target='_blank'>{website}</a>"
2020-07-26 22:14:41 +00:00
})
}
}
2020-07-20 22:07:04 +00:00
}
2020-07-20 22:38:03 +00:00
public static W(s: string | UIElement): UIElement {
2020-07-20 22:07:04 +00:00
if (s instanceof UIElement) {
return s;
2020-07-20 10:39:43 +00:00
}
2020-07-20 22:07:04 +00:00
return new FixedUiElement(s);
2020-07-20 10:39:43 +00:00
}
2020-07-20 22:07:04 +00:00
public static CountTranslations() {
const queue: any = [Translations.t];
const tr: Translation[] = [];
while (queue.length > 0) {
const item = queue.pop();
if (item instanceof Translation || item.translations !== undefined) {
tr.push(item);
} else {
for (const t in item) {
const x = item[t];
queue.push(x)
}
}
}
const langaugeCounts = {};
for (const translation of tr) {
for (const language in translation.translations) {
if (langaugeCounts[language] === undefined) {
langaugeCounts[language] = 1
} else {
langaugeCounts[language]++;
}
}
}
for (const language in langaugeCounts) {
console.log("Total translations in ", language, langaugeCounts[language], "/", tr.length)
}
}
2020-07-20 10:39:43 +00:00
}