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) {