Merge branch 'master' into develop
This commit is contained in:
commit
8d1ae657fc
28 changed files with 693 additions and 196 deletions
|
@ -2763,7 +2763,8 @@
|
|||
"en": "<b>Type 2</b> (mennekes) outputs at most 16 A",
|
||||
"nl": "<b>Type 2</b> (mennekes) levert een stroom van maximaal 16 A",
|
||||
"da": "<b>Type 2</b> (mennekes) udgange højst 16 A",
|
||||
"de": "<b>Typ 2</b> (Mennekes) liefert maximal 16 A"
|
||||
"de": "<b>Typ 2</b> (Mennekes) liefert maximal 16 A",
|
||||
"ca": "<b>Tipus 2</b> (menneks) surt com a màxim a 16 A"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/charging_station/Type2_socket.svg",
|
||||
|
@ -2776,7 +2777,8 @@
|
|||
"en": "<b>Type 2</b> (mennekes) outputs at most 32 A",
|
||||
"nl": "<b>Type 2</b> (mennekes) levert een stroom van maximaal 32 A",
|
||||
"da": "<b>Type 2</b> (mennekes) udgange højst 32 A",
|
||||
"de": "<b>Typ 2</b> (Mennekes) liefert maximal 32 A"
|
||||
"de": "<b>Typ 2</b> (Mennekes) liefert maximal 32 A",
|
||||
"ca": "<b>Tipus 2</b> (menneks) surt com a màxim a 32 A"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/charging_station/Type2_socket.svg",
|
||||
|
@ -3528,7 +3530,8 @@
|
|||
"en": "What current do the plugs with <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> offer?",
|
||||
"nl": "Welke stroom levert de stekker van type <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Een Type 2 met kabel en Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?",
|
||||
"da": "Hvilken strømstyrke har stikkene med <div style='display: inline-block'><b><b> Tesla Supercharger (Destination)</b> (A Type 2 med kabel med Tesla-mærket)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> ?",
|
||||
"de": "Welche Stromstärke liefern die Stecker mit <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?"
|
||||
"de": "Welche Stromstärke liefern die Stecker mit <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?",
|
||||
"ca": "Quin corrent donen els endolls amb <div style='display: inline-block'><b><b>Tesla Supercharger (destinació)</b> (un tipus 2 amb cable amb la marca Tesla)</b> <img style ='amplada: 1rem; mostrar: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> oferta?"
|
||||
},
|
||||
"render": {
|
||||
"en": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> outputs at most {socket:tesla_destination:current}A",
|
||||
|
@ -3546,7 +3549,8 @@
|
|||
"en": "<b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as tesla) outputs at most 16 A",
|
||||
"nl": "<b>Tesla supercharger (Destination</b> (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 16 A",
|
||||
"da": "<b>Tesla Supercharger (Destination)</b> (A Type 2 med kabel mærket som tesla) yder højst 16 A",
|
||||
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel) liefert maximal 16 A"
|
||||
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel) liefert maximal 16 A",
|
||||
"ca": "<b>Supercarregador Tesla (destinació)</b> (Un Tipus 2 amb un cable de marca Tesla) surt com a màxim a 16 A"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/charging_station/Type2_tethered.svg",
|
||||
|
@ -3559,7 +3563,8 @@
|
|||
"en": "<b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla) outputs at most 32 A",
|
||||
"nl": "<b>Tesla Supercharger (Destination</b> (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 32 A",
|
||||
"da": "<b>Tesla Supercharger (Destination)</b> (A Type 2 med kabel af Tesla-mærket) yder højst 32 A",
|
||||
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla) liefert maximal 32 A"
|
||||
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla) liefert maximal 32 A",
|
||||
"ca": "<b>Supercarregador Tesla (destinació)</b> (Un Tipus 2 amb un cable de marca Tesla) surt com a màxim a 32 A"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/charging_station/Type2_tethered.svg",
|
||||
|
@ -4949,7 +4954,7 @@
|
|||
"question": {
|
||||
"en": "Has a <div style='display: inline-block'><b><b>Type 2 CCS</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div> connector",
|
||||
"nl": "Heeft een <div style='display: inline-block'><b><b>Type 2 CCS</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>",
|
||||
"ca": "Té un connector <div style='display: inline-block'><b><b> Tipus 2 CCS</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>",
|
||||
"ca": "Té un connector <div style='display: inline-block'><b><b> CCS Tipus 2</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>",
|
||||
"da": "Har en <div style='display: inline-block'><b><b> Type 2 CCS</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div> connector",
|
||||
"de": "Hat einen <div style='display: inline-block'><b><b>Typ 2 CCS</b> (Mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div> Anschluss",
|
||||
"es": "Tiene un conector <div style='display: inline-block'><b>Tipo 2 CCS</b> (mennekes)</b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>"
|
||||
|
@ -4971,7 +4976,7 @@
|
|||
"question": {
|
||||
"en": "Has a <div style='display: inline-block'><b><b>Tesla Supercharger CCS</b> (a branded type2_css)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div> connector",
|
||||
"nl": "Heeft een <div style='display: inline-block'><b><b>Tesla Supercharger CCS</b> (een type2 CCS met Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>",
|
||||
"ca": "Té un connector <div style='display: inline-block'><b><b>Tesla Supercharger CCS</b> (un tipus2_css de marca)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>",
|
||||
"ca": "Té un connector <div style='display: inline-block'><b><b>CCS Tesla Supercharger </b> (un tipus2_css de marca)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>",
|
||||
"da": "Har et <div style='display: inline-block'><b><b> Tesla Supercharger CCS-stik</b> (et mærkevarer type2_css)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div> stik",
|
||||
"de": "Hat einen <div style='display: inline-block'><b><b>Tesla Supercharger CCS</b> (Typ 2 CSS vonTesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div> Anschluss",
|
||||
"es": "Tiene un conector <div style='display: inline-block'><b><b>Tesla Supercharger CCS</b> (un tipo2_css de marca)</b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>"
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
},
|
||||
"render": {
|
||||
"en": "<h3>Wikipedia article of the name giver</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}",
|
||||
"nl": "<h3>Wikipedia artikel van de naamgever</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}",
|
||||
"nl": "<h3>Wikipedia-artikel van de naamgever</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}",
|
||||
"de": "<h3>Wikipedia Artikel zur Namensherkunft</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}",
|
||||
"fr": "<h3>Article Wikipedia de la référence au nom</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}",
|
||||
"ca": "<h3> Article de la Viquipèdia del nom donant</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}"
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
"nl": "een fastfood-zaak",
|
||||
"ru": "быстрое питание",
|
||||
"de": "ein Schnellimbiss",
|
||||
"ca": "un de menjar ràpid",
|
||||
"ca": "un negoci de menjar ràpid",
|
||||
"fr": "un fast-food"
|
||||
},
|
||||
"tags": [
|
||||
|
|
|
@ -78,7 +78,8 @@
|
|||
"fr": "Le nom de cette microbibliothèque est {name}",
|
||||
"ru": "Название книжного шкафа — {name}",
|
||||
"it": "Questa microbiblioteca si chiama {name}",
|
||||
"hu": "Ennek a könyvespolcnak a neve: {name}"
|
||||
"hu": "Ennek a könyvespolcnak a neve: {name}",
|
||||
"ca": "El nom d'aquesta prestatgeria és {name}"
|
||||
},
|
||||
"question": {
|
||||
"en": "What is the name of this public bookcase?",
|
||||
|
@ -87,7 +88,8 @@
|
|||
"fr": "Quel est le nom de cette microbibliothèque ?",
|
||||
"ru": "Как называется этот общественный книжный шкаф?",
|
||||
"it": "Come si chiama questa microbiblioteca pubblica?",
|
||||
"hu": "Mi a neve ennek a nyilvános könyvespolcnak?"
|
||||
"hu": "Mi a neve ennek a nyilvános könyvespolcnak?",
|
||||
"ca": "Com es diu aquesta prestatgeria pública?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "name",
|
||||
|
@ -108,7 +110,8 @@
|
|||
"fr": "Cette microbibliothèque n'a pas de nom",
|
||||
"ru": "У этого книжного шкафа нет названия",
|
||||
"it": "Questa microbiblioteca non ha un nome proprio",
|
||||
"hu": "Ennek a könyvespolcnak nincs neve"
|
||||
"hu": "Ennek a könyvespolcnak nincs neve",
|
||||
"ca": "Aquesta prestatgeria no té un nom"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -122,7 +125,8 @@
|
|||
"fr": "{capacity} livres peuvent entrer dans cette microbibliothèque",
|
||||
"it": "Questa microbiblioteca può contenere fino a {capacity} libri",
|
||||
"ru": "{capacity} книг помещается в этот книжный шкаф",
|
||||
"hu": "Ezen a könyvespolcon {capacity} könyv fér el"
|
||||
"hu": "Ezen a könyvespolcon {capacity} könyv fér el",
|
||||
"ca": "Caben {capacity} llibres en aquesta prestatgeria"
|
||||
},
|
||||
"question": {
|
||||
"en": "How many books fit into this public bookcase?",
|
||||
|
@ -131,7 +135,8 @@
|
|||
"fr": "Combien de livres peuvent entrer dans cette microbibliothèque ?",
|
||||
"ru": "Сколько книг помещается в этом общественном книжном шкафу?",
|
||||
"it": "Quanti libri può contenere questa microbiblioteca?",
|
||||
"hu": "Hány könyv fér el ezen a nyilvános könyvespolcon?"
|
||||
"hu": "Hány könyv fér el ezen a nyilvános könyvespolcon?",
|
||||
"ca": "Quants llibres caben en aquesta prestatgeria pública?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "capacity",
|
||||
|
@ -149,7 +154,8 @@
|
|||
"fr": "Quel type de livres peut-on dans cette microbibliothèque ?",
|
||||
"it": "Che tipo di libri si possono trovare in questa microbiblioteca?",
|
||||
"ru": "Какие книги можно найти в этом общественном книжном шкафу?",
|
||||
"hu": "Milyen fajta könyvek találhatók ezen a közösségi könyvespolcon?"
|
||||
"hu": "Milyen fajta könyvek találhatók ezen a közösségi könyvespolcon?",
|
||||
"ca": "Quins tipus de llibres pots trobar a aquesta prestatgeria pública?"
|
||||
},
|
||||
"render": {
|
||||
"nl": "Deze plaats serveert vooral {books}",
|
||||
|
@ -174,7 +180,8 @@
|
|||
"ru": "В основном детские книги",
|
||||
"it": "Principalmente libri per l'infanzia",
|
||||
"hu": "Többnyire gyermekkönyvek",
|
||||
"es": "Mayoritariamente libros infantiles"
|
||||
"es": "Mayoritariamente libros infantiles",
|
||||
"ca": "Majoritàriament llibres infantils"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -187,7 +194,8 @@
|
|||
"ru": "В основном книги для взрослых",
|
||||
"it": "Principalmente libri per persone in età adulta",
|
||||
"hu": "Többnyire felnőtteknek szóló könyvek",
|
||||
"es": "Mayoritariamente libros para adultos"
|
||||
"es": "Mayoritariamente libros para adultos",
|
||||
"ca": "Majoritàriament llibres per a adults"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -200,7 +208,8 @@
|
|||
"de": "Befindet sich der Bücherschrank im Freien?",
|
||||
"fr": "Cette microbiliothèque est-elle en extérieur ?",
|
||||
"it": "Questa microbiblioteca si trova all'aperto?",
|
||||
"hu": "A szabadban van-e ez a könyvespolc?"
|
||||
"hu": "A szabadban van-e ez a könyvespolc?",
|
||||
"ca": "Aquesta prestatgeria es troba a l'exterior?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
|
@ -210,7 +219,8 @@
|
|||
"de": "Der Bücherschrank befindet sich im Innenbereich",
|
||||
"fr": "Cette microbibliothèque est en intérieur",
|
||||
"it": "Questa microbiblioteca si trova al chiuso",
|
||||
"hu": "Ez a könyvespolc beltérben található"
|
||||
"hu": "Ez a könyvespolc beltérben található",
|
||||
"ca": "Aquesta prestatgeria es troba a l'interior"
|
||||
},
|
||||
"if": "indoor=yes"
|
||||
},
|
||||
|
@ -221,7 +231,8 @@
|
|||
"de": "Dieser Bücherschrank befindet sich im Freien",
|
||||
"fr": "Cette microbibliothèque est en extérieur",
|
||||
"it": "Questa microbiblioteca si trova all'aperto",
|
||||
"hu": "Ez a könyvespolc a szabadban van"
|
||||
"hu": "Ez a könyvespolc a szabadban van",
|
||||
"ca": "Aquesta prestatgeria es troba a l'exterior"
|
||||
},
|
||||
"if": "indoor=no"
|
||||
},
|
||||
|
@ -249,7 +260,8 @@
|
|||
"fr": "Cette microbibliothèque est-elle librement accèssible ?",
|
||||
"it": "Questa microbiblioteca è ad accesso libero?",
|
||||
"ru": "Имеется ли свободный доступ к этому общественному книжному шкафу?",
|
||||
"hu": "Szabadon hozzáférhető-e ez a közösségi könyvespolc?"
|
||||
"hu": "Szabadon hozzáférhető-e ez a közösségi könyvespolc?",
|
||||
"ca": "Aquesta prestatgeria pública és de lliure accés?"
|
||||
},
|
||||
"condition": "indoor=yes",
|
||||
"mappings": [
|
||||
|
@ -275,7 +287,8 @@
|
|||
"fr": "Accèssible aux clients",
|
||||
"it": "L'accesso è riservato ai clienti",
|
||||
"hu": "Csak ügyfelek használhatják",
|
||||
"es": "Solo accesible a clientes"
|
||||
"es": "Solo accesible a clientes",
|
||||
"ca": "Només accessible per als clients"
|
||||
},
|
||||
"if": "access=customers"
|
||||
}
|
||||
|
@ -288,7 +301,8 @@
|
|||
"de": "Wer betreibt den Bücherschrank?",
|
||||
"fr": "Qui entretien cette microbibliothèque ?",
|
||||
"it": "Chi mantiene questa microbiblioteca?",
|
||||
"hu": "Ki tartja fenn ezt a nyilvános könyvespolcot?"
|
||||
"hu": "Ki tartja fenn ezt a nyilvános könyvespolcot?",
|
||||
"ca": "Qui gestiona aquesta prestatgeria pública?"
|
||||
},
|
||||
"render": {
|
||||
"en": "Operated by {operator}",
|
||||
|
@ -296,7 +310,8 @@
|
|||
"de": "Betrieben von {operator}",
|
||||
"fr": "Entretenue par {operator}",
|
||||
"it": "È gestita da {operator}",
|
||||
"hu": "Üzemeltető: {operator}"
|
||||
"hu": "Üzemeltető: {operator}",
|
||||
"ca": "Gestionant per {operator}"
|
||||
},
|
||||
"freeform": {
|
||||
"type": "string",
|
||||
|
@ -311,7 +326,8 @@
|
|||
"de": "Gehört der Bücherschrank zu einem Netzwerk?",
|
||||
"fr": "Cette microbibliothèque fait-elle partie d'un réseau/groupe ?",
|
||||
"it": "Questa microbiblioteca fa parte di una rete?",
|
||||
"hu": "Része-e egy nagyobb hálózatnak ez a nyilvános könyvespolc?"
|
||||
"hu": "Része-e egy nagyobb hálózatnak ez a nyilvános könyvespolc?",
|
||||
"ca": "Aquesta prestatgeria pública forma part d'una xarxa més gran?"
|
||||
},
|
||||
"render": {
|
||||
"en": "This public bookcase is part of {brand}",
|
||||
|
@ -319,7 +335,8 @@
|
|||
"de": "Dieser Bücherschrank ist Teil von {brand}",
|
||||
"fr": "Cette microbibliothèque fait partie du groupe {brand}",
|
||||
"it": "Questa microbiblioteca fa parte di {brand}",
|
||||
"hu": "Ez a nyilvános könyvespolc a(z) {brand} része"
|
||||
"hu": "Ez a nyilvános könyvespolc a(z) {brand} része",
|
||||
"ca": "Aquesta prestatgeria pública forma part de {brand}"
|
||||
},
|
||||
"condition": "ref=",
|
||||
"freeform": {
|
||||
|
@ -335,7 +352,8 @@
|
|||
"it": "Fa parte della rete 'Little Free Library'",
|
||||
"hu": "A „Little Free Library” hálózat része",
|
||||
"es": "Parte de la red 'Little Free Library'",
|
||||
"pl": "Część sieci \"Little Free Library\""
|
||||
"pl": "Część sieci \"Little Free Library\"",
|
||||
"ca": "Part de la xarxa 'Little Free Library'"
|
||||
},
|
||||
"if": {
|
||||
"and": [
|
||||
|
@ -397,7 +415,8 @@
|
|||
"de": "Dieser Bücherschrank ist nicht Teil eines größeren Netzwerks",
|
||||
"fr": "Cette microbibliothèque ne fait pas partie d'un réseau/groupe",
|
||||
"it": "Questa microbiblioteca non fa parte di una rete",
|
||||
"hu": "Ez a könyvespolc nem része egy nagyobb hálózatnak"
|
||||
"hu": "Ez a könyvespolc nem része egy nagyobb hálózatnak",
|
||||
"ca": "Aquesta prestatgeria no forma part d'una xarxa més gran"
|
||||
},
|
||||
"if": {
|
||||
"and": [
|
||||
|
@ -449,7 +468,8 @@
|
|||
"fr": "Plus d'infos sur le site web",
|
||||
"ru": "Более подробная информация на сайте",
|
||||
"it": "Maggiori informazioni sul sito web",
|
||||
"hu": "További információ ezen a weboldalon"
|
||||
"hu": "További információ ezen a weboldalon",
|
||||
"ca": "Més informació al web"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -488,7 +508,8 @@
|
|||
"question": {
|
||||
"en": "Has children books",
|
||||
"nl": "Kinderboeken aanwezig",
|
||||
"de": "Hat Kinderbücher"
|
||||
"de": "Hat Kinderbücher",
|
||||
"ca": "Té llibres infantils"
|
||||
},
|
||||
"osmTags": "books~i~.*children.*"
|
||||
}
|
||||
|
@ -501,7 +522,8 @@
|
|||
"question": {
|
||||
"en": "Has books for adults",
|
||||
"nl": "Boeken voor volwassenen aanwezig",
|
||||
"de": "Hat Bücher für Erwachsene"
|
||||
"de": "Hat Bücher für Erwachsene",
|
||||
"ca": "Té llibres per a adults"
|
||||
},
|
||||
"osmTags": "books~i~.*adults.*"
|
||||
}
|
||||
|
@ -516,14 +538,16 @@
|
|||
"en": "Indoor or outdoor",
|
||||
"de": "Innen oder Außen",
|
||||
"hu": "Beltéri vagy kültéri",
|
||||
"es": "Interior o exterior"
|
||||
"es": "Interior o exterior",
|
||||
"ca": "Interior o exterior"
|
||||
}
|
||||
},
|
||||
{
|
||||
"question": {
|
||||
"en": "Located indoors",
|
||||
"nl": "Bevindt zich binnen",
|
||||
"de": "Befindet sich im Innenbereich"
|
||||
"de": "Befindet sich im Innenbereich",
|
||||
"ca": "Situat a l'interior"
|
||||
},
|
||||
"osmTags": "indoor=yes"
|
||||
},
|
||||
|
@ -531,7 +555,8 @@
|
|||
"question": {
|
||||
"nl": "Bevindt zich buiten",
|
||||
"en": "Located outdoors",
|
||||
"de": "Befindet sich im Freien"
|
||||
"de": "Befindet sich im Freien",
|
||||
"ca": "Situat a l'exterior"
|
||||
},
|
||||
"osmTags": {
|
||||
"or": [
|
||||
|
|
|
@ -1285,7 +1285,8 @@
|
|||
"icon": "./assets/layers/questions/denominations/chf/5rp-2019-800px.png",
|
||||
"then": {
|
||||
"en": "5 centimes coins are accepted",
|
||||
"nl": "Munten van 5 rappen worden geaccepteerd"
|
||||
"nl": "Munten van 5 rappen worden geaccepteerd",
|
||||
"ca": "S'accepten monedes de 5 cèntims"
|
||||
},
|
||||
"hideInAnswer": "_currency!~.*CHF.*"
|
||||
},
|
||||
|
@ -1294,7 +1295,8 @@
|
|||
"icon": "./assets/layers/questions/denominations/chf/10rp-2019-800px.png",
|
||||
"then": {
|
||||
"en": "10 centimes coins are accepted",
|
||||
"nl": "Munten van 10 rappen worden geaccepteerd"
|
||||
"nl": "Munten van 10 rappen worden geaccepteerd",
|
||||
"ca": "S'accepten monedes de 10 cèntims"
|
||||
},
|
||||
"hideInAnswer": "_currency!~.*CHF.*"
|
||||
},
|
||||
|
@ -1303,7 +1305,8 @@
|
|||
"icon": "./assets/layers/questions/denominations/chf/20rp-2019-800px.png",
|
||||
"then": {
|
||||
"en": "20 centimes coins are accepted",
|
||||
"nl": "Munten van 20 rappen worden geaccepteerd"
|
||||
"nl": "Munten van 20 rappen worden geaccepteerd",
|
||||
"ca": "S'accepten monedes de 20 cèntims"
|
||||
},
|
||||
"hideInAnswer": "_currency!~.*CHF.*"
|
||||
},
|
||||
|
@ -2322,7 +2325,8 @@
|
|||
"en": "When was this object last checked?",
|
||||
"de": "Wann wurde dieses Objekt zuletzt kontrolliert?",
|
||||
"nl": "Wanneer is dit object voor het laatst gecontroleerd?",
|
||||
"pl": "Kiedy ten obiekt został ostatnio sprawdzony?"
|
||||
"pl": "Kiedy ten obiekt został ostatnio sprawdzony?",
|
||||
"ca": "Quan es va comprovar per última vegada aquest objecte?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "check_date",
|
||||
|
@ -2332,7 +2336,8 @@
|
|||
"en": "This object was last checked on <b>{check_date}</b>",
|
||||
"de": "Dieses Objekt wurde zuletzt kontrolliert am <b>{check_date}</b>",
|
||||
"nl": "Dit object is voor het laatst gecontroleerd op <b>{check_date}</b>",
|
||||
"pl": "Ten obiekt był ostatnio sprawdzony <b>{check_date}</b>"
|
||||
"pl": "Ten obiekt był ostatnio sprawdzony <b>{check_date}</b>",
|
||||
"ca": "Aquest objecte es va comprovar per darrera vegada el <b>{check_date}</b>"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
|
@ -2341,7 +2346,8 @@
|
|||
"en": "This object was last checked today",
|
||||
"de": "Dieses Objekt wurde heute zuletzt kontrolliert",
|
||||
"nl": "Dit object is vandaag voor het laatst gecontroleerd",
|
||||
"pl": "Ten obiekt został ostatnio sprawdzony dzisiaj"
|
||||
"pl": "Ten obiekt został ostatnio sprawdzony dzisiaj",
|
||||
"ca": "Aquest objecte es va comprovar per última vegada avui"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -33,7 +33,8 @@
|
|||
"de": "Überweg",
|
||||
"nl": "Oversteekplaats",
|
||||
"pa_PK": "کراسنگ",
|
||||
"fr": "Passage"
|
||||
"fr": "Passage",
|
||||
"ca": "Creuament"
|
||||
}
|
||||
},
|
||||
"presets": [
|
||||
|
@ -42,7 +43,8 @@
|
|||
"en": "a crossing",
|
||||
"de": "einen Überweg",
|
||||
"nl": "een oversteekplaats",
|
||||
"fr": "un passage"
|
||||
"fr": "un passage",
|
||||
"ca": "un creuament"
|
||||
},
|
||||
"tags": [
|
||||
"highway=footway",
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
"nl": "School <i>{name}</i>",
|
||||
"de": "Schule <i>{name}</i>",
|
||||
"fr": "School <i>{name}</i>",
|
||||
"pl": "Szkoła <i>{name}</i>"
|
||||
"pl": "Szkoła <i>{name}</i>",
|
||||
"ca": "Escola <i>{name}</i>"
|
||||
}
|
||||
},
|
||||
"calculatedTags": [
|
||||
|
@ -79,7 +80,8 @@
|
|||
"en": "What level of education is given on this school?",
|
||||
"nl": "Wat is het onderwijsniveau van deze school?",
|
||||
"de": "Welches Bildungsniveau wird an dieser Schule vermittelt?",
|
||||
"fr": "Quel est le niveau d'enseignement dispensé dans cette école ?"
|
||||
"fr": "Quel est le niveau d'enseignement dispensé dans cette école ?",
|
||||
"ca": "Quin nivell d'educació s'imparteix en aquesta escola?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
|
@ -98,7 +100,8 @@
|
|||
"en": "This is a school where one learns primary skills such as basic literacy and numerical skills. <div class='subtle'>Pupils typically enroll from 6 years old till 12 years old</div>",
|
||||
"nl": "Dit is een lagere school",
|
||||
"de": "In dieser Schule lernt man grundlegende Fähigkeiten wie Lesen, Schreiben und Rechnen. <div class='subtle'>Schüler besuchen die Schule in der Regel im Alter von 6 bis 12 Jahren</div>",
|
||||
"fr": "C'est une école où l'on apprend les compétences primaires telles que l'alphabétisation de base et les compétences numériques.. <div class='subtle'>Les élèves s'inscrivent généralement de 6 à 12 ans.</div>"
|
||||
"fr": "C'est une école où l'on apprend les compétences primaires telles que l'alphabétisation de base et les compétences numériques.. <div class='subtle'>Les élèves s'inscrivent généralement de 6 à 12 ans.</div>",
|
||||
"ca": "Aquesta és una escola on s'aprèn competències primàries com ara l'alfabetització bàsica i les habilitats numèriques. <div class='subtle'>Els alumnes solen matricular-se des dels 6 anys fins als 12 anys</div>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -107,7 +110,8 @@
|
|||
"en": "This is a secondary school which offers all grades",
|
||||
"nl": "Dit is een middelbare school die alle schooljaren aanbiedt (dus van het eerste tot en met het zesde middelbaar)",
|
||||
"de": "Dies ist eine weiterführende Schule, die alle Jahrgangsstufen anbietet",
|
||||
"fr": "C'est une école secondaire qui offre toutes les classes"
|
||||
"fr": "C'est une école secondaire qui offre toutes les classes",
|
||||
"ca": "Aquesta és una escola secundària que ofereix tots els graus"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -234,7 +238,8 @@
|
|||
"en": "This is a school where students study skills at their age-adequate level. <div>There are little or no special facilities to cater for students with special needs or facilities are ad-hoc</div>",
|
||||
"nl": "Deze school richt zich op studenten zonder extra zorgbehoefte. <div class='subtle>Dit omvat leerlingen waarbij kleine, ad-hoc maatregelen volstaan om de lessen te volgen.</div>",
|
||||
"de": "Es handelt sich um eine Schule, in der die Schüler Fähigkeiten auf ihrem altersgemäßen Niveau erlernen. <div>Es gibt wenig oder keine speziellen Einrichtungen für Schüler mit besonderen Bedürfnissen oder die Einrichtungen sind ad-hoc</div>",
|
||||
"fr": "C'est un établissement scolaire où les étudiants acquièrent des compétences à un niveau adapté à leur âge. <div>Il y a peu ou pas d'adaptations spéciales pour aider les étudiants ayant des besoins particuliers, ou les installations sont ad-hoc</div> Remark: isn't it contradictory to say there's no special facility + the facilities are ad-hoc?"
|
||||
"fr": "C'est un établissement scolaire où les étudiants acquièrent des compétences à un niveau adapté à leur âge. <div>Il y a peu ou pas d'adaptations spéciales pour aider les étudiants ayant des besoins particuliers, ou les installations sont ad-hoc</div> Remark: isn't it contradictory to say there's no special facility + the facilities are ad-hoc?",
|
||||
"ca": "Aquesta és una escola on els estudiants estudien habilitats al nivell adequat per a la seva edat. <div>Hi ha poques o cap instal·lació especial per atendre els estudiants amb necessitats especials o les instal·lacions són ad-hoc</div>"
|
||||
},
|
||||
"hideInAnswer": true
|
||||
},
|
||||
|
|
|
@ -23,7 +23,8 @@
|
|||
"render": {
|
||||
"en": "Shelter",
|
||||
"de": "Unterstand",
|
||||
"nl": "Schuilplaats"
|
||||
"nl": "Schuilplaats",
|
||||
"ca": "Refugi"
|
||||
}
|
||||
},
|
||||
"mapRendering": [
|
||||
|
@ -90,7 +91,8 @@
|
|||
"question": {
|
||||
"en": "What kind of shelter is this?",
|
||||
"de": "Um welche Art von Unterstand handelt es sich?",
|
||||
"nl": "Wat voor schuilplaats is dit?"
|
||||
"nl": "Wat voor schuilplaats is dit?",
|
||||
"ca": "Quin tipus de refugi és aquest?"
|
||||
},
|
||||
"render": {
|
||||
"en": "Shelter type: {shelter_type}",
|
||||
|
|
|
@ -101,7 +101,8 @@
|
|||
"ja": "このお店の名前は何ですか?",
|
||||
"nl": "Wat is de naam van deze winkel?",
|
||||
"de": "Wie ist der Name dieses Geschäfts?",
|
||||
"es": "¿Cual es el nombre de esta tienda?"
|
||||
"es": "¿Cual es el nombre de esta tienda?",
|
||||
"ca": "Quin és el nom d'aquesta botiga?"
|
||||
},
|
||||
"render": {
|
||||
"en": "This shop is called <i>{name}</i>",
|
||||
|
@ -122,13 +123,15 @@
|
|||
"en": "What kind of shop is this?",
|
||||
"nl": "Wat voor soort winkel is dit?",
|
||||
"de": "Um was für ein Geschäft handelt es sich?",
|
||||
"fr": "Quel genre de magasin est-ce?"
|
||||
"fr": "Quel genre de magasin est-ce?",
|
||||
"ca": "Quin tipus de botiga és aquesta?"
|
||||
},
|
||||
"render": {
|
||||
"en": "This is a {shop}",
|
||||
"de": "Das ist ein {shop}",
|
||||
"fr": "C'est une {shop}",
|
||||
"nl": "Dit is een {shop}"
|
||||
"nl": "Dit is een {shop}",
|
||||
"ca": "Açò és una {shop}"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "shop",
|
||||
|
@ -158,7 +161,8 @@
|
|||
"en": "What paper formats does this shop offer?",
|
||||
"de": "Welche Papierformate bietet das Geschäft an?",
|
||||
"fr": "Quels formats de papier cette boutique propose-t-elle ?",
|
||||
"nl": "Op welke papiergroottes kan deze zaak printen?"
|
||||
"nl": "Op welke papiergroottes kan deze zaak printen?",
|
||||
"ca": "Quins formats de paper ofereix aquesta botiga?"
|
||||
},
|
||||
"multiAnswer": true,
|
||||
"mappings": [
|
||||
|
@ -168,7 +172,8 @@
|
|||
"en": "This shop can print on papers of size A4",
|
||||
"de": "Das Geschäft kann Unterlagen auf A4 Papier drucken",
|
||||
"fr": "Cette boutique peut imprimer sur des papiers de format A4",
|
||||
"nl": "Deze zaak kan printen op A4-formaat"
|
||||
"nl": "Deze zaak kan printen op A4-formaat",
|
||||
"ca": "Aquesta botiga pot imprimir en papers de mida A4"
|
||||
},
|
||||
"ifnot": "service:print:A4=no"
|
||||
},
|
||||
|
@ -178,7 +183,8 @@
|
|||
"en": "This shop can print on papers of size A3",
|
||||
"de": "Das Geschäft kann Unterlagen auf A3 Papier drucken",
|
||||
"fr": "Cette boutique peut imprimer sur des papiers de format A3",
|
||||
"nl": "Deze zaak kan printen op A3-formaat"
|
||||
"nl": "Deze zaak kan printen op A3-formaat",
|
||||
"ca": "Aquesta botiga pot imprimir en papers de mida A3"
|
||||
},
|
||||
"ifnot": "service:print:A3=no"
|
||||
},
|
||||
|
@ -188,7 +194,8 @@
|
|||
"en": "This shop can print on papers of size A2",
|
||||
"de": "Das Geschäft kann Unterlagen auf A2 Papier drucken",
|
||||
"fr": "Cette boutique peut imprimer sur des papiers de format A2",
|
||||
"nl": "Deze zaak kan printen op A2-formaat"
|
||||
"nl": "Deze zaak kan printen op A2-formaat",
|
||||
"ca": "Aquesta botiga pot imprimir en papers de mida A2"
|
||||
},
|
||||
"ifnot": "service:print:A2=no"
|
||||
},
|
||||
|
@ -198,7 +205,8 @@
|
|||
"en": "This shop can print on papers of size A1",
|
||||
"de": "Das Geschäft kann Unterlagen auf A1 Papier drucken",
|
||||
"fr": "Cette boutique peut imprimer sur des papiers de format A1",
|
||||
"nl": "Deze zaak kan printen op A1-formaat"
|
||||
"nl": "Deze zaak kan printen op A1-formaat",
|
||||
"ca": "Aquesta botiga pot imprimir en papers de mida A1"
|
||||
},
|
||||
"ifnot": "service:print:A1=no"
|
||||
},
|
||||
|
@ -208,7 +216,8 @@
|
|||
"en": "This shop can print on papers of size A0",
|
||||
"de": "Das Geschäft kann Unterlagen auf A0 Papier drucken",
|
||||
"fr": "Cette boutique peut imprimer sur des papiers de format A0",
|
||||
"nl": "Deze zaak kan printen op A0-formaat"
|
||||
"nl": "Deze zaak kan printen op A0-formaat",
|
||||
"ca": "Aquesta botiga pot imprimir en papers de mida A0"
|
||||
},
|
||||
"ifnot": "service:print:A0=no"
|
||||
}
|
||||
|
@ -294,7 +303,8 @@
|
|||
"nl": "een winkel",
|
||||
"de": "ein Geschäft",
|
||||
"eo": "Butiko",
|
||||
"es": "una tienda"
|
||||
"es": "una tienda",
|
||||
"ca": "una botiga"
|
||||
},
|
||||
"description": {
|
||||
"en": "Add a new shop",
|
||||
|
@ -304,7 +314,8 @@
|
|||
"nl": "Voeg een nieuwe winkel toe",
|
||||
"de": "Ein neues Geschäft hinzufügen",
|
||||
"eo": "Enmeti novan butikon",
|
||||
"es": "Añadir una nueva tienda"
|
||||
"es": "Añadir una nueva tienda",
|
||||
"ca": "Afegir una botiga nova"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -322,7 +333,8 @@
|
|||
"en": "{title()} has closed down permanently",
|
||||
"de": "{title()} wurde dauerhaft geschlossen",
|
||||
"es": "{title()} ha cerrado permanentemente",
|
||||
"fr": "{title()} a fermé définitivement"
|
||||
"fr": "{title()} a fermé définitivement",
|
||||
"ca": "{title()} ha tancat permanentment"
|
||||
},
|
||||
"changesetMessage": "shop_closed"
|
||||
}
|
||||
|
@ -410,7 +422,8 @@
|
|||
"de": "Nur Geschäfte, die {search} verkaufen",
|
||||
"nl": "Toon enkel winkels die {search} verkopen",
|
||||
"es": "Solo mostrar tiendas que vendan {search}",
|
||||
"fr": "N'afficher que les magasins vendant {search}"
|
||||
"fr": "N'afficher que les magasins vendant {search}",
|
||||
"ca": "Sols mostrar botigues que venen {search}"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
"name": {
|
||||
"en": "Shower",
|
||||
"de": "Dusche",
|
||||
"fr": "Douche"
|
||||
"fr": "Douche",
|
||||
"ca": "Dutxa"
|
||||
},
|
||||
"minzoom": 12,
|
||||
"source": {
|
||||
|
@ -22,12 +23,14 @@
|
|||
"title": {
|
||||
"en": "a shower",
|
||||
"de": "eine Dusche",
|
||||
"fr": "une douche"
|
||||
"fr": "une douche",
|
||||
"ca": "una dutxa"
|
||||
},
|
||||
"description": {
|
||||
"en": "A (public) shower",
|
||||
"de": "Eine (öffentliche) Dusche",
|
||||
"fr": "Une douche (publique)"
|
||||
"fr": "Une douche (publique)",
|
||||
"ca": "Una dutxa (pública)"
|
||||
},
|
||||
"tags": [
|
||||
"amenity=shower"
|
||||
|
@ -42,7 +45,8 @@
|
|||
"question": {
|
||||
"en": "Who can use this shower?",
|
||||
"de": "Wer darf diese Dusche nutzen?",
|
||||
"fr": "Qui peut utiliser cette douche ?"
|
||||
"fr": "Qui peut utiliser cette douche ?",
|
||||
"ca": "Qui pot utilitzar aquesta dutxa?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
|
@ -50,7 +54,8 @@
|
|||
"then": {
|
||||
"en": "Anyone can use this shower",
|
||||
"de": "Jeder darf diese Dusche nutzen",
|
||||
"fr": "Tout le monde peut utiliser cette douche"
|
||||
"fr": "Tout le monde peut utiliser cette douche",
|
||||
"ca": "Qualsevol pot utilitzar aquesta dutxa"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -58,7 +63,8 @@
|
|||
"then": {
|
||||
"en": "Only customers can use this shower",
|
||||
"de": "Nur Kunden dürfen diese Dusche nutzen",
|
||||
"fr": "Seuls les clients peuvent utiliser cette douche"
|
||||
"fr": "Seuls les clients peuvent utiliser cette douche",
|
||||
"ca": "Només els clients poden utilitzar aquesta dutxa"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -66,7 +72,8 @@
|
|||
"then": {
|
||||
"en": "Accesible, but one has to ask for a key",
|
||||
"de": "Zugänglich, aber man muss nach einem Schlüssel fragen",
|
||||
"fr": "Accessible, mais il faut demander une clé"
|
||||
"fr": "Accessible, mais il faut demander une clé",
|
||||
"ca": "Accessible, però s'ha de demanar una clau"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -109,7 +116,8 @@
|
|||
"question": {
|
||||
"en": "How much does it cost to use this shower?",
|
||||
"de": "Wie viel kostet es, diese Dusche zu nutzen?",
|
||||
"fr": "Quel est le prix pour utiliser cette douche ?"
|
||||
"fr": "Quel est le prix pour utiliser cette douche ?",
|
||||
"ca": "Quant costa utilitzar aquesta dutxa?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "charge",
|
||||
|
@ -117,7 +125,8 @@
|
|||
"placeholder": {
|
||||
"en": "e.g. 1.50 EUR",
|
||||
"de": "z.B. 1,50 EUR",
|
||||
"fr": "par ex. 1,50 EUR"
|
||||
"fr": "par ex. 1,50 EUR",
|
||||
"ca": "p. e. 1.50 eur"
|
||||
}
|
||||
},
|
||||
"render": {
|
||||
|
@ -187,7 +196,8 @@
|
|||
"question": {
|
||||
"en": "Hot water available",
|
||||
"de": "Warmwasser verfügbar",
|
||||
"fr": "Eau chaude disponible"
|
||||
"fr": "Eau chaude disponible",
|
||||
"ca": "Aigua calenta disponible"
|
||||
},
|
||||
"osmTags": {
|
||||
"or": [
|
||||
|
@ -231,6 +241,7 @@
|
|||
"description": {
|
||||
"en": "A layer showing (public) showers",
|
||||
"de": "Eine Ebene mit (öffentlichen) Duschen",
|
||||
"fr": "Une couche affichant les douches (publiques)"
|
||||
"fr": "Une couche affichant les douches (publiques)",
|
||||
"ca": "Una capa que mostra dutxes (públiques)"
|
||||
}
|
||||
}
|
|
@ -162,7 +162,8 @@
|
|||
"fr": "La surface est <b>non pavée</b>",
|
||||
"it": "La superficie è <b>non pavimentata</b>",
|
||||
"de": "Die Oberfläche ist <b>ohne festen Belag</b>",
|
||||
"es": "La superficie está <b>sin pavimentar</b>"
|
||||
"es": "La superficie está <b>sin pavimentar</b>",
|
||||
"ca": "La superfície és <b>sense asfaltar</b>"
|
||||
},
|
||||
"hideInAnswer": true
|
||||
},
|
||||
|
@ -289,6 +290,7 @@
|
|||
"description": {
|
||||
"en": "All carfree roads",
|
||||
"nl": "Alle verkeersvrije wegen",
|
||||
"de": "Alle autofreien Straßen"
|
||||
"de": "Alle autofreien Straßen",
|
||||
"ca": "Totes les carreteres sense cotxe"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,20 +4,23 @@
|
|||
"en": "Speed Camera",
|
||||
"de": "Blitzer",
|
||||
"nl": "Flitspaal",
|
||||
"es": "Cámara de velocidad"
|
||||
"es": "Cámara de velocidad",
|
||||
"ca": "Càmera de velocitat"
|
||||
},
|
||||
"description": {
|
||||
"en": "Layer showing speed cameras",
|
||||
"de": "Ebene mit Blitzern",
|
||||
"nl": "Laag met flitspalen",
|
||||
"es": "Capa con cámaras de velocidad"
|
||||
"es": "Capa con cámaras de velocidad",
|
||||
"ca": "Capa que mostra càmeres de velocitat"
|
||||
},
|
||||
"title": {
|
||||
"render": {
|
||||
"en": "Speed Camera",
|
||||
"de": "Blitzer",
|
||||
"nl": "Flitspaal",
|
||||
"es": "Cámara de velocidad"
|
||||
"es": "Cámara de velocidad",
|
||||
"ca": "Càmera de velocitat"
|
||||
}
|
||||
},
|
||||
"minzoom": 12,
|
||||
|
@ -32,7 +35,8 @@
|
|||
"de": "Wie hoch ist die zulässige Höchstgeschwindigkeit an diesem Blitzer?",
|
||||
"nl": "Wat is de maximum toegestane snelheid bij deze flitspaal?",
|
||||
"es": "¿Cuál es la velocidad máxima permitida en este radar?",
|
||||
"fr": "Quelle est la vitesse maximale autorisée au niveau de ce radar ?"
|
||||
"fr": "Quelle est la vitesse maximale autorisée au niveau de ce radar ?",
|
||||
"ca": "Quina és la velocitat màxima permesa en aquest radar?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "maxspeed",
|
||||
|
@ -42,7 +46,8 @@
|
|||
"de": "Zulässige Höchstgeschwindigkeit",
|
||||
"nl": "Maximum toegestane snelheid",
|
||||
"es": "Velocidad máxima permitida",
|
||||
"fr": "Vitesse maximale autorisée"
|
||||
"fr": "Vitesse maximale autorisée",
|
||||
"ca": "Velocitat màxima permesa"
|
||||
}
|
||||
},
|
||||
"render": {
|
||||
|
@ -50,7 +55,8 @@
|
|||
"de": "Die zulässige Höchstgeschwindigkeit beträgt {canonical(maxspeed)}",
|
||||
"nl": "De maximum toegestane snelheid is {canonical(maxspeed)}",
|
||||
"es": "La velocidad máxima permitida es {canonical(maxspeed)}",
|
||||
"fr": "La vitesse maximale autorisée est {canonical(maxspeed)}"
|
||||
"fr": "La vitesse maximale autorisée est {canonical(maxspeed)}",
|
||||
"ca": "La velocitat màxima permesa és {canonical(maxspeed)}"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -73,7 +79,8 @@
|
|||
"en": "a speed camera",
|
||||
"de": "einen Blitzer",
|
||||
"nl": "een flitspaal",
|
||||
"es": "una cámara de velocidad"
|
||||
"es": "una cámara de velocidad",
|
||||
"ca": "una càmera de velocitat"
|
||||
},
|
||||
"snapToLayer": [
|
||||
"maxspeed"
|
||||
|
|
|
@ -3,12 +3,14 @@
|
|||
"name": {
|
||||
"en": "Speed Display",
|
||||
"de": "Geschwindigkeitsanzeigen",
|
||||
"nl": "Snelheidsdisplay"
|
||||
"nl": "Snelheidsdisplay",
|
||||
"ca": "Radar pedagògic"
|
||||
},
|
||||
"description": {
|
||||
"en": "Layer showing speed displays that alert drivers of their speed.",
|
||||
"de": "Ebene mit Geschwindigkeitsanzeigen, die Fahrer auf ihre Geschwindigkeit hinweisen.",
|
||||
"nl": "Laag met snelheidsdisplays om bestuurders op hun snelheid te wijzen."
|
||||
"nl": "Laag met snelheidsdisplays om bestuurders op hun snelheid te wijzen.",
|
||||
"ca": "Capa que mostra radars pedagògics que alerten als conductors de la seva velocitat."
|
||||
},
|
||||
"title": {
|
||||
"render": {
|
||||
|
@ -62,13 +64,15 @@
|
|||
"placeholder": {
|
||||
"en": "Text on speed display (e.g. 'Your speed')",
|
||||
"de": "Text auf der Geschwindigkeitsanzeige (z. B. \"Ihre Geschwindigkeit\")",
|
||||
"nl": "Tekst op snelheidsdisplay (b.v. 'Uw snelheid')"
|
||||
"nl": "Tekst op snelheidsdisplay (b.v. 'Uw snelheid')",
|
||||
"ca": "Text al radar pedagògic (p. e. 'La seva velocitat')"
|
||||
}
|
||||
},
|
||||
"render": {
|
||||
"en": "The text on this speed display is {inscription}",
|
||||
"de": "Der Text auf dieser Geschwindigkeitsanzeige ist {inscription}",
|
||||
"nl": "De tekst op dit snelheidsdisplay is {inscription}"
|
||||
"nl": "De tekst op dit snelheidsdisplay is {inscription}",
|
||||
"ca": "El text a aquest radar pedagogic és {inscription}"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -77,7 +81,8 @@
|
|||
"title": {
|
||||
"en": "a speed display",
|
||||
"de": "eine Geschwindigkeitsanzeige",
|
||||
"nl": "een snelheidsdisplay"
|
||||
"nl": "een snelheidsdisplay",
|
||||
"ca": "un radar pedagògic"
|
||||
},
|
||||
"tags": [
|
||||
"highway=speed_display"
|
||||
|
|
|
@ -565,7 +565,8 @@
|
|||
"ru": "Спортивная площадка",
|
||||
"it": "una campo sportivo",
|
||||
"de": "einen Sportplatz",
|
||||
"es": "una pista de deportes"
|
||||
"es": "una pista de deportes",
|
||||
"ca": "una pista d'esports"
|
||||
},
|
||||
"tags": [
|
||||
"leisure=pitch",
|
||||
|
|
|
@ -235,7 +235,7 @@
|
|||
},
|
||||
"then": {
|
||||
"en": "A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel, …",
|
||||
"nl": "Bewaking van de publieke ruilmte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel…",
|
||||
"nl": "Bewaking van de publieke ruimte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel…",
|
||||
"fr": "Une zone publique est surveillée, telle qu'une rue, un pont, une place, un parc, une gare, un couloir, un tunnel public…",
|
||||
"it": "Sorveglia un'area pubblica, come una strada, un ponte, una piazza, un parco, una stazione, un passaggio o un sottopasso pubblico, ...",
|
||||
"de": "Die Kamera überwacht einen öffentlichen Bereich, z. B. Straßen, Brücken, Plätze, Parks, Bahnhöfe, öffentliche Gänge oder Tunnel, …",
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
"en": "Settings",
|
||||
"nl": "Instellingen",
|
||||
"de": "Einstellungen",
|
||||
"fr": "Paramètres"
|
||||
"fr": "Paramètres",
|
||||
"da": "Indstillinger"
|
||||
}
|
||||
},
|
||||
"source": "special",
|
||||
|
@ -129,7 +130,8 @@
|
|||
"cs": "Pořízené fotografie budou licencovány pod <b>CC0</b> a přidány do veřejné domény. To znamená, že kdokoli může vaše snímky použít k jakémukoli účelu.",
|
||||
"ca": "Les imatges que feu tindran llicència <b>CC0</b> i s'afegiran al domini públic. Això vol dir que tothom pot utilitzar les vostres imatges per a qualsevol propòsit.",
|
||||
"es": "Las fotografías que tome tendrán una licencia con <b>CC0</b> y se agregarán al dominio público. Esto significa que todos pueden usar sus imágenes para cualquier propósito.",
|
||||
"pt": "As fotos que você tirar serão licenciadas com <b>CC0</b> e adicionadas ao domínio público. Isso significa que todos podem usar suas fotos para qualquer finalidade."
|
||||
"pt": "As fotos que você tirar serão licenciadas com <b>CC0</b> e adicionadas ao domínio público. Isso significa que todos podem usar suas fotos para qualquer finalidade.",
|
||||
"da": "Billeder, som du har taget, vil blive udgivet under <b>CC0</b>-licensen og lagt ud i fælleseje. Det betyder, at alle kan bruge dine billeder til ethvert formål."
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -245,7 +247,8 @@
|
|||
"en": "Allow to rotate the map",
|
||||
"de": "Drehen der Karte zulassen",
|
||||
"ca": "Permet girar el mapa",
|
||||
"fr": "Autoriser la rotation de la carte"
|
||||
"fr": "Autoriser la rotation de la carte",
|
||||
"da": "Tillad rotation af kortet"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -261,8 +264,21 @@
|
|||
{
|
||||
"id": "mangrove-keys",
|
||||
"render": {
|
||||
"en": "<a href='data:application/json,{mangroveidentity}' download='mangrove_private_key_{_name}'>Download the private key for your Mangrove Account</a> <p>Anyone possessing this file can make reviews with your identity</p>",
|
||||
"de": "<a href='data:application/json,{mangroveidentity}' download='mangrove_private_key_{_name}'>Laden Sie den privaten Schlüssel für Ihr Mangrove-Konto herunter</a> <p>Jeder, der diese Datei besitzt, kann mit Ihrer Identität Rezensionen vornehmen</p>"
|
||||
"special": {
|
||||
"type": "link",
|
||||
"href": "data:application/json,{mangroveidentity}",
|
||||
"download": "mangrove_private_key_{_name}",
|
||||
"text": {
|
||||
"en": "Download the private key for your Mangrove Account",
|
||||
"de": "Laden Sie den privaten Schlüssel für Ihr Mangrove-Konto herunter",
|
||||
"da": "Hent den private nøgle til din Mangrove-konto"
|
||||
}
|
||||
},
|
||||
"after": {
|
||||
"en": "Anyone possessing this file can make reviews with your identity",
|
||||
"de": "Jeder, der diese Datei besitzt, kann mit Ihrer Identität Rezensionen vornehmen",
|
||||
"da": "Enhver, der har denne fil, kan lave ændringer med din identitet"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -305,7 +321,8 @@
|
|||
"de": "Schaltfläche anzeigen zum schnellen Öffnen von Übersetzungen beim Verwenden von MapComplete auf einem großen Bildschirm",
|
||||
"fr": "Afficher un bouton pour ouvrir rapidement les traductions lorsque vous utilisez MapComplete sur un grand écran",
|
||||
"ca": "Mostra un botó per a obrir ràpidament les traduccions quan utilitzes MapComplet en una pantalla gran",
|
||||
"pt": "Mostrar um botão para abrir traduções rapidamente ao usar o MapComplete em uma tela grande"
|
||||
"pt": "Mostrar um botão para abrir traduções rapidamente ao usar o MapComplete em uma tela grande",
|
||||
"da": "Vis en knap for hurtigt at åbne oversættelser, når du bruger MapComplete på en stor skærm"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -447,7 +464,8 @@
|
|||
"ca": "Has fet {_csCount} en diferents ocasions! Això és sorprenent!",
|
||||
"fr": "Vous avez fait {_csCount} modifications ! C'est génial !",
|
||||
"pt": "Você fez alterações em {_csCount} ocasiões diferentes! Isso é incrível!",
|
||||
"nl": "Je hebt {_csCount} verschillende keren bijgedragen! Dat is indrukwekkend!"
|
||||
"nl": "Je hebt {_csCount} verschillende keren bijgedragen! Dat is indrukwekkend!",
|
||||
"da": "Du har lavet ændringer ved {_csCount} forskellige begivenheder! Det er fantastisk!"
|
||||
},
|
||||
"icon": "party"
|
||||
}
|
||||
|
@ -522,7 +540,8 @@
|
|||
"en": "Don't show debug info",
|
||||
"de": "Keine Debug-Informationen anzeigen",
|
||||
"cs": "Nezobrazovat informace o ladění",
|
||||
"pt": "Não mostrar informações de depuração"
|
||||
"pt": "Não mostrar informações de depuração",
|
||||
"da": "Vis ikke debug-informationer"
|
||||
},
|
||||
"hideInAnswer": true
|
||||
}
|
||||
|
|
|
@ -33,7 +33,8 @@
|
|||
"id": "turbin angin",
|
||||
"hu": "szélerőmű",
|
||||
"da": "vindmølle",
|
||||
"pl": "turbina wiatrowa"
|
||||
"pl": "turbina wiatrowa",
|
||||
"ca": "Turbina eòlica"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
|
|
|
@ -1842,13 +1842,13 @@
|
|||
"question": "Té un connector <div style='display: inline-block'><b><b>Tipus 2</b> (mennekes)</b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_socket.svg'/></div>"
|
||||
},
|
||||
"9": {
|
||||
"question": "Té un connector <div style='display: inline-block'><b><b> Tipus 2 CCS</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>"
|
||||
"question": "Té un connector <div style='display: inline-block'><b><b> CCS Tipus 2</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>"
|
||||
},
|
||||
"10": {
|
||||
"question": "Té un connector <div style='display: inline-block'><b><b>Tipus 2 amb cable</b> (mennekes)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>"
|
||||
},
|
||||
"11": {
|
||||
"question": "Té un connector <div style='display: inline-block'><b><b>Tesla Supercharger CCS</b> (un tipus2_css de marca)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>"
|
||||
"question": "Té un connector <div style='display: inline-block'><b><b>CCS Tesla Supercharger </b> (un tipus2_css de marca)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_CCS.svg'/></div>"
|
||||
},
|
||||
"12": {
|
||||
"question": "Té un connector <div style='display: inline-block'><b><b>Tesla Supercharger (destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>"
|
||||
|
@ -2141,6 +2141,17 @@
|
|||
"question": "Quin corrent fan els endolls amb <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> offer?",
|
||||
"render": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destinació)</b></b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> sortida com a màxim {socket:tesla_destination:current}A"
|
||||
},
|
||||
"current-12": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "<b>Supercarregador Tesla (destinació)</b> (Un Tipus 2 amb un cable de marca Tesla) surt com a màxim a 16 A"
|
||||
},
|
||||
"1": {
|
||||
"then": "<b>Supercarregador Tesla (destinació)</b> (Un Tipus 2 amb un cable de marca Tesla) surt com a màxim a 32 A"
|
||||
}
|
||||
},
|
||||
"question": "Quin corrent donen els endolls amb <div style='display: inline-block'><b><b>Tesla Supercharger (destinació)</b> (un tipus 2 amb cable amb la marca Tesla)</b> <img style ='amplada: 1rem; mostrar: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> oferta?"
|
||||
},
|
||||
"current-13": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
|
@ -2161,6 +2172,16 @@
|
|||
},
|
||||
"question": "Quin corrent ofereixen els endolls amb <div style='display: inline-block'><b><b>Chademo</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Chademo_type4.svg'/></div>?"
|
||||
},
|
||||
"current-7": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "<b>Tipus 2</b> (menneks) surt com a màxim a 16 A"
|
||||
},
|
||||
"1": {
|
||||
"then": "<b>Tipus 2</b> (menneks) surt com a màxim a 32 A"
|
||||
}
|
||||
}
|
||||
},
|
||||
"current-8": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
|
@ -3957,7 +3978,7 @@
|
|||
},
|
||||
"1": {
|
||||
"description": "Un negoci de menjar centrat en el servei ràpid sols en mostrador i menjar per a endur",
|
||||
"title": "un de menjar ràpid"
|
||||
"title": "un negoci de menjar ràpid"
|
||||
},
|
||||
"2": {
|
||||
"description": "Un local de menjar ràpid centrat en les patates fregides",
|
||||
|
@ -5586,6 +5607,35 @@
|
|||
}
|
||||
},
|
||||
"public_bookcase": {
|
||||
"filter": {
|
||||
"0": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Té llibres infantils"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Té llibres per a adults"
|
||||
}
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Interior o exterior"
|
||||
},
|
||||
"1": {
|
||||
"question": "Situat a l'interior"
|
||||
},
|
||||
"2": {
|
||||
"question": "Situat a l'exterior"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Bústies per llibres",
|
||||
"presets": {
|
||||
"0": {
|
||||
|
@ -5593,28 +5643,77 @@
|
|||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"bookcase-booktypes": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Majoritàriament llibres infantils"
|
||||
},
|
||||
"1": {
|
||||
"then": "Majoritàriament llibres per a adults"
|
||||
}
|
||||
},
|
||||
"question": "Quins tipus de llibres pots trobar a aquesta prestatgeria pública?"
|
||||
},
|
||||
"bookcase-is-accessible": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Accessible al públic"
|
||||
},
|
||||
"1": {
|
||||
"then": "Només accessible per als clients"
|
||||
}
|
||||
}
|
||||
},
|
||||
"question": "Aquesta prestatgeria pública és de lliure accés?"
|
||||
},
|
||||
"bookcase-is-indoors": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Aquesta prestatgeria es troba a l'interior"
|
||||
},
|
||||
"1": {
|
||||
"then": "Aquesta prestatgeria es troba a l'exterior"
|
||||
},
|
||||
"2": {
|
||||
"then": "La prestatgeria està ubicada a l'exterior"
|
||||
}
|
||||
}
|
||||
},
|
||||
"question": "Aquesta prestatgeria es troba a l'exterior?"
|
||||
},
|
||||
"public_bookcase-brand": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Part de la xarxa 'Little Free Library'"
|
||||
},
|
||||
"1": {
|
||||
"then": "Aquesta prestatgeria pública no és part d'una xarxa més gran"
|
||||
}
|
||||
},
|
||||
"question": "Aquesta prestatgeria pública forma part d'una xarxa més gran?",
|
||||
"render": "Aquesta prestatgeria pública forma part de {brand}"
|
||||
},
|
||||
"public_bookcase-capacity": {
|
||||
"question": "Quants llibres caben en aquesta prestatgeria pública?",
|
||||
"render": "Caben {capacity} llibres en aquesta prestatgeria"
|
||||
},
|
||||
"public_bookcase-name": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Aquesta prestatgeria no té un nom"
|
||||
}
|
||||
},
|
||||
"question": "Com es diu aquesta prestatgeria pública?",
|
||||
"render": "El nom d'aquesta prestatgeria és {name}"
|
||||
},
|
||||
"public_bookcase-operator": {
|
||||
"question": "Qui gestiona aquesta prestatgeria pública?",
|
||||
"render": "Gestionant per {operator}"
|
||||
},
|
||||
"public_bookcase-ref": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Aquesta prestatgeria no forma part d'una xarxa més gran"
|
||||
}
|
||||
},
|
||||
"question": "Quin és el número de referència d'aquesta prestatgeria pública?"
|
||||
},
|
||||
"public_bookcase-start_date": {
|
||||
|
@ -5622,7 +5721,12 @@
|
|||
"render": "Instal·lat el dia {start_date}"
|
||||
},
|
||||
"public_bookcase-website": {
|
||||
"question": "Hi ha algun lloc web amb més informació sobre aquesta prestatgeria pública?"
|
||||
"question": "Hi ha algun lloc web amb més informació sobre aquesta prestatgeria pública?",
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Més informació al web"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
|
@ -5636,6 +5740,15 @@
|
|||
},
|
||||
"questions": {
|
||||
"tagRenderings": {
|
||||
"check_date": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Aquest objecte es va comprovar per última vegada avui"
|
||||
}
|
||||
},
|
||||
"question": "Quan es va comprovar per última vegada aquest objecte?",
|
||||
"render": "Aquest objecte es va comprovar per darrera vegada el <b>{check_date}</b>"
|
||||
},
|
||||
"denominations-coins": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
|
@ -5661,6 +5774,15 @@
|
|||
},
|
||||
"7": {
|
||||
"then": "S'accepten monedes de 2 euros"
|
||||
},
|
||||
"8": {
|
||||
"then": "S'accepten monedes de 5 cèntims"
|
||||
},
|
||||
"9": {
|
||||
"then": "S'accepten monedes de 10 cèntims"
|
||||
},
|
||||
"10": {
|
||||
"then": "S'accepten monedes de 20 cèntims"
|
||||
}
|
||||
},
|
||||
"question": "Quines monedes es poden utilitzar per a pagar aquí?"
|
||||
|
@ -5980,7 +6102,8 @@
|
|||
"name": "Pasos de vianants pintats amb l'arc de Sant Martí",
|
||||
"presets": {
|
||||
"0": {
|
||||
"description": "Pas de vianants"
|
||||
"description": "Pas de vianants",
|
||||
"title": "un creuament"
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
|
@ -5998,6 +6121,9 @@
|
|||
},
|
||||
"question": "Aquest pas de vianants està pintat amb l'arc de Sant Martí?"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Creuament"
|
||||
}
|
||||
},
|
||||
"reception_desk": {
|
||||
|
@ -6302,6 +6428,12 @@
|
|||
"0": {
|
||||
"then": "Aquesta és una escola amb una secció d’educació infantil on els més petits reben una educació que prepara la lectura i l’escriptura."
|
||||
},
|
||||
"1": {
|
||||
"then": "Aquesta és una escola on s'aprèn competències primàries com ara l'alfabetització bàsica i les habilitats numèriques. <div class='subtle'>Els alumnes solen matricular-se des dels 6 anys fins als 12 anys</div>"
|
||||
},
|
||||
"2": {
|
||||
"then": "Aquesta és una escola secundària que ofereix tots els graus"
|
||||
},
|
||||
"3": {
|
||||
"then": "Aquesta és una escola secundària que <i>no</i> ofereix tots els graus, però ofereix <b>primer i segon</b> grau"
|
||||
},
|
||||
|
@ -6314,7 +6446,8 @@
|
|||
"6": {
|
||||
"then": "Aquesta escola ofereix educació post secundària (p.e. un sèptim o vuité any d'especialitzció)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"question": "Quin nivell d'educació s'imparteix en aquesta escola?"
|
||||
},
|
||||
"gender": {
|
||||
"mappings": {
|
||||
|
@ -6349,6 +6482,9 @@
|
|||
},
|
||||
"target-audience": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Aquesta és una escola on els estudiants estudien habilitats al nivell adequat per a la seva edat. <div>Hi ha poques o cap instal·lació especial per atendre els estudiants amb necessitats especials o les instal·lacions són ad-hoc</div>"
|
||||
},
|
||||
"1": {
|
||||
"then": "Aquesta és una escola per a estudiants sense necessitats especials <div class='subtle'> Açò inclou alumnes que poden seguir les classes amb petites mesures</div>"
|
||||
},
|
||||
|
@ -6377,18 +6513,77 @@
|
|||
"question": "Aquesta escola es dirigeix a estudiants amb necessitats especials? Quines instal·lacions estructurals té aquesta escola?",
|
||||
"render": "Aquesta escola té instal·lacions per a estudiants amb {school:for}"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Escola <i>{name}</i>"
|
||||
}
|
||||
},
|
||||
"selected_element": {
|
||||
"description": "Ressalta l'element seleccionat actualment. Anul·leu aquesta capa per tenir diferents colors"
|
||||
},
|
||||
"shelter": {
|
||||
"name": "Refugi"
|
||||
"name": "Refugi",
|
||||
"tagRenderings": {
|
||||
"shelter-type": {
|
||||
"question": "Quin tipus de refugi és aquest?"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Refugi"
|
||||
}
|
||||
},
|
||||
"shops": {
|
||||
"deletion": {
|
||||
"extraDeleteReasons": {
|
||||
"0": {
|
||||
"explanation": "{title()} ha tancat permanentment"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Una botiga",
|
||||
"filter": {
|
||||
"1": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Sols mostrar botigues que venen {search}"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Botiga",
|
||||
"presets": {
|
||||
"0": {
|
||||
"description": "Afegir una botiga nova",
|
||||
"title": "una botiga"
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"copyshop-print-sizes": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Aquesta botiga pot imprimir en papers de mida A4"
|
||||
},
|
||||
"1": {
|
||||
"then": "Aquesta botiga pot imprimir en papers de mida A3"
|
||||
},
|
||||
"2": {
|
||||
"then": "Aquesta botiga pot imprimir en papers de mida A2"
|
||||
},
|
||||
"3": {
|
||||
"then": "Aquesta botiga pot imprimir en papers de mida A1"
|
||||
},
|
||||
"4": {
|
||||
"then": "Aquesta botiga pot imprimir en papers de mida A0"
|
||||
}
|
||||
},
|
||||
"question": "Quins formats de paper ofereix aquesta botiga?"
|
||||
},
|
||||
"id_presets.shop_types": {
|
||||
"override": {
|
||||
"question": "Quin tipus de botiga és aquesta?",
|
||||
"render": "Açò és una {shop}"
|
||||
}
|
||||
},
|
||||
"organic": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
|
@ -6404,6 +6599,7 @@
|
|||
"question": "Aquesta botiga ofereix productes orgànics?"
|
||||
},
|
||||
"shops-name": {
|
||||
"question": "Quin és el nom d'aquesta botiga?",
|
||||
"render": "La botiga s'anomena <i>{name}</i>"
|
||||
}
|
||||
},
|
||||
|
@ -6420,8 +6616,43 @@
|
|||
}
|
||||
},
|
||||
"shower": {
|
||||
"description": "Una capa que mostra dutxes (públiques)",
|
||||
"filter": {
|
||||
"1": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Aigua calenta disponible"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Dutxa",
|
||||
"presets": {
|
||||
"0": {
|
||||
"description": "Una dutxa (pública)",
|
||||
"title": "una dutxa"
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"access": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Qualsevol pot utilitzar aquesta dutxa"
|
||||
},
|
||||
"1": {
|
||||
"then": "Només els clients poden utilitzar aquesta dutxa"
|
||||
},
|
||||
"2": {
|
||||
"then": "Accessible, però s'ha de demanar una clau"
|
||||
}
|
||||
},
|
||||
"question": "Qui pot utilitzar aquesta dutxa?"
|
||||
},
|
||||
"charge": {
|
||||
"freeform": {
|
||||
"placeholder": "p. e. 1.50 eur"
|
||||
},
|
||||
"question": "Quant costa utilitzar aquesta dutxa?",
|
||||
"render": "Costa {charge} utilitzar aquesta dutxa"
|
||||
},
|
||||
"fee": {
|
||||
|
@ -6455,6 +6686,7 @@
|
|||
}
|
||||
},
|
||||
"slow_roads": {
|
||||
"description": "Totes les carreteres sense cotxe",
|
||||
"tagRenderings": {
|
||||
"slow_roads-surface": {
|
||||
"mappings": {
|
||||
|
@ -6464,6 +6696,9 @@
|
|||
"1": {
|
||||
"then": "La superfície és <b>terra</b>"
|
||||
},
|
||||
"2": {
|
||||
"then": "La superfície és <b>sense asfaltar</b>"
|
||||
},
|
||||
"3": {
|
||||
"then": "La superfície és <b>sorra</b>"
|
||||
}
|
||||
|
@ -6472,6 +6707,25 @@
|
|||
}
|
||||
},
|
||||
"speed_camera": {
|
||||
"description": "Capa que mostra càmeres de velocitat",
|
||||
"name": "Càmera de velocitat",
|
||||
"presets": {
|
||||
"0": {
|
||||
"title": "una càmera de velocitat"
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"maxspeed": {
|
||||
"freeform": {
|
||||
"placeholder": "Velocitat màxima permesa"
|
||||
},
|
||||
"question": "Quina és la velocitat màxima permesa en aquest radar?",
|
||||
"render": "La velocitat màxima permesa és {canonical(maxspeed)}"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Càmera de velocitat"
|
||||
},
|
||||
"units": {
|
||||
"0": {
|
||||
"applicableUnits": {
|
||||
|
@ -6488,9 +6742,20 @@
|
|||
}
|
||||
},
|
||||
"speed_display": {
|
||||
"description": "Capa que mostra radars pedagògics que alerten als conductors de la seva velocitat.",
|
||||
"name": "Radar pedagògic",
|
||||
"presets": {
|
||||
"0": {
|
||||
"title": "un radar pedagògic"
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"inscription": {
|
||||
"question": "Quin text es mostra al radar pedagògic?"
|
||||
"freeform": {
|
||||
"placeholder": "Text al radar pedagògic (p. e. 'La seva velocitat')"
|
||||
},
|
||||
"question": "Quin text es mostra al radar pedagògic?",
|
||||
"render": "El text a aquest radar pedagogic és {inscription}"
|
||||
},
|
||||
"maxspeed": {
|
||||
"render": "La velocitat màxima permesa a aquest radar pedagògic és {canonical(maxspeed)}"
|
||||
|
@ -6541,6 +6806,11 @@
|
|||
}
|
||||
},
|
||||
"name": "Camps d'esports",
|
||||
"presets": {
|
||||
"1": {
|
||||
"title": "una pista d'esports"
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"sport-pitch-access": {
|
||||
"mappings": {
|
||||
|
@ -7607,7 +7877,8 @@
|
|||
"0": {
|
||||
"then": "{name}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"render": "Turbina eòlica"
|
||||
},
|
||||
"units": {
|
||||
"0": {
|
||||
|
|
|
@ -2951,6 +2951,42 @@
|
|||
},
|
||||
"usersettings": {
|
||||
"tagRenderings": {
|
||||
"cscount-thanks": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Du har lavet ændringer ved {_csCount} forskellige begivenheder! Det er fantastisk!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"fixate-north": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Tillad rotation af kortet"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mangrove-keys": {
|
||||
"render": {
|
||||
"after": "Enhver, der har denne fil, kan lave ændringer med din identitet",
|
||||
"special": {
|
||||
"text": "Hent den private nøgle til din Mangrove-konto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"picture-license": {
|
||||
"mappings": {
|
||||
"1": {
|
||||
"then": "Billeder, som du har taget, vil blive udgivet under <b>CC0</b>-licensen og lagt ud i fælleseje. Det betyder, at alle kan bruge dine billeder til ethvert formål."
|
||||
}
|
||||
}
|
||||
},
|
||||
"show_debug": {
|
||||
"mappings": {
|
||||
"2": {
|
||||
"then": "Vis ikke debug-informationer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"translation-completeness": {
|
||||
"render": "Oversættelser for {_theme} i {_language} er på {_translation_percentage}%: {_translation_translated_count} strenge ud af {_translation_total} er oversat"
|
||||
},
|
||||
|
@ -2960,8 +2996,18 @@
|
|||
"then": "Klik på 'oversæt'-ikonet ved siden af en streng for at indtaste eller opdatere et stykke tekst. Du skal have en Weblate-konto for at kunne gøre dette. Opret en med dit OSM-brugernavn for automatisk at låse oversættelsestilstanden op."
|
||||
}
|
||||
}
|
||||
},
|
||||
"translation-mode": {
|
||||
"mappings": {
|
||||
"1": {
|
||||
"then": "Vis en knap for hurtigt at åbne oversættelser, når du bruger MapComplete på en stor skærm"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Indstillinger"
|
||||
}
|
||||
},
|
||||
"veterinary": {
|
||||
"name": "dyrlæge",
|
||||
|
|
|
@ -9592,7 +9592,12 @@
|
|||
}
|
||||
},
|
||||
"mangrove-keys": {
|
||||
"render": "<a href='data:application/json,{mangroveidentity}' download='mangrove_private_key_{_name}'>Laden Sie den privaten Schlüssel für Ihr Mangrove-Konto herunter</a> <p>Jeder, der diese Datei besitzt, kann mit Ihrer Identität Rezensionen vornehmen</p>"
|
||||
"render": {
|
||||
"after": "Jeder, der diese Datei besitzt, kann mit Ihrer Identität Rezensionen vornehmen",
|
||||
"special": {
|
||||
"text": "Laden Sie den privaten Schlüssel für Ihr Mangrove-Konto herunter"
|
||||
}
|
||||
}
|
||||
},
|
||||
"picture-license": {
|
||||
"mappings": {
|
||||
|
|
|
@ -9680,7 +9680,12 @@
|
|||
}
|
||||
},
|
||||
"mangrove-keys": {
|
||||
"render": "<a href='data:application/json,{mangroveidentity}' download='mangrove_private_key_{_name}'>Download the private key for your Mangrove Account</a> <p>Anyone possessing this file can make reviews with your identity</p>"
|
||||
"render": {
|
||||
"after": "Anyone possessing this file can make reviews with your identity",
|
||||
"special": {
|
||||
"text": "Download the private key for your Mangrove Account"
|
||||
}
|
||||
}
|
||||
},
|
||||
"picture-license": {
|
||||
"mappings": {
|
||||
|
|
|
@ -4279,7 +4279,7 @@
|
|||
},
|
||||
"wikipedia-etymology": {
|
||||
"question": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?",
|
||||
"render": "<h3>Wikipedia artikel van de naamgever</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}"
|
||||
"render": "<h3>Wikipedia-artikel van de naamgever</h3>{wikipedia(name:etymology:wikidata):max-height:20rem}"
|
||||
},
|
||||
"zoeken op inventaris onroerend erfgoed": {
|
||||
"render": "<a href='https://inventaris.onroerenderfgoed.be/erfgoedobjecten?tekst={name}' target='_blank'>Zoeken op inventaris onroerend erfgoed</a>"
|
||||
|
@ -8135,7 +8135,7 @@
|
|||
"Surveillance type: public, outdoor, indoor": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Bewaking van de publieke ruilmte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel…"
|
||||
"then": "Bewaking van de publieke ruimte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel…"
|
||||
},
|
||||
"1": {
|
||||
"then": "Een buitenruimte met privaat karakter (zoals een privé-oprit, een parking, tankstation, …)"
|
||||
|
|
|
@ -132,6 +132,9 @@ export class TagUtils {
|
|||
|
||||
/**
|
||||
* Given multiple tagsfilters which can be used as answer, will take the tags with the same keys together as set.
|
||||
*
|
||||
* @see MatchesMultiAnswer to do the reverse
|
||||
*
|
||||
* E.g:
|
||||
*
|
||||
* const tag = TagUtils.ParseUploadableTag({"and": [
|
||||
|
|
|
@ -243,7 +243,10 @@ export default class TagRenderingConfig {
|
|||
if (txt === "") {
|
||||
throw context + " Rendering for language " + ln + " is empty"
|
||||
}
|
||||
if (txt.indexOf("{" + this.freeform.key + "}") >= 0 || txt.indexOf("&LBRACE" + this.freeform.key + "&RBRACE") ) {
|
||||
if (
|
||||
txt.indexOf("{" + this.freeform.key + "}") >= 0 ||
|
||||
txt.indexOf("&LBRACE" + this.freeform.key + "&RBRACE")
|
||||
) {
|
||||
continue
|
||||
}
|
||||
if (txt.indexOf("{" + this.freeform.key + ":") >= 0) {
|
||||
|
@ -645,6 +648,16 @@ export default class TagRenderingConfig {
|
|||
/**
|
||||
* Given a value for the freeform key and an overview of the selected mappings, construct the correct tagsFilter to apply
|
||||
*
|
||||
* const config = new TagRenderingConfig({"id":"bookcase-booktypes","render":{"en":"This place mostly serves {books}" },
|
||||
* "question":{"en":"What kind of books can be found in this public bookcase?"},
|
||||
* "freeform":{"key":"books","addExtraTags":["fixme=Freeform tag `books` used, to be doublechecked"],
|
||||
* "inline":true},
|
||||
* "multiAnswer":true,
|
||||
* "mappings":[{"if":"books=children","then":"Mostly children books"},
|
||||
* {"if":"books=adults","then": "Mostly books for adults"}]}
|
||||
* , "testcase")
|
||||
* config.constructChangeSpecification(undefined, undefined, [false, true, false], {amenity: "public_bookcase"}) // => new And([new Tag("books","adults")])
|
||||
*
|
||||
* @param freeformValue The freeform value which will be applied as 'freeform.key'. Ignored if 'freeform.key' is not set
|
||||
*
|
||||
* @param singleSelectedMapping (Only used if multiAnswer == false): the single mapping to apply. Use (mappings.length) for the freeform
|
||||
|
|
|
@ -1,18 +1,22 @@
|
|||
import Translations from "../i18n/Translations"
|
||||
import BaseUIElement from "../BaseUIElement"
|
||||
import { Store } from "../../Logic/UIEventSource"
|
||||
import { Utils } from "../../Utils"
|
||||
|
||||
export default class Link extends BaseUIElement {
|
||||
private readonly _href: string | Store<string>
|
||||
private readonly _embeddedShow: BaseUIElement
|
||||
private readonly _newTab: boolean
|
||||
private readonly _download: string
|
||||
|
||||
constructor(
|
||||
embeddedShow: BaseUIElement | string,
|
||||
href: string | Store<string>,
|
||||
newTab: boolean = false
|
||||
newTab: boolean = false,
|
||||
download: string = undefined
|
||||
) {
|
||||
super()
|
||||
this._download = download
|
||||
this._embeddedShow = Translations.W(embeddedShow)
|
||||
this._href = href
|
||||
this._newTab = newTab
|
||||
|
@ -58,6 +62,9 @@ export default class Link extends BaseUIElement {
|
|||
if (this._newTab) {
|
||||
el.target = "_blank"
|
||||
}
|
||||
if (this._download) {
|
||||
el.download = this._download
|
||||
}
|
||||
el.appendChild(embeddedShow)
|
||||
return el
|
||||
}
|
||||
|
|
|
@ -1,76 +1,114 @@
|
|||
<script lang="ts">
|
||||
import { Store, UIEventSource } from "../../../Logic/UIEventSource"
|
||||
import type { SpecialVisualizationState } from "../../SpecialVisualization"
|
||||
import Tr from "../../Base/Tr.svelte"
|
||||
import type { Feature } from "geojson"
|
||||
import type { Mapping } from "../../../Models/ThemeConfig/TagRenderingConfig"
|
||||
import TagRenderingConfig from "../../../Models/ThemeConfig/TagRenderingConfig"
|
||||
import { TagsFilter } from "../../../Logic/Tags/TagsFilter"
|
||||
import FreeformInput from "./FreeformInput.svelte"
|
||||
import Translations from "../../i18n/Translations.js"
|
||||
import ChangeTagAction from "../../../Logic/Osm/Actions/ChangeTagAction"
|
||||
import { createEventDispatcher, onDestroy } from "svelte"
|
||||
import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"
|
||||
import SpecialTranslation from "./SpecialTranslation.svelte"
|
||||
import TagHint from "../TagHint.svelte"
|
||||
import LoginToggle from "../../Base/LoginToggle.svelte"
|
||||
import SubtleButton from "../../Base/SubtleButton.svelte"
|
||||
import Loading from "../../Base/Loading.svelte"
|
||||
import TagRenderingMappingInput from "./TagRenderingMappingInput.svelte"
|
||||
import { Translation } from "../../i18n/Translation"
|
||||
import Constants from "../../../Models/Constants"
|
||||
import { Unit } from "../../../Models/Unit"
|
||||
import UserRelatedState from "../../../Logic/State/UserRelatedState"
|
||||
import { twJoin } from "tailwind-merge"
|
||||
import { UIEventSource } from "../../../Logic/UIEventSource";
|
||||
import type { SpecialVisualizationState } from "../../SpecialVisualization";
|
||||
import Tr from "../../Base/Tr.svelte";
|
||||
import type { Feature } from "geojson";
|
||||
import type { Mapping } from "../../../Models/ThemeConfig/TagRenderingConfig";
|
||||
import TagRenderingConfig from "../../../Models/ThemeConfig/TagRenderingConfig";
|
||||
import { TagsFilter } from "../../../Logic/Tags/TagsFilter";
|
||||
import FreeformInput from "./FreeformInput.svelte";
|
||||
import Translations from "../../i18n/Translations.js";
|
||||
import ChangeTagAction from "../../../Logic/Osm/Actions/ChangeTagAction";
|
||||
import { createEventDispatcher, onDestroy } from "svelte";
|
||||
import LayerConfig from "../../../Models/ThemeConfig/LayerConfig";
|
||||
import SpecialTranslation from "./SpecialTranslation.svelte";
|
||||
import TagHint from "../TagHint.svelte";
|
||||
import LoginToggle from "../../Base/LoginToggle.svelte";
|
||||
import SubtleButton from "../../Base/SubtleButton.svelte";
|
||||
import Loading from "../../Base/Loading.svelte";
|
||||
import TagRenderingMappingInput from "./TagRenderingMappingInput.svelte";
|
||||
import { Translation } from "../../i18n/Translation";
|
||||
import Constants from "../../../Models/Constants";
|
||||
import { Unit } from "../../../Models/Unit";
|
||||
import UserRelatedState from "../../../Logic/State/UserRelatedState";
|
||||
import { twJoin } from "tailwind-merge";
|
||||
import { TagUtils } from "../../../Logic/Tags/TagUtils";
|
||||
|
||||
export let config: TagRenderingConfig
|
||||
export let tags: UIEventSource<Record<string, string>>
|
||||
export let selectedElement: Feature
|
||||
export let state: SpecialVisualizationState
|
||||
export let layer: LayerConfig
|
||||
export let config: TagRenderingConfig;
|
||||
export let tags: UIEventSource<Record<string, string>>;
|
||||
export let selectedElement: Feature;
|
||||
export let state: SpecialVisualizationState;
|
||||
export let layer: LayerConfig;
|
||||
|
||||
let feedback: UIEventSource<Translation> = new UIEventSource<Translation>(undefined)
|
||||
let feedback: UIEventSource<Translation> = new UIEventSource<Translation>(undefined);
|
||||
|
||||
let unit: Unit = layer.units?.find((unit) => unit.appliesToKeys.has(config.freeform?.key))
|
||||
let unit: Unit = layer.units?.find((unit) => unit.appliesToKeys.has(config.freeform?.key));
|
||||
|
||||
// Will be bound if a freeform is available
|
||||
let freeformInput = new UIEventSource<string>(tags?.[config.freeform?.key])
|
||||
let selectedMapping: number = undefined
|
||||
let checkedMappings: boolean[]
|
||||
$: {
|
||||
let tgs = $tags
|
||||
mappings = config.mappings?.filter((m) => {
|
||||
let freeformInput = new UIEventSource<string>(tags?.[config.freeform?.key]);
|
||||
let selectedMapping: number = undefined;
|
||||
let checkedMappings: boolean[];
|
||||
|
||||
/**
|
||||
* Prepares and fills the checkedMappings
|
||||
*/
|
||||
function initialize(tgs: Record<string, string>, confg: TagRenderingConfig) {
|
||||
mappings = confg.mappings?.filter((m) => {
|
||||
if (typeof m.hideInAnswer === "boolean") {
|
||||
return !m.hideInAnswer
|
||||
return !m.hideInAnswer;
|
||||
}
|
||||
return !m.hideInAnswer.matchesProperties(tgs)
|
||||
})
|
||||
return !m.hideInAnswer.matchesProperties(tgs);
|
||||
});
|
||||
// We received a new config -> reinit
|
||||
unit = layer.units.find((unit) => unit.appliesToKeys.has(config.freeform?.key))
|
||||
unit = layer.units.find((unit) => unit.appliesToKeys.has(confg.freeform?.key));
|
||||
|
||||
if (
|
||||
config.mappings?.length > 0 &&
|
||||
(checkedMappings === undefined || checkedMappings?.length + 1 < config.mappings.length)
|
||||
confg.mappings?.length > 0 &&
|
||||
(checkedMappings === undefined || checkedMappings?.length < confg.mappings.length + (confg.freeform ? 1 : 0))
|
||||
) {
|
||||
const seenFreeforms = [];
|
||||
TagUtils.FlattenMultiAnswer()
|
||||
checkedMappings = [
|
||||
...config.mappings.map((_) => false),
|
||||
false /*One element extra in case a freeform value is added*/,
|
||||
]
|
||||
...confg.mappings.map((mapping) => {
|
||||
const matches = TagUtils.MatchesMultiAnswer(mapping.if, tgs)
|
||||
if (matches && confg.freeform) {
|
||||
const newProps = TagUtils.changeAsProperties(mapping.if.asChange());
|
||||
seenFreeforms.push(newProps[confg.freeform.key]);
|
||||
}
|
||||
if (config.freeform?.key) {
|
||||
if (!config.multiAnswer) {
|
||||
// Somehow, setting multianswer freeform values is broken if this is not set
|
||||
freeformInput.setData(tgs[config.freeform.key])
|
||||
return matches;
|
||||
})
|
||||
];
|
||||
|
||||
if(tgs !== undefined && confg.freeform){
|
||||
const unseenFreeformValues = tgs[confg.freeform.key]?.split(";") ?? []
|
||||
for (const seenFreeform of seenFreeforms) {
|
||||
if(!seenFreeform){
|
||||
continue
|
||||
}
|
||||
const index = unseenFreeformValues.indexOf(seenFreeform)
|
||||
if(index < 0){
|
||||
continue
|
||||
}
|
||||
unseenFreeformValues.splice(index, 1)
|
||||
}
|
||||
// TODO this has _to much_ values
|
||||
freeformInput.setData(unseenFreeformValues.join(";"))
|
||||
checkedMappings.push(unseenFreeformValues.length > 0)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
console.log("Inited 'checkMappings' to", checkedMappings);
|
||||
if (confg.freeform?.key) {
|
||||
if (!confg.multiAnswer) {
|
||||
// Somehow, setting multi-answer freeform values is broken if this is not set
|
||||
freeformInput.setData(tgs[confg.freeform.key]);
|
||||
}
|
||||
} else {
|
||||
freeformInput.setData(undefined)
|
||||
freeformInput.setData(undefined);
|
||||
}
|
||||
feedback.setData(undefined)
|
||||
feedback.setData(undefined);
|
||||
}
|
||||
export let selectedTags: TagsFilter = undefined
|
||||
|
||||
let mappings: Mapping[] = config?.mappings
|
||||
let searchTerm: UIEventSource<string> = new UIEventSource("")
|
||||
$: {
|
||||
// Even though 'config' is not declared as a store, Svelte uses it as one to update the component
|
||||
// We want to (re)-initialize whenever the 'tags' or 'config' change - but not when 'checkedConfig' changes
|
||||
initialize($tags, config);
|
||||
}
|
||||
export let selectedTags: TagsFilter = undefined;
|
||||
|
||||
let mappings: Mapping[] = config?.mappings;
|
||||
let searchTerm: UIEventSource<string> = new UIEventSource("");
|
||||
|
||||
$: {
|
||||
try {
|
||||
|
@ -79,10 +117,10 @@
|
|||
selectedMapping,
|
||||
checkedMappings,
|
||||
tags.data
|
||||
)
|
||||
);
|
||||
} catch (e) {
|
||||
console.error("Could not calculate changeSpecification:", e)
|
||||
selectedTags = undefined
|
||||
console.error("Could not calculate changeSpecification:", e);
|
||||
selectedTags = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,53 +129,53 @@
|
|||
config: TagRenderingConfig
|
||||
applied: TagsFilter
|
||||
}
|
||||
}>()
|
||||
}>();
|
||||
|
||||
function onSave() {
|
||||
if (selectedTags === undefined) {
|
||||
return
|
||||
return;
|
||||
}
|
||||
if (layer.source === null) {
|
||||
/**
|
||||
* This is a special, priviliged layer.
|
||||
* We simply apply the tags onto the records
|
||||
*/
|
||||
const kv = selectedTags.asChange(tags.data)
|
||||
const kv = selectedTags.asChange(tags.data);
|
||||
for (const { k, v } of kv) {
|
||||
if (v === undefined) {
|
||||
delete tags.data[k]
|
||||
delete tags.data[k];
|
||||
} else {
|
||||
tags.data[k] = v
|
||||
tags.data[k] = v;
|
||||
}
|
||||
}
|
||||
tags.ping()
|
||||
return
|
||||
tags.ping();
|
||||
return;
|
||||
}
|
||||
|
||||
dispatch("saved", { config, applied: selectedTags })
|
||||
dispatch("saved", { config, applied: selectedTags });
|
||||
const change = new ChangeTagAction(tags.data.id, selectedTags, tags.data, {
|
||||
theme: state.layout.id,
|
||||
changeType: "answer",
|
||||
})
|
||||
freeformInput.setData(undefined)
|
||||
selectedMapping = undefined
|
||||
selectedTags = undefined
|
||||
changeType: "answer"
|
||||
});
|
||||
freeformInput.setData(undefined);
|
||||
selectedMapping = undefined;
|
||||
selectedTags = undefined;
|
||||
|
||||
change
|
||||
.CreateChangeDescriptions()
|
||||
.then((changes) => state.changes.applyChanges(changes))
|
||||
.catch(console.error)
|
||||
.catch(console.error);
|
||||
}
|
||||
|
||||
let featureSwitchIsTesting = state.featureSwitchIsTesting
|
||||
let featureSwitchIsDebugging = state.featureSwitches.featureSwitchIsDebugging
|
||||
let showTags = state.userRelatedState.showTags
|
||||
let numberOfCs = state.osmConnection.userDetails.data.csCount
|
||||
let featureSwitchIsTesting = state.featureSwitchIsTesting;
|
||||
let featureSwitchIsDebugging = state.featureSwitches.featureSwitchIsDebugging;
|
||||
let showTags = state.userRelatedState.showTags;
|
||||
let numberOfCs = state.osmConnection.userDetails.data.csCount;
|
||||
onDestroy(
|
||||
state.osmConnection.userDetails.addCallbackAndRun((ud) => {
|
||||
numberOfCs = ud.csCount
|
||||
numberOfCs = ud.csCount;
|
||||
})
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
{#if config.question !== undefined}
|
||||
|
|
|
@ -1155,19 +1155,24 @@ export default class SpecialVisualizations {
|
|||
name: "class",
|
||||
doc: "CSS-classes to add to the element",
|
||||
},
|
||||
{
|
||||
name: "download",
|
||||
doc: "If set, this link will act as a download-button. The contents of `href` will be offered for download; this parameter will act as the proposed filename",
|
||||
},
|
||||
],
|
||||
constr(
|
||||
state: SpecialVisualizationState,
|
||||
tagSource: UIEventSource<Record<string, string>>,
|
||||
args: string[]
|
||||
): BaseUIElement {
|
||||
const [text, href, classnames] = args
|
||||
const [text, href, classnames, download] = args
|
||||
return new VariableUiElement(
|
||||
tagSource.map((tags) =>
|
||||
new Link(
|
||||
Utils.SubstituteKeys(text, tags),
|
||||
Utils.SubstituteKeys(href, tags),
|
||||
true
|
||||
download === undefined,
|
||||
Utils.SubstituteKeys(download, tags)
|
||||
).SetClass(classnames)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -471,7 +471,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
*/
|
||||
public static SubstituteKeys(
|
||||
txt: string | undefined,
|
||||
tags?: Record<string, any>,
|
||||
tags: Record<string, any> | undefined,
|
||||
useLang?: string
|
||||
): string | undefined {
|
||||
if (txt === undefined) {
|
||||
|
|
Loading…
Reference in a new issue