diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json
index 6e1b19259d..705e3e60f2 100644
--- a/assets/layers/charging_station/charging_station.json
+++ b/assets/layers/charging_station/charging_station.json
@@ -2763,7 +2763,8 @@
"en": "Type 2 (mennekes) outputs at most 16 A",
"nl": "Type 2 (mennekes) levert een stroom van maximaal 16 A",
"da": "Type 2 (mennekes) udgange højst 16 A",
- "de": "Typ 2 (Mennekes) liefert maximal 16 A"
+ "de": "Typ 2 (Mennekes) liefert maximal 16 A",
+ "ca": "Tipus 2 (menneks) surt com a màxim a 16 A"
},
"icon": {
"path": "./assets/layers/charging_station/Type2_socket.svg",
@@ -2776,7 +2777,8 @@
"en": "Type 2 (mennekes) outputs at most 32 A",
"nl": "Type 2 (mennekes) levert een stroom van maximaal 32 A",
"da": "Type 2 (mennekes) udgange højst 32 A",
- "de": "Typ 2 (Mennekes) liefert maximal 32 A"
+ "de": "Typ 2 (Mennekes) liefert maximal 32 A",
+ "ca": "Tipus 2 (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
Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) 
offer?",
"nl": "Welke stroom levert de stekker van type Tesla Supercharger (Destination) (Een Type 2 met kabel en Tesla-logo) 
?",
"da": "Hvilken strømstyrke har stikkene med Tesla Supercharger (Destination) (A Type 2 med kabel med Tesla-mærket) 
?",
- "de": "Welche Stromstärke liefern die Stecker mit Tesla Supercharger (Destination) (Typ 2 mit Kabel von Tesla) 
?"
+ "de": "Welche Stromstärke liefern die Stecker mit Tesla Supercharger (Destination) (Typ 2 mit Kabel von Tesla) 
?",
+ "ca": "Quin corrent donen els endolls amb Tesla Supercharger (destinació) (un tipus 2 amb cable amb la marca Tesla) 
oferta?"
},
"render": {
"en": "Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) 
outputs at most {socket:tesla_destination:current}A",
@@ -3546,7 +3549,8 @@
"en": "Tesla Supercharger (Destination) (A Type 2 with cable branded as tesla) outputs at most 16 A",
"nl": "Tesla supercharger (Destination (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 16 A",
"da": "Tesla Supercharger (Destination) (A Type 2 med kabel mærket som tesla) yder højst 16 A",
- "de": "Tesla Supercharger (Destination) (Typ 2 mit Kabel) liefert maximal 16 A"
+ "de": "Tesla Supercharger (Destination) (Typ 2 mit Kabel) liefert maximal 16 A",
+ "ca": "Supercarregador Tesla (destinació) (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": "Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 32 A",
"nl": "Tesla Supercharger (Destination (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 32 A",
"da": "Tesla Supercharger (Destination) (A Type 2 med kabel af Tesla-mærket) yder højst 32 A",
- "de": "Tesla Supercharger (Destination) (Typ 2 mit Kabel von Tesla) liefert maximal 32 A"
+ "de": "Tesla Supercharger (Destination) (Typ 2 mit Kabel von Tesla) liefert maximal 32 A",
+ "ca": "Supercarregador Tesla (destinació) (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 Type 2 CCS (mennekes) 
connector",
"nl": "Heeft een Type 2 CCS (mennekes) 
",
- "ca": "Té un connector Tipus 2 CCS (mennekes) 
",
+ "ca": "Té un connector CCS Tipus 2 (mennekes) 
",
"da": "Har en Type 2 CCS (mennekes) 
connector",
"de": "Hat einen Typ 2 CCS (Mennekes) 
Anschluss",
"es": "Tiene un conector Tipo 2 CCS (mennekes)

"
@@ -4971,7 +4976,7 @@
"question": {
"en": "Has a Tesla Supercharger CCS (a branded type2_css) 
connector",
"nl": "Heeft een Tesla Supercharger CCS (een type2 CCS met Tesla-logo) 
",
- "ca": "Té un connector Tesla Supercharger CCS (un tipus2_css de marca) 
",
+ "ca": "Té un connector CCS Tesla Supercharger (un tipus2_css de marca) 
",
"da": "Har et Tesla Supercharger CCS-stik (et mærkevarer type2_css) 
stik",
"de": "Hat einen Tesla Supercharger CCS (Typ 2 CSS vonTesla) 
Anschluss",
"es": "Tiene un conector Tesla Supercharger CCS (un tipo2_css de marca)
"
diff --git a/assets/layers/etymology/etymology.json b/assets/layers/etymology/etymology.json
index df6673514b..17bc040499 100644
--- a/assets/layers/etymology/etymology.json
+++ b/assets/layers/etymology/etymology.json
@@ -160,7 +160,7 @@
},
"render": {
"en": "Wikipedia article of the name giver
{wikipedia(name:etymology:wikidata):max-height:20rem}",
- "nl": "Wikipedia artikel van de naamgever
{wikipedia(name:etymology:wikidata):max-height:20rem}",
+ "nl": "Wikipedia-artikel van de naamgever
{wikipedia(name:etymology:wikidata):max-height:20rem}",
"de": "Wikipedia Artikel zur Namensherkunft
{wikipedia(name:etymology:wikidata):max-height:20rem}",
"fr": "Article Wikipedia de la référence au nom
{wikipedia(name:etymology:wikidata):max-height:20rem}",
"ca": " Article de la Viquipèdia del nom donant
{wikipedia(name:etymology:wikidata):max-height:20rem}"
diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json
index 8116713637..64b55a87de 100644
--- a/assets/layers/food/food.json
+++ b/assets/layers/food/food.json
@@ -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": [
diff --git a/assets/layers/public_bookcase/public_bookcase.json b/assets/layers/public_bookcase/public_bookcase.json
index 835a99e0aa..caf1ea8560 100644
--- a/assets/layers/public_bookcase/public_bookcase.json
+++ b/assets/layers/public_bookcase/public_bookcase.json
@@ -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": [
diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json
index 2edf689d75..2b351a49e3 100644
--- a/assets/layers/questions/questions.json
+++ b/assets/layers/questions/questions.json
@@ -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 {check_date}",
"de": "Dieses Objekt wurde zuletzt kontrolliert am {check_date}",
"nl": "Dit object is voor het laatst gecontroleerd op {check_date}",
- "pl": "Ten obiekt był ostatnio sprawdzony {check_date}"
+ "pl": "Ten obiekt był ostatnio sprawdzony {check_date}",
+ "ca": "Aquest objecte es va comprovar per darrera vegada el {check_date}"
},
"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"
}
}
]
diff --git a/assets/layers/rainbow_crossings/rainbow_crossings.json b/assets/layers/rainbow_crossings/rainbow_crossings.json
index eb337d8f54..4eb94edcee 100644
--- a/assets/layers/rainbow_crossings/rainbow_crossings.json
+++ b/assets/layers/rainbow_crossings/rainbow_crossings.json
@@ -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",
diff --git a/assets/layers/school/school.json b/assets/layers/school/school.json
index dba58550d1..a94b25a4f0 100644
--- a/assets/layers/school/school.json
+++ b/assets/layers/school/school.json
@@ -15,7 +15,8 @@
"nl": "School {name}",
"de": "Schule {name}",
"fr": "School {name}",
- "pl": "Szkoła {name}"
+ "pl": "Szkoła {name}",
+ "ca": "Escola {name}"
}
},
"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. Pupils typically enroll from 6 years old till 12 years old
",
"nl": "Dit is een lagere school",
"de": "In dieser Schule lernt man grundlegende Fähigkeiten wie Lesen, Schreiben und Rechnen. Schüler besuchen die Schule in der Regel im Alter von 6 bis 12 Jahren
",
- "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.. Les élèves s'inscrivent généralement de 6 à 12 ans.
"
+ "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.. Les élèves s'inscrivent généralement de 6 à 12 ans.
",
+ "ca": "Aquesta és una escola on s'aprèn competències primàries com ara l'alfabetització bàsica i les habilitats numèriques. Els alumnes solen matricular-se des dels 6 anys fins als 12 anys
"
}
},
{
@@ -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. There are little or no special facilities to cater for students with special needs or facilities are ad-hoc
",
"nl": "Deze school richt zich op studenten zonder extra zorgbehoefte. Il y a peu ou pas d'adaptations spéciales pour aider les étudiants ayant des besoins particuliers, ou les installations sont ad-hoc
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. Il y a peu ou pas d'adaptations spéciales pour aider les étudiants ayant des besoins particuliers, ou les installations sont ad-hoc
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. Hi ha poques o cap instal·lació especial per atendre els estudiants amb necessitats especials o les instal·lacions són ad-hoc
"
},
"hideInAnswer": true
},
diff --git a/assets/layers/shelter/shelter.json b/assets/layers/shelter/shelter.json
index 130b390e3d..9226cc44cd 100644
--- a/assets/layers/shelter/shelter.json
+++ b/assets/layers/shelter/shelter.json
@@ -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}",
diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json
index b66fe38b2a..8d6096d8ec 100644
--- a/assets/layers/shops/shops.json
+++ b/assets/layers/shops/shops.json
@@ -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 {name}",
@@ -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}"
}
}
]
diff --git a/assets/layers/shower/shower.json b/assets/layers/shower/shower.json
index a5cf68a6fa..cc1761692e 100644
--- a/assets/layers/shower/shower.json
+++ b/assets/layers/shower/shower.json
@@ -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)"
}
}
\ No newline at end of file
diff --git a/assets/layers/slow_roads/slow_roads.json b/assets/layers/slow_roads/slow_roads.json
index 67494e6ba8..7bf5610f1d 100644
--- a/assets/layers/slow_roads/slow_roads.json
+++ b/assets/layers/slow_roads/slow_roads.json
@@ -162,7 +162,8 @@
"fr": "La surface est non pavée",
"it": "La superficie è non pavimentata",
"de": "Die Oberfläche ist ohne festen Belag",
- "es": "La superficie está sin pavimentar"
+ "es": "La superficie está sin pavimentar",
+ "ca": "La superfície és sense asfaltar"
},
"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"
}
}
diff --git a/assets/layers/speed_camera/speed_camera.json b/assets/layers/speed_camera/speed_camera.json
index b563bcac97..d81fe0e29c 100644
--- a/assets/layers/speed_camera/speed_camera.json
+++ b/assets/layers/speed_camera/speed_camera.json
@@ -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"
diff --git a/assets/layers/speed_display/speed_display.json b/assets/layers/speed_display/speed_display.json
index 2ecdfe7014..3e04a9ce03 100644
--- a/assets/layers/speed_display/speed_display.json
+++ b/assets/layers/speed_display/speed_display.json
@@ -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"
diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json
index 9005470995..783bbe45d1 100644
--- a/assets/layers/sport_pitch/sport_pitch.json
+++ b/assets/layers/sport_pitch/sport_pitch.json
@@ -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",
diff --git a/assets/layers/surveillance_camera/surveillance_camera.json b/assets/layers/surveillance_camera/surveillance_camera.json
index 7252f2047d..a2a2404eb1 100644
--- a/assets/layers/surveillance_camera/surveillance_camera.json
+++ b/assets/layers/surveillance_camera/surveillance_camera.json
@@ -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, …",
diff --git a/assets/layers/usersettings/usersettings.json b/assets/layers/usersettings/usersettings.json
index cd7445107d..0f15f3756b 100644
--- a/assets/layers/usersettings/usersettings.json
+++ b/assets/layers/usersettings/usersettings.json
@@ -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 CC0 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 CC0 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 CC0 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 CC0 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 CC0 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 CC0-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": "Download the private key for your Mangrove Account Anyone possessing this file can make reviews with your identity
",
- "de": "Laden Sie den privaten Schlüssel für Ihr Mangrove-Konto herunter Jeder, der diese Datei besitzt, kann mit Ihrer Identität Rezensionen vornehmen
"
+ "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
}
diff --git a/assets/layers/windturbine/windturbine.json b/assets/layers/windturbine/windturbine.json
index 44c07a7102..95d7834263 100644
--- a/assets/layers/windturbine/windturbine.json
+++ b/assets/layers/windturbine/windturbine.json
@@ -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": [
{
diff --git a/langs/layers/ca.json b/langs/layers/ca.json
index d4992b9cef..f46da7870e 100644
--- a/langs/layers/ca.json
+++ b/langs/layers/ca.json
@@ -1842,13 +1842,13 @@
"question": "Té un connector Tipus 2 (mennekes)
"
},
"9": {
- "question": "Té un connector Tipus 2 CCS (mennekes) 
"
+ "question": "Té un connector CCS Tipus 2 (mennekes) 
"
},
"10": {
"question": "Té un connector Tipus 2 amb cable (mennekes) 
"
},
"11": {
- "question": "Té un connector Tesla Supercharger CCS (un tipus2_css de marca) 
"
+ "question": "Té un connector CCS Tesla Supercharger (un tipus2_css de marca) 
"
},
"12": {
"question": "Té un connector Tesla Supercharger (destination) 
"
@@ -2141,6 +2141,17 @@
"question": "Quin corrent fan els endolls amb Tesla Supercharger (Destination)
offer?",
"render": "Tesla Supercharger (Destinació)
sortida com a màxim {socket:tesla_destination:current}A"
},
+ "current-12": {
+ "mappings": {
+ "0": {
+ "then": "Supercarregador Tesla (destinació) (Un Tipus 2 amb un cable de marca Tesla) surt com a màxim a 16 A"
+ },
+ "1": {
+ "then": "Supercarregador Tesla (destinació) (Un Tipus 2 amb un cable de marca Tesla) surt com a màxim a 32 A"
+ }
+ },
+ "question": "Quin corrent donen els endolls amb Tesla Supercharger (destinació) (un tipus 2 amb cable amb la marca Tesla) 
oferta?"
+ },
"current-13": {
"mappings": {
"0": {
@@ -2161,6 +2172,16 @@
},
"question": "Quin corrent ofereixen els endolls amb Chademo 
?"
},
+ "current-7": {
+ "mappings": {
+ "0": {
+ "then": "Tipus 2 (menneks) surt com a màxim a 16 A"
+ },
+ "1": {
+ "then": "Tipus 2 (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 {check_date}"
+ },
"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. Els alumnes solen matricular-se des dels 6 anys fins als 12 anys
"
+ },
+ "2": {
+ "then": "Aquesta és una escola secundària que ofereix tots els graus"
+ },
"3": {
"then": "Aquesta és una escola secundària que no ofereix tots els graus, però ofereix primer i segon 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. Hi ha poques o cap instal·lació especial per atendre els estudiants amb necessitats especials o les instal·lacions són ad-hoc
"
+ },
"1": {
"then": "Aquesta és una escola per a estudiants sense necessitats especials Açò inclou alumnes que poden seguir les classes amb petites mesures
"
},
@@ -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 {name}"
}
},
"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 {name}"
}
},
@@ -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 terra"
},
+ "2": {
+ "then": "La superfície és sense asfaltar"
+ },
"3": {
"then": "La superfície és sorra"
}
@@ -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": {
diff --git a/langs/layers/da.json b/langs/layers/da.json
index 7e5f7982c0..c292c0ae06 100644
--- a/langs/layers/da.json
+++ b/langs/layers/da.json
@@ -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 CC0-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,7 +2996,17 @@
"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": {
diff --git a/langs/layers/de.json b/langs/layers/de.json
index b4224d6c74..c69e5f4617 100644
--- a/langs/layers/de.json
+++ b/langs/layers/de.json
@@ -9592,7 +9592,12 @@
}
},
"mangrove-keys": {
- "render": "Laden Sie den privaten Schlüssel für Ihr Mangrove-Konto herunter Jeder, der diese Datei besitzt, kann mit Ihrer Identität Rezensionen vornehmen
"
+ "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": {
diff --git a/langs/layers/en.json b/langs/layers/en.json
index ebd842517c..460b13f6c1 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -9680,7 +9680,12 @@
}
},
"mangrove-keys": {
- "render": "Download the private key for your Mangrove Account Anyone possessing this file can make reviews with your identity
"
+ "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": {
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 081b80333a..8256d43c2b 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -4279,7 +4279,7 @@
},
"wikipedia-etymology": {
"question": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?",
- "render": "Wikipedia artikel van de naamgever
{wikipedia(name:etymology:wikidata):max-height:20rem}"
+ "render": "Wikipedia-artikel van de naamgever
{wikipedia(name:etymology:wikidata):max-height:20rem}"
},
"zoeken op inventaris onroerend erfgoed": {
"render": "Zoeken op inventaris onroerend erfgoed"
@@ -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, …)"
diff --git a/src/Logic/Tags/TagUtils.ts b/src/Logic/Tags/TagUtils.ts
index 94c60522b2..91ce6c5e1d 100644
--- a/src/Logic/Tags/TagUtils.ts
+++ b/src/Logic/Tags/TagUtils.ts
@@ -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": [
diff --git a/src/Models/ThemeConfig/TagRenderingConfig.ts b/src/Models/ThemeConfig/TagRenderingConfig.ts
index 2039022e82..efa1dd528f 100644
--- a/src/Models/ThemeConfig/TagRenderingConfig.ts
+++ b/src/Models/ThemeConfig/TagRenderingConfig.ts
@@ -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
diff --git a/src/UI/Base/Link.ts b/src/UI/Base/Link.ts
index 25f107a479..693f26218b 100644
--- a/src/UI/Base/Link.ts
+++ b/src/UI/Base/Link.ts
@@ -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
private readonly _embeddedShow: BaseUIElement
private readonly _newTab: boolean
+ private readonly _download: string
constructor(
embeddedShow: BaseUIElement | string,
href: string | Store,
- 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
}
diff --git a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte
index 8f0979dad1..0522baf0eb 100644
--- a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte
+++ b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte
@@ -1,76 +1,114 @@
{#if config.question !== undefined}
diff --git a/src/UI/SpecialVisualizations.ts b/src/UI/SpecialVisualizations.ts
index 26a94ec7f3..09d0884411 100644
--- a/src/UI/SpecialVisualizations.ts
+++ b/src/UI/SpecialVisualizations.ts
@@ -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>,
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)
)
)
diff --git a/src/Utils.ts b/src/Utils.ts
index c9705240b4..31afb15f17 100644
--- a/src/Utils.ts
+++ b/src/Utils.ts
@@ -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,
+ tags: Record | undefined,
useLang?: string
): string | undefined {
if (txt === undefined) {