From 9aa21e2759c524ad705b0d26c1522bd0314f7078 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Sat, 30 Dec 2023 16:41:39 +0100 Subject: [PATCH 01/54] Fix build: add mapcomplete-changes --- scripts/prepare-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare-build.sh b/scripts/prepare-build.sh index 125003744..8b35f308e 100755 --- a/scripts/prepare-build.sh +++ b/scripts/prepare-build.sh @@ -16,9 +16,9 @@ export NODE_OPTIONS="--max-old-space-size=16384" npm run generate:editor-layer-index && npm run prep:layeroverview && npm run generate && # includes a single "refresh:layeroverview". Resetting the files is unnecessary as they are not in there in the first place +npm run generate:mapcomplete-changes-theme && npm run refresh:layeroverview && # run refresh:layeroverview a second time to propagate all calls npm run refresh:layeroverview && # run refresh:layeroverview a third time to fix some issues with the favourite layer all calls -npm run generate:mapcomplete-changes-theme && npm run generate:layouts From 432f24456d75e131425f0f1fe0df15c448f593ef Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Sun, 31 Dec 2023 14:46:48 +0100 Subject: [PATCH 02/54] Themes: allow to move hydrants --- assets/layers/hydrant/hydrant.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/assets/layers/hydrant/hydrant.json b/assets/layers/hydrant/hydrant.json index a3ee15762..8cfe4665d 100644 --- a/assets/layers/hydrant/hydrant.json +++ b/assets/layers/hydrant/hydrant.json @@ -556,5 +556,9 @@ ] } } - ] + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuracy": true + } } From 7e528985faad7b8a8b83c55fa6e3340a8b050869 Mon Sep 17 00:00:00 2001 From: paunofu Date: Tue, 2 Jan 2024 20:42:35 +0000 Subject: [PATCH 03/54] Translated using Weblate (Catalan) Currently translated at 83.0% (2627 of 3162 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/ca/ --- langs/layers/ca.json | 470 ++++++++++++++++++++++--------------------- 1 file changed, 245 insertions(+), 225 deletions(-) diff --git a/langs/layers/ca.json b/langs/layers/ca.json index 10e1191bb..625b6c77c 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -35,6 +35,16 @@ "1": { "title": "un mupi" }, + "10": { + "description": "S'utilitza per a cartells publicitaris, rètols de neó, logotips i cartells en entrades institucionals", + "title": "un lletrer" + }, + "11": { + "title": "una escupltura" + }, + "12": { + "title": "una paret pintada" + }, "2": { "title": "un mupi sobre la paret" }, @@ -61,16 +71,6 @@ }, "9": { "title": "un tòtem" - }, - "10": { - "description": "S'utilitza per a cartells publicitaris, rètols de neó, logotips i cartells en entrades institucionals", - "title": "un lletrer" - }, - "11": { - "title": "una escupltura" - }, - "12": { - "title": "una paret pintada" } }, "tagRenderings": { @@ -165,6 +165,9 @@ "1": { "then": "Açò és un tauló d'anunis" }, + "10": { + "then": "Açò és una paret pintada" + }, "2": { "then": "Açò és una columna" }, @@ -188,9 +191,6 @@ }, "9": { "then": "Açò és un tòtem" - }, - "10": { - "then": "Açò és una paret pintada" } }, "question": "Quin tipus d'element publicitari és aquest?", @@ -205,6 +205,9 @@ "1": { "then": "Tauló d'anuncis" }, + "10": { + "then": "Paret Pintada" + }, "2": { "then": "Mupi" }, @@ -228,9 +231,6 @@ }, "9": { "then": "Tòtem" - }, - "10": { - "then": "Paret Pintada" } } } @@ -284,6 +284,26 @@ "render": "Estació d'Ambulàncies" } }, + "animal_shelter": { + "name": "Refugi d'animals", + "presets": { + "0": { + "title": "un refugi d'animals" + } + }, + "tagRenderings": { + "2": { + "question": "Quin nom té aquest refugi d'animals?" + }, + "6": { + "mappings": { + "0": { + "then": "Els animals romanen ací fins que son adoptats per un nou propietari" + } + } + } + } + }, "artwork": { "description": "Un mapa obert d'estàtues, busts, grafitis i altres obres d'art del tot el món", "name": "Obres d'art", @@ -312,6 +332,15 @@ "1": { "then": "Mural" }, + "10": { + "then": "Azulejo (Rajoles decoratives espanyoles i portugueses)" + }, + "11": { + "then": "Enrajolat" + }, + "12": { + "then": "Tallat a la fusta" + }, "2": { "then": "Pintura" }, @@ -335,15 +364,6 @@ }, "9": { "then": "Relleu" - }, - "10": { - "then": "Azulejo (Rajoles decoratives espanyoles i portugueses)" - }, - "11": { - "then": "Enrajolat" - }, - "12": { - "then": "Tallat a la fusta" } }, "question": "Quin tipus d'obra és aquesta peça?", @@ -2387,6 +2407,9 @@ "1": { "then": "Aquesta via ciclista està pavimentada" }, + "10": { + "then": "Aquesta via ciclista està feta de grava fina" + }, "2": { "then": "Aquesta via ciclista està feta d'asfalt" }, @@ -2410,9 +2433,6 @@ }, "9": { "then": "Aquesta via ciclista està feta de grava" - }, - "10": { - "then": "Aquesta via ciclista està feta de grava fina" } }, "question": "De quina superfície està fet aquesta via ciclista?", @@ -2458,6 +2478,9 @@ "1": { "then": "Aquest carril bici està pavimentat" }, + "10": { + "then": "Aquesta via ciclista està feta de gravilla" + }, "2": { "then": "Aquest carril bici està fet d'asfalt" }, @@ -2469,9 +2492,6 @@ }, "9": { "then": "Aquesta via ciclista està feta de grava" - }, - "10": { - "then": "Aquesta via ciclista està feta de gravilla" } }, "question": "De què està feta la superfície d'aquest carrer?", @@ -3490,6 +3510,21 @@ "1": { "then": "Aquesta estació de fitness té un cartell amb instruccions per a un exercici concret." }, + "10": { + "then": "Aquesta estació de gimnàs té esglaons." + }, + "11": { + "then": "Aquesta estació de fitness disposa de cons per fer salts de granota." + }, + "12": { + "then": "Aquesta estació de fitness té bigues per saltar." + }, + "13": { + "then": "Aquesta estació de fitness té obstacles per a travesar." + }, + "14": { + "then": "Aquesta estació de fitness té una paret per enfilar-se." + }, "2": { "then": "Aquesta estació de fitness té una instal·lació per fer abdominals." }, @@ -3513,21 +3548,6 @@ }, "9": { "then": "Aquesta estació de fitness té llocs per fer exercicis d'eslàlom." - }, - "10": { - "then": "Aquesta estació de gimnàs té esglaons." - }, - "11": { - "then": "Aquesta estació de fitness disposa de cons per fer salts de granota." - }, - "12": { - "then": "Aquesta estació de fitness té bigues per saltar." - }, - "13": { - "then": "Aquesta estació de fitness té obstacles per a travesar." - }, - "14": { - "then": "Aquesta estació de fitness té una paret per enfilar-se." } } } @@ -3646,6 +3666,21 @@ "1": { "then": "Això és una fregiduria" }, + "10": { + "then": "Aquí es serveixen plats xinesos" + }, + "11": { + "then": "Aquí es serveixen plats grecs" + }, + "12": { + "then": "Aquí es serveixen plats indis" + }, + "13": { + "then": "Aquí es serveixen plats turcs" + }, + "14": { + "then": "Aquí es serveixen plats tailandesos" + }, "2": { "then": "Principalment serveix pasta" }, @@ -3669,21 +3704,6 @@ }, "9": { "then": "Aquí es serveixen plats francesos" - }, - "10": { - "then": "Aquí es serveixen plats xinesos" - }, - "11": { - "then": "Aquí es serveixen plats grecs" - }, - "12": { - "then": "Aquí es serveixen plats indis" - }, - "13": { - "then": "Aquí es serveixen plats turcs" - }, - "14": { - "then": "Aquí es serveixen plats tailandesos" } }, "question": "Quin menjar es serveix aquí?", @@ -4236,9 +4256,24 @@ "1": { "then": "Açò és un auditori" }, + "10": { + "then": "Açò és un laboratori" + }, + "14": { + "then": "Açò és una oficina" + }, + "16": { + "then": "Açò és un restaurant" + }, + "19": { + "then": "Açò és un magatzem" + }, "2": { "then": "Açò és un dormitori" }, + "22": { + "then": "Açò és una sala d'espera" + }, "3": { "then": "Açò és una capella" }, @@ -4256,21 +4291,6 @@ }, "9": { "then": "Açò és una cuina" - }, - "10": { - "then": "Açò és un laboratori" - }, - "14": { - "then": "Açò és una oficina" - }, - "16": { - "then": "Açò és un restaurant" - }, - "19": { - "then": "Açò és un magatzem" - }, - "22": { - "then": "Açò és una sala d'espera" } }, "question": "Quin tipus d'habitació és aquesta?" @@ -4872,6 +4892,19 @@ } } }, + "10": { + "options": { + "0": { + "question": "Totes les notes" + }, + "1": { + "question": "Oculta les notes d'importació" + }, + "2": { + "question": "Mostrar només les notes d'importació" + } + } + }, "2": { "options": { "0": { @@ -4927,19 +4960,6 @@ "question": "Sols mostra les notes obertes" } } - }, - "10": { - "options": { - "0": { - "question": "Totes les notes" - }, - "1": { - "question": "Oculta les notes d'importació" - }, - "2": { - "question": "Mostrar només les notes d'importació" - } - } } }, "name": "Notes d'OpenStreetMap", @@ -5239,6 +5259,15 @@ "1": { "then": "Aquesta és una plaça d'aparcament normal." }, + "10": { + "then": "Es tracta d'una plaça d'aparcament reservada per a pares amb fills." + }, + "11": { + "then": "Es tracta d'una plaça d'aparcament reservada al personal." + }, + "12": { + "then": "Aquest espai d'aparcament està reservat per a taxi." + }, "2": { "then": "Aquesta és una plaça d'aparcament per a minusvàlids." }, @@ -5256,15 +5285,6 @@ }, "9": { "then": "Es tracta d'una plaça d'aparcament reservada per a motos." - }, - "10": { - "then": "Es tracta d'una plaça d'aparcament reservada per a pares amb fills." - }, - "11": { - "then": "Es tracta d'una plaça d'aparcament reservada al personal." - }, - "12": { - "then": "Aquest espai d'aparcament està reservat per a taxi." } }, "question": "Quin tipus d'espai d'aparcament és aquest?" @@ -5839,6 +5859,21 @@ "1": { "then": "S'accepten monedes de 2 cèntims" }, + "10": { + "then": "S'accepten monedes de 20 cèntims" + }, + "11": { + "then": "S'accepten monedes de ½ franc" + }, + "12": { + "then": "S'accepten monedes d'1 franc" + }, + "13": { + "then": "S'accepten monedes de 2 francs" + }, + "14": { + "then": "S'accepten monedes de 5 francs" + }, "2": { "then": "S'accepten monedes de 5 cèntims" }, @@ -5862,21 +5897,6 @@ }, "9": { "then": "S'accepten monedes de 10 cèntims" - }, - "10": { - "then": "S'accepten monedes de 20 cèntims" - }, - "11": { - "then": "S'accepten monedes de ½ franc" - }, - "12": { - "then": "S'accepten monedes d'1 franc" - }, - "13": { - "then": "S'accepten monedes de 2 francs" - }, - "14": { - "then": "S'accepten monedes de 5 francs" } }, "question": "Quines monedes es poden utilitzar per a pagar aquí?" @@ -5889,6 +5909,15 @@ "1": { "then": "S'accepten bitllets de 10 euros" }, + "10": { + "then": "S'accepten bitllets de 100 francs" + }, + "11": { + "then": "S'accepten bitllets de 200 francs" + }, + "12": { + "then": "S'accepten bitllets de 1000 francs" + }, "2": { "then": "S'accepten bitllets de 20 euros" }, @@ -5912,15 +5941,6 @@ }, "9": { "then": "S'accepten bitllets de 50 francs" - }, - "10": { - "then": "S'accepten bitllets de 100 francs" - }, - "11": { - "then": "S'accepten bitllets de 200 francs" - }, - "12": { - "then": "S'accepten bitllets de 1000 francs" } }, "question": "Amb quins bitllets pot pagar aquí?" @@ -6275,30 +6295,6 @@ "1": { "question": "Reciclatge de piles" }, - "2": { - "question": "Reciclatge de cartrons de begudes" - }, - "3": { - "question": "Reciclatge de llaunes" - }, - "4": { - "question": "Reciclatge de roba" - }, - "5": { - "question": "Reciclatge d'oli de cuina" - }, - "6": { - "question": "Reciclatge d'oli de motor" - }, - "7": { - "question": "Reciclatge de tubs fluorescents" - }, - "8": { - "question": "Reciclatge de residus verds" - }, - "9": { - "question": "Reciclatge d'ampolles de vidre" - }, "10": { "question": "Reciclatge de vidre" }, @@ -6329,11 +6325,35 @@ "19": { "question": "Reciclatge del rebuig" }, + "2": { + "question": "Reciclatge de cartrons de begudes" + }, "20": { "question": "Reciclatge de cartutxos d'impressora" }, "21": { "question": "Reciclatge de bicicletes" + }, + "3": { + "question": "Reciclatge de llaunes" + }, + "4": { + "question": "Reciclatge de roba" + }, + "5": { + "question": "Reciclatge d'oli de cuina" + }, + "6": { + "question": "Reciclatge d'oli de motor" + }, + "7": { + "question": "Reciclatge de tubs fluorescents" + }, + "8": { + "question": "Reciclatge de residus verds" + }, + "9": { + "question": "Reciclatge d'ampolles de vidre" } } }, @@ -6401,30 +6421,6 @@ "1": { "then": "Aquí es poden reciclar els cartons de begudes" }, - "2": { - "then": "Aquí es poden reciclar llaunes" - }, - "3": { - "then": "Aquí es pot reciclar roba" - }, - "4": { - "then": "Aquí es pot reciclar oli de cuina" - }, - "5": { - "then": "Aquí es pot reciclar oli de motor" - }, - "6": { - "then": "Aquí es poden reciclar tub fluroescents" - }, - "7": { - "then": "Aquí es poden reciclar residus verds" - }, - "8": { - "then": "Ací es poden reciclar residus orgànics" - }, - "9": { - "then": "Aquí es poden reciclar ampolles de vidre" - }, "10": { "then": "Aquí es pot reciclar vidre" }, @@ -6455,6 +6451,9 @@ "19": { "then": "Aquí es poden reciclar sabates" }, + "2": { + "then": "Aquí es poden reciclar llaunes" + }, "20": { "then": "Aquí es poden reciclar petits electrodomèstics" }, @@ -6469,6 +6468,27 @@ }, "24": { "then": "Aquí es poden reciclar bicicletes" + }, + "3": { + "then": "Aquí es pot reciclar roba" + }, + "4": { + "then": "Aquí es pot reciclar oli de cuina" + }, + "5": { + "then": "Aquí es pot reciclar oli de motor" + }, + "6": { + "then": "Aquí es poden reciclar tub fluroescents" + }, + "7": { + "then": "Aquí es poden reciclar residus verds" + }, + "8": { + "then": "Ací es poden reciclar residus orgànics" + }, + "9": { + "then": "Aquí es poden reciclar ampolles de vidre" } }, "question": "Què es pot reciclar aquí?" @@ -7175,6 +7195,12 @@ "1": { "then": "Aquest fanal utilitza LED" }, + "10": { + "then": "Aquest fanal utilitza làmpades de sodi d'alta pressió (taronja amb blanc)" + }, + "11": { + "then": "Aquest fanal s'il·lumina amb gas" + }, "2": { "then": "Aquest fanal utilitza il·luminació incandescent" }, @@ -7198,12 +7224,6 @@ }, "9": { "then": "Aquest fanal utilitza làmpades de sodi de baixa pressió (taronja monocroma)" - }, - "10": { - "then": "Aquest fanal utilitza làmpades de sodi d'alta pressió (taronja amb blanc)" - }, - "11": { - "then": "Aquest fanal s'il·lumina amb gas" } }, "question": "Quin tipus d'il·luminació utilitza aquest fanal?" @@ -8356,30 +8376,6 @@ "1": { "question": "Venda de begudes" }, - "2": { - "question": "Venda de llaminadures" - }, - "3": { - "question": "Venda de menjar" - }, - "4": { - "question": "Venda de tabaco" - }, - "5": { - "question": "Venda de preservatius" - }, - "6": { - "question": "Venda de cafè" - }, - "7": { - "question": "Venda d'aigua" - }, - "8": { - "question": "Venda de diaris" - }, - "9": { - "question": "Venda de càmeres interiors de bicicletes" - }, "10": { "question": "Venda de llet" }, @@ -8410,6 +8406,9 @@ "19": { "question": "Venda de flors" }, + "2": { + "question": "Venda de llaminadures" + }, "20": { "question": "Venda de bitllets de transport públic" }, @@ -8418,6 +8417,27 @@ }, "22": { "question": "Venda de bitllets de transport públic" + }, + "3": { + "question": "Venda de menjar" + }, + "4": { + "question": "Venda de tabaco" + }, + "5": { + "question": "Venda de preservatius" + }, + "6": { + "question": "Venda de cafè" + }, + "7": { + "question": "Venda d'aigua" + }, + "8": { + "question": "Venda de diaris" + }, + "9": { + "question": "Venda de càmeres interiors de bicicletes" } } } @@ -8464,30 +8484,6 @@ "1": { "then": "Es venen llaminadures" }, - "2": { - "then": "Es ven menjar" - }, - "3": { - "then": "Es ven tabaco" - }, - "4": { - "then": "Es venen preservatius" - }, - "5": { - "then": "Es ven cafè" - }, - "6": { - "then": "Es ven aigua" - }, - "7": { - "then": "Es venen diaris" - }, - "8": { - "then": "Es venen càmeres interiors de bicicletes" - }, - "9": { - "then": "Es ven llet" - }, "10": { "then": "Es ven pa" }, @@ -8512,11 +8508,35 @@ "19": { "then": "Es venen tiquets d'aparcament" }, + "2": { + "then": "Es ven menjar" + }, "20": { "then": "Es venen cèntims premsats" }, "21": { "then": "Es venen bitllets de transport públic" + }, + "3": { + "then": "Es ven tabaco" + }, + "4": { + "then": "Es venen preservatius" + }, + "5": { + "then": "Es ven cafè" + }, + "6": { + "then": "Es ven aigua" + }, + "7": { + "then": "Es venen diaris" + }, + "8": { + "then": "Es venen càmeres interiors de bicicletes" + }, + "9": { + "then": "Es ven llet" } }, "question": "Que ven aquesta màquina expenedora?", @@ -8808,4 +8828,4 @@ "render": "Turbina eòlica" } } -} \ No newline at end of file +} From 3c1631ab08ff32a3d29569dd0991bb172aff5cb8 Mon Sep 17 00:00:00 2001 From: paunofu Date: Tue, 2 Jan 2024 20:40:45 +0000 Subject: [PATCH 04/54] Translated using Weblate (Catalan) Currently translated at 86.8% (404 of 465 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/ca/ --- langs/themes/ca.json | 73 +++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/langs/themes/ca.json b/langs/themes/ca.json index 53f08009d..e2f697c5d 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -464,7 +464,7 @@ "description": "Aquest mapa mostra xarxes de nodes ciclistes i et permet afegir-ne de nous de manera senzilla", "layers": { "0": { - "name": "enllaços node a node", + "name": "Enllaços node a node", "tagRenderings": { "node2node-survey:date": { "override": { @@ -483,7 +483,12 @@ } }, "1": { - "name": "nodes", + "name": "Nodes", + "presets": { + "0": { + "title": "un node ciclista" + } + }, "tagRenderings": { "node-expected_rcn_route_relations": { "question": "A quants altes nodes ciclistes enllaça aquest node?", @@ -871,6 +876,33 @@ "onwheels": { "description": "En aquest mapa, es mostren llocs públics accessibles per a cadira de rodes i es poden afegir fàcilment", "layers": { + "19": { + "override": { + "=title": { + "render": "Estadístiques" + } + } + }, + "20": { + "override": { + "+tagRenderings": { + "0": { + "render": { + "special": { + "text": "Importar" + } + } + }, + "1": { + "render": { + "special": { + "message": "Afegiu totes les etiquetes suggerides" + } + } + } + } + } + }, "4": { "override": { "filter": { @@ -913,33 +945,6 @@ "override": { "name": "Places d'aparcament per a minusvàlids" } - }, - "19": { - "override": { - "=title": { - "render": "Estadístiques" - } - } - }, - "20": { - "override": { - "+tagRenderings": { - "0": { - "render": { - "special": { - "text": "Importar" - } - } - }, - "1": { - "render": { - "special": { - "message": "Afegiu totes les etiquetes suggerides" - } - } - } - } - } } }, "title": "Sobre rodes" @@ -1100,10 +1105,6 @@ "stations": { "description": "Veure, editar i afegir detalls a una estació de tren", "layers": { - "3": { - "description": "Capa que mostra les estacions de tren", - "name": "Estació de tren" - }, "16": { "description": "Pantalles que mostren els trens que sortiran de l'estació", "name": "Taulers de sortides", @@ -1135,6 +1136,10 @@ "title": { "render": "Tauler de sortides" } + }, + "3": { + "description": "Capa que mostra les estacions de tren", + "name": "Estació de tren" } }, "title": "Estacions de tren" @@ -1256,4 +1261,4 @@ "shortDescription": "Un mapa amb papereres", "title": "Papepera" } -} \ No newline at end of file +} From 679c24a3e0a717124f81d62247f3ccd79eefb427 Mon Sep 17 00:00:00 2001 From: Lasse Liehu Date: Wed, 3 Jan 2024 00:43:56 +0000 Subject: [PATCH 05/54] Translated using Weblate (Finnish) Currently translated at 25.4% (153 of 601 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/fi/ --- langs/fi.json | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/langs/fi.json b/langs/fi.json index ce7c82368..9b9e2be6e 100644 --- a/langs/fi.json +++ b/langs/fi.json @@ -82,6 +82,8 @@ "title": "Lisää uusi kohde" }, "attribution": { + "attributionBackgroundLayer": "Nykyinen taustataso on {name}", + "attributionBackgroundLayerWithCopyright": "Nykyinen taustataso on {name}: {copyright}", "donate": "Tue MapCompletea rahallisesti", "editId": "Avaa OpenStreetMap-verkkoeditori tänne", "editJosm": "Muokkaa täällä JOSM:illa", @@ -91,7 +93,7 @@ "openMapillary": "Avaa Mapillary tänne" }, "backToIndex": "Palaa kaikkien teemakarttojen yleiskuvaan", - "backgroundMap": "Taustakartta", + "backgroundMap": "Valitse taustataso", "cancel": "Peruuta", "download": { "title": "Lataa" @@ -112,12 +114,14 @@ "loginWithOpenStreetMap": "Kirjaudu sisään OpenStreetMapilla", "logout": "Kirjaudu ulos", "menu": { - "aboutMapComplete": "Tietoa MapCompletesta" + "aboutMapComplete": "Tietoa MapCompletesta", + "filter": "Suodata dataa" }, "morescreen": { + "createYourOwnTheme": "Luo oma MapComplete-teema alusta asti", "noSearch": "Näytä kaikki teemat", "searchForATheme": "Etsi teemaa", - "streetcomplete": "Toinen, samanlainen sovellus on StreetComplete." + "streetcomplete": "Toinen, samankaltainen sovellus on StreetComplete." }, "number": "numero", "openTheMap": "Avaa kartta", @@ -128,6 +132,9 @@ "ph_not_known": " ", "ph_open": "avattu" }, + "pdf": { + "attrBackground": "Taustataso: {background}" + }, "pickLanguage": "Valitse kieli: ", "questionBox": { "answeredMultiple": "Vastasit {answered} kysymykseen", @@ -143,6 +150,7 @@ "search": { "nothing": "Mitään ei löytynyt…", "search": "Etsi paikkaa", + "searchShort": "Etsi…", "searching": "Etsitään…" }, "sharescreen": { @@ -180,7 +188,12 @@ }, "hotkeyDocumentation": { "action": "Toiminto", - "key": "Näppäinyhdistelmä" + "key": "Näppäinyhdistelmä", + "openLayersPanel": "Avaa taustatasojen paneelin", + "selectAerial": "Asettaa taustaksi joko ilma- tai satelliittikuvan. Vaihtaa kahden parhaimman, saatavilla olevan tason välillä", + "selectMap": "Asettaa taustaksi kartan ulkoisesta lähteestä. Vaihtaa kahden parhaimman, saatavilla olevan tason välillä", + "selectMapnik": "Aseta taustatasoksi OpenStreetMap-carto", + "selectOsmbasedmap": "Aseta taustatasoksi OpenStreetMap-pohjainen kartta (tai poista käytöstä rasterimuotoinen taustataso)" }, "image": { "addPicture": "Lisää kuva", From 261ffae16b11cd8e050c00abb9f348ae40eb6178 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 01:10:36 +0100 Subject: [PATCH 06/54] Chore: translation sync --- .../layers/animal_shelter/animal_shelter.json | 12 +- assets/layers/hackerspace/hackerspace.json | 5 +- assets/themes/cyclenodes/cyclenodes.json | 7 +- assets/themes/grb/grb.json | 1 - .../mapcomplete-changes.json | 87 ++-- langs/layers/ca.json | 450 +++++++++--------- langs/layers/en.json | 24 + langs/themes/ca.json | 64 +-- 8 files changed, 354 insertions(+), 296 deletions(-) diff --git a/assets/layers/animal_shelter/animal_shelter.json b/assets/layers/animal_shelter/animal_shelter.json index 515345d11..7681cff05 100644 --- a/assets/layers/animal_shelter/animal_shelter.json +++ b/assets/layers/animal_shelter/animal_shelter.json @@ -5,7 +5,8 @@ "de": "Tierheime", "es": "Centros de acogida de animales", "zh_Hans": "动物收容所", - "pt": "Abrigo para animais" + "pt": "Abrigo para animais", + "ca": "Refugi d'animals" }, "description": { "en": "An animal shelter is a facility where animals in trouble are brought and facility's staff (volunteers or not) feeds them and cares of them, rehabilitating and healing them if necessary. This definition includes kennels for abandoned dogs, catteries for abandoned cats, shelters for other abandoned pets and wildlife recovery centres. ", @@ -67,7 +68,8 @@ "de": "ein Tierheim", "es": "una protectora de animales", "zh_Hans": "动物收容所", - "pt": "um abrigo para animais" + "pt": "um abrigo para animais", + "ca": "un refugi d'animals" }, "tags": [ "amenity=animal_shelter" @@ -86,7 +88,8 @@ "en": "What is the name of this animal shelter?", "de": "Wie lautet der Name des Tierheims?", "es": "¿Cómo se llama este refugio de animales?", - "zh_Hans": "这个动物收容所叫什么名字?" + "zh_Hans": "这个动物收容所叫什么名字?", + "ca": "Quin nom té aquest refugi d'animals?" }, "render": { "en": "This animal shelter is named {name}", @@ -112,7 +115,8 @@ "en": "Animals are kept here until adopted by a new owner", "de": "Tiere werden hier bis zur Abgabe an einen neuen Besitzer untergebracht", "es": "Los animales permanecen aquí hasta que son adoptados por un nuevo propietario", - "zh_Hans": "动物被饲养在这里直到被新主人收养" + "zh_Hans": "动物被饲养在这里直到被新主人收养", + "ca": "Els animals romanen ací fins que son adoptats per un nou propietari" }, "if": "purpose=adoption" }, diff --git a/assets/layers/hackerspace/hackerspace.json b/assets/layers/hackerspace/hackerspace.json index 4bbdf1b6a..3b0bc76c9 100644 --- a/assets/layers/hackerspace/hackerspace.json +++ b/assets/layers/hackerspace/hackerspace.json @@ -330,7 +330,8 @@ "en": "woodworking workshop" }, "./assets/layers/hackerspace/woodworking.svg" - ], [ + ], + [ "workshop:ceramics", { "en": "a ceramics workshop" @@ -346,7 +347,7 @@ "en": "a metal workshop" }, { - "en": "meta workshop" + "en": "metal workshop" }, "./assets/layers/hackerspace/metal.svg" ], diff --git a/assets/themes/cyclenodes/cyclenodes.json b/assets/themes/cyclenodes/cyclenodes.json index 27a0758e7..312a134a4 100644 --- a/assets/themes/cyclenodes/cyclenodes.json +++ b/assets/themes/cyclenodes/cyclenodes.json @@ -39,7 +39,7 @@ "es": "enlaces nodo a nodo", "nl": "Verbindingen van node naar node", "fr": "liens noeud à noeud", - "ca": "enllaços node a node", + "ca": "Enllaços node a node", "cs": "propojení mezi uzly", "pl": "łącza węzeł do węzła" }, @@ -130,7 +130,7 @@ "name": { "en": "Nodes", "de": "Knotenpunkte", - "ca": "nodes", + "ca": "Nodes", "es": "nodos", "nb_NO": "noder", "nl": "Knooppunten", @@ -304,7 +304,8 @@ "title": { "en": "a cycling node", "nl": "een fietsknooppunt", - "de": "ein Knoten eines Fahrradknotenpunktnetzwerks" + "de": "ein Knoten eines Fahrradknotenpunktnetzwerks", + "ca": "un node ciclista" }, "snapToLayer": [ "cycleways_and_roads" diff --git a/assets/themes/grb/grb.json b/assets/themes/grb/grb.json index 591ebc3b3..c4c955660 100644 --- a/assets/themes/grb/grb.json +++ b/assets/themes/grb/grb.json @@ -22,7 +22,6 @@ "startZoom": 9, "startLat": 51.0249, "startLon": 4.026489, - "defaultBackgroundId": "osm", "credits": [ "Pieter Vander Vennet" diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index 6c7376596..5c67882b0 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -1,13 +1,16 @@ { "id": "mapcomplete-changes", "title": { - "en": "Changes made with MapComplete" + "en": "Changes made with MapComplete", + "de": "Mit MapComplete vorgenommene Änderungen" }, "shortDescription": { - "en": "Shows changes made by MapComplete" + "en": "Shows changes made by MapComplete", + "de": "Zeigt die von MapComplete vorgenommenen Änderungen an" }, "description": { - "en": "This maps shows all the changes made with MapComplete" + "en": "This maps shows all the changes made with MapComplete", + "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen" }, "icon": "./assets/svg/logo.svg", "hideFromOverview": true, @@ -20,7 +23,8 @@ { "id": "mapcomplete-changes", "name": { - "en": "Changeset centers" + "en": "Changeset centers", + "de": "Zentrum der Änderungssätze" }, "minzoom": 0, "source": { @@ -31,41 +35,48 @@ }, "title": { "render": { - "en": "Changeset for {theme}" + "en": "Changeset for {theme}", + "de": "Änderungssatz für {theme}" } }, "description": { - "en": "Shows all MapComplete changes" + "en": "Shows all MapComplete changes", + "de": "Zeigt alle MapComplete-Änderungen" }, "tagRenderings": [ { "id": "show_changeset_id", "render": { - "en": "Changeset {id}" + "en": "Changeset {id}", + "de": "Änderungssatz {id}" } }, { "id": "contributor", "question": { - "en": "What contributor did make this change?" + "en": "What contributor did make this change?", + "de": "Wer hat diese Änderung vorgenommen?" }, "freeform": { "key": "user" }, "render": { - "en": "Change made by {user}" + "en": "Change made by {user}", + "de": "Änderung von {user}" } }, { "id": "theme-id", "question": { - "en": "What theme was used to make this change?" + "en": "What theme was used to make this change?", + "de": "Welches Theme wurde für diese Änderung verwendet?" }, "freeform": { "key": "theme" }, "render": { - "en": "Change with theme {theme}" + "en": "Change with theme {theme}", + "de": "Geändert mit Thema {theme}" } }, { @@ -74,19 +85,23 @@ "key": "locale" }, "question": { - "en": "What locale (language) was this change made in?" + "en": "What locale (language) was this change made in?", + "de": "In welcher Benutzersprache wurde diese Änderung vorgenommen?" }, "render": { - "en": "User locale is {locale}" + "en": "User locale is {locale}", + "de": "Benutzersprache {locale}" } }, { "id": "host", "render": { - "en": "Change with with {host}" + "en": "Change with with {host}", + "de": "Geändert über {host}" }, "question": { - "en": "What host (website) was this change made with?" + "en": "What host (website) was this change made with?", + "de": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?" }, "freeform": { "key": "host" @@ -107,10 +122,12 @@ { "id": "version", "question": { - "en": "What version of MapComplete was used to make this change?" + "en": "What version of MapComplete was used to make this change?", + "de": "Welche Version von MapComplete wurde verwendet, um diese Änderung vorzunehmen?" }, "render": { - "en": "Made with {editor}" + "en": "Made with {editor}", + "de": "Erstellt mit {editor}" }, "freeform": { "key": "editor" @@ -460,7 +477,8 @@ } ], "question": { - "en": "Themename contains {search}" + "en": "Themename contains {search}", + "de": "Themename enthält {search}" } } ] @@ -476,7 +494,8 @@ } ], "question": { - "en": "Themename does not contain {search}" + "en": "Themename does not contain {search}", + "de": "Der Name enthält nicht {search}" } } ] @@ -492,7 +511,8 @@ } ], "question": { - "en": "Made by contributor {search}" + "en": "Made by contributor {search}", + "de": "Der Name enthält nicht {search}" } } ] @@ -508,7 +528,8 @@ } ], "question": { - "en": "Not made by contributor {search}" + "en": "Not made by contributor {search}", + "de": "Nicht erstellt von {search}" } } ] @@ -525,7 +546,8 @@ } ], "question": { - "en": "Made before {search}" + "en": "Made before {search}", + "de": "Erstellt vor {search}" } } ] @@ -542,7 +564,8 @@ } ], "question": { - "en": "Made after {search}" + "en": "Made after {search}", + "de": "Erstellt nach {search}" } } ] @@ -558,7 +581,8 @@ } ], "question": { - "en": "User language (iso-code) {search}" + "en": "User language (iso-code) {search}", + "de": "Benutzersprache (ISO-Code) {search}" } } ] @@ -574,7 +598,8 @@ } ], "question": { - "en": "Made with host {search}" + "en": "Made with host {search}", + "de": "Erstellt mit Host {search}" } } ] @@ -585,7 +610,8 @@ { "osmTags": "add-image>0", "question": { - "en": "Changeset added at least one image" + "en": "Changeset added at least one image", + "de": "Änderungssatz hat mindestens ein Bild hinzugefügt" } } ] @@ -596,7 +622,8 @@ { "osmTags": "theme!=grb", "question": { - "en": "Exclude GRB theme" + "en": "Exclude GRB theme", + "de": "GRB-Theme ausschließen" } } ] @@ -607,7 +634,8 @@ { "osmTags": "theme!=etymology", "question": { - "en": "Exclude etymology theme" + "en": "Exclude etymology theme", + "de": "Etymologie-Thema ausschließen" } } ] @@ -622,7 +650,8 @@ { "id": "link_to_more", "render": { - "en": "More statistics can be found here" + "en": "More statistics can be found here", + "de": "Mehr Statistiken gibt es hier" } }, { diff --git a/langs/layers/ca.json b/langs/layers/ca.json index 625b6c77c..5d3da7f05 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -35,16 +35,6 @@ "1": { "title": "un mupi" }, - "10": { - "description": "S'utilitza per a cartells publicitaris, rètols de neó, logotips i cartells en entrades institucionals", - "title": "un lletrer" - }, - "11": { - "title": "una escupltura" - }, - "12": { - "title": "una paret pintada" - }, "2": { "title": "un mupi sobre la paret" }, @@ -71,6 +61,16 @@ }, "9": { "title": "un tòtem" + }, + "10": { + "description": "S'utilitza per a cartells publicitaris, rètols de neó, logotips i cartells en entrades institucionals", + "title": "un lletrer" + }, + "11": { + "title": "una escupltura" + }, + "12": { + "title": "una paret pintada" } }, "tagRenderings": { @@ -165,9 +165,6 @@ "1": { "then": "Açò és un tauló d'anunis" }, - "10": { - "then": "Açò és una paret pintada" - }, "2": { "then": "Açò és una columna" }, @@ -191,6 +188,9 @@ }, "9": { "then": "Açò és un tòtem" + }, + "10": { + "then": "Açò és una paret pintada" } }, "question": "Quin tipus d'element publicitari és aquest?", @@ -205,9 +205,6 @@ "1": { "then": "Tauló d'anuncis" }, - "10": { - "then": "Paret Pintada" - }, "2": { "then": "Mupi" }, @@ -231,6 +228,9 @@ }, "9": { "then": "Tòtem" + }, + "10": { + "then": "Paret Pintada" } } } @@ -332,15 +332,6 @@ "1": { "then": "Mural" }, - "10": { - "then": "Azulejo (Rajoles decoratives espanyoles i portugueses)" - }, - "11": { - "then": "Enrajolat" - }, - "12": { - "then": "Tallat a la fusta" - }, "2": { "then": "Pintura" }, @@ -364,6 +355,15 @@ }, "9": { "then": "Relleu" + }, + "10": { + "then": "Azulejo (Rajoles decoratives espanyoles i portugueses)" + }, + "11": { + "then": "Enrajolat" + }, + "12": { + "then": "Tallat a la fusta" } }, "question": "Quin tipus d'obra és aquesta peça?", @@ -2407,9 +2407,6 @@ "1": { "then": "Aquesta via ciclista està pavimentada" }, - "10": { - "then": "Aquesta via ciclista està feta de grava fina" - }, "2": { "then": "Aquesta via ciclista està feta d'asfalt" }, @@ -2433,6 +2430,9 @@ }, "9": { "then": "Aquesta via ciclista està feta de grava" + }, + "10": { + "then": "Aquesta via ciclista està feta de grava fina" } }, "question": "De quina superfície està fet aquesta via ciclista?", @@ -2478,9 +2478,6 @@ "1": { "then": "Aquest carril bici està pavimentat" }, - "10": { - "then": "Aquesta via ciclista està feta de gravilla" - }, "2": { "then": "Aquest carril bici està fet d'asfalt" }, @@ -2492,6 +2489,9 @@ }, "9": { "then": "Aquesta via ciclista està feta de grava" + }, + "10": { + "then": "Aquesta via ciclista està feta de gravilla" } }, "question": "De què està feta la superfície d'aquest carrer?", @@ -3510,21 +3510,6 @@ "1": { "then": "Aquesta estació de fitness té un cartell amb instruccions per a un exercici concret." }, - "10": { - "then": "Aquesta estació de gimnàs té esglaons." - }, - "11": { - "then": "Aquesta estació de fitness disposa de cons per fer salts de granota." - }, - "12": { - "then": "Aquesta estació de fitness té bigues per saltar." - }, - "13": { - "then": "Aquesta estació de fitness té obstacles per a travesar." - }, - "14": { - "then": "Aquesta estació de fitness té una paret per enfilar-se." - }, "2": { "then": "Aquesta estació de fitness té una instal·lació per fer abdominals." }, @@ -3548,6 +3533,21 @@ }, "9": { "then": "Aquesta estació de fitness té llocs per fer exercicis d'eslàlom." + }, + "10": { + "then": "Aquesta estació de gimnàs té esglaons." + }, + "11": { + "then": "Aquesta estació de fitness disposa de cons per fer salts de granota." + }, + "12": { + "then": "Aquesta estació de fitness té bigues per saltar." + }, + "13": { + "then": "Aquesta estació de fitness té obstacles per a travesar." + }, + "14": { + "then": "Aquesta estació de fitness té una paret per enfilar-se." } } } @@ -3666,21 +3666,6 @@ "1": { "then": "Això és una fregiduria" }, - "10": { - "then": "Aquí es serveixen plats xinesos" - }, - "11": { - "then": "Aquí es serveixen plats grecs" - }, - "12": { - "then": "Aquí es serveixen plats indis" - }, - "13": { - "then": "Aquí es serveixen plats turcs" - }, - "14": { - "then": "Aquí es serveixen plats tailandesos" - }, "2": { "then": "Principalment serveix pasta" }, @@ -3704,6 +3689,21 @@ }, "9": { "then": "Aquí es serveixen plats francesos" + }, + "10": { + "then": "Aquí es serveixen plats xinesos" + }, + "11": { + "then": "Aquí es serveixen plats grecs" + }, + "12": { + "then": "Aquí es serveixen plats indis" + }, + "13": { + "then": "Aquí es serveixen plats turcs" + }, + "14": { + "then": "Aquí es serveixen plats tailandesos" } }, "question": "Quin menjar es serveix aquí?", @@ -4256,24 +4256,9 @@ "1": { "then": "Açò és un auditori" }, - "10": { - "then": "Açò és un laboratori" - }, - "14": { - "then": "Açò és una oficina" - }, - "16": { - "then": "Açò és un restaurant" - }, - "19": { - "then": "Açò és un magatzem" - }, "2": { "then": "Açò és un dormitori" }, - "22": { - "then": "Açò és una sala d'espera" - }, "3": { "then": "Açò és una capella" }, @@ -4291,6 +4276,21 @@ }, "9": { "then": "Açò és una cuina" + }, + "10": { + "then": "Açò és un laboratori" + }, + "14": { + "then": "Açò és una oficina" + }, + "16": { + "then": "Açò és un restaurant" + }, + "19": { + "then": "Açò és un magatzem" + }, + "22": { + "then": "Açò és una sala d'espera" } }, "question": "Quin tipus d'habitació és aquesta?" @@ -4892,19 +4892,6 @@ } } }, - "10": { - "options": { - "0": { - "question": "Totes les notes" - }, - "1": { - "question": "Oculta les notes d'importació" - }, - "2": { - "question": "Mostrar només les notes d'importació" - } - } - }, "2": { "options": { "0": { @@ -4960,6 +4947,19 @@ "question": "Sols mostra les notes obertes" } } + }, + "10": { + "options": { + "0": { + "question": "Totes les notes" + }, + "1": { + "question": "Oculta les notes d'importació" + }, + "2": { + "question": "Mostrar només les notes d'importació" + } + } } }, "name": "Notes d'OpenStreetMap", @@ -5259,15 +5259,6 @@ "1": { "then": "Aquesta és una plaça d'aparcament normal." }, - "10": { - "then": "Es tracta d'una plaça d'aparcament reservada per a pares amb fills." - }, - "11": { - "then": "Es tracta d'una plaça d'aparcament reservada al personal." - }, - "12": { - "then": "Aquest espai d'aparcament està reservat per a taxi." - }, "2": { "then": "Aquesta és una plaça d'aparcament per a minusvàlids." }, @@ -5285,6 +5276,15 @@ }, "9": { "then": "Es tracta d'una plaça d'aparcament reservada per a motos." + }, + "10": { + "then": "Es tracta d'una plaça d'aparcament reservada per a pares amb fills." + }, + "11": { + "then": "Es tracta d'una plaça d'aparcament reservada al personal." + }, + "12": { + "then": "Aquest espai d'aparcament està reservat per a taxi." } }, "question": "Quin tipus d'espai d'aparcament és aquest?" @@ -5859,21 +5859,6 @@ "1": { "then": "S'accepten monedes de 2 cèntims" }, - "10": { - "then": "S'accepten monedes de 20 cèntims" - }, - "11": { - "then": "S'accepten monedes de ½ franc" - }, - "12": { - "then": "S'accepten monedes d'1 franc" - }, - "13": { - "then": "S'accepten monedes de 2 francs" - }, - "14": { - "then": "S'accepten monedes de 5 francs" - }, "2": { "then": "S'accepten monedes de 5 cèntims" }, @@ -5897,6 +5882,21 @@ }, "9": { "then": "S'accepten monedes de 10 cèntims" + }, + "10": { + "then": "S'accepten monedes de 20 cèntims" + }, + "11": { + "then": "S'accepten monedes de ½ franc" + }, + "12": { + "then": "S'accepten monedes d'1 franc" + }, + "13": { + "then": "S'accepten monedes de 2 francs" + }, + "14": { + "then": "S'accepten monedes de 5 francs" } }, "question": "Quines monedes es poden utilitzar per a pagar aquí?" @@ -5909,15 +5909,6 @@ "1": { "then": "S'accepten bitllets de 10 euros" }, - "10": { - "then": "S'accepten bitllets de 100 francs" - }, - "11": { - "then": "S'accepten bitllets de 200 francs" - }, - "12": { - "then": "S'accepten bitllets de 1000 francs" - }, "2": { "then": "S'accepten bitllets de 20 euros" }, @@ -5941,6 +5932,15 @@ }, "9": { "then": "S'accepten bitllets de 50 francs" + }, + "10": { + "then": "S'accepten bitllets de 100 francs" + }, + "11": { + "then": "S'accepten bitllets de 200 francs" + }, + "12": { + "then": "S'accepten bitllets de 1000 francs" } }, "question": "Amb quins bitllets pot pagar aquí?" @@ -6295,6 +6295,30 @@ "1": { "question": "Reciclatge de piles" }, + "2": { + "question": "Reciclatge de cartrons de begudes" + }, + "3": { + "question": "Reciclatge de llaunes" + }, + "4": { + "question": "Reciclatge de roba" + }, + "5": { + "question": "Reciclatge d'oli de cuina" + }, + "6": { + "question": "Reciclatge d'oli de motor" + }, + "7": { + "question": "Reciclatge de tubs fluorescents" + }, + "8": { + "question": "Reciclatge de residus verds" + }, + "9": { + "question": "Reciclatge d'ampolles de vidre" + }, "10": { "question": "Reciclatge de vidre" }, @@ -6325,35 +6349,11 @@ "19": { "question": "Reciclatge del rebuig" }, - "2": { - "question": "Reciclatge de cartrons de begudes" - }, "20": { "question": "Reciclatge de cartutxos d'impressora" }, "21": { "question": "Reciclatge de bicicletes" - }, - "3": { - "question": "Reciclatge de llaunes" - }, - "4": { - "question": "Reciclatge de roba" - }, - "5": { - "question": "Reciclatge d'oli de cuina" - }, - "6": { - "question": "Reciclatge d'oli de motor" - }, - "7": { - "question": "Reciclatge de tubs fluorescents" - }, - "8": { - "question": "Reciclatge de residus verds" - }, - "9": { - "question": "Reciclatge d'ampolles de vidre" } } }, @@ -6421,6 +6421,30 @@ "1": { "then": "Aquí es poden reciclar els cartons de begudes" }, + "2": { + "then": "Aquí es poden reciclar llaunes" + }, + "3": { + "then": "Aquí es pot reciclar roba" + }, + "4": { + "then": "Aquí es pot reciclar oli de cuina" + }, + "5": { + "then": "Aquí es pot reciclar oli de motor" + }, + "6": { + "then": "Aquí es poden reciclar tub fluroescents" + }, + "7": { + "then": "Aquí es poden reciclar residus verds" + }, + "8": { + "then": "Ací es poden reciclar residus orgànics" + }, + "9": { + "then": "Aquí es poden reciclar ampolles de vidre" + }, "10": { "then": "Aquí es pot reciclar vidre" }, @@ -6451,9 +6475,6 @@ "19": { "then": "Aquí es poden reciclar sabates" }, - "2": { - "then": "Aquí es poden reciclar llaunes" - }, "20": { "then": "Aquí es poden reciclar petits electrodomèstics" }, @@ -6468,27 +6489,6 @@ }, "24": { "then": "Aquí es poden reciclar bicicletes" - }, - "3": { - "then": "Aquí es pot reciclar roba" - }, - "4": { - "then": "Aquí es pot reciclar oli de cuina" - }, - "5": { - "then": "Aquí es pot reciclar oli de motor" - }, - "6": { - "then": "Aquí es poden reciclar tub fluroescents" - }, - "7": { - "then": "Aquí es poden reciclar residus verds" - }, - "8": { - "then": "Ací es poden reciclar residus orgànics" - }, - "9": { - "then": "Aquí es poden reciclar ampolles de vidre" } }, "question": "Què es pot reciclar aquí?" @@ -7195,12 +7195,6 @@ "1": { "then": "Aquest fanal utilitza LED" }, - "10": { - "then": "Aquest fanal utilitza làmpades de sodi d'alta pressió (taronja amb blanc)" - }, - "11": { - "then": "Aquest fanal s'il·lumina amb gas" - }, "2": { "then": "Aquest fanal utilitza il·luminació incandescent" }, @@ -7224,6 +7218,12 @@ }, "9": { "then": "Aquest fanal utilitza làmpades de sodi de baixa pressió (taronja monocroma)" + }, + "10": { + "then": "Aquest fanal utilitza làmpades de sodi d'alta pressió (taronja amb blanc)" + }, + "11": { + "then": "Aquest fanal s'il·lumina amb gas" } }, "question": "Quin tipus d'il·luminació utilitza aquest fanal?" @@ -8376,6 +8376,30 @@ "1": { "question": "Venda de begudes" }, + "2": { + "question": "Venda de llaminadures" + }, + "3": { + "question": "Venda de menjar" + }, + "4": { + "question": "Venda de tabaco" + }, + "5": { + "question": "Venda de preservatius" + }, + "6": { + "question": "Venda de cafè" + }, + "7": { + "question": "Venda d'aigua" + }, + "8": { + "question": "Venda de diaris" + }, + "9": { + "question": "Venda de càmeres interiors de bicicletes" + }, "10": { "question": "Venda de llet" }, @@ -8406,9 +8430,6 @@ "19": { "question": "Venda de flors" }, - "2": { - "question": "Venda de llaminadures" - }, "20": { "question": "Venda de bitllets de transport públic" }, @@ -8417,27 +8438,6 @@ }, "22": { "question": "Venda de bitllets de transport públic" - }, - "3": { - "question": "Venda de menjar" - }, - "4": { - "question": "Venda de tabaco" - }, - "5": { - "question": "Venda de preservatius" - }, - "6": { - "question": "Venda de cafè" - }, - "7": { - "question": "Venda d'aigua" - }, - "8": { - "question": "Venda de diaris" - }, - "9": { - "question": "Venda de càmeres interiors de bicicletes" } } } @@ -8484,6 +8484,30 @@ "1": { "then": "Es venen llaminadures" }, + "2": { + "then": "Es ven menjar" + }, + "3": { + "then": "Es ven tabaco" + }, + "4": { + "then": "Es venen preservatius" + }, + "5": { + "then": "Es ven cafè" + }, + "6": { + "then": "Es ven aigua" + }, + "7": { + "then": "Es venen diaris" + }, + "8": { + "then": "Es venen càmeres interiors de bicicletes" + }, + "9": { + "then": "Es ven llet" + }, "10": { "then": "Es ven pa" }, @@ -8508,35 +8532,11 @@ "19": { "then": "Es venen tiquets d'aparcament" }, - "2": { - "then": "Es ven menjar" - }, "20": { "then": "Es venen cèntims premsats" }, "21": { "then": "Es venen bitllets de transport públic" - }, - "3": { - "then": "Es ven tabaco" - }, - "4": { - "then": "Es venen preservatius" - }, - "5": { - "then": "Es ven cafè" - }, - "6": { - "then": "Es ven aigua" - }, - "7": { - "then": "Es venen diaris" - }, - "8": { - "then": "Es venen càmeres interiors de bicicletes" - }, - "9": { - "then": "Es ven llet" } }, "question": "Que ven aquesta màquina expenedora?", @@ -8828,4 +8828,4 @@ "render": "Turbina eòlica" } } -} +} \ No newline at end of file diff --git a/langs/layers/en.json b/langs/layers/en.json index 4642248a7..688ca1679 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -5042,6 +5042,30 @@ "2": { "1": "a CNC drill", "2": "CNC drill" + }, + "3": { + "1": "a multimedia studio", + "2": "multimedia studio" + }, + "4": { + "1": "a sewing machine", + "2": "sewing machine" + }, + "5": { + "1": "a woodworking workshop", + "2": "woodworking workshop" + }, + "6": { + "1": "a ceramics workshop", + "2": "ceramics workshop" + }, + "7": { + "1": "a metal workshop", + "2": "metal workshop" + }, + "8": { + "1": "a bicycle repair workshop", + "2": "bicycle repair workshop" } } } diff --git a/langs/themes/ca.json b/langs/themes/ca.json index e2f697c5d..a1e4b69d6 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -876,33 +876,6 @@ "onwheels": { "description": "En aquest mapa, es mostren llocs públics accessibles per a cadira de rodes i es poden afegir fàcilment", "layers": { - "19": { - "override": { - "=title": { - "render": "Estadístiques" - } - } - }, - "20": { - "override": { - "+tagRenderings": { - "0": { - "render": { - "special": { - "text": "Importar" - } - } - }, - "1": { - "render": { - "special": { - "message": "Afegiu totes les etiquetes suggerides" - } - } - } - } - } - }, "4": { "override": { "filter": { @@ -945,6 +918,33 @@ "override": { "name": "Places d'aparcament per a minusvàlids" } + }, + "19": { + "override": { + "=title": { + "render": "Estadístiques" + } + } + }, + "20": { + "override": { + "+tagRenderings": { + "0": { + "render": { + "special": { + "text": "Importar" + } + } + }, + "1": { + "render": { + "special": { + "message": "Afegiu totes les etiquetes suggerides" + } + } + } + } + } } }, "title": "Sobre rodes" @@ -1105,6 +1105,10 @@ "stations": { "description": "Veure, editar i afegir detalls a una estació de tren", "layers": { + "3": { + "description": "Capa que mostra les estacions de tren", + "name": "Estació de tren" + }, "16": { "description": "Pantalles que mostren els trens que sortiran de l'estació", "name": "Taulers de sortides", @@ -1136,10 +1140,6 @@ "title": { "render": "Tauler de sortides" } - }, - "3": { - "description": "Capa que mostra les estacions de tren", - "name": "Estació de tren" } }, "title": "Estacions de tren" @@ -1261,4 +1261,4 @@ "shortDescription": "Un mapa amb papereres", "title": "Papepera" } -} +} \ No newline at end of file From db825a3ca970b5dec6e0e93218109c06d2e53785 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 01:22:53 +0100 Subject: [PATCH 07/54] Chore: translation sync --- .../layers/animal_shelter/animal_shelter.json | 23 +- assets/layers/bike_parking/bike_parking.json | 2 +- .../charging_station/charging_station.json | 204 ++++++--- assets/layers/food/food.json | 6 +- assets/layers/shops/shops.json | 2 +- assets/layers/sport_pitch/sport_pitch.json | 27 +- assets/layers/stairs/stairs.json | 12 +- assets/layers/trail/trail.json | 18 +- assets/layers/unit/unit.json | 27 +- assets/layers/usersettings/usersettings.json | 13 +- .../vending_machine/vending_machine.json | 42 +- langs/layers/ca.json | 388 +++++++++++++++++- 12 files changed, 620 insertions(+), 144 deletions(-) diff --git a/assets/layers/animal_shelter/animal_shelter.json b/assets/layers/animal_shelter/animal_shelter.json index 7681cff05..30b80d36e 100644 --- a/assets/layers/animal_shelter/animal_shelter.json +++ b/assets/layers/animal_shelter/animal_shelter.json @@ -6,7 +6,7 @@ "es": "Centros de acogida de animales", "zh_Hans": "动物收容所", "pt": "Abrigo para animais", - "ca": "Refugi d'animals" + "ca": "Refugis d'animals" }, "description": { "en": "An animal shelter is a facility where animals in trouble are brought and facility's staff (volunteers or not) feeds them and cares of them, rehabilitating and healing them if necessary. This definition includes kennels for abandoned dogs, catteries for abandoned cats, shelters for other abandoned pets and wildlife recovery centres. ", @@ -23,7 +23,8 @@ "de": "Tierheim", "es": "Centro de acogida de animales", "zh_Hans": "动物收容所", - "pt": "Abrigo para animais" + "pt": "Abrigo para animais", + "ca": "Refugi d'animals" }, "mappings": [ { @@ -32,7 +33,8 @@ "en": "{name}", "de": "{name}", "es": "{name}", - "zh_Hans": "{name}" + "zh_Hans": "{name}", + "ca": "{name}" } } ] @@ -107,7 +109,8 @@ "en": "What is the purpose of the animal shelter?", "de": "Was ist der Zweck des Tierheims?", "es": "¿Cuál es la finalidad del refugio de animales?", - "zh_Hans": "动物收容所的目的是什么?" + "zh_Hans": "动物收容所的目的是什么?", + "ca": "Quina és la finalitat del refugi d'animals?" }, "mappings": [ { @@ -125,7 +128,8 @@ "en": "Animals are taken care of for the rest of their lives", "de": "Tiere werden hier bis zum Ende Ihres Lebens untergebracht", "es": "Los animales reciben cuidados para el resto de su vida", - "zh_Hans": "动物的余生都得到照顾" + "zh_Hans": "动物的余生都得到照顾", + "ca": "Els animals reben cures per a la resta de la seva vida" }, "if": "purpose=sanctuary" }, @@ -134,7 +138,8 @@ "en": "Injured animals are rehabilitated here until they can be released in nature again ", "de": "Tiere werden hier untergebracht und gepflegt bis sie wieder in freier Natur ausgesetzt werden können ", "es": "Los animales heridos se rehabilitan aquí hasta que pueden ser liberados de nuevo en la naturaleza ", - "zh_Hans": "受伤的动物在这里康复,直到它们可以再次被释放到大自然中 " + "zh_Hans": "受伤的动物在这里康复,直到它们可以再次被释放到大自然中 ", + "ca": "Els animals ferits es rehabiliten aquí fins que puguen ser alliberats de nou a la natura " }, "if": "purpose=release" } @@ -146,14 +151,16 @@ "en": "When is this animal shelter opened?", "de": "Wann ist das Tierheim geöffnet?", "es": "¿Cuándo se abre este refugio de animales?", - "zh_Hans": "这个动物收容所什么时候开放?" + "zh_Hans": "这个动物收容所什么时候开放?", + "ca": "Quan està obert aquest refugi d'animals?" }, "id": "7", "render": { "en": "{opening_hours_table()}", "de": "{opening_hours_table()}", "es": "{opening_hours_table()}", - "zh_Hans": "{opening_hours_table()}" + "zh_Hans": "{opening_hours_table()}", + "ca": "{opening_hours_table()}" }, "freeform": { "key": "opening_hours", diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json index 14a020622..17e7f44a2 100644 --- a/assets/layers/bike_parking/bike_parking.json +++ b/assets/layers/bike_parking/bike_parking.json @@ -166,7 +166,7 @@ "hu": "Korlát", "it": "Archetti", "zh_Hant": "單車架", - "ca": "Bastidors de grapes", + "ca": "Bastidors", "da": "Hæftestativer", "cs": "Stojany", "pt_BR": "Racks para prender a bicicleta" diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index 80ede2ffc..13128a61c 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -79,7 +79,8 @@ "question": { "en": "Which vehicles are allowed to charge here?", "nl": "Welke voertuigen kunnen hier opgeladen worden?", - "de": "Welche Fahrzeuge können hier laden?" + "de": "Welche Fahrzeuge können hier laden?", + "ca": "Quins vehicles tenen permesa la càrrega aquí?" }, "multiAnswer": true, "mappings": [ @@ -89,7 +90,8 @@ "then": { "en": "Bicycles can be charged here", "nl": "Elektrische fietsen kunnen hier opgeladen worden", - "de": "Hier können Fahrräder laden" + "de": "Hier können Fahrräder laden", + "ca": "Aquí es poden carregar bicicletes" } }, { @@ -98,7 +100,8 @@ "then": { "en": "Cars can be charged here", "nl": "Elektrische auto's kunnen hier opgeladen worden", - "de": "Hier können Autos laden" + "de": "Hier können Autos laden", + "ca": "Aquí es poden carregar cotxes" } }, { @@ -107,7 +110,8 @@ "then": { "en": "Scooters can be charged here", "nl": "Elektrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden", - "de": "Hier können Roller laden" + "de": "Hier können Roller laden", + "ca": "Aquí es poden carregar Scooters" } }, { @@ -116,7 +120,8 @@ "then": { "en": "Heavy good vehicles (such as trucks) can be charged here", "nl": "Vrachtwagens kunnen hier opgeladen worden", - "de": "Hier können LKW laden" + "de": "Hier können LKW laden", + "ca": "Aquí es poden carregar camions o trailers" } }, { @@ -125,7 +130,8 @@ "then": { "en": "Buses can be charged here", "nl": "Bussen kunnen hier opgeladen worden", - "de": "Hier können Busse laden" + "de": "Hier können Busse laden", + "ca": "Aquí es poden carregar autobusos" } } ] @@ -135,12 +141,14 @@ "question": { "en": "Who is allowed to use this charging station?", "nl": "Wie mag er dit oplaadpunt gebruiken?", - "de": "Wer darf diese Ladestation benutzen?" + "de": "Wer darf diese Ladestation benutzen?", + "ca": "Qui pot utilitzar aquesta estació de càrrega?" }, "render": { "en": "Access is {access}", "nl": "Toegang voor {access}", - "de": "Zugang ist {access}" + "de": "Zugang ist {access}", + "ca": "L'accés està {access}" }, "freeform": { "key": "access", @@ -154,7 +162,8 @@ "then": { "en": "Anyone can use this charging station (payment might be needed)", "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)", - "de": "Jeder kann die Station nutzen (eventuell gegen Bezahlung)" + "de": "Jeder kann die Station nutzen (eventuell gegen Bezahlung)", + "ca": "Qualsevol persona pot utilitzar aquesta estació de recàrrega (pot ser calgui un pagament)" } }, { @@ -162,7 +171,8 @@ "then": { "en": "Anyone can use this charging station (payment might be needed)", "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)", - "de": "Jeder kann diese Ladestation nutzen (eventuell gegen Bezahlung)" + "de": "Jeder kann diese Ladestation nutzen (eventuell gegen Bezahlung)", + "ca": "Qualsevol persona pot utilitzar aquesta estació de recàrrega (pot ser calgui un pagament)" }, "hideInAnswer": true }, @@ -171,7 +181,8 @@ "then": { "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel", - "de": "Nur Kunden des Ortes, zu dem diese Station gehört, können diese Ladestation nutzen
Z.B. eine von einem Hotel betriebene Ladestation, die nur von dessen Gästen genutzt werden kann" + "de": "Nur Kunden des Ortes, zu dem diese Station gehört, können diese Ladestation nutzen
Z.B. eine von einem Hotel betriebene Ladestation, die nur von dessen Gästen genutzt werden kann", + "ca": "Sols clientes del lloc al que pertany aquest punt de càrrega poden utilitzar-lo
p.e. un punt de càrrega d'un hotel que sols poden utilizar-los els hostes" } }, { @@ -179,7 +190,8 @@ "then": { "en": "A key must be requested to access this charging station
E.g. a charging station operated by hotel which is only usable by their guests, which receive a key from the reception to unlock the charging station", "nl": "Een sleutel is nodig om dit oplaadpunt te gebruiken
Bv. voor klanten van een hotel of een bar, die de sleutel aan de receptie kunnen krijgen", - "de": "Für den Zugang zur Station muss ein Schlüssel angefordert werden
z.B. eine von einem Hotel betriebene Ladestation, die nur von dessen Gästen genutzt werden kann, die an der Rezeption einen Schlüssel erhalten, um die Ladestation aufzuschließen" + "de": "Für den Zugang zur Station muss ein Schlüssel angefordert werden
z.B. eine von einem Hotel betriebene Ladestation, die nur von dessen Gästen genutzt werden kann, die an der Rezeption einen Schlüssel erhalten, um die Ladestation aufzuschließen", + "ca": "S'ha de sol·licitar una clau per a utilitzar aquest punt de càrrega
p.e un punt de càrrega operat per un hotel nomes utilitzable pel seus hostes, els quals reben una clau des de recepció per a desbloquejar el punt de càrrega" } }, { @@ -187,7 +199,8 @@ "then": { "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", "nl": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... ", - "de": "Die Station ist nicht für die Allgemeinheit zugänglich (z. B. nur für die Eigentümer, Mitarbeiter, …)" + "de": "Die Station ist nicht für die Allgemeinheit zugänglich (z. B. nur für die Eigentümer, Mitarbeiter, …)", + "ca": "No accessible per al públic general (p.e. només accessible pels propietaris, empleats, ...)" } }, { @@ -195,7 +208,8 @@ "then": { "en": "This charging station is accessible to the public during certain hours or conditions. Restrictions might apply, but general use is allowed.", "nl": "Dit oplaadstation is publiek toegankelijk onder voorwaarden (bv. enkel tijdens bepaalde uren). ", - "de": "Diese Ladestation ist zu gewissen Öffnungszeiten oder Bedingungen öffentlich zugänglich. Einschränkungen sind möglich, aber generelle Nutzung ist erlaubt." + "de": "Diese Ladestation ist zu gewissen Öffnungszeiten oder Bedingungen öffentlich zugänglich. Einschränkungen sind möglich, aber generelle Nutzung ist erlaubt.", + "ca": "Aquesta estació de càrrega és accessible al públic durant certes hores o condicions. Es poden aplicar restriccions, però es permet l'ús general." } } ] @@ -205,12 +219,14 @@ "render": { "en": "{capacity} vehicles can be charged here at the same time", "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden", - "de": "Hier können {capacity} Fahrzeuge gleichzeitig laden" + "de": "Hier können {capacity} Fahrzeuge gleichzeitig laden", + "ca": "Aquí poden carregar {capacity} vehicles a l'hora" }, "question": { "en": "How much vehicles can be charged here at the same time?", "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?", - "de": "Wie viele Fahrzeuge können hier gleichzeitig laden?" + "de": "Wie viele Fahrzeuge können hier gleichzeitig laden?", + "ca": "Quants vehicles poden carregar a la vegada?" }, "freeform": { "key": "capacity", @@ -232,7 +248,8 @@ "then": { "en": "Schuko wall plug without ground pin (CEE7/4 type F)", "nl": "Schuko stekker zonder aardingspin (CEE7/4 type F)", - "de": "Schuko-Stecker ohne Erdungsstift (CEE7/4 Typ F)" + "de": "Schuko-Stecker ohne Erdungsstift (CEE7/4 Typ F)", + "ca": "Endoll de paret Schuko sense pin a terra (CEE7/4 tipus F)" }, "icon": { "path": "./assets/layers/charging_station/CEE7_4F.svg", @@ -326,7 +343,8 @@ "then": { "en": "Schuko wall plug without ground pin (CEE7/4 type F)", "nl": "Schuko stekker zonder aardingspin (CEE7/4 type F)", - "de": "Schuko-Stecker ohne Erdungsstift (CEE7/4 Typ F)" + "de": "Schuko-Stecker ohne Erdungsstift (CEE7/4 Typ F)", + "ca": "Endoll de paret Schuko sense pin a terra (CEE7/4 tipus F)" }, "hideInAnswer": true, "icon": { @@ -340,7 +358,8 @@ "then": { "en": "European wall plug with ground pin (CEE7/4 type E)", "nl": "Europese stekker met aardingspin (CEE7/4 type E)", - "de": "Europäischer Netzstecker mit Erdungsstift (CEE7/4 Typ E)" + "de": "Europäischer Netzstecker mit Erdungsstift (CEE7/4 Typ E)", + "ca": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" }, "icon": { "path": "./assets/layers/charging_station/TypeE.svg", @@ -403,7 +422,8 @@ "then": { "en": "European wall plug with ground pin (CEE7/4 type E)", "nl": "Europese stekker met aardingspin (CEE7/4 type E)", - "de": "Europäischer Netzstecker mit Erdungsstift (CEE7/4 Typ E)" + "de": "Europäischer Netzstecker mit Erdungsstift (CEE7/4 Typ E)", + "ca": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" }, "hideInAnswer": true, "icon": { @@ -417,7 +437,8 @@ "then": { "en": "Chademo", "nl": "Chademo", - "de": "Chademo-Anschluss" + "de": "Chademo-Anschluss", + "ca": "CHAdeMo" }, "icon": { "path": "./assets/layers/charging_station/Chademo_type4.svg", @@ -460,7 +481,8 @@ "then": { "en": "Chademo", "nl": "Chademo", - "de": "Chademo-Anschluss" + "de": "Chademo-Anschluss", + "ca": "CHAdeMo" }, "hideInAnswer": true, "icon": { @@ -474,7 +496,8 @@ "then": { "en": "Type 1 with cable (J1772)", "nl": "Type 1 met kabel (J1772)", - "de": "Typ 1 mit Kabel (J1772)" + "de": "Typ 1 mit Kabel (J1772)", + "ca": "Tipus 1 amb cable" }, "icon": { "path": "./assets/layers/charging_station/Type1_J1772.svg", @@ -517,7 +540,8 @@ "then": { "en": "Type 1 with cable (J1772)", "nl": "Type 1 met kabel (J1772)", - "de": "Typ 1 mit Kabel (J1772)" + "de": "Typ 1 mit Kabel (J1772)", + "ca": "Tipus 1 amb cable" }, "hideInAnswer": true, "icon": { @@ -531,7 +555,8 @@ "then": { "en": "Type 1 without cable (J1772)", "nl": "Type 1 zonder kabel (J1772)", - "de": "Typ 1 ohne Kabel (J1772)" + "de": "Typ 1 ohne Kabel (J1772)", + "ca": "Tipus 1 sense cable" }, "icon": { "path": "./assets/layers/charging_station/Type1_J1772.svg", @@ -574,7 +599,8 @@ "then": { "en": "Type 1 without cable (J1772)", "nl": "Type 1 zonder kabel (J1772)", - "de": " Typ 1 ohne Kabel (J1772)" + "de": " Typ 1 ohne Kabel (J1772)", + "ca": "Tipus 1 sense cable(J1772)" }, "hideInAnswer": true, "icon": { @@ -588,7 +614,8 @@ "then": { "en": "Type 1 CCS (aka Type 1 Combo)", "nl": "Type 1 CCS (ook gekend als Type 1 Combo)", - "de": "Typ 1 CCS (Typ 1 Combo)" + "de": "Typ 1 CCS (Typ 1 Combo)", + "ca": "CSS Tipus 1 (també conegut com a Tipus 1 Combo)" }, "icon": { "path": "./assets/layers/charging_station/Type1-ccs.svg", @@ -631,7 +658,8 @@ "then": { "en": "Type 1 CCS (aka Type 1 Combo)", "nl": "Type 1 CCS (ook gekend als Type 1 Combo)", - "de": " Typ 1 CCS (auch bekannt als Typ 1 Combo)" + "de": " Typ 1 CCS (auch bekannt als Typ 1 Combo)", + "ca": "CSS Tipus 1 (també conegut com a Tipus 1 Combo)" }, "hideInAnswer": true, "icon": { @@ -645,7 +673,8 @@ "then": { "en": "Tesla Supercharger", "nl": "Tesla Supercharger", - "de": "Tesla Supercharger" + "de": "Tesla Supercharger", + "ca": "Supercarregador de Tesla" }, "icon": { "path": "./assets/layers/charging_station/Tesla-hpwc-model-s.svg", @@ -688,7 +717,8 @@ "then": { "en": "Tesla Supercharger", "nl": "Tesla Supercharger", - "de": "Tesla Supercharger" + "de": "Tesla Supercharger", + "ca": "Supercarregador de Tesla" }, "hideInAnswer": true, "icon": { @@ -702,7 +732,8 @@ "then": { "en": "Type 2 (mennekes)", "nl": "Type 2 (mennekes)", - "de": "Typ 2 (Mennekes)" + "de": "Typ 2 (Mennekes)", + "ca": "Tipus 2 (mennekes)" }, "icon": { "path": "./assets/layers/charging_station/Type2_socket.svg", @@ -745,7 +776,8 @@ "then": { "en": "Type 2 (mennekes)", "nl": "Type 2 (mennekes)", - "de": "Typ 2 (Mennekes)" + "de": "Typ 2 (Mennekes)", + "ca": "Tipus 2 (mennekes)" }, "hideInAnswer": true, "icon": { @@ -759,7 +791,8 @@ "then": { "en": "Type 2 CCS (mennekes)", "nl": "Type 2 CCS (mennekes)", - "de": "Typ 2 CCS (Mennekes)" + "de": "Typ 2 CCS (Mennekes)", + "ca": "CSS Tipus 2 (mennekes)" }, "icon": { "path": "./assets/layers/charging_station/Type2_CCS.svg", @@ -802,7 +835,8 @@ "then": { "en": "Type 2 CCS (mennekes)", "nl": "Type 2 CCS (mennekes)", - "de": "Typ 2 CCS (mennekes)" + "de": "Typ 2 CCS (mennekes)", + "ca": "CSS Tipus 2 (mennekes)" }, "hideInAnswer": true, "icon": { @@ -1656,7 +1690,8 @@ "question": { "en": "When is this charging station opened?", "nl": "Wanneer is dit oplaadpunt beschikbaar??", - "de": "Wann ist die Ladestation geöffnet?" + "de": "Wann ist die Ladestation geöffnet?", + "ca": "Quan està oberta aquesta estació de càrrega?" } }, "id": "OH" @@ -1666,7 +1701,8 @@ "question": { "en": "Does one have to pay to use this charging station?", "nl": "Moet men betalen om dit oplaadpunt te gebruiken?", - "de": "Muss man für die Nutzung dieser Ladestation bezahlen?" + "de": "Muss man für die Nutzung dieser Ladestation bezahlen?", + "ca": "Hi ha que pagar per utilitzar aquest punt de càrrega?" }, "mappings": [ { @@ -1681,7 +1717,8 @@ "then": { "nl": "Gratis te gebruiken (zonder aan te melden)", "en": "Free to use (without authenticating)", - "de": "Die Nutzung ist kostenlos, keine Authentifizierung erforderlich" + "de": "Die Nutzung ist kostenlos, keine Authentifizierung erforderlich", + "ca": "Ús gratuït (sense autentificació)" } }, { @@ -1696,7 +1733,8 @@ "then": { "nl": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht", "en": "Free to use, but one has to authenticate", - "de": "Die Nutzung ist kostenlos, Authentifizierung erforderlich" + "de": "Die Nutzung ist kostenlos, Authentifizierung erforderlich", + "ca": "Ús gratuït, però un s'ha d'autentificar" } }, { @@ -1708,7 +1746,8 @@ "then": { "nl": "Gratis te gebruiken", "en": "Free to use", - "de": "Kostenlose Nutzung" + "de": "Kostenlose Nutzung", + "ca": "Ús gratuït" }, "hideInAnswer": true }, @@ -1722,7 +1761,8 @@ "then": { "nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/...", "en": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station", - "de": "Die Nutzung ist kostenpflichtig, aber für Kunden des Betreibers der Einrichtung, wie Hotel, Krankenhaus, … kostenlos" + "de": "Die Nutzung ist kostenpflichtig, aber für Kunden des Betreibers der Einrichtung, wie Hotel, Krankenhaus, … kostenlos", + "ca": "De pagament, però gratuït per als clients de l'hotel/bar/hospital/... que gestiona l'estació de càrrega" } }, { @@ -1735,7 +1775,8 @@ "then": { "nl": "Betalend", "en": "Paid use", - "de": "Die Nutzung ist kostenpflichtig" + "de": "Die Nutzung ist kostenpflichtig", + "ca": "Ús de pagament" } } ] @@ -1745,12 +1786,14 @@ "question": { "en": "How much does one have to pay to use this charging station?", "nl": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?", - "de": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?" + "de": "Wie viel muss man für die Nutzung dieser Ladestation bezahlen?", + "ca": "Quant cal pagar per utilitzar aquesta estació de càrrega?" }, "render": { "en": "Using this charging station costs {charge}", "nl": "Dit oplaadpunt gebruiken kost {charge}", - "de": "Die Nutzung dieser Ladestation kostet {charge}" + "de": "Die Nutzung dieser Ladestation kostet {charge}", + "ca": "Utilitzar aquesta estació de càrrega costa {charge}" }, "freeform": { "key": "charge" @@ -1775,7 +1818,8 @@ "question": { "en": "What kind of authentication is available at the charging station?", "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?", - "de": "Welche Art der Authentifizierung ist an der Ladestation möglich?" + "de": "Welche Art der Authentifizierung ist an der Ladestation möglich?", + "ca": "Quin tipus d'autenticació hi ha disponible a l'estació de càrrega?" }, "multiAnswer": true, "mappings": [ @@ -1821,7 +1865,8 @@ "then": { "en": "Authentication via NFC is available", "nl": "Aanmelden via NFC is mogelijk", - "de": "Authentifizierung per NFC ist möglich" + "de": "Authentifizierung per NFC ist möglich", + "ca": "L'autenticació mitjançant NFC està disponible" } }, { @@ -1830,7 +1875,8 @@ "then": { "en": "Authentication via Money Card is available", "nl": "Aanmelden met Money Card is mogelijk", - "de": "Authentifizierung per Geldkarte ist möglich" + "de": "Authentifizierung per Geldkarte ist möglich", + "ca": "L'autenticació mitjançant targeta de pagament està disponible" } }, { @@ -1839,7 +1885,8 @@ "then": { "en": "Authentication via debit card is available", "nl": "Aanmelden met een betaalkaart is mogelijk", - "de": "Authentifizierung per Kreditkarte ist möglich" + "de": "Authentifizierung per Kreditkarte ist möglich", + "ca": "L'autenticació mitjançant targeta de debit està disponible" } }, { @@ -1848,7 +1895,8 @@ "then": { "en": "Charging here is (also) possible without authentication", "nl": "Hier opladen is (ook) mogelijk zonder aan te melden", - "de": "Das Laden ist hier (auch) ohne Authentifizierung möglich" + "de": "Das Laden ist hier (auch) ohne Authentifizierung möglich", + "ca": "Carregar aquí (també) és possible sense autenticació" } } ], @@ -1887,7 +1935,8 @@ "question": { "en": "What is the maximum amount of time one is allowed to stay here?", "nl": "Hoelang mag een voertuig hier blijven staan?", - "de": "Wie lange darf man hier maximal parken?" + "de": "Wie lange darf man hier maximal parken?", + "ca": "Quina és la quantitat màxima de temps que es permet permaneixer aquí?" }, "freeform": { "key": "maxstay" @@ -1895,7 +1944,8 @@ "render": { "en": "One can stay at most {canonical(maxstay)}", "nl": "De maximale parkeertijd hier is {canonical(maxstay)}", - "de": "Die maximale Parkdauer beträgt {canonical(maxstay)}" + "de": "Die maximale Parkdauer beträgt {canonical(maxstay)}", + "ca": "Un pot quedar-se com a màxim {canonical(maxstay)}" }, "mappings": [ { @@ -1903,7 +1953,8 @@ "then": { "en": "No timelimit on leaving your vehicle here", "nl": "Geen maximum parkeertijd", - "de": "Keine Höchstparkdauer" + "de": "Keine Höchstparkdauer", + "ca": "No hi ha límit de temps per a deixar el teu vehicle aquí" } } ], @@ -1921,12 +1972,14 @@ "render": { "en": "Part of the network {network}", "nl": "Maakt deel uit van het {network}-netwerk", - "de": "Teil des Netzwerks {network}" + "de": "Teil des Netzwerks {network}", + "ca": "Part de la xarxa {network}" }, "question": { "en": "Is this charging station part of a network?", "nl": "Is dit oplaadpunt deel van een groter netwerk?", - "de": "Ist diese Ladestation Teil eines Netzwerks?" + "de": "Ist diese Ladestation Teil eines Netzwerks?", + "ca": "Aquesta estació de càrrega forma part d'una xarxa?" }, "freeform": { "key": "network" @@ -1992,12 +2045,14 @@ "question": { "en": "Who is the operator of this charging station?", "nl": "Wie beheert dit oplaadpunt?", - "de": "Wer ist der Betreiber dieser Ladestation?" + "de": "Wer ist der Betreiber dieser Ladestation?", + "ca": "Qui és l'operadora d'aquesta estació de càrrega?" }, "render": { "en": "This charging station is operated by {operator}", "nl": "Wordt beheerd door {operator}", - "de": "Die Station wird betrieben von {operator}" + "de": "Die Station wird betrieben von {operator}", + "ca": "Aquesta estació de càrrega l'opera {operator}" }, "freeform": { "key": "operator" @@ -2012,7 +2067,8 @@ "then": { "en": "Actually, {operator} is the network", "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt", - "de": "Eigentlich ist {operator} das Netzwerk" + "de": "Eigentlich ist {operator} das Netzwerk", + "ca": "De fet, {operator} és la xarxa" }, "addExtraTags": [ "operator=" @@ -2027,12 +2083,14 @@ "question": { "en": "What number can one call if there is a problem with this charging station?", "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?", - "de": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?" + "de": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?", + "ca": "A quin número es pot cridar si hi ha algun problema amb aquest punt de càrrega?" }, "render": { "en": "In case of problems, call {phone}", "nl": "Bij problemen, bel naar {phone}", - "de": "Bei Problemen, anrufen unter {phone}" + "de": "Bei Problemen, anrufen unter {phone}", + "ca": "En cas de problemes, truqueu a {phone}" }, "freeform": { "key": "phone", @@ -2044,12 +2102,14 @@ "question": { "en": "What is the email address of the operator?", "nl": "Wat is het email-adres van de operator?", - "de": "Wie lautet die E-Mail-Adresse des Betreibers?" + "de": "Wie lautet die E-Mail-Adresse des Betreibers?", + "ca": "Quin és el correu electrònic de l'operadora?" }, "render": { "en": "In case of problems, send an email to {email}", "nl": "Bij problemen, email naar {email}", - "de": "Bei Problemen senden Sie bitte eine E-Mail an {email}" + "de": "Bei Problemen senden Sie bitte eine E-Mail an {email}", + "ca": "En cas de problemes, envia un email a {email}" }, "freeform": { "key": "email", @@ -2097,7 +2157,8 @@ "question": { "en": "Is this charging point in use?", "nl": "Is dit oplaadpunt operationeel?", - "de": "Ist die Station in Betrieb?" + "de": "Ist die Station in Betrieb?", + "ca": "Està en ús aquest punt de càrrega?" }, "mappings": [ { @@ -2113,7 +2174,8 @@ "then": { "en": "This charging station works", "nl": "Dit oplaadpunt werkt", - "de": "Die Station ist in Betrieb" + "de": "Die Station ist in Betrieb", + "ca": "Aquesta estació de càrrega funciona" } }, { @@ -2129,7 +2191,8 @@ "then": { "en": "This charging station is broken", "nl": "Dit oplaadpunt is kapot", - "de": "Die Station ist defekt" + "de": "Die Station ist defekt", + "ca": "Aquesta estació de carrega està trencada" } }, { @@ -2145,7 +2208,8 @@ "then": { "en": "A charging station is planned here", "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden", - "de": "Die Station ist erst in Planung" + "de": "Die Station ist erst in Planung", + "ca": "Aquí està prevista una estació de recàrrega" } }, { @@ -2177,7 +2241,8 @@ "then": { "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig", - "de": "Die Station ist dauerhaft geschlossen und nicht mehr in Nutzung, aber noch sichtbar" + "de": "Die Station ist dauerhaft geschlossen und nicht mehr in Nutzung, aber noch sichtbar", + "ca": "Aquesta estació de recàrrega s'ha desactivat permanentment i ja no s'utilitza, però encara és visible" } } ] @@ -2187,7 +2252,8 @@ "question": { "en": "Does one have to pay a parking fee while charging?", "nl": "Moet men parkeergeld betalen tijdens het opladen?", - "de": "Muss man während des Ladens eine Parkgebühr bezahlen?" + "de": "Muss man während des Ladens eine Parkgebühr bezahlen?", + "ca": "Cal pagar una taxa d'aparcament mentre es carrega?" }, "mappings": [ { @@ -2195,7 +2261,8 @@ "then": { "en": "No additional parking cost while charging", "nl": "Geen extra parkeerkost tijdens het opladen", - "de": "Keine zusätzlichen Parkkosten während des Ladens" + "de": "Keine zusätzlichen Parkkosten während des Ladens", + "ca": "No cal pagar una taxa addicional mentres carrega" } }, { @@ -2203,7 +2270,8 @@ "then": { "en": "An additional parking fee should be paid while charging", "nl": "Tijdens het opladen moet er parkeergeld betaald worden", - "de": "Während des Ladens ist eine zusätzliche Parkgebühr zu entrichten" + "de": "Während des Ladens ist eine zusätzliche Parkgebühr zu entrichten", + "ca": "Cal pagar una taxa addicional d'aparcament mentres carrega" } } ], diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index faa7b2a7e..943acab38 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -286,7 +286,7 @@ "es": "Se trata de un negocio de comida rápida, centrado en el servicio rápido. Si hay asientos disponibles, son más bien limitados y funcionales.", "fr": "C'est un fast-food, centrée sur le service rapide. Si des places sont disponibles, elles sont plutôt limitées et fonctionnelles.", "hu": "Ez egy gyorsétterem (büfé), amely a gyors kiszolgálásra összpontosít. Ha vannak is ülőhelyek, ezek meglehetősen korlátozottak és funkcionálisak.", - "ca": "Aquest és un negoci de menjar ràpid, centrat en el servei ràpid. Si hi han seients disponibles, aquests seràn limitats i funcionals.", + "ca": "Aquest és un negoci de menjar ràpid, centrat en el servei ràpid. Si hi han seients disponibles, aquests seran limitats i funcionals.", "cs": "Jedná se o podnik s rychlým občerstvením, zaměřený na rychlou obsluhu. Pokud je k dispozici místo k sezení, je spíše omezené a funkční." } }, @@ -319,7 +319,7 @@ "de": "Was für Essen gibt es hier?", "es": "¿Qué tipo de comida sirven aquí?", "fr": "Quelle type de nourriture est servie ici ?", - "ca": "Quin menjar es serveix aquí?", + "ca": "Quin tipus de menjar es serveix aquí?", "cs": "Jaké jídlo se zde podává?" }, "render": { @@ -395,7 +395,7 @@ "nl": "Dit is een broodjeszaak", "de": "Dies ist ein Sandwichladen", "fr": "C'est une sandwicherie", - "ca": "Això és un sandvitxeria", + "ca": "Això és una botiga d'entrepans", "cs": "Toto je obchod se sendviči" } }, diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 0bbabfcff..be124f8ca 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -204,7 +204,7 @@ }, "description": { "en": "You can specify later on what this shop sells.", - "ca": "Afegir una botiga nova", + "ca": "Podeu especificar més endavant el que ven aquesta botiga.", "cs": "Přidat nový obchod", "de": "Ein neues Geschäft hinzufügen", "eo": "Enmeti novan butikon", diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json index 38fffaba6..37629af29 100644 --- a/assets/layers/sport_pitch/sport_pitch.json +++ b/assets/layers/sport_pitch/sport_pitch.json @@ -298,7 +298,8 @@ "ru": "Здесь можно играть в баскетбол", "de": "Hier wird Basketball gespielt", "es": "Aquí se juega al baloncesto", - "cs": "Zde se hraje basketbal" + "cs": "Zde se hraje basketbal", + "ca": "Aquí es juga bàsquet" }, "hideInAnswer": true }, @@ -320,7 +321,8 @@ "question": { "en": "How much basketball hoops does this pitch have?", "de": "Wie viele Basketballkörbe hat das Spielfeld?", - "cs": "Kolik má toto hřiště basketbalových košů?" + "cs": "Kolik má toto hřiště basketbalových košů?", + "ca": "Quants cèrcols té aquesta pista?" }, "mappings": [ { @@ -336,7 +338,8 @@ "then": { "en": "This basketball pitch has two hoops", "de": "Dieses Basketballfeld hat zwei Körbe", - "cs": "Toto basketbalové hřiště má dva koše" + "cs": "Toto basketbalové hřiště má dva koše", + "ca": "Aquest camp de bàsquet té dos cèrcols" } }, { @@ -344,7 +347,8 @@ "then": { "en": "This basketball pitch has four hoops", "de": "Dieses Basketballfeld hat vier Körbe", - "cs": "Toto basketbalové hřiště má čtyři koše" + "cs": "Toto basketbalové hřiště má čtyři koše", + "ca": "Aquest camp de bàsquet té quatre cèrcols" } }, { @@ -352,7 +356,8 @@ "then": { "en": "This basketball pitch has {hoops} hoops", "de": "Dieses Basketballfeld hat {hoops} Körbe", - "cs": "Toto basketbalové hřiště má {hoops} koše" + "cs": "Toto basketbalové hřiště má {hoops} koše", + "ca": "Aquest camp de bàsquet té {hoops} cèrcols" }, "hideInAnswer": true } @@ -461,14 +466,16 @@ "then": { "en": "The surface is fine gravel", "nl": "De ondergrond bestaat uit grind", - "de": "Die Oberfläche ist feiner Kies" + "de": "Die Oberfläche ist feiner Kies", + "ca": "La superfície és grava fina" } }, { "if": "surface=tartan", "then": { "en": "The surface of this track is Tartan, a synthetic, slightly springy, porous surface", - "nl": "De ondergrond is Tartan, een synthetisch, licht verende en poreuze ondergrond" + "nl": "De ondergrond is Tartan, een synthetisch, licht verende en poreuze ondergrond", + "ca": "La superfície d'aquesta pista és Tartan, una superfície sintètica, lleugerament molla i porosa" } } ], @@ -553,7 +560,8 @@ "ru": "Свободный доступ", "de": "Der Sportplatz ist öffentlich zugänglich", "es": "Acceso público", - "cs": "Veřejný přístup" + "cs": "Veřejný přístup", + "ca": "Accés públic" }, "hideInAnswer": true } @@ -711,7 +719,8 @@ "it": "Sempre aperto", "de": "Immer zugänglich", "es": "Siempre accesible", - "cs": "Vždy přístupné" + "cs": "Vždy přístupné", + "ca": "Sempre accesible" } } ], diff --git a/assets/layers/stairs/stairs.json b/assets/layers/stairs/stairs.json index b30649e42..d51da3c48 100644 --- a/assets/layers/stairs/stairs.json +++ b/assets/layers/stairs/stairs.json @@ -293,27 +293,31 @@ { "id": "incline", "render": { - "en": "These stairs have an incline of {incline}" + "en": "These stairs have an incline of {incline}", + "ca": "Aquestes escales tenen una inclinació de {incline}" }, "freeform": { "key": "incline", "type": "slope" }, "question": { - "en": "What is the incline of these stairs?" + "en": "What is the incline of these stairs?", + "ca": "Quina és la inclinació d'aquestes escales?" }, "mappings": [ { "if": "incline=up", "then": { - "en": "The upward direction is {direction_absolute()}" + "en": "The upward direction is {direction_absolute()}", + "ca": "La direcció ascendent és {direction_absolute()}" }, "hideInAnswer": true }, { "if": "incline=down", "then": { - "en": "The downward direction is {direction_absolute()}" + "en": "The downward direction is {direction_absolute()}", + "ca": "La direcció descendent és {direction_absolute()}" }, "hideInAnswer": true } diff --git a/assets/layers/trail/trail.json b/assets/layers/trail/trail.json index f90dabfe3..6c1af2d91 100644 --- a/assets/layers/trail/trail.json +++ b/assets/layers/trail/trail.json @@ -13,7 +13,8 @@ "description": { "en": "Waymarked trails", "nl": "Aangeduide wandeltochten", - "de": "Markierte Wanderwege" + "de": "Markierte Wanderwege", + "ca": "Rutes marcades" }, "source": { "osmTags": { @@ -107,12 +108,14 @@ "question": { "en": "What is the name of this trail?", "nl": "Wat is de naam van deze wandeling?", - "de": "Wie heißt dieser Weg?" + "de": "Wie heißt dieser Weg?", + "ca": "Quin és el nom d'aquest sender?" }, "render": { "en": "This trail is called {name}", "nl": "Deze wandeling heet {name}", - "de": "Dieser Weg heißt {name}" + "de": "Dieser Weg heißt {name}", + "ca": "Aquest sender s'anomena {name}" }, "freeform": { "key": "name" @@ -143,7 +146,8 @@ "then": { "en": "This trail is maintained by Natuurpunt", "nl": "Dit gebied wordt beheerd door Natuurpunt", - "de": "Dieser Weg wird von Natuurpunt gepflegt" + "de": "Dieser Weg wird von Natuurpunt gepflegt", + "ca": "Aquest sender és mantingut per Natuurpunt" }, "icon": { "path": "./assets/themes/buurtnatuur/Natuurpunt.jpg", @@ -174,12 +178,14 @@ "question": { "en": "What is the reference colour of this trail?", "nl": "Welke kleur heeft deze wandeling?", - "de": "Was ist die Referenzfarbe dieses Weges?" + "de": "Was ist die Referenzfarbe dieses Weges?", + "ca": "Quin és el color de referència d'aquest sender?" }, "render": { "en": "The reference colour is {colour}", "nl": "Deze wandeling heeft kleur {colour}", - "de": "Die Referenzfarbe ist {colour}" + "de": "Die Referenzfarbe ist {colour}", + "ca": "El color de referència és {colour}" }, "freeform": { "key": "colour", diff --git a/assets/layers/unit/unit.json b/assets/layers/unit/unit.json index 5c23af3a0..78e1334ee 100644 --- a/assets/layers/unit/unit.json +++ b/assets/layers/unit/unit.json @@ -132,7 +132,8 @@ ], "human": { "en": "{quantity} A", - "nl": "{quantity} A" + "nl": "{quantity} A", + "ca": "{quantity} A" } } ], @@ -173,7 +174,8 @@ "en": "one meter", "fr": "un mètre", "nl": "één meter", - "de": "ein Meter" + "de": "ein Meter", + "ca": "un metre" } }, { @@ -197,7 +199,8 @@ }, "humanSingular": { "en": "one centimeter", - "nl": "één centimeter" + "nl": "één centimeter", + "ca": "un centímetre" } }, { @@ -218,7 +221,8 @@ "humanSingular": { "en": "one millimeter", "nl": "één millimeter", - "de": "ein Millimeter" + "de": "ein Millimeter", + "ca": "un mil·límetre" } }, { @@ -330,11 +334,13 @@ ], "human": { "en": "{quantity} minutes", - "nl": "{quantity} minuten" + "nl": "{quantity} minuten", + "ca": "{quantity} minuts" }, "humanSingular": { "en": "one minute", - "nl": "één minuut" + "nl": "één minuut", + "ca": "un minut" } }, { @@ -351,11 +357,13 @@ ], "human": { "en": "{quantity} hours", - "nl": "{quantity} uren" + "nl": "{quantity} uren", + "ca": "{quantity} hores" }, "humanSingular": { "en": "one hour", - "nl": "één uur" + "nl": "één uur", + "ca": "una hora" } }, { @@ -369,7 +377,8 @@ ], "human": { "en": "{quantity} days", - "nl": "{quantity} day" + "nl": "{quantity} day", + "ca": "{quantity} dies" }, "humanSingular": { "en": "one day", diff --git a/assets/layers/usersettings/usersettings.json b/assets/layers/usersettings/usersettings.json index ed64e2bcc..baaaa9bce 100644 --- a/assets/layers/usersettings/usersettings.json +++ b/assets/layers/usersettings/usersettings.json @@ -50,7 +50,7 @@ "then": { "en": "The language was set via an URL-parameter and cannot be set by the user.", "de": "Die Sprache wurde über einen URL-Parameter gesetzt und kann nicht vom Benutzer eingestellt werden.²", - "ca": "L'idioma es va establir mitjançant un paràmetre d'URL i l'usuari no pot definir-lo.²", + "ca": "L'idioma es va establir mitjançant un paràmetre d'URL i l'usuari no pot definir-lo.", "cs": "Jazyk byl nastaven pomocí parametru URL a uživatel jej nemůže nastavit.²" } } @@ -83,7 +83,7 @@ "text": { "en": "You have {_unreadMessages} messages
Open your inbox", "de": "Du hast {_unreadMessages}
Öffne Deinen Posteingang", - "ca": "Tens {_unreadMessages}
Open your inbox", + "ca": "Tens {_unreadMessages} missatges
Obri la safata d'entrada", "cs": "Máte {_unreadMessages}
Otevřít schránku" }, "href": "{_backend}/messages/inbox" @@ -123,13 +123,15 @@ "if": "mapcomplete-a11y=default", "alsoShowIf": "mapcomplete-a11y=", "then": { - "en": "Enable accessibility features when arrow keys are used to navigate the map" + "en": "Enable accessibility features when arrow keys are used to navigate the map", + "ca": "Activar les funcions d'accessibilitat quan s'utilitzen les tecles de fletxa per navegar pel mapa" } }, { "if": "mapcomplete-a11y=always", "then": { - "en": "Always enable accessibility features" + "en": "Always enable accessibility features", + "ca": "Sempre habilita les característiques d'accessibilitat" } }, { @@ -411,7 +413,8 @@ "en": "This can help to accurately position a new element", "cs": "To může pomoci přesněji umístit nový prvek", "de": "Dies kann dazu beitragen, ein neues Element genau zu positionieren", - "nl": "Dit kan helpen om nieuwe elementen accuraat te plaatsen" + "nl": "Dit kan helpen om nieuwe elementen accuraat te plaatsen", + "ca": "Això pot ajudar a posicionar amb precisió un nou element" }, "mappings": [ { diff --git a/assets/layers/vending_machine/vending_machine.json b/assets/layers/vending_machine/vending_machine.json index 456a16943..9d01b7e6b 100644 --- a/assets/layers/vending_machine/vending_machine.json +++ b/assets/layers/vending_machine/vending_machine.json @@ -579,7 +579,8 @@ "en": "Fruit is sold", "nl": "Fruit wordt verkocht", "de": "Obst wird verkauft", - "cs": "Prodává ovoce" + "cs": "Prodává ovoce", + "ca": "Es ven fruita" }, "icon": "./assets/layers/vending_machine/fruits.svg" }, @@ -589,7 +590,8 @@ "en": "Strawberries are sold", "nl": "Aardbeien worden verkocht", "de": "Erdbeeren werden verkauft", - "cs": "Prodává jahody" + "cs": "Prodává jahody", + "ca": "Es venen maduixes" }, "icon": "./assets/layers/vending_machine/strawberry.svg" }, @@ -643,7 +645,8 @@ "en": "Bicycle lights are sold", "nl": "Fietslampjes worden verkocht", "de": "Fahrradlampen werden verkauft", - "cs": "Prodává světla na kolo" + "cs": "Prodává světla na kolo", + "ca": "Es venen llums per a bicicletes" } }, { @@ -652,7 +655,8 @@ "en": "Gloves are sold", "nl": "Handschoenen worden verkocht", "de": "Fahrradhandschuhe werden verkauft", - "cs": "Prodává rukavice" + "cs": "Prodává rukavice", + "ca": "Es venen guants" } }, { @@ -661,7 +665,8 @@ "en": "Bicycle repair kits are sold", "nl": "Fietsreparatiesets worden verkocht", "de": "Fahrrad-Reparaturset werden verkauft", - "cs": "Prodává sady na opravu jízdních kol" + "cs": "Prodává sady na opravu jízdních kol", + "ca": "Es venen kits de reparació de bicicletes" } }, { @@ -670,7 +675,8 @@ "en": "Bicycle pumps are sold", "nl": "Fietspompen worden verkocht", "de": "Fahrradpumpen werden verkauft", - "cs": "Prodává pumpy na kolo" + "cs": "Prodává pumpy na kolo", + "ca": "Es venen bombes de bicicletes" } }, { @@ -679,7 +685,8 @@ "en": "Bicycle locks are sold", "nl": "Fietssloten worden verkocht", "de": "Fahrradschlösser werden verkauft", - "cs": "Prodává zámky na kolo" + "cs": "Prodává zámky na kolo", + "ca": "Es venen cadenats per a bicicletes" } } ], @@ -980,7 +987,7 @@ "question": { "en": "Sale of fruit", "nl": "Verkoop van fruit", - "ca": "Venda de flors", + "ca": "Venda de fruites", "de": "Verkauf von Obst", "cs": "Prodej ovoce" }, @@ -990,7 +997,7 @@ "question": { "en": "Sale of strawberries", "nl": "Verkoop van aardbeien", - "ca": "Venda de tiquets d'aparcament", + "ca": "Venda de maduixes", "de": "Verkauf von Erdbeeren", "cs": "Prodej jahod" }, @@ -1011,7 +1018,7 @@ "osmTags": "vending~i~.*parking_tickets.*", "question": { "en": "Sale of parking tickets", - "ca": "Venda de bitllets de transport públic", + "ca": "Venda de tiquets d'aparcament", "de": "Verkauf von Parkscheinen", "cs": "Prodej parkovacích lístků" } @@ -1040,7 +1047,8 @@ "en": "Sale of bicycle lights", "nl": "Verkoop van fietslampjes", "de": "Verkauf von Fahrradlampen", - "cs": "Prodej světel na kolo" + "cs": "Prodej světel na kolo", + "ca": "Venda de llums de bicicletes" } }, { @@ -1049,7 +1057,8 @@ "en": "Sale of gloves", "nl": "Verkoop van handschoenen", "de": "Verkauf von Fahrradhandschuhen", - "cs": "Prodej rukavic" + "cs": "Prodej rukavic", + "ca": "Venda de guants" } }, { @@ -1058,7 +1067,8 @@ "en": "Sale of bicycle repair kits", "nl": "Verkoop van fietsreparatiesets", "de": "Verkauf von Fahrrad-Reparatursets", - "cs": "Prodej sad na opravu jízdních kol" + "cs": "Prodej sad na opravu jízdních kol", + "ca": "Venda de kits de reparació de bicicletes" } }, { @@ -1067,7 +1077,8 @@ "en": "Sale of bicycle pumps", "nl": "Verkoop van fietspompen", "de": "Verkauf von Fahrradpumpen", - "cs": "Prodej pump na kolo" + "cs": "Prodej pump na kolo", + "ca": "Venda de bombes de bicicletes" } }, { @@ -1076,7 +1087,8 @@ "en": "Sale of bicycle locks", "nl": "Verkoop van fietssloten", "de": "Verkauf von Fahrradschlössern", - "cs": "Prodej zámků na kola" + "cs": "Prodej zámků na kola", + "ca": "Venda de cadenat per a bicicletes" } } ] diff --git a/langs/layers/ca.json b/langs/layers/ca.json index 5d3da7f05..f89d20f61 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -285,7 +285,7 @@ } }, "animal_shelter": { - "name": "Refugi d'animals", + "name": "Refugis d'animals", "presets": { "0": { "title": "un refugi d'animals" @@ -299,9 +299,28 @@ "mappings": { "0": { "then": "Els animals romanen ací fins que son adoptats per un nou propietari" + }, + "1": { + "then": "Els animals reben cures per a la resta de la seva vida" + }, + "2": { + "then": "Els animals ferits es rehabiliten aquí fins que puguen ser alliberats de nou a la natura " } - } + }, + "question": "Quina és la finalitat del refugi d'animals?" + }, + "7": { + "question": "Quan està obert aquest refugi d'animals?", + "render": "{opening_hours_table()}" } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Refugi d'animals" } }, "artwork": { @@ -1246,7 +1265,7 @@ "Bicycle parking type": { "mappings": { "0": { - "then": "Bastidors de grapes" + "then": "Bastidors" }, "1": { "then": "Portarodes/bucles" @@ -1876,6 +1895,216 @@ }, "charging_station": { "tagRenderings": { + "Authentication": { + "mappings": { + "4": { + "then": "L'autenticació mitjançant NFC està disponible" + }, + "5": { + "then": "L'autenticació mitjançant targeta de pagament està disponible" + }, + "6": { + "then": "L'autenticació mitjançant targeta de debit està disponible" + }, + "7": { + "then": "Carregar aquí (també) és possible sense autenticació" + } + }, + "question": "Quin tipus d'autenticació hi ha disponible a l'estació de càrrega?" + }, + "Available_charging_stations (generated)": { + "mappings": { + "0": { + "then": "Endoll de paret Schuko sense pin a terra (CEE7/4 tipus F)" + }, + "1": { + "then": "Endoll de paret Schuko sense pin a terra (CEE7/4 tipus F)" + }, + "2": { + "then": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" + }, + "3": { + "then": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" + }, + "4": { + "then": "CHAdeMo" + }, + "5": { + "then": "CHAdeMo" + }, + "6": { + "then": "Tipus 1 amb cable" + }, + "7": { + "then": "Tipus 1 amb cable" + }, + "8": { + "then": "Tipus 1 sense cable" + }, + "9": { + "then": "Tipus 1 sense cable(J1772)" + }, + "10": { + "then": "CSS Tipus 1 (també conegut com a Tipus 1 Combo)" + }, + "11": { + "then": "CSS Tipus 1 (també conegut com a Tipus 1 Combo)" + }, + "12": { + "then": "Supercarregador de Tesla" + }, + "13": { + "then": "Supercarregador de Tesla" + }, + "14": { + "then": "Tipus 2 (mennekes)" + }, + "15": { + "then": "Tipus 2 (mennekes)" + }, + "16": { + "then": "CSS Tipus 2 (mennekes)" + }, + "17": { + "then": "CSS Tipus 2 (mennekes)" + } + } + }, + "Network": { + "question": "Aquesta estació de càrrega forma part d'una xarxa?", + "render": "Part de la xarxa {network}" + }, + "OH": { + "override": { + "question": "Quan està oberta aquesta estació de càrrega?" + } + }, + "Operational status": { + "mappings": { + "0": { + "then": "Aquesta estació de càrrega funciona" + }, + "1": { + "then": "Aquesta estació de carrega està trencada" + }, + "2": { + "then": "Aquí està prevista una estació de recàrrega" + }, + "4": { + "then": "Aquesta estació de recàrrega s'ha desactivat permanentment i ja no s'utilitza, però encara és visible" + } + }, + "question": "Està en ús aquest punt de càrrega?" + }, + "Operator": { + "mappings": { + "0": { + "then": "De fet, {operator} és la xarxa" + } + }, + "question": "Qui és l'operadora d'aquesta estació de càrrega?", + "render": "Aquesta estació de càrrega l'opera {operator}" + }, + "Parking:fee": { + "mappings": { + "0": { + "then": "No cal pagar una taxa addicional mentres carrega" + }, + "1": { + "then": "Cal pagar una taxa addicional d'aparcament mentres carrega" + } + }, + "question": "Cal pagar una taxa d'aparcament mentre es carrega?" + }, + "Type": { + "mappings": { + "0": { + "then": "Aquí es poden carregar bicicletes" + }, + "1": { + "then": "Aquí es poden carregar cotxes" + }, + "2": { + "then": "Aquí es poden carregar Scooters" + }, + "3": { + "then": "Aquí es poden carregar camions o trailers" + }, + "4": { + "then": "Aquí es poden carregar autobusos" + } + }, + "question": "Quins vehicles tenen permesa la càrrega aquí?" + }, + "access": { + "mappings": { + "0": { + "then": "Qualsevol persona pot utilitzar aquesta estació de recàrrega (pot ser calgui un pagament)" + }, + "1": { + "then": "Qualsevol persona pot utilitzar aquesta estació de recàrrega (pot ser calgui un pagament)" + }, + "2": { + "then": "Sols clientes del lloc al que pertany aquest punt de càrrega poden utilitzar-lo
p.e. un punt de càrrega d'un hotel que sols poden utilizar-los els hostes" + }, + "3": { + "then": "S'ha de sol·licitar una clau per a utilitzar aquest punt de càrrega
p.e un punt de càrrega operat per un hotel nomes utilitzable pel seus hostes, els quals reben una clau des de recepció per a desbloquejar el punt de càrrega" + }, + "4": { + "then": "No accessible per al públic general (p.e. només accessible pels propietaris, empleats, ...)" + }, + "5": { + "then": "Aquesta estació de càrrega és accessible al públic durant certes hores o condicions. Es poden aplicar restriccions, però es permet l'ús general." + } + }, + "question": "Qui pot utilitzar aquesta estació de càrrega?", + "render": "L'accés està {access}" + }, + "capacity": { + "question": "Quants vehicles poden carregar a la vegada?", + "render": "Aquí poden carregar {capacity} vehicles a l'hora" + }, + "charge": { + "question": "Quant cal pagar per utilitzar aquesta estació de càrrega?", + "render": "Utilitzar aquesta estació de càrrega costa {charge}" + }, + "email": { + "question": "Quin és el correu electrònic de l'operadora?", + "render": "En cas de problemes, envia un email a {email}" + }, + "fee": { + "mappings": { + "0": { + "then": "Ús gratuït (sense autentificació)" + }, + "1": { + "then": "Ús gratuït, però un s'ha d'autentificar" + }, + "2": { + "then": "Ús gratuït" + }, + "3": { + "then": "De pagament, però gratuït per als clients de l'hotel/bar/hospital/... que gestiona l'estació de càrrega" + }, + "4": { + "then": "Ús de pagament" + } + }, + "question": "Hi ha que pagar per utilitzar aquest punt de càrrega?" + }, + "maxstay": { + "mappings": { + "0": { + "then": "No hi ha límit de temps per a deixar el teu vehicle aquí" + } + }, + "question": "Quina és la quantitat màxima de temps que es permet permaneixer aquí?", + "render": "Un pot quedar-se com a màxim {canonical(maxstay)}" + }, + "phone": { + "question": "A quin número es pot cridar si hi ha algun problema amb aquest punt de càrrega?", + "render": "En cas de problemes, truqueu a {phone}" + }, "rewritten-questions": { "renderings": { "0": { @@ -3673,7 +3902,7 @@ "then": "Aquesta és una botiga de kebabs" }, "4": { - "then": "Això és un sandvitxeria" + "then": "Això és una botiga d'entrepans" }, "5": { "then": "Aquí es serveixen hamburgueses" @@ -3706,13 +3935,13 @@ "then": "Aquí es serveixen plats tailandesos" } }, - "question": "Quin menjar es serveix aquí?", + "question": "Quin tipus de menjar es serveix aquí?", "render": "Aquest lloc serveix principalment {cuisine}" }, "Fastfood vs restaurant": { "mappings": { "0": { - "then": "Aquest és un negoci de menjar ràpid, centrat en el servei ràpid. Si hi han seients disponibles, aquests seràn limitats i funcionals." + "then": "Aquest és un negoci de menjar ràpid, centrat en el servei ràpid. Si hi han seients disponibles, aquests seran limitats i funcionals." }, "1": { "then": "Un restaurant, centrat en crear una bona experiència on es serveix a taula" @@ -6685,7 +6914,7 @@ "name": "Botiga", "presets": { "0": { - "description": "Afegir una botiga nova", + "description": "Podeu especificar més endavant el que ven aquesta botiga.", "title": "una botiga" } }, @@ -6926,6 +7155,20 @@ } }, "tagRenderings": { + "basketball-hoops": { + "mappings": { + "1": { + "then": "Aquest camp de bàsquet té dos cèrcols" + }, + "2": { + "then": "Aquest camp de bàsquet té quatre cèrcols" + }, + "3": { + "then": "Aquest camp de bàsquet té {hoops} cèrcols" + } + }, + "question": "Quants cèrcols té aquesta pista?" + }, "sport-pitch-access": { "mappings": { "0": { @@ -6939,6 +7182,9 @@ }, "3": { "then": "Privat - no accessible al públic" + }, + "4": { + "then": "Accés públic" } }, "question": "Aquesta pista d'esports és accessible públicament?" @@ -6967,6 +7213,9 @@ "mappings": { "0": { "then": "Sempre accesible" + }, + "1": { + "then": "Sempre accesible" } } }, @@ -6990,6 +7239,9 @@ "4": { "then": "Aquí es juga al corfbol" }, + "5": { + "then": "Aquí es juga bàsquet" + }, "6": { "then": "Açò és un skatepark" } @@ -7013,6 +7265,12 @@ }, "4": { "then": "La superfície és formigó" + }, + "5": { + "then": "La superfície és grava fina" + }, + "6": { + "then": "La superfície d'aquesta pista és Tartan, una superfície sintètica, lleugerament molla i porosa" } }, "question": "Quina és la superfície d'aquest camp esportiu?", @@ -7063,6 +7321,18 @@ }, "question": "Aquestes escales tenen un passamà?" }, + "incline": { + "mappings": { + "0": { + "then": "La direcció ascendent és {direction_absolute()}" + }, + "1": { + "then": "La direcció descendent és {direction_absolute()}" + } + }, + "question": "Quina és la inclinació d'aquestes escales?", + "render": "Aquestes escales tenen una inclinació de {incline}" + }, "multilevels": { "override": { "question": "Entre quines plantes estan aquestes escales?", @@ -7785,6 +8055,7 @@ } }, "trail": { + "description": "Rutes marcades", "name": "Camins", "tagRenderings": { "Color": { @@ -7801,6 +8072,19 @@ "3": { "then": "Ruta groga" } + }, + "question": "Quin és el color de referència d'aquest sender?", + "render": "El color de referència és {colour}" + }, + "Name": { + "question": "Quin és el nom d'aquest sender?", + "render": "Aquest sender s'anomena {name}" + }, + "Operator tag": { + "mappings": { + "0": { + "then": "Aquest sender és mantingut per Natuurpunt" + } } }, "trail-length": { @@ -8130,16 +8414,26 @@ } } }, + "2": { + "applicableUnits": { + "0": { + "human": "{quantity} A" + } + } + }, "3": { "applicableUnits": { "0": { - "human": "{quantity} metre" + "human": "{quantity} metre", + "humanSingular": "un metre" }, "1": { - "human": "{quantity} centimetre" + "human": "{quantity} centimetre", + "humanSingular": "un centímetre" }, "2": { - "human": "{quantity} mil·límetres" + "human": "{quantity} mil·límetres", + "humanSingular": "un mil·límetre" }, "3": { "human": "{quantity} peus" @@ -8157,12 +8451,37 @@ "humanShort": "{quantity} mph" } } + }, + "5": { + "applicableUnits": { + "0": { + "human": "{quantity} minuts", + "humanSingular": "un minut" + }, + "1": { + "human": "{quantity} hores", + "humanSingular": "una hora" + }, + "2": { + "human": "{quantity} dies" + } + } } } }, "usersettings": { "description": "Una capa especial que no està pensada per mostrar-se en un mapa, però que s'utilitza per configurar la configuració de l'usuari", "tagRenderings": { + "a11y-features": { + "mappings": { + "0": { + "then": "Activar les funcions d'accessibilitat quan s'utilitzen les tecles de fletxa per navegar pel mapa" + }, + "1": { + "then": "Sempre habilita les característiques d'accessibilitat" + } + } + }, "all-questions-at-once": { "mappings": { "0": { @@ -8237,7 +8556,7 @@ "1": { "then": { "special": { - "text": "Tens {_unreadMessages}
Open your inbox" + "text": "Tens {_unreadMessages} missatges
Obri la safata d'entrada" } } } @@ -8246,7 +8565,7 @@ "language_picker": { "mappings": { "0": { - "then": "L'idioma es va establir mitjançant un paràmetre d'URL i l'usuari no pot definir-lo.²" + "then": "L'idioma es va establir mitjançant un paràmetre d'URL i l'usuari no pot definir-lo." } } }, @@ -8282,6 +8601,9 @@ } } }, + "show_crosshair": { + "questionHint": "Això pot ajudar a posicionar amb precisió un nou element" + }, "show_debug": { "mappings": { "0": { @@ -8422,22 +8744,37 @@ "question": "Venda de productes carnis" }, "17": { - "question": "Venda de flors" + "question": "Venda de fruites" }, "18": { - "question": "Venda de tiquets d'aparcament" + "question": "Venda de maduixes" }, "19": { "question": "Venda de flors" }, "20": { - "question": "Venda de bitllets de transport públic" + "question": "Venda de tiquets d'aparcament" }, "21": { "question": "Venda de monedes premsades" }, "22": { "question": "Venda de bitllets de transport públic" + }, + "23": { + "question": "Venda de llums de bicicletes" + }, + "24": { + "question": "Venda de guants" + }, + "25": { + "question": "Venda de kits de reparació de bicicletes" + }, + "26": { + "question": "Venda de bombes de bicicletes" + }, + "27": { + "question": "Venda de cadenat per a bicicletes" } } } @@ -8526,6 +8863,12 @@ "15": { "then": "Es venen productes carnis" }, + "16": { + "then": "Es ven fruita" + }, + "17": { + "then": "Es venen maduixes" + }, "18": { "then": "Es venen flors" }, @@ -8537,6 +8880,21 @@ }, "21": { "then": "Es venen bitllets de transport públic" + }, + "22": { + "then": "Es venen llums per a bicicletes" + }, + "23": { + "then": "Es venen guants" + }, + "24": { + "then": "Es venen kits de reparació de bicicletes" + }, + "25": { + "then": "Es venen bombes de bicicletes" + }, + "26": { + "then": "Es venen cadenats per a bicicletes" } }, "question": "Que ven aquesta màquina expenedora?", From ef6a20ccbc988bffaeb307f3bb2296046369f7e4 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 01:26:37 +0100 Subject: [PATCH 08/54] Fix merge conflict --- langs/layers/ca.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langs/layers/ca.json b/langs/layers/ca.json index f89d20f61..d2b03ad3c 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -9186,4 +9186,4 @@ "render": "Turbina eòlica" } } -} \ No newline at end of file +} From 88853bc0b3702fb477984b4967ef35d24507bb13 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 01:28:05 +0100 Subject: [PATCH 09/54] Fix merge conflict --- langs/layers/ca.json | 81 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/langs/layers/ca.json b/langs/layers/ca.json index d2b03ad3c..226515f9a 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -1967,6 +1967,30 @@ }, "17": { "then": "CSS Tipus 2 (mennekes)" + }, + "2": { + "then": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" + }, + "3": { + "then": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" + }, + "4": { + "then": "CHAdeMo" + }, + "5": { + "then": "CHAdeMo" + }, + "6": { + "then": "Tipus 1 amb cable" + }, + "7": { + "then": "Tipus 1 amb cable" + }, + "8": { + "then": "Tipus 1 sense cable" + }, + "9": { + "then": "Tipus 1 sense cable(J1772)" } } }, @@ -3901,6 +3925,21 @@ "3": { "then": "Aquesta és una botiga de kebabs" }, + "12": { + "then": "Aquí es serveixen plats indis" + }, + "13": { + "then": "Aquí es serveixen plats turcs" + }, + "14": { + "then": "Aquí es serveixen plats tailandesos" + }, + "2": { + "then": "Principalment serveix pasta" + }, + "3": { + "then": "Aquesta és una botiga de kebabs" + }, "4": { "then": "Això és una botiga d'entrepans" }, @@ -8773,6 +8812,27 @@ "26": { "question": "Venda de bombes de bicicletes" }, + "27": { + "question": "Venda de cadenat per a bicicletes" + }, + "3": { + "question": "Venda de menjar" + }, + "4": { + "question": "Venda de tabaco" + }, + "5": { + "question": "Venda de preservatius" + }, + "24": { + "question": "Venda de guants" + }, + "25": { + "question": "Venda de kits de reparació de bicicletes" + }, + "26": { + "question": "Venda de bombes de bicicletes" + }, "27": { "question": "Venda de cadenat per a bicicletes" } @@ -8893,6 +8953,27 @@ "25": { "then": "Es venen bombes de bicicletes" }, + "26": { + "then": "Es venen cadenats per a bicicletes" + }, + "3": { + "then": "Es ven tabaco" + }, + "4": { + "then": "Es venen preservatius" + }, + "5": { + "then": "Es ven cafè" + }, + "23": { + "then": "Es venen guants" + }, + "24": { + "then": "Es venen kits de reparació de bicicletes" + }, + "25": { + "then": "Es venen bombes de bicicletes" + }, "26": { "then": "Es venen cadenats per a bicicletes" } From a5575350574e2c83a1573e666594ff59617463fa Mon Sep 17 00:00:00 2001 From: Lasse Liehu Date: Fri, 5 Jan 2024 21:15:18 +0000 Subject: [PATCH 10/54] Translated using Weblate (Finnish) Currently translated at 30.1% (181 of 601 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/fi/ --- langs/fi.json | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/langs/fi.json b/langs/fi.json index 9b9e2be6e..dba5da190 100644 --- a/langs/fi.json +++ b/langs/fi.json @@ -22,13 +22,18 @@ "delete": "Poista", "explanations": { "hardDelete": "Tämä kohde poistetaan OpenStreetMapistä. Kokenut kartoittaja voi palauttaa sen.", + "retagNoOtherThemes": "Tämä kohde luokitellaan uudelleen ja piilotetaan tältä sovellukselta", + "retagOtherThemes": "Tämän kohteen ominaisuustietoja muutetaan, ja se ilmestyy näkyviin teemoissa {otherThemes}", "selectReason": "Valitse, miksi tämä kohde pitäisi poistaa", "softDelete": "Tämä kohde päivitetään ja piilotetaan tässä sovelluksessa. {reason}" }, "isDeleted": "Tämä kohde on poistettu", + "isntAPoint": "Vain pisteitä voi poistaa. Valittu kohde on viiva, alue tai relaatio.", + "loading": "Tutkitaan ominaisuuksista, voiko tämän kohteen poistaa.", "loginToDelete": "Kohteen poistamiseksi täytyy kirjautua", "notEnoughExperience": "Tämän kohteen loi joku muu.", "onlyEditedByLoggedInUser": "Tätä kohdetta ei ole muokannut kukaan muu kuin sinä, joten sen voi huoletta poistaa.", + "partOfOthers": "Tämä piste on osa viivaa tai relaatiota eikä sitä voi poistaa suoraan.", "readMessages": "Sinulle on lukemattomia viestejä. Lue ne ennen kuin poistat kohteen – joku on saattanut lähettää palautetta", "reasons": { "disused": "Tämä kohde on poistettu käytöstä tai poistettu", @@ -37,18 +42,23 @@ "test": "Tämä oli testikohde – kohdetta ei ollut ikinä olemassa" }, "safeDelete": "Tämä kohde voidaan turvallisesti poistaa.", + "useSomethingElse": "Poista se toisella OpenStreetMap-editorilla", "whyDelete": "Miksi tämä kohde pitäisi poistaa?" }, "favourite": { + "loginNeeded": "

Kirjaudu sisään

Oma asettelu on saatavilla vain OpenStreetMap-käyttäjille", + "panelIntro": "

Oma teema

Käytä suosikkitasojasi kaikista virallisista teemoista", "reload": "Lataa data uudelleen" }, "favouritePoi": { "button": { + "isFavourite": "Tämä paikka on merkitty suosikiksi ja näkyy kaikilla MapCompleten teemakartoilla, joita katselet.", "isMarkedShort": "Merkitty suosikkisijainniksi", "isNotMarkedShort": "Ei merkitty suosikiksi", "markAsFavouriteTitle": "Merkitse tämä paikka suosikkisijainniksi", - "markDescription": "Lisää tämä paikka henkilökohtaiselle suosikkilistalle", - "unmark": "Poista henkilökohtaiselta suosikkilistalta" + "markDescription": "Lisää tämä paikka omalle suosikkilistalle", + "unmark": "Poista omalta suosikkilistalta", + "unmarkNotDeleted": "Tätä pistettä ei poisteta ja se pysyy näkyvissä kartoilla sinulle ja muille" }, "downloadGeojson": "Lataa suosikkisi geojson-muodossa", "downloadGpx": "Lataa suosikkisi GPX-muodossa", @@ -59,14 +69,30 @@ "title": "Suosikkisijaintisi" }, "flyer": { + "aerial": "Tämä kartta käyttää eri taustaa, joka on ilmakuva taholta Agentschap Informatie Vlaanderen", "callToAction": "Kokeile sitä osoitteessa mapcomplete.org", + "cyclofix": "Pyöränpumput, korjausasemat, juomavesi ja pyöräkaupat ovat CycloFixissä", + "description": "Vaakasuuntainen A4-lentolehtinen MapCompleten mainostamiseen", "editing": { + "ex": "Alla on yksinkertainen esimerkki siitä, miltä tämä näyttää luonnonsuojelualueella.", + "intro": "Käyttäjää tervehtii kartta, jolla on kohteita. Kun kohde valitaan, sen tiedot näytetään.", "title": "Miltä käyttöliittymä näyttää?" }, "fakeui": { - "add_images": "Lisää kuvia muutamalla napsautuksella" + "add_images": "Lisää kuvia muutamalla napsautuksella", + "attributes": "Näyttää ominaisuudet ystävällisellä tavalla", + "edit": "Väärää tai vanhentunutta tietoa? Muokkauspainike on käden ulottuvilla.", + "question": "Jos ominaisuus ei ole vielä tiedossa, MapComplete esittää kysymyksen", + "wikipedia": "Linkitetyt Wikipedia-artikkelit näytetään" }, + "frontParagraph": "MapComplete on helppokäyttöinen verkkosovellus, jolla voi kerätä paikkatietoa OpenStreetMapiin. Sen avulla voi kerätä ja hallita olennaista tietoa avoimella, joukkoistetulla ja uudelleenkäytettävällä tavalla.\n\nUusia luokkia ja ominaisuuksia voi lisätä pyydettäessä.", + "lines_too": "Viivat ja monikulmiot näytetään myös. Lisäksi niiden ominaisuuksia ja kuvia voi muokata ja päivittää.", "mapcomplete": { + "li1": "Lisää uusia pisteitä ja päivitä nykyisten tietoja", + "li2": "Lisää yhteystietoja ja aukioloaikoja helposti", + "li3": "Voidaan lisätä muille verkkosivuille iFramen muodossa", + "li4": "Osa OpenStreetMap-ekosysteemiä, johon kuuluu paljon työkaluja", + "li5": "Mahdollisuus tuota olemassa olevia aineistoja", "title": "Mikä MapComplete on?" }, "tagline": "Kerää paikkatietoa OpenStreetMapillä", @@ -88,6 +114,9 @@ "editId": "Avaa OpenStreetMap-verkkoeditori tänne", "editJosm": "Muokkaa täällä JOSM:illa", "followOnMastodon": "Seuraa MapCompletea Mastodonissa", + "iconAttribution": { + "title": "Käytetyt kuvakkeet" + }, "josmOpened": "JOSM on avattu", "openIssueTracker": "Ilmoita ohjelmavirheestä", "openMapillary": "Avaa Mapillary tänne" @@ -211,6 +240,9 @@ "pickTheme": "Aloita valitsemalla teema alta.", "title": "Tervetuloa MapCompleteen" }, + "multi_apply": { + "autoApply": "Kun ominaisuuksia {attr_names} muutetaan, nämä ominaisuudet muuttuvat automaattisesti myös {count} muussa kohteessa" + }, "plantDetection": { "tryAgain": "Valitse eri laji" }, From 0c5f1a98aea522628e8dec4eb6f0be811693258d Mon Sep 17 00:00:00 2001 From: paunofu Date: Tue, 9 Jan 2024 10:18:59 +0000 Subject: [PATCH 11/54] Translated using Weblate (Catalan) Currently translated at 84.3% (507 of 601 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/ca/ --- langs/ca.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/langs/ca.json b/langs/ca.json index 160df95aa..a3ec84188 100644 --- a/langs/ca.json +++ b/langs/ca.json @@ -50,6 +50,13 @@ "panelIntro": "

La teva interfície personal

Activa les teves capes favorites de totes les interfícies oficials", "reload": "Recarregar dades" }, + "favouritePoi": { + "button": { + "isMarkedShort": "Marcat com a ubicació favorita", + "isNotMarkedShort": "No marcat com a favorit", + "markAsFavouriteTitle": "Marca aquesta ubicació com a preferida" + } + }, "flyer": { "aerial": "Aquest mapa utilitza un fons diferent, és a dir, imatges aèries de Agentschap Informatie Vlaanderen", "callToAction": "Prova'l a mapcomplete.org", @@ -124,7 +131,7 @@ "pleaseLogin": "Entra per afegir un nou element", "presetInfo": "El nou PDI tindrà les etiquetes {tags}", "stillLoading": "Les dades es segueixen carregant. Espera una mica abans d'afegir cap element.", - "title": "Vols afegir un element?", + "title": "Afegeix un element nou", "warnVisibleForEveryone": "La teva contribució serà vista per tothom", "wrongType": "Aquest element no és un punt o una via i no pot ser importat", "zoomInFurther": "Apropa per afegir un element.", @@ -166,7 +173,7 @@ "backgroundSwitch": "Canvia el fons", "cancel": "Cancel·lar", "confirm": "Confirmar", - "customThemeIntro": "

Peticions personalitzades

Aquestes són les peticions generades pels usuaris que has visitat abans.", + "customThemeIntro": "Aquestes són les peticions generades pels usuaris que has visitat abans.", "download": { "downloadAsPdf": "Baixar un PDF del mapa actual", "downloadAsPdfHelper": "Ideal per imprimir el mapa actual", @@ -186,7 +193,6 @@ "includeMetaData": "Incloure metadades (darrer editor, valors calculats, ...)", "licenseInfo": "

Avís de drets de còpia

Les dades proveïdes estan sota ODbL. Es poden reutilitzar de forma gratuïta, però
  • l'atribució a © Contribuïdors d'OpenStreetMap s'ha de mostrar
  • Qualsevol canvi s'ha de publicar sota la mateixa llicència
Llegeix sencer l'avís de drets de còpia per més detalls.", "noDataLoaded": "No s'han carregat dades. La baixada estarà disponible aviat", - "pdf": {}, "title": "Descarrega", "uploadGpx": "Pujar la teva traça a OpenStreetMap" }, @@ -342,6 +348,13 @@ }, "useSearch": "Utilitzeu la cerca de dalt per veure els valors predefinits", "useSearchForMore": "Utilitzeu la funció de cerca per cercar dins de {total} valors més…", + "visualFeedback": { + "directionsRelative": { + "left": "esquerra", + "right": "dreta" + }, + "fromGps": "{distance} {direction} de la seva ubicació" + }, "waitingForGeopermission": "Esperant al vostre permís per a utilitzar la geolocalització…", "waitingForLocation": "Buscant la vostra ubicació actual…", "weekdays": { @@ -620,6 +633,11 @@ "description": "un número", "feedback": "No és un nombre" }, + "id": { + "description": "un identificador", + "invalidCharacter": "Un identificador només pot contenir lletres, dígits i guions baixos", + "shouldBeLonger": "Un identificador ha de tenir almenys 3 caràcters" + }, "int": { "description": "un número sencer" }, @@ -644,6 +662,10 @@ "description": "un número sencer, positiu", "noZero": "No es permet el zero" }, + "slope": { + "inputExplanation": "Poseu el telèfon a terra amb la part superior del telèfon apuntant cap a la part superior del pendent.", + "inputIncorrect": "Per a les mesures correctes, assegureu-vos que la fletxa està dins de la zona verda." + }, "string": { "description": "un tros de text" }, From 68a54011815da42b8be0e6c0337b6cd662298195 Mon Sep 17 00:00:00 2001 From: paunofu Date: Tue, 9 Jan 2024 07:38:25 +0000 Subject: [PATCH 12/54] Translated using Weblate (Catalan) Currently translated at 93.7% (436 of 465 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/ca/ --- langs/themes/ca.json | 128 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/langs/themes/ca.json b/langs/themes/ca.json index a1e4b69d6..933eb133c 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -494,6 +494,10 @@ "question": "A quants altes nodes ciclistes enllaça aquest node?", "render": "Aquest node enllaça a {expected_rcn_route_relations} altres nodes ciclistes." }, + "node-rxn_ref": { + "question": "Quin és el número de referència d'aquest node ciclista?", + "render": "Aquest node ciclista té la referència número {rcn_ref}" + }, "node-survey:date": { "override": { "question": "Quan va ser sondejat aquest node ciclista per última vegada?", @@ -751,6 +755,18 @@ "layers": { "0": { "override": { + "filter+": { + "0": { + "options": { + "1": { + "question": "Només mostra freiduries que utilitzen oli vegetal" + }, + "2": { + "question": "Només mostra freiduries que utilitzen oli animal" + } + } + } + }, "name": "Botigues de patates" } } @@ -790,6 +806,9 @@ } } }, + "guideposts": { + "title": "Pal guia" + }, "hackerspaces": { "description": "En aquest mapa podeu veure els hackerspaces, afegir un nou hackerspace o actualitzar les dades directament", "shortDescription": "Un mapa dels hackerspaces", @@ -825,6 +844,10 @@ "description": "En aquest mapa trobareu hotels a la vostra zona", "title": "Hotels" }, + "icecream": { + "description": "Un mapa que mostra les gelateries i les màquines expenedores de gelats", + "title": "Gelat" + }, "indoors": { "description": "En aquest mapa es mostren els llocs interiors accessibles al públic", "title": "Interiors" @@ -845,6 +868,111 @@ }, "title": "Vorals i encreuaments" }, + "mapcomplete-changes": { + "description": "Aquest mapa mostra tots els canvis fets amb MapComplete", + "layers": { + "0": { + "description": "Mostra tots els canvis de MapComplete", + "filter": { + "0": { + "options": { + "0": { + "question": "El nom del tema conté {search}" + } + } + }, + "2": { + "options": { + "0": { + "question": "Fet pel col·laborador {search}" + } + } + }, + "3": { + "options": { + "0": { + "question": "No fet pel col·laborador {search}" + } + } + }, + "4": { + "options": { + "0": { + "question": "Fet abans de {search}" + } + } + }, + "5": { + "options": { + "0": { + "question": "Fet després de {search}" + } + } + }, + "6": { + "options": { + "0": { + "question": "Idioma de l'usuari (codi iso) {search}" + } + } + }, + "7": { + "options": { + "0": { + "question": "Fet amb l'amfitrió {search}" + } + } + }, + "8": { + "options": { + "0": { + "question": "El conjunt de canvis ha afegit almenys una imatge" + } + } + } + }, + "tagRenderings": { + "contributor": { + "question": "Quin col·laborador va fer aquest canvi?", + "render": "Canvi fet per {user}" + }, + "host": { + "question": "Amb quin amfitrió (lloc web) es va fer aquest canvi?", + "render": "Canviat amb {host}" + }, + "locale": { + "question": "Amb quina configuració regional (idioma) s'ha fet aquest canvi?", + "render": "La configuració regional de l'usuari és {locale}" + }, + "show_changeset_id": { + "render": "Conjunt de canvi {id}" + }, + "theme-id": { + "question": "Quin tema es va utilitzar per fer aquest canvi?", + "render": "Canvi amb el tema {theme}" + }, + "version": { + "question": "Quina versió de MapComplete es va utilitzar per fer aquest canvi?", + "render": "Fet amb {editor}" + } + }, + "title": { + "render": "Conjunt de canvis per a {theme}" + } + }, + "1": { + "override": { + "tagRenderings+": { + "0": { + "render": "Es pot trobar més estadística aquí" + } + } + } + } + }, + "shortDescription": "Mostra els canvis fets amb MapComplete", + "title": "Canvis fets amb MapComplete" + }, "maproulette": { "description": "Tema que mostra les tasques de MapRoulette, que us permet cercar-les, filtrar-les i solucionar-les.", "title": "Tasques de MapRoulette" From 52f918e27696e0949e0745cfa3df1aa8138c3f6a Mon Sep 17 00:00:00 2001 From: Lasse Liehu Date: Sun, 7 Jan 2024 22:45:12 +0000 Subject: [PATCH 13/54] Translated using Weblate (Finnish) Currently translated at 38.6% (232 of 601 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/fi/ --- langs/fi.json | 70 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 4 deletions(-) diff --git a/langs/fi.json b/langs/fi.json index dba5da190..1a8994fb7 100644 --- a/langs/fi.json +++ b/langs/fi.json @@ -78,38 +78,85 @@ "intro": "Käyttäjää tervehtii kartta, jolla on kohteita. Kun kohde valitaan, sen tiedot näytetään.", "title": "Miltä käyttöliittymä näyttää?" }, + "examples": "MapCompletessa on paljon teemakarttoja. Muutamia niistä näkyy tässä.\n\nVerkossa on vielä lisää teemakarttoja aiheista: terveydenhuolto, sisänavigointi, esteettömyydes pyörätuolilla, jätteenkäsittelylaitokset, julkiset kirjahyllyt, sateenkaaren väreissä olevat suojatiet, … Löydä ne kaikki mapcomplete.org-sivustolta", "fakeui": { "add_images": "Lisää kuvia muutamalla napsautuksella", "attributes": "Näyttää ominaisuudet ystävällisellä tavalla", "edit": "Väärää tai vanhentunutta tietoa? Muokkauspainike on käden ulottuvilla.", "question": "Jos ominaisuus ei ole vielä tiedossa, MapComplete esittää kysymyksen", + "see_images": "Näyttää kuvia aiemmilta tekijöiltä, Wikipediasta, Mapillarystä, …", "wikipedia": "Linkitetyt Wikipedia-artikkelit näytetään" }, "frontParagraph": "MapComplete on helppokäyttöinen verkkosovellus, jolla voi kerätä paikkatietoa OpenStreetMapiin. Sen avulla voi kerätä ja hallita olennaista tietoa avoimella, joukkoistetulla ja uudelleenkäytettävällä tavalla.\n\nUusia luokkia ja ominaisuuksia voi lisätä pyydettäessä.", "lines_too": "Viivat ja monikulmiot näytetään myös. Lisäksi niiden ominaisuuksia ja kuvia voi muokata ja päivittää.", "mapcomplete": { + "customize": "MapCompleten voi räätälöidä tarpeisiisi. Siihen voi lisätä uusia karttatasoja, uutta toiminnallisuutta tai sen voi tyylitellä käyttämään organisaatiosi väerjä ja fontteja.\nMeillä on myös kokemusta paikkatiedon joukkoistamiskampanjoiden aloittamisesta.\nPyydä tarjous ottamalla yhteyttä osoitteeseen pietervdvn@posteo.net.", + "intro": "MapComplete on sivusto, jolla on {mapCount} vuorovaikutteista karttaa. Jokaiselle kartalle voi lisätä ja päivittää tietoja. Siinä on paljon ominaisuuksia:", + "li0": "Näytä, missä on kiinnostavia paikkoja", "li1": "Lisää uusia pisteitä ja päivitä nykyisten tietoja", "li2": "Lisää yhteystietoja ja aukioloaikoja helposti", "li3": "Voidaan lisätä muille verkkosivuille iFramen muodossa", "li4": "Osa OpenStreetMap-ekosysteemiä, johon kuuluu paljon työkaluja", "li5": "Mahdollisuus tuota olemassa olevia aineistoja", + "li6": "Paljon kehittyneitä ominaisuuksia, kuten puiden tunnistus ja kehittyneet syöttömenetelmät", + "li7": "Avoimen lähdekoodin ohjelmisto (GPL-lisenssillä) ja ilmainen käyttää", "title": "Mikä MapComplete on?" }, + "onwheels": "Myös sisätilakartat pyörätuolillä liikkuville on käytettävissä.", + "osm": "OpenStreetMap on verkkokartta, jota voi muokata ja uudelleenkäyttää kuka tahansa mihin tahansa tarkoitukseen, kunhan lähde nimetään asianmukaisesti sekä data pidetään avoimena.\n\nSe on maailman suurin paikkatietokanta, ja sitä käytetään tuhansissa sovelluksissa ja verkkosivustoissa.", "tagline": "Kerää paikkatietoa OpenStreetMapillä", "title": "mapcomplete.org", + "toerisme_vlaanderen": "”Pin your point” -hanke tehtiin yhteistyössä Visit Flandersin kanssa. Yli 160 kartoittajaa lisäsi muutama tuhat penkkiä ja piknikpöytää sekä löysi 100 latausasemaa polkupyörille.", "whatIsOsm": "Mikä OpenStreetMap on?" }, "general": { "404": "Tätä sivua ei ole olemassa", + "about": "Muokkaa ja lisää tiettyyn teemaan liittyviä tietoja OpenStreetMapiin helposti", + "aboutMapComplete": { + "intro": "MapCompletea voi käyttää lisäämään tietoja OpenStreetMapiin yhdestä teemasta. Vastaa kysymyksiin, niin muutoksesi ovat käytettävissä kaikkialla minuuttien kuluessa. Useimmissa teemoissa voi lisätä kuvia tai jopa jättää arvostelun. Teeman ylläpitäjä määrittelee teeman kohteet, kysymykset ja kielet." + }, "add": { "addNew": "Lisää {category}", + "backToSelect": "Valitse toinen luokka", + "confirmButton": "Lisää {category}
Lisäyksesi näkyy kaikille
", "confirmLocation": "Vahvista tämä sijainti", "confirmTitle": "Lisätäänkö {title}?", - "title": "Lisää uusi kohde" + "confirmWarning": "Täällä luomasi kohde näkyy kaikille. Ole hyvä ja lisää kartalle vain kohteita, jotka ovat oikeasti olemassa. Monet sovellukset käyttävät tätä tietoa.", + "disableFilters": "Poista käytöstä kaikki suodattimet", + "disableFiltersExplanation": "Jotkin kohteet saattavat olla piilossa suodattimen takia", + "enableLayer": "Ota käyttöön taso {name}", + "hasBeenImported": "Tämä kohde on jo tuotu", + "import": { + "hasBeenImported": "Tämä kohde on tuotu", + "howToTest": "Testaa lisäämällä test=true tai backend=osm-test URL-osoitteeseen. Muutoskokoelma tulostetaan konsoliin. Ole hyvä ja avaa pull request, jotta tämä teema voidaan virallistaa ja tuontipainike ottaa käyttöön.", + "importTags": "Kohteelle kirjataan {tags}", + "officialThemesOnly": "Tuontipainike ei ole käytössä epävirallisille teemoille vahinkojen välttämiseksi", + "wrongType": "Tämä kohde ei ole piste eikä viiva eikä sitä voida tuoda", + "wrongTypeToConflate": "Tämä kohde ei ole piste eikä viiva eikä sitä voida yhdistää", + "zoomInMore": "Lähennä karttaa lisää, jotta tämän kohteen voi tuoda" + }, + "importTags": "Kohteelle kirjataan {tags}", + "intro": "Painoit kohtaa, jolle ei ole vielä tietoa.
", + "layerNotEnabled": "Taso {layer} ei ole käytössä. Ota taso käyttöön, jotta voit lisätä kohteen", + "openLayerControl": "Avaa tason hallintaikkuna", + "pleaseLogin": "Kirjaudu sisään, jotta voit lisätä uuden kohteen", + "presetInfo": "Uudelle pisteelle kirjataan {tags}", + "stillLoading": "Data latautuu vielä. Odota hetki ennen kuin lisäät uuden kohteen.", + "title": "Lisää uusi kohde", + "warnVisibleForEveryone": "Lisäyksesi näkyy kaikille", + "wrongType": "Tämä kohde ei ole piste eikä viiva eikä sitä voida tuoda", + "zoomInFurther": "Lähennä karttaa lisää, jotta kohteen voi lisätä.", + "zoomInMore": "Lähennä karttaa lisää, jotta voit tuoda tämän kohteen" + }, + "apply_button": { + "appliedOnAnotherObject": "Kohteelle {id} kirjataan {tags}", + "isApplied": "Muutokset otetaan käyttöön" }, "attribution": { "attributionBackgroundLayer": "Nykyinen taustataso on {name}", "attributionBackgroundLayerWithCopyright": "Nykyinen taustataso on {name}: {copyright}", + "attributionContent": "

Kaiken datan tarjoaa OpenStreetMap, vapaasti uudelleenkäytettävissä Open Database Licensen mukaisesti.

", + "attributionTitle": "Kiitokset", "donate": "Tue MapCompletea rahallisesti", "editId": "Avaa OpenStreetMap-verkkoeditori tänne", "editJosm": "Muokkaa täällä JOSM:illa", @@ -119,10 +166,12 @@ }, "josmOpened": "JOSM on avattu", "openIssueTracker": "Ilmoita ohjelmavirheestä", - "openMapillary": "Avaa Mapillary tänne" + "openMapillary": "Avaa Mapillary tänne", + "title": "Tekijänoikeudet ja alkuperä" }, "backToIndex": "Palaa kaikkien teemakarttojen yleiskuvaan", "backgroundMap": "Valitse taustataso", + "backgroundSwitch": "Vaihda taustaa", "cancel": "Peruuta", "download": { "title": "Lataa" @@ -153,18 +202,19 @@ "streetcomplete": "Toinen, samankaltainen sovellus on StreetComplete." }, "number": "numero", + "openStreetMapIntro": "", "openTheMap": "Avaa kartta", "openTheMapAtGeolocation": "Zoomaa sijaintiisi", "opening_hours": { "loadingCountry": "Määritetään maata…", "ph_closed": "suljettu", "ph_not_known": " ", - "ph_open": "avattu" + "ph_open": "auki" }, "pdf": { "attrBackground": "Taustataso: {background}" }, - "pickLanguage": "Valitse kieli: ", + "pickLanguage": "Valitse kieli", "questionBox": { "answeredMultiple": "Vastasit {answered} kysymykseen", "answeredOne": "Vastasit yhteen kysymykseen", @@ -226,9 +276,15 @@ }, "image": { "addPicture": "Lisää kuva", + "currentLicense": "Kuvasi julkaistaan lisenssillä {license}", "doDelete": "Poista kuva", "dontDelete": "Peruuta", "isDeleted": "Poistettu", + "nearby": { + "link": "Tämä kuva näyttää kohteen", + "seeNearby": "Selaa ja linkitä läheisiä kuvia", + "title": "Läheiset katukuvat" + }, "pleaseLogin": "Kirjaudu sisään, jotta voit lisätä kuvan", "respectPrivacy": "Älä valokuvaa ihmisiä tai rekisterikilpiä. Älä lähetä kuvia Google Mapsistä, Google Streetview’stä tai muista tekijänoikeuden alaisista lähteistä.", "uploadDone": "Kuvasi on lisätty. Kiitoksia avusta!", @@ -240,6 +296,12 @@ "pickTheme": "Aloita valitsemalla teema alta.", "title": "Tervetuloa MapCompleteen" }, + "move": { + "inviteToMove": { + "generic": "Siirrä tätä pistettä" + }, + "whyMove": "Miksi haluat siirtää tätä pistettä?" + }, "multi_apply": { "autoApply": "Kun ominaisuuksia {attr_names} muutetaan, nämä ominaisuudet muuttuvat automaattisesti myös {count} muussa kohteessa" }, From a25166a769db0831cbfca7e1020e586351d0d887 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 10 Jan 2024 01:10:48 +0100 Subject: [PATCH 14/54] Update translation files Updated by "Remove blank strings" hook in Weblate. Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/ --- langs/fi.json | 1 - 1 file changed, 1 deletion(-) diff --git a/langs/fi.json b/langs/fi.json index 1a8994fb7..5ae0f8515 100644 --- a/langs/fi.json +++ b/langs/fi.json @@ -202,7 +202,6 @@ "streetcomplete": "Toinen, samankaltainen sovellus on StreetComplete." }, "number": "numero", - "openStreetMapIntro": "", "openTheMap": "Avaa kartta", "openTheMapAtGeolocation": "Zoomaa sijaintiisi", "opening_hours": { From 4f2c8a1b6c1d3f2f36bfea2f9817ce2c40283335 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 01:32:02 +0100 Subject: [PATCH 15/54] Chore: sync translations --- assets/themes/cyclenodes/cyclenodes.json | 6 +- assets/themes/fritures/fritures.json | 6 +- assets/themes/guideposts/guideposts.json | 3 +- assets/themes/icecream/icecream.json | 6 +- .../mapcomplete-changes.json | 75 +++++++++++------ langs/layers/ca.json | 83 +------------------ 6 files changed, 65 insertions(+), 114 deletions(-) diff --git a/assets/themes/cyclenodes/cyclenodes.json b/assets/themes/cyclenodes/cyclenodes.json index 312a134a4..9e2d3ba35 100644 --- a/assets/themes/cyclenodes/cyclenodes.json +++ b/assets/themes/cyclenodes/cyclenodes.json @@ -214,7 +214,8 @@ "en": "What is the reference number of this cycling node?", "nl": "Wat is het referentienummer van dit fietsknooppunt?", "de": "Wie lautet die Nummer des Knotenpunkts im Fahrradknotenpunktnetzwerk?", - "cs": "Jaké je referenční číslo tohoto cyklistického uzlu?" + "cs": "Jaké je referenční číslo tohoto cyklistického uzlu?", + "ca": "Quin és el número de referència d'aquest node ciclista?" }, "freeform": { "key": "rcn_ref", @@ -230,7 +231,8 @@ "en": "This cycling node has reference number {rcn_ref}", "nl": "Dit fietsknooppunt heeft referentienummer {rcn_ref}", "de": "Knotenpunktnummer {rcn_ref} des Fahrradknotenpunktnetzwerks", - "cs": "Tento cyklistický uzel má referenční číslo {rcn_ref}" + "cs": "Tento cyklistický uzel má referenční číslo {rcn_ref}", + "ca": "Aquest node ciclista té la referència número {rcn_ref}" }, "condition": "rcn_ref~*" }, diff --git a/assets/themes/fritures/fritures.json b/assets/themes/fritures/fritures.json index b649fba64..7fe6e095a 100644 --- a/assets/themes/fritures/fritures.json +++ b/assets/themes/fritures/fritures.json @@ -70,14 +70,16 @@ { "question": { "en": "Only show fritures using vegetable oil", - "de": "Nur Friteusen mit Pflanzenöl anzeigen" + "de": "Nur Friteusen mit Pflanzenöl anzeigen", + "ca": "Només mostra freiduries que utilitzen oli vegetal" }, "osmTags": "friture:oil=vegetable" }, { "question": { "en": "Only show fritures using animal oil", - "de": "Nur Friteusen mit tierischem Öl anzeigen" + "de": "Nur Friteusen mit tierischem Öl anzeigen", + "ca": "Només mostra freiduries que utilitzen oli animal" }, "osmTags": "friture:oil=animal" } diff --git a/assets/themes/guideposts/guideposts.json b/assets/themes/guideposts/guideposts.json index 61ba49312..125060a8e 100644 --- a/assets/themes/guideposts/guideposts.json +++ b/assets/themes/guideposts/guideposts.json @@ -5,7 +5,8 @@ "cs": "Rozcestníky", "de": "Wegweiser", "es": "Poste guía", - "pl": "Drogowskazy" + "pl": "Drogowskazy", + "ca": "Pal guia" }, "description": { "en": "Guideposts (also known as fingerposts or finger posts) are often found along official hiking, cycling, skiing or horseback riding routes to indicate the directions to different destinations. Additionally, they are often named after a region or place and show the altitude.\n\nThe position of a signpost can be used by a hiker/biker/rider/skier as a confirmation of the current position, especially if they use a printed map without a GPS receiver. ", diff --git a/assets/themes/icecream/icecream.json b/assets/themes/icecream/icecream.json index 33a9e8093..cea2d3476 100644 --- a/assets/themes/icecream/icecream.json +++ b/assets/themes/icecream/icecream.json @@ -3,12 +3,14 @@ "title": { "en": "Icecream", "de": "Eiscreme", - "cs": "Zmrzlina" + "cs": "Zmrzlina", + "ca": "Gelat" }, "description": { "en": "A map showing ice cream parlors and ice cream vending machines", "de": "Eine Karte, die Eisdielen und Eisautomaten zeigt", - "cs": "Mapa zobrazující prodej zmrzliny a automaty na zmrzlinu" + "cs": "Mapa zobrazující prodej zmrzliny a automaty na zmrzlinu", + "ca": "Un mapa que mostra les gelateries i les màquines expenedores de gelats" }, "icon": "./assets/layers/ice_cream/ice_cream.svg", "layers": [ diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index 5c67882b0..09444a1fa 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -2,15 +2,18 @@ "id": "mapcomplete-changes", "title": { "en": "Changes made with MapComplete", - "de": "Mit MapComplete vorgenommene Änderungen" + "de": "Mit MapComplete vorgenommene Änderungen", + "ca": "Canvis fets amb MapComplete" }, "shortDescription": { "en": "Shows changes made by MapComplete", - "de": "Zeigt die von MapComplete vorgenommenen Änderungen an" + "de": "Zeigt die von MapComplete vorgenommenen Änderungen an", + "ca": "Mostra els canvis fets amb MapComplete" }, "description": { "en": "This maps shows all the changes made with MapComplete", - "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen" + "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", + "ca": "Aquest mapa mostra tots els canvis fets amb MapComplete" }, "icon": "./assets/svg/logo.svg", "hideFromOverview": true, @@ -36,47 +39,54 @@ "title": { "render": { "en": "Changeset for {theme}", - "de": "Änderungssatz für {theme}" + "de": "Änderungssatz für {theme}", + "ca": "Conjunt de canvis per a {theme}" } }, "description": { "en": "Shows all MapComplete changes", - "de": "Zeigt alle MapComplete-Änderungen" + "de": "Zeigt alle MapComplete-Änderungen", + "ca": "Mostra tots els canvis de MapComplete" }, "tagRenderings": [ { "id": "show_changeset_id", "render": { "en": "Changeset {id}", - "de": "Änderungssatz {id}" + "de": "Änderungssatz {id}", + "ca": "Conjunt de canvi {id}" } }, { "id": "contributor", "question": { "en": "What contributor did make this change?", - "de": "Wer hat diese Änderung vorgenommen?" + "de": "Wer hat diese Änderung vorgenommen?", + "ca": "Quin col·laborador va fer aquest canvi?" }, "freeform": { "key": "user" }, "render": { "en": "Change made by {user}", - "de": "Änderung von {user}" + "de": "Änderung von {user}", + "ca": "Canvi fet per {user}" } }, { "id": "theme-id", "question": { "en": "What theme was used to make this change?", - "de": "Welches Theme wurde für diese Änderung verwendet?" + "de": "Welches Theme wurde für diese Änderung verwendet?", + "ca": "Quin tema es va utilitzar per fer aquest canvi?" }, "freeform": { "key": "theme" }, "render": { "en": "Change with theme {theme}", - "de": "Geändert mit Thema {theme}" + "de": "Geändert mit Thema {theme}", + "ca": "Canvi amb el tema {theme}" } }, { @@ -86,22 +96,26 @@ }, "question": { "en": "What locale (language) was this change made in?", - "de": "In welcher Benutzersprache wurde diese Änderung vorgenommen?" + "de": "In welcher Benutzersprache wurde diese Änderung vorgenommen?", + "ca": "Amb quina configuració regional (idioma) s'ha fet aquest canvi?" }, "render": { "en": "User locale is {locale}", - "de": "Benutzersprache {locale}" + "de": "Benutzersprache {locale}", + "ca": "La configuració regional de l'usuari és {locale}" } }, { "id": "host", "render": { "en": "Change with with {host}", - "de": "Geändert über {host}" + "de": "Geändert über {host}", + "ca": "Canviat amb {host}" }, "question": { "en": "What host (website) was this change made with?", - "de": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?" + "de": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?", + "ca": "Amb quin amfitrió (lloc web) es va fer aquest canvi?" }, "freeform": { "key": "host" @@ -123,11 +137,13 @@ "id": "version", "question": { "en": "What version of MapComplete was used to make this change?", - "de": "Welche Version von MapComplete wurde verwendet, um diese Änderung vorzunehmen?" + "de": "Welche Version von MapComplete wurde verwendet, um diese Änderung vorzunehmen?", + "ca": "Quina versió de MapComplete es va utilitzar per fer aquest canvi?" }, "render": { "en": "Made with {editor}", - "de": "Erstellt mit {editor}" + "de": "Erstellt mit {editor}", + "ca": "Fet amb {editor}" }, "freeform": { "key": "editor" @@ -478,7 +494,8 @@ ], "question": { "en": "Themename contains {search}", - "de": "Themename enthält {search}" + "de": "Themename enthält {search}", + "ca": "El nom del tema conté {search}" } } ] @@ -512,7 +529,8 @@ ], "question": { "en": "Made by contributor {search}", - "de": "Der Name enthält nicht {search}" + "de": "Der Name enthält nicht {search}", + "ca": "Fet pel col·laborador {search}" } } ] @@ -529,7 +547,8 @@ ], "question": { "en": "Not made by contributor {search}", - "de": "Nicht erstellt von {search}" + "de": "Nicht erstellt von {search}", + "ca": "No fet pel col·laborador {search}" } } ] @@ -547,7 +566,8 @@ ], "question": { "en": "Made before {search}", - "de": "Erstellt vor {search}" + "de": "Erstellt vor {search}", + "ca": "Fet abans de {search}" } } ] @@ -565,7 +585,8 @@ ], "question": { "en": "Made after {search}", - "de": "Erstellt nach {search}" + "de": "Erstellt nach {search}", + "ca": "Fet després de {search}" } } ] @@ -582,7 +603,8 @@ ], "question": { "en": "User language (iso-code) {search}", - "de": "Benutzersprache (ISO-Code) {search}" + "de": "Benutzersprache (ISO-Code) {search}", + "ca": "Idioma de l'usuari (codi iso) {search}" } } ] @@ -599,7 +621,8 @@ ], "question": { "en": "Made with host {search}", - "de": "Erstellt mit Host {search}" + "de": "Erstellt mit Host {search}", + "ca": "Fet amb l'amfitrió {search}" } } ] @@ -611,7 +634,8 @@ "osmTags": "add-image>0", "question": { "en": "Changeset added at least one image", - "de": "Änderungssatz hat mindestens ein Bild hinzugefügt" + "de": "Änderungssatz hat mindestens ein Bild hinzugefügt", + "ca": "El conjunt de canvis ha afegit almenys una imatge" } } ] @@ -651,7 +675,8 @@ "id": "link_to_more", "render": { "en": "More statistics can be found here", - "de": "Mehr Statistiken gibt es hier" + "de": "Mehr Statistiken gibt es hier", + "ca": "Es pot trobar més estadística aquí" } }, { diff --git a/langs/layers/ca.json b/langs/layers/ca.json index 226515f9a..f89d20f61 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -1967,30 +1967,6 @@ }, "17": { "then": "CSS Tipus 2 (mennekes)" - }, - "2": { - "then": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" - }, - "3": { - "then": "Endoll de paret Europeu amb pin a terra (CEE7/4 tipus E)" - }, - "4": { - "then": "CHAdeMo" - }, - "5": { - "then": "CHAdeMo" - }, - "6": { - "then": "Tipus 1 amb cable" - }, - "7": { - "then": "Tipus 1 amb cable" - }, - "8": { - "then": "Tipus 1 sense cable" - }, - "9": { - "then": "Tipus 1 sense cable(J1772)" } } }, @@ -3925,21 +3901,6 @@ "3": { "then": "Aquesta és una botiga de kebabs" }, - "12": { - "then": "Aquí es serveixen plats indis" - }, - "13": { - "then": "Aquí es serveixen plats turcs" - }, - "14": { - "then": "Aquí es serveixen plats tailandesos" - }, - "2": { - "then": "Principalment serveix pasta" - }, - "3": { - "then": "Aquesta és una botiga de kebabs" - }, "4": { "then": "Això és una botiga d'entrepans" }, @@ -8812,27 +8773,6 @@ "26": { "question": "Venda de bombes de bicicletes" }, - "27": { - "question": "Venda de cadenat per a bicicletes" - }, - "3": { - "question": "Venda de menjar" - }, - "4": { - "question": "Venda de tabaco" - }, - "5": { - "question": "Venda de preservatius" - }, - "24": { - "question": "Venda de guants" - }, - "25": { - "question": "Venda de kits de reparació de bicicletes" - }, - "26": { - "question": "Venda de bombes de bicicletes" - }, "27": { "question": "Venda de cadenat per a bicicletes" } @@ -8953,27 +8893,6 @@ "25": { "then": "Es venen bombes de bicicletes" }, - "26": { - "then": "Es venen cadenats per a bicicletes" - }, - "3": { - "then": "Es ven tabaco" - }, - "4": { - "then": "Es venen preservatius" - }, - "5": { - "then": "Es ven cafè" - }, - "23": { - "then": "Es venen guants" - }, - "24": { - "then": "Es venen kits de reparació de bicicletes" - }, - "25": { - "then": "Es venen bombes de bicicletes" - }, "26": { "then": "Es venen cadenats per a bicicletes" } @@ -9267,4 +9186,4 @@ "render": "Turbina eòlica" } } -} +} \ No newline at end of file From 77fc8c81d8fd7b314dda61869c434bb0be628b59 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 00:44:00 +0000 Subject: [PATCH 16/54] Translated using Weblate (Dutch) Currently translated at 86.9% (2768 of 3182 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/nl/ --- langs/layers/nl.json | 603 ++++++++++++++++++++++++------------------- 1 file changed, 335 insertions(+), 268 deletions(-) diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 2be3d0cfa..c7045b56b 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -27,6 +27,9 @@ "advertising": { "name": "Reclame", "presets": { + "12": { + "title": "een muurschildering" + }, "3": { "description": "Een klein uithangbord voor buurtadvertenties, meestal gericht op voetgangers", "title": "een uithangbord" @@ -47,9 +50,6 @@ "8": { "description": "Een stuk groot, weerbestendig textiel met opgedrukte reclameboodschap die permanent aan de muur hangt", "title": "een spandoek" - }, - "12": { - "title": "een muurschildering" } }, "tagRenderings": { @@ -107,6 +107,9 @@ }, "title": { "mappings": { + "10": { + "then": "Muurschildering" + }, "3": { "then": "Aanplakzuil" }, @@ -124,9 +127,6 @@ }, "9": { "then": "Aanplakzuil" - }, - "10": { - "then": "Muurschildering" } } } @@ -208,6 +208,15 @@ "1": { "then": "Muurschildering" }, + "10": { + "then": "Azulejo (Spaanse siertegels)" + }, + "11": { + "then": "Tegelwerk" + }, + "12": { + "then": "Houtsculptuur" + }, "2": { "then": "Schilderij" }, @@ -231,15 +240,6 @@ }, "9": { "then": "Reliëf" - }, - "10": { - "then": "Azulejo (Spaanse siertegels)" - }, - "11": { - "then": "Tegelwerk" - }, - "12": { - "then": "Houtsculptuur" } }, "question": "Wat voor soort kunstwerk is dit?", @@ -1791,6 +1791,27 @@ "1": { "question": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" }, + "10": { + "question": "Heeft een
Type 2 met kabel (J1772)
" + }, + "11": { + "question": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "12": { + "question": "Heeft een
Tesla Supercharger (destination)
" + }, + "13": { + "question": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "14": { + "question": "Heeft een
USB om GSMs en kleine electronica op te laden
" + }, + "15": { + "question": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "16": { + "question": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" + }, "2": { "question": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" }, @@ -1814,27 +1835,6 @@ }, "9": { "question": "Heeft een
Type 2 CCS (mennekes)
" - }, - "10": { - "question": "Heeft een
Type 2 met kabel (J1772)
" - }, - "11": { - "question": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "12": { - "question": "Heeft een
Tesla Supercharger (destination)
" - }, - "13": { - "question": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "14": { - "question": "Heeft een
USB om GSMs en kleine electronica op te laden
" - }, - "15": { - "question": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "16": { - "question": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" } } } @@ -1890,30 +1890,6 @@ "1": { "then": "Schuko stekker zonder aardingspin (CEE7/4 type F)" }, - "2": { - "then": "Europese stekker met aardingspin (CEE7/4 type E)" - }, - "3": { - "then": "Europese stekker met aardingspin (CEE7/4 type E)" - }, - "4": { - "then": "Chademo" - }, - "5": { - "then": "Chademo" - }, - "6": { - "then": "Type 1 met kabel (J1772)" - }, - "7": { - "then": "Type 1 met kabel (J1772)" - }, - "8": { - "then": "Type 1 zonder kabel (J1772)" - }, - "9": { - "then": "Type 1 zonder kabel (J1772)" - }, "10": { "then": "Type 1 CCS (ook gekend als Type 1 Combo)" }, @@ -1944,6 +1920,9 @@ "19": { "then": "Type 2 met kabel (J1772)" }, + "2": { + "then": "Europese stekker met aardingspin (CEE7/4 type E)" + }, "20": { "then": "Tesla Supercharger CCS (een type2 CCS met Tesla-logo)" }, @@ -1974,11 +1953,32 @@ "29": { "then": "Bosch Active Connect met 3 pinnen aan een kabel" }, + "3": { + "then": "Europese stekker met aardingspin (CEE7/4 type E)" + }, "30": { "then": "Bosch Active Connect met 5 pinnen aan een kabel" }, "31": { "then": "Bosch Active Connect met 5 pinnen aan een kabel" + }, + "4": { + "then": "Chademo" + }, + "5": { + "then": "Chademo" + }, + "6": { + "then": "Type 1 met kabel (J1772)" + }, + "7": { + "then": "Type 1 met kabel (J1772)" + }, + "8": { + "then": "Type 1 zonder kabel (J1772)" + }, + "9": { + "then": "Type 1 zonder kabel (J1772)" } }, "question": "Welke aansluitingen zijn hier beschikbaar?" @@ -2172,6 +2172,24 @@ "1": { "2": "Europese stekker met aardingspin (CEE7/4 type E)" }, + "10": { + "2": "Tesla Supercharger CCS (een type2 CCS met Tesla-logo)" + }, + "11": { + "2": "Tesla Supercharger (destination)" + }, + "12": { + "2": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)" + }, + "13": { + "2": "USB om GSMs en kleine electronica op te laden" + }, + "14": { + "2": "Bosch Active Connect met 3 pinnen aan een kabel" + }, + "15": { + "2": "Bosch Active Connect met 5 pinnen aan een kabel" + }, "2": { "2": "Chademo" }, @@ -2195,24 +2213,6 @@ }, "9": { "2": "Type 2 met kabel (J1772)" - }, - "10": { - "2": "Tesla Supercharger CCS (een type2 CCS met Tesla-logo)" - }, - "11": { - "2": "Tesla Supercharger (destination)" - }, - "12": { - "2": "Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)" - }, - "13": { - "2": "USB om GSMs en kleine electronica op te laden" - }, - "14": { - "2": "Bosch Active Connect met 3 pinnen aan een kabel" - }, - "15": { - "2": "Bosch Active Connect met 5 pinnen aan een kabel" } } } @@ -2978,6 +2978,15 @@ "1": { "then": "Dit fietspad is geplaveid" }, + "10": { + "then": "Dit fietspad is gemaakt van fijn grind" + }, + "11": { + "then": "Dit fietspad is gemaakt van kiezelsteentjes" + }, + "12": { + "then": "Dit fietspad is gemaakt van aarde" + }, "2": { "then": "Dit fietspad is gemaakt van asfalt" }, @@ -3001,15 +3010,6 @@ }, "9": { "then": "Dit fietspad is gemaakt van grind" - }, - "10": { - "then": "Dit fietspad is gemaakt van fijn grind" - }, - "11": { - "then": "Dit fietspad is gemaakt van kiezelsteentjes" - }, - "12": { - "then": "Dit fietspad is gemaakt van aarde" } }, "question": "Waaruit is het oppervlak van het fietspad van gemaakt?", @@ -3058,6 +3058,15 @@ "1": { "then": "Dit fietspad is geplaveid" }, + "10": { + "then": "Dit fietspad is gemaakt van fijn grind" + }, + "11": { + "then": "Dit fietspad is gemaakt van kiezelsteentjes" + }, + "12": { + "then": "Dit fietspad is gemaakt van aarde" + }, "2": { "then": "Dit fietspad is gemaakt van asfalt" }, @@ -3081,15 +3090,6 @@ }, "9": { "then": "Dit fietspad is gemaakt van grind" - }, - "10": { - "then": "Dit fietspad is gemaakt van fijn grind" - }, - "11": { - "then": "Dit fietspad is gemaakt van kiezelsteentjes" - }, - "12": { - "then": "Dit fietspad is gemaakt van aarde" } }, "question": "Waaruit is het oppervlak van de straat gemaakt?", @@ -4138,6 +4138,21 @@ "1": { "then": "Dit is een frituur" }, + "10": { + "then": "Dit is een Chinees restaurant" + }, + "11": { + "then": "Dit is een Grieks restaurant" + }, + "12": { + "then": "Dit is een Indisch restaurant" + }, + "13": { + "then": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)" + }, + "14": { + "then": "Dit is een Thaïs restaurant" + }, "2": { "then": "Dit is een pastazaak" }, @@ -4161,21 +4176,6 @@ }, "9": { "then": "Dit is een Frans restaurant" - }, - "10": { - "then": "Dit is een Chinees restaurant" - }, - "11": { - "then": "Dit is een Grieks restaurant" - }, - "12": { - "then": "Dit is een Indisch restaurant" - }, - "13": { - "then": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)" - }, - "14": { - "then": "Dit is een Thaïs restaurant" } }, "question": "Welk soort gerechten worden hier geserveerd?", @@ -4516,6 +4516,30 @@ "2": { "1": "een CNC-boormachine", "2": "CNC-boormachine" + }, + "3": { + "1": "een multimedia-studio", + "2": "multimedia-studio" + }, + "4": { + "1": "een naaimachine", + "2": "naaimachine" + }, + "5": { + "1": "een houtbewerkingsatelier", + "2": "houtbewerkingsatelier" + }, + "6": { + "1": "een keramiekatelier", + "2": "keramiekatelier" + }, + "7": { + "1": "een metaalatelier", + "2": "metaalatelier" + }, + "8": { + "1": "een fietsherstelplaats", + "2": "fietsherstelplaats" } } } @@ -5322,6 +5346,19 @@ } } }, + "10": { + "options": { + "0": { + "question": "Alle Notes" + }, + "1": { + "question": "Verberg import Notes" + }, + "2": { + "question": "Toon enkel import Notes" + } + } + }, "2": { "options": { "0": { @@ -5377,19 +5414,6 @@ "question": "Toon enkel open Notes" } } - }, - "10": { - "options": { - "0": { - "question": "Alle Notes" - }, - "1": { - "question": "Verberg import Notes" - }, - "2": { - "question": "Toon enkel import Notes" - } - } } }, "name": "OpenStreetMap Notes", @@ -5681,6 +5705,21 @@ "1": { "then": "Dit is een normale parkeerplek." }, + "10": { + "then": "Deze parkeerplek is gereserveerd voor ouders met kinderen." + }, + "11": { + "then": "Deze parkeerplek is gereserveerd voor personeel." + }, + "12": { + "then": "Deze parkeerplek is gereserveerd voor taxis." + }, + "13": { + "then": "Deze parkeerplek is gereserveerd voor voertuigen met een aanhanger." + }, + "14": { + "then": "Deze parkeerplek is gereserveerd voor autodelen." + }, "2": { "then": "Dit is een gehandicaptenparkeerplaats." }, @@ -5704,21 +5743,6 @@ }, "9": { "then": "Deze parkeerplek is gereserveerd voor motoren." - }, - "10": { - "then": "Deze parkeerplek is gereserveerd voor ouders met kinderen." - }, - "11": { - "then": "Deze parkeerplek is gereserveerd voor personeel." - }, - "12": { - "then": "Deze parkeerplek is gereserveerd voor taxis." - }, - "13": { - "then": "Deze parkeerplek is gereserveerd voor voertuigen met een aanhanger." - }, - "14": { - "then": "Deze parkeerplek is gereserveerd voor autodelen." } }, "question": "Wat voor parkeerplek is dit?" @@ -6285,6 +6309,21 @@ "1": { "then": "Munten van 2 cent worden geaccepteerd" }, + "10": { + "then": "Munten van 20 rappen worden geaccepteerd" + }, + "11": { + "then": "Munten van ½ frank worden geaccepteerd" + }, + "12": { + "then": "Munten van 1 frank worden geaccepteerd" + }, + "13": { + "then": "Munten van 2 frank worden geaccepteerd" + }, + "14": { + "then": "Munten van 5 frank worden geaccepteerd" + }, "2": { "then": "Munten van 5 cent worden geaccepteerd" }, @@ -6308,21 +6347,6 @@ }, "9": { "then": "Munten van 10 rappen worden geaccepteerd" - }, - "10": { - "then": "Munten van 20 rappen worden geaccepteerd" - }, - "11": { - "then": "Munten van ½ frank worden geaccepteerd" - }, - "12": { - "then": "Munten van 1 frank worden geaccepteerd" - }, - "13": { - "then": "Munten van 2 frank worden geaccepteerd" - }, - "14": { - "then": "Munten van 5 frank worden geaccepteerd" } }, "question": "Met welke munten kan je hier betalen?" @@ -6335,6 +6359,15 @@ "1": { "then": "Biljetten van 10 euro worden geaccepteerd" }, + "10": { + "then": "Biljetten van 100 frank worden geaccepteerd" + }, + "11": { + "then": "Biljetten van 200 frank worden geaccepteerd" + }, + "12": { + "then": "Biljetten van 1000 frank worden geaccepteerd" + }, "2": { "then": "Biljetten van 20 euro worden geaccepteerd" }, @@ -6358,15 +6391,6 @@ }, "9": { "then": "Biljetten van 50 frank worden geaccepteerd" - }, - "10": { - "then": "Biljetten van 100 frank worden geaccepteerd" - }, - "11": { - "then": "Biljetten van 200 frank worden geaccepteerd" - }, - "12": { - "then": "Biljetten van 1000 frank worden geaccepteerd" } }, "question": "Met welke bankbiljetten kan je hier betalen?" @@ -6685,30 +6709,6 @@ "1": { "question": "Recycling van batterijen" }, - "2": { - "question": "Recycling van drankpakken" - }, - "3": { - "question": "Recycling van blikken" - }, - "4": { - "question": "Recycling van kleding" - }, - "5": { - "question": "Recycling van frituurvet" - }, - "6": { - "question": "Recycling van motorolie" - }, - "7": { - "question": "Recycling van tl-buizen" - }, - "8": { - "question": "Recycling van groen afval" - }, - "9": { - "question": "Recycling van glazen flessen" - }, "10": { "question": "Recycling van glas" }, @@ -6739,11 +6739,35 @@ "19": { "question": "Recycling van restafval" }, + "2": { + "question": "Recycling van drankpakken" + }, "20": { "question": "Recycling van inktpatronen" }, "21": { "question": "Recycling van fietsen" + }, + "3": { + "question": "Recycling van blikken" + }, + "4": { + "question": "Recycling van kleding" + }, + "5": { + "question": "Recycling van frituurvet" + }, + "6": { + "question": "Recycling van motorolie" + }, + "7": { + "question": "Recycling van tl-buizen" + }, + "8": { + "question": "Recycling van groen afval" + }, + "9": { + "question": "Recycling van glazen flessen" } } }, @@ -6811,30 +6835,6 @@ "1": { "then": "Drankpakken kunnen hier gerecycled worden" }, - "2": { - "then": "Blikken kunnen hier gerecycled worden" - }, - "3": { - "then": "Kleren kunnen hier gerecycled worden" - }, - "4": { - "then": "Frituurvet kan hier gerecycled worden" - }, - "5": { - "then": "Motorolie kan hier gerecycled worden" - }, - "6": { - "then": "TL-buizen kunnen hier gerecycled worden" - }, - "7": { - "then": "Groen afval kan hier gerecycled worden" - }, - "8": { - "then": "Organisch afval kan hier gerecycled worden" - }, - "9": { - "then": "Glazen flessen kunnen hier gerecycled worden" - }, "10": { "then": "Glas kan hier gerecycled worden" }, @@ -6865,6 +6865,9 @@ "19": { "then": "Schoenen kunnen hier gerecycled worden" }, + "2": { + "then": "Blikken kunnen hier gerecycled worden" + }, "20": { "then": "Kleine elektrische apparaten kunnen hier gerecycled worden" }, @@ -6879,6 +6882,27 @@ }, "24": { "then": "Fietsen (en fietswrakken) kunnen hier gerecycled worden" + }, + "3": { + "then": "Kleren kunnen hier gerecycled worden" + }, + "4": { + "then": "Frituurvet kan hier gerecycled worden" + }, + "5": { + "then": "Motorolie kan hier gerecycled worden" + }, + "6": { + "then": "TL-buizen kunnen hier gerecycled worden" + }, + "7": { + "then": "Groen afval kan hier gerecycled worden" + }, + "8": { + "then": "Organisch afval kan hier gerecycled worden" + }, + "9": { + "then": "Glazen flessen kunnen hier gerecycled worden" } }, "question": "Wat kan hier gerecycled worden?" @@ -7600,6 +7624,12 @@ "1": { "then": "Deze lantaarn gebruikt LEDs" }, + "10": { + "then": "Deze lantaarn gebruikt hogedruknatriumlampen (oranje met wit)" + }, + "11": { + "then": "Deze lantaarn wordt verlicht met gas" + }, "2": { "then": "Deze lantaarn gebruikt gloeilampen" }, @@ -7623,12 +7653,6 @@ }, "9": { "then": "Deze lantaarn gebruikt lagedruknatriumlampen (monochroom oranje)" - }, - "10": { - "then": "Deze lantaarn gebruikt hogedruknatriumlampen (oranje met wit)" - }, - "11": { - "then": "Deze lantaarn wordt verlicht met gas" } }, "question": "Wat voor verlichting gebruikt deze lantaarn?" @@ -8541,6 +8565,20 @@ "usersettings": { "description": "Een speciale lag die niet getoond wordt op de kaart, maar die de instellingen van de gebruiker weergeeft", "tagRenderings": { + "a11y-features": { + "mappings": { + "0": { + "then": "Schakel toegankelijkheidsmode aan wanneer op de pijltjestoetsen wordt geduwd om de kaart te bewegen" + }, + "1": { + "then": "Schakel de toegankelijkheidsmode altijd aan" + }, + "2": { + "then": "Gebruik geen toegankelijkheidsmode" + } + }, + "question": "Wanneer moet de toegankelijkheidsmode ingeschakeld worden?" + }, "all-questions-at-once": { "mappings": { "0": { @@ -8596,8 +8634,12 @@ "mappings": { "0": { "then": "Sta kaartrotatie toe" + }, + "1": { + "then": "Hou het noorden altijd naar boven" } - } + }, + "question": "Moet het noorden altijd naar boven getoond worden?" }, "inbox": { "mappings": { @@ -8607,12 +8649,29 @@ "text": "Ga naar je inbox" } } + }, + "1": { + "then": { + "special": { + "text": "Je hebt {_unreadMessages} ongelezen berichten
Ga naar je inbox" + } + } + } + } + }, + "language_picker": { + "mappings": { + "0": { + "then": "De taal werd ingesteld via een URL-parameter en kan niet manueel ingesteld worden." } } }, "mangrove-keys": { "render": { - "after": "Iedereen die dit bestand bezit, kan met jouw identiteit wijzigingen maken" + "after": "Iedereen die dit bestand bezit, kan met jouw identiteit wijzigingen maken", + "special": { + "text": "Download de private sleutel van je Mangrove-account" + } } }, "picture-license": { @@ -8632,7 +8691,15 @@ }, "question": "Met welke licentie wil je je afbeeldingen toevoegen?" }, + "settings-link": { + "render": { + "special": { + "text": "Open je instellingen op OpenStreetMap.org" + } + } + }, "show_crosshair": { + "question": "Moet er een kruisje getoond worden in het centrum van je display?", "questionHint": "Dit kan helpen om nieuwe elementen accuraat te plaatsen" }, "show_debug": { @@ -8729,30 +8796,6 @@ "1": { "question": "Verkoop van dranken" }, - "2": { - "question": "Verkoop van snoep" - }, - "3": { - "question": "Verkoop van eten" - }, - "4": { - "question": "Verkoop van sigaretten" - }, - "5": { - "question": "Verkoop van condooms" - }, - "6": { - "question": "Verkoop van koffie" - }, - "7": { - "question": "Verkoop van water" - }, - "8": { - "question": "Verkoop van kranten" - }, - "9": { - "question": "Verkoop van fietsbinnenbanden" - }, "10": { "question": "Verkoop van melk" }, @@ -8783,6 +8826,9 @@ "19": { "question": "Verkoop van bloemen" }, + "2": { + "question": "Verkoop van snoep" + }, "23": { "question": "Verkoop van fietslampjes" }, @@ -8797,6 +8843,27 @@ }, "27": { "question": "Verkoop van fietssloten" + }, + "3": { + "question": "Verkoop van eten" + }, + "4": { + "question": "Verkoop van sigaretten" + }, + "5": { + "question": "Verkoop van condooms" + }, + "6": { + "question": "Verkoop van koffie" + }, + "7": { + "question": "Verkoop van water" + }, + "8": { + "question": "Verkoop van kranten" + }, + "9": { + "question": "Verkoop van fietsbinnenbanden" } } } @@ -8837,30 +8904,6 @@ "1": { "then": "Snoep wordt verkocht" }, - "2": { - "then": "Eten wordt verkocht" - }, - "3": { - "then": "Sigaretten worden verkocht" - }, - "4": { - "then": "Condooms worden verkocht" - }, - "5": { - "then": "Koffie wordt verkocht" - }, - "6": { - "then": "Drinkwater wordt verkocht" - }, - "7": { - "then": "Kranten worden verkocht" - }, - "8": { - "then": "Binnenbanden voor fietsen worden verkocht" - }, - "9": { - "then": "Melk wordt verkocht" - }, "10": { "then": "Brood wordt verkocht" }, @@ -8891,6 +8934,9 @@ "19": { "then": "Parkeerkaarten worden verkocht" }, + "2": { + "then": "Eten wordt verkocht" + }, "21": { "then": "Openbaar vervoerkaartjes worden verkocht" }, @@ -8908,6 +8954,27 @@ }, "26": { "then": "Fietssloten worden verkocht" + }, + "3": { + "then": "Sigaretten worden verkocht" + }, + "4": { + "then": "Condooms worden verkocht" + }, + "5": { + "then": "Koffie wordt verkocht" + }, + "6": { + "then": "Drinkwater wordt verkocht" + }, + "7": { + "then": "Kranten worden verkocht" + }, + "8": { + "then": "Binnenbanden voor fietsen worden verkocht" + }, + "9": { + "then": "Melk wordt verkocht" } }, "question": "Wat verkoopt deze verkoopautomaat?", @@ -9200,4 +9267,4 @@ "render": "windturbine" } } -} \ No newline at end of file +} From 003430131bb156b050b6eb554816fabf120516d5 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 15:10:19 +0100 Subject: [PATCH 17/54] Fix #1748 --- assets/layers/maxspeed/maxspeed.json | 7 +- .../mapcomplete-changes.json | 112 +++++------------- 2 files changed, 35 insertions(+), 84 deletions(-) diff --git a/assets/layers/maxspeed/maxspeed.json b/assets/layers/maxspeed/maxspeed.json index cc5e325f2..378a0cd39 100644 --- a/assets/layers/maxspeed/maxspeed.json +++ b/assets/layers/maxspeed/maxspeed.json @@ -130,7 +130,12 @@ }, "mappings": [ { - "if": "highway=living_street", + "if": { + "and": [ + "highway=living_street", + "_country=be" + ] + }, "then": { "en": "This is a living street, which has a maxspeed of 20km/h", "nl": "Dit is een woonerf en heeft dus een maximale snelheid van 20km/h", diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index 09444a1fa..6c7376596 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -1,19 +1,13 @@ { "id": "mapcomplete-changes", "title": { - "en": "Changes made with MapComplete", - "de": "Mit MapComplete vorgenommene Änderungen", - "ca": "Canvis fets amb MapComplete" + "en": "Changes made with MapComplete" }, "shortDescription": { - "en": "Shows changes made by MapComplete", - "de": "Zeigt die von MapComplete vorgenommenen Änderungen an", - "ca": "Mostra els canvis fets amb MapComplete" + "en": "Shows changes made by MapComplete" }, "description": { - "en": "This maps shows all the changes made with MapComplete", - "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", - "ca": "Aquest mapa mostra tots els canvis fets amb MapComplete" + "en": "This maps shows all the changes made with MapComplete" }, "icon": "./assets/svg/logo.svg", "hideFromOverview": true, @@ -26,8 +20,7 @@ { "id": "mapcomplete-changes", "name": { - "en": "Changeset centers", - "de": "Zentrum der Änderungssätze" + "en": "Changeset centers" }, "minzoom": 0, "source": { @@ -38,55 +31,41 @@ }, "title": { "render": { - "en": "Changeset for {theme}", - "de": "Änderungssatz für {theme}", - "ca": "Conjunt de canvis per a {theme}" + "en": "Changeset for {theme}" } }, "description": { - "en": "Shows all MapComplete changes", - "de": "Zeigt alle MapComplete-Änderungen", - "ca": "Mostra tots els canvis de MapComplete" + "en": "Shows all MapComplete changes" }, "tagRenderings": [ { "id": "show_changeset_id", "render": { - "en": "Changeset {id}", - "de": "Änderungssatz {id}", - "ca": "Conjunt de canvi {id}" + "en": "Changeset {id}" } }, { "id": "contributor", "question": { - "en": "What contributor did make this change?", - "de": "Wer hat diese Änderung vorgenommen?", - "ca": "Quin col·laborador va fer aquest canvi?" + "en": "What contributor did make this change?" }, "freeform": { "key": "user" }, "render": { - "en": "Change made by {user}", - "de": "Änderung von {user}", - "ca": "Canvi fet per {user}" + "en": "Change made by {user}" } }, { "id": "theme-id", "question": { - "en": "What theme was used to make this change?", - "de": "Welches Theme wurde für diese Änderung verwendet?", - "ca": "Quin tema es va utilitzar per fer aquest canvi?" + "en": "What theme was used to make this change?" }, "freeform": { "key": "theme" }, "render": { - "en": "Change with theme {theme}", - "de": "Geändert mit Thema {theme}", - "ca": "Canvi amb el tema {theme}" + "en": "Change with theme {theme}" } }, { @@ -95,27 +74,19 @@ "key": "locale" }, "question": { - "en": "What locale (language) was this change made in?", - "de": "In welcher Benutzersprache wurde diese Änderung vorgenommen?", - "ca": "Amb quina configuració regional (idioma) s'ha fet aquest canvi?" + "en": "What locale (language) was this change made in?" }, "render": { - "en": "User locale is {locale}", - "de": "Benutzersprache {locale}", - "ca": "La configuració regional de l'usuari és {locale}" + "en": "User locale is {locale}" } }, { "id": "host", "render": { - "en": "Change with with {host}", - "de": "Geändert über {host}", - "ca": "Canviat amb {host}" + "en": "Change with with {host}" }, "question": { - "en": "What host (website) was this change made with?", - "de": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?", - "ca": "Amb quin amfitrió (lloc web) es va fer aquest canvi?" + "en": "What host (website) was this change made with?" }, "freeform": { "key": "host" @@ -136,14 +107,10 @@ { "id": "version", "question": { - "en": "What version of MapComplete was used to make this change?", - "de": "Welche Version von MapComplete wurde verwendet, um diese Änderung vorzunehmen?", - "ca": "Quina versió de MapComplete es va utilitzar per fer aquest canvi?" + "en": "What version of MapComplete was used to make this change?" }, "render": { - "en": "Made with {editor}", - "de": "Erstellt mit {editor}", - "ca": "Fet amb {editor}" + "en": "Made with {editor}" }, "freeform": { "key": "editor" @@ -493,9 +460,7 @@ } ], "question": { - "en": "Themename contains {search}", - "de": "Themename enthält {search}", - "ca": "El nom del tema conté {search}" + "en": "Themename contains {search}" } } ] @@ -511,8 +476,7 @@ } ], "question": { - "en": "Themename does not contain {search}", - "de": "Der Name enthält nicht {search}" + "en": "Themename does not contain {search}" } } ] @@ -528,9 +492,7 @@ } ], "question": { - "en": "Made by contributor {search}", - "de": "Der Name enthält nicht {search}", - "ca": "Fet pel col·laborador {search}" + "en": "Made by contributor {search}" } } ] @@ -546,9 +508,7 @@ } ], "question": { - "en": "Not made by contributor {search}", - "de": "Nicht erstellt von {search}", - "ca": "No fet pel col·laborador {search}" + "en": "Not made by contributor {search}" } } ] @@ -565,9 +525,7 @@ } ], "question": { - "en": "Made before {search}", - "de": "Erstellt vor {search}", - "ca": "Fet abans de {search}" + "en": "Made before {search}" } } ] @@ -584,9 +542,7 @@ } ], "question": { - "en": "Made after {search}", - "de": "Erstellt nach {search}", - "ca": "Fet després de {search}" + "en": "Made after {search}" } } ] @@ -602,9 +558,7 @@ } ], "question": { - "en": "User language (iso-code) {search}", - "de": "Benutzersprache (ISO-Code) {search}", - "ca": "Idioma de l'usuari (codi iso) {search}" + "en": "User language (iso-code) {search}" } } ] @@ -620,9 +574,7 @@ } ], "question": { - "en": "Made with host {search}", - "de": "Erstellt mit Host {search}", - "ca": "Fet amb l'amfitrió {search}" + "en": "Made with host {search}" } } ] @@ -633,9 +585,7 @@ { "osmTags": "add-image>0", "question": { - "en": "Changeset added at least one image", - "de": "Änderungssatz hat mindestens ein Bild hinzugefügt", - "ca": "El conjunt de canvis ha afegit almenys una imatge" + "en": "Changeset added at least one image" } } ] @@ -646,8 +596,7 @@ { "osmTags": "theme!=grb", "question": { - "en": "Exclude GRB theme", - "de": "GRB-Theme ausschließen" + "en": "Exclude GRB theme" } } ] @@ -658,8 +607,7 @@ { "osmTags": "theme!=etymology", "question": { - "en": "Exclude etymology theme", - "de": "Etymologie-Thema ausschließen" + "en": "Exclude etymology theme" } } ] @@ -674,9 +622,7 @@ { "id": "link_to_more", "render": { - "en": "More statistics can be found here", - "de": "Mehr Statistiken gibt es hier", - "ca": "Es pot trobar més estadística aquí" + "en": "More statistics can be found here" } }, { From 859faead7fd8c6fa5ae73b70e41a753f34dfd5ff Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Wed, 10 Jan 2024 23:21:17 +0100 Subject: [PATCH 18/54] Fix: fix file drag and drop, allow entire featurePopup for file drop --- src/UI/Base/FileSelector.svelte | 78 ++++++++++++------- .../BigComponents/SelectedElementView.svelte | 2 +- 2 files changed, 50 insertions(+), 30 deletions(-) diff --git a/src/UI/Base/FileSelector.svelte b/src/UI/Base/FileSelector.svelte index 17c75f8cc..be48e9b2c 100644 --- a/src/UI/Base/FileSelector.svelte +++ b/src/UI/Base/FileSelector.svelte @@ -1,5 +1,5 @@
{ - drawAttention = false - dispatcher("submit", inputElement.files) - }} - on:dragend={() => { - console.log("Drag end") - drawAttention = false - }} - on:dragenter|preventDefault|stopPropagation={(e) => { - console.log("Dragging enter") - drawAttention = true - e.dataTransfer.drop = "copy" - }} - on:dragstart={() => { - console.log("DragStart") - drawAttention = false - }} - on:drop|preventDefault|stopPropagation={(e) => { - console.log("Got a 'drop'") - drawAttention = false - dispatcher("submit", e.dataTransfer.files) - }} + bind:this={formElement} > @@ -52,7 +72,7 @@ {accept} bind:this={inputElement} class="hidden" - id={"fileinput" + id} + {id} {multiple} name="file-input" type="file" diff --git a/src/UI/BigComponents/SelectedElementView.svelte b/src/UI/BigComponents/SelectedElementView.svelte index 02d3dcd19..4fc37b11d 100644 --- a/src/UI/BigComponents/SelectedElementView.svelte +++ b/src/UI/BigComponents/SelectedElementView.svelte @@ -43,7 +43,7 @@ {:else} -
+
{#each $knownTagRenderings as config (config.id)} Date: Wed, 10 Jan 2024 23:46:57 +0100 Subject: [PATCH 19/54] Refactoring: remove some more of the deprecated, old-style svg-images --- scripts/generateIncludedImages.ts | 109 +++++++++++------- .../ImageProviders/WikidataImageProvider.ts | 12 +- .../ImageProviders/WikimediaImageProvider.ts | 4 +- src/UI/Base/LinkToWeblate.ts | 4 +- src/UI/BigComponents/UploadTraceToOsmUI.ts | 10 +- src/UI/Popup/ImportButtons/ImportFlow.svelte | 3 +- src/UI/Popup/MoveWizardState.ts | 11 +- src/UI/Popup/Notes/CloseNoteButton.ts | 4 +- .../TagRendering/TagRenderingEditable.svelte | 4 +- src/UI/Wikipedia/WikidataPreviewBox.ts | 38 ++++-- 10 files changed, 131 insertions(+), 68 deletions(-) diff --git a/scripts/generateIncludedImages.ts b/scripts/generateIncludedImages.ts index a497d58ac..0798c7fe3 100644 --- a/scripts/generateIncludedImages.ts +++ b/scripts/generateIncludedImages.ts @@ -6,68 +6,99 @@ function genImages(dryrun = false) { const blacklist: string[] = [ "add", "addSmall", + "back", + "blocked", + "brick_wall", + "brick_wall_raw", + "brick_wall_round", "brick_wall_square", + "bug", + "center", + "checkmark", "clock", + "close", "community", + "compass", + "compass_arrow", + "confirm", "copyright", "cross", "cross_bottom_right", + "crosshair", "crosshair_locked", + "crosshair-locked", "delete_not_allowed", "direction_gradient", "direction_stroke", "duplicate", "elevator", "elevator_wheelchair", - "liberapay", - "length_crosshair", - "speech_bubble_black_outline", - "square", - "star_half", - "star_outline", - "star", - "osm_logo_us", - "triangle", - "teardrop_with_hole_green", - "SocialImageForeground", - "wikipedia", - "Upload", - "pin", - "mapillary_black", - "plantnet_logo", - "mastodon", - "move-arrows", - "mapcomplete_logo", - "logo", - "logout", - "hand", - "help", - "home", - "reload", - "min", - "plus", - "not_found", - "osm_logo_us", - "party", + "eye", "filter", "filter_disable", "floppy", - "eye", "gear", "gender_bi", - "compass", - "blocked", - "brick_wall", - "brick_wall_raw", - "brick_wall_round", - "bug", - "back", + "gender_inter", + "gender_female", + "gender_male", + "gender_trans", + "gender_queer", + "generic_map", + "gps_arrow", + "hand", + "help", + "home", + "length_crosshair", + "length-crosshair", + "liberapay", + "location", + "location_empty", + "location_locked", + "location_refused", + "location-refused", + "location_unlocked", + "logo", + "logout", + "mapcomplete_logo", + "mapillary", + "mapillary_black", + "mastodon", + "min", + "move-arrows", + "move_confirm", + "move_not_allowed", + "not_found", + "osm_logo_us", + "osm-logo-us", + "party", "person", + "pin", + "plantnet_logo", + "plus", + "reload", + "ring", + "robot", + "SocialImageForeground", + "speech_bubble_black_outline", + "square", + "star", + "star_half", + "star_outline", + "teardrop", + "teardrop_with_hole_green", + "translate", + "triangle", + "Upload", + "wikidata", + "wikimedia-commons-white", + "wikimedia_commons_white", + "wikipedia", ].map((s) => s.toLowerCase()) const dir = fs.readdirSync("./assets/svg") let module = - 'import Img from "./UI/Base/Img";\nimport {FixedUiElement} from "./UI/Base/FixedUiElement";\n\n/* @deprecated */\nexport default class Svg {\n\n\n' + 'import Img from "./UI/Base/Img";\n\n/* @deprecated */\nexport default class Svg {\n\n\n' for (const path of dir) { if (path.endsWith("license_info.json")) { continue diff --git a/src/Logic/ImageProviders/WikidataImageProvider.ts b/src/Logic/ImageProviders/WikidataImageProvider.ts index 19dcbcbf5..6de5039b4 100644 --- a/src/Logic/ImageProviders/WikidataImageProvider.ts +++ b/src/Logic/ImageProviders/WikidataImageProvider.ts @@ -1,13 +1,11 @@ import ImageProvider, { ProvidedImage } from "./ImageProvider" import BaseUIElement from "../../UI/BaseUIElement" -import Svg from "../../Svg" import { WikimediaImageProvider } from "./WikimediaImageProvider" import Wikidata from "../Web/Wikidata" +import SvelteUIElement from "../../UI/Base/SvelteUIElement" +import * as Wikidata_icon from "../../assets/svg/Wikidata.svelte" export class WikidataImageProvider extends ImageProvider { - public apiUrls(): string[] { - return Wikidata.neededUrls - } public static readonly singleton = new WikidataImageProvider() public readonly defaultKeyPrefixes = ["wikidata"] @@ -15,8 +13,12 @@ export class WikidataImageProvider extends ImageProvider { super() } + public apiUrls(): string[] { + return Wikidata.neededUrls + } + public SourceIcon(): BaseUIElement { - return Svg.wikidata_svg() + return new SvelteUIElement(Wikidata_icon) } public async ExtractUrls(key: string, value: string): Promise[]> { diff --git a/src/Logic/ImageProviders/WikimediaImageProvider.ts b/src/Logic/ImageProviders/WikimediaImageProvider.ts index b2c82dc9e..cc0d1dadd 100644 --- a/src/Logic/ImageProviders/WikimediaImageProvider.ts +++ b/src/Logic/ImageProviders/WikimediaImageProvider.ts @@ -4,6 +4,8 @@ import Svg from "../../Svg" import { Utils } from "../../Utils" import { LicenseInfo } from "./LicenseInfo" import Wikimedia from "../Web/Wikimedia" +import SvelteUIElement from "../../UI/Base/SvelteUIElement" +import Wikimedia_commons_white from "../../assets/svg/Wikimedia_commons_white.svelte" /** * This module provides endpoints for wikimedia and others @@ -70,7 +72,7 @@ export class WikimediaImageProvider extends ImageProvider { } SourceIcon(): BaseUIElement { - return Svg.wikimedia_commons_white_svg().SetStyle("width:2em;height: 2em") + return new SvelteUIElement(Wikimedia_commons_white).SetStyle("width:2em;height: 2em") } public PrepUrl(value: string): ProvidedImage { diff --git a/src/UI/Base/LinkToWeblate.ts b/src/UI/Base/LinkToWeblate.ts index 332fdb0e8..0672c0903 100644 --- a/src/UI/Base/LinkToWeblate.ts +++ b/src/UI/Base/LinkToWeblate.ts @@ -2,6 +2,8 @@ import { VariableUiElement } from "./VariableUIElement" import Locale from "../i18n/Locale" import Link from "./Link" import Svg from "../../Svg" +import SvelteUIElement from "./SvelteUIElement" +import Translate from "../../assets/svg/Translate.svelte" /** * The little 'translate'-icon next to every icon + some static helper functions @@ -20,7 +22,7 @@ export default class LinkToWeblate extends VariableUiElement { if (context === undefined || context.indexOf(":") < 0) { return undefined } - const icon = Svg.translate_svg().SetClass( + const icon = new SvelteUIElement(Translate).SetClass( "rounded-full inline-block w-3 h-3 ml-1 weblate-link self-center" ) if (availableTranslations[ln] === undefined) { diff --git a/src/UI/BigComponents/UploadTraceToOsmUI.ts b/src/UI/BigComponents/UploadTraceToOsmUI.ts index 2b281ee06..aec4fc7e2 100644 --- a/src/UI/BigComponents/UploadTraceToOsmUI.ts +++ b/src/UI/BigComponents/UploadTraceToOsmUI.ts @@ -7,13 +7,15 @@ import { TextField } from "../Input/TextField" import { Store, UIEventSource } from "../../Logic/UIEventSource" import Title from "../Base/Title" import { SubtleButton } from "../Base/SubtleButton" -import Svg from "../../Svg" import { OsmConnection } from "../../Logic/Osm/OsmConnection" import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig" import { Translation } from "../i18n/Translation" import { LoginToggle } from "../Popup/LoginButton" import SvelteUIElement from "../Base/SvelteUIElement" import Upload from "../../assets/svg/Upload.svelte" +import Close from "../../assets/svg/Close.svelte" +import Confirm from "../../assets/svg/Confirm.svelte" +import Invalid from "../../assets/svg/Invalid.svelte" export default class UploadTraceToOsmUI extends LoginToggle { constructor( @@ -80,7 +82,7 @@ export default class UploadTraceToOsmUI extends LoginToggle { t.meta.descriptionIntro, description, new Combine([ - new SubtleButton(Svg.close_svg(), Translations.t.general.cancel) + new SubtleButton(new SvelteUIElement(Close), Translations.t.general.cancel) .onClick(() => { clicked.setData(false) }) @@ -116,7 +118,7 @@ export default class UploadTraceToOsmUI extends LoginToggle { new Toggle( new Toggle( new Combine([ - Svg.confirm_svg().SetClass("w-12 h-12 mr-2"), + new SvelteUIElement(Confirm).SetClass("w-12 h-12 mr-2"), t.uploadFinished, ]).SetClass("flex p-2 rounded-xl border-2 subtle-border items-center"), new Toggle( @@ -129,7 +131,7 @@ export default class UploadTraceToOsmUI extends LoginToggle { uploadFinished ), new Combine([ - Svg.invalid_svg().SetClass("w-8 h-8 m-2"), + new SvelteUIElement(Invalid).SetClass("w-8 h-8 m-2"), t.gpxServiceOffline.SetClass("p-2"), ]).SetClass("flex border alert items-center"), state.osmConnection.gpxServiceIsOnline.map( diff --git a/src/UI/Popup/ImportButtons/ImportFlow.svelte b/src/UI/Popup/ImportButtons/ImportFlow.svelte index 415d4b897..fde9384c9 100644 --- a/src/UI/Popup/ImportButtons/ImportFlow.svelte +++ b/src/UI/Popup/ImportButtons/ImportFlow.svelte @@ -18,6 +18,7 @@ import Svg from "../../../Svg" import ToSvelte from "../../Base/ToSvelte.svelte" import { EyeIcon, EyeOffIcon } from "@rgossiaux/svelte-heroicons/solid" + import Confirm from "../../../assets/svg/Confirm.svelte" export let importFlow: ImportFlow let state = importFlow.state @@ -143,7 +144,7 @@ {#if importFlow.args.icon} {:else} - + {/if} diff --git a/src/UI/Popup/MoveWizardState.ts b/src/UI/Popup/MoveWizardState.ts index 5ffdf689b..709638660 100644 --- a/src/UI/Popup/MoveWizardState.ts +++ b/src/UI/Popup/MoveWizardState.ts @@ -1,4 +1,3 @@ -import Svg from "../../Svg" import { UIEventSource } from "../../Logic/UIEventSource" import Translations from "../i18n/Translations" import { Translation } from "../i18n/Translation" @@ -10,6 +9,9 @@ import { And } from "../../Logic/Tags/And" import { Tag } from "../../Logic/Tags/Tag" import { SpecialVisualizationState } from "../SpecialVisualization" import { Feature, Point } from "geojson" +import SvelteUIElement from "../Base/SvelteUIElement" +import Confirm from "../../assets/svg/Confirm.svelte" +import Relocation from "../../assets/svg/Relocation.svelte" export interface MoveReason { text: Translation | string @@ -32,10 +34,7 @@ export class MoveWizardState { constructor(id: string, options: MoveConfig, state: SpecialVisualizationState) { this._state = state - const t = Translations.t.move - this.reasons = MoveWizardState.initReasons(options) - if (this.reasons.length > 0) { this.checkIsAllowed(id) } @@ -49,7 +48,7 @@ export class MoveWizardState { reasons.push({ text: t.reasons.reasonRelocation, invitingText: t.inviteToMove.reasonRelocation, - icon: Svg.relocation_svg(), + icon: new SvelteUIElement(Relocation), changesetCommentValue: "relocated", lockBounds: false, background: undefined, @@ -63,7 +62,7 @@ export class MoveWizardState { reasons.push({ text: t.reasons.reasonInaccurate, invitingText: t.inviteToMove.reasonInaccurate, - icon: Svg.crosshair_svg(), + icon: new SvelteUIElement(Confirm), changesetCommentValue: "improve_accuracy", lockBounds: true, includeSearch: false, diff --git a/src/UI/Popup/Notes/CloseNoteButton.ts b/src/UI/Popup/Notes/CloseNoteButton.ts index 047e6508f..611169acb 100644 --- a/src/UI/Popup/Notes/CloseNoteButton.ts +++ b/src/UI/Popup/Notes/CloseNoteButton.ts @@ -9,6 +9,8 @@ import { LoginToggle } from ".././LoginButton" import { SpecialVisualization, SpecialVisualizationState } from "../../SpecialVisualization" import { UIEventSource } from "../../../Logic/UIEventSource" import Constants from "../../../Models/Constants" +import SvelteUIElement from "../../Base/SvelteUIElement" +import Checkmark from "../../../assets/svg/Checkmark.svelte" export class CloseNoteButton implements SpecialVisualization { public readonly funcName = "close_note" @@ -61,7 +63,7 @@ export class CloseNoteButton implements SpecialVisualization { zoomButton: string } = Utils.ParseVisArgs(this.args, args) - let icon = Svg.checkmark_svg() + let icon: BaseUIElement = new SvelteUIElement(Checkmark) if (params.icon !== "checkmark.svg" && (args[2] ?? "") !== "") { icon = new Img(args[1]) } diff --git a/src/UI/Popup/TagRendering/TagRenderingEditable.svelte b/src/UI/Popup/TagRendering/TagRenderingEditable.svelte index 797c2503b..f4d82d321 100644 --- a/src/UI/Popup/TagRendering/TagRenderingEditable.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingEditable.svelte @@ -4,7 +4,7 @@ import type { Feature } from "geojson" import type { SpecialVisualizationState } from "../../SpecialVisualization" import TagRenderingAnswer from "./TagRenderingAnswer.svelte" - import { PencilAltIcon, XCircleIcon } from "@rgossiaux/svelte-heroicons/solid" + import { PencilAltIcon } from "@rgossiaux/svelte-heroicons/solid" import TagRenderingQuestion from "./TagRenderingQuestion.svelte" import { onDestroy } from "svelte" import Tr from "../../Base/Tr.svelte" @@ -32,7 +32,7 @@ onDestroy( tags.addCallbackD((tags) => { editMode = !config.IsKnown(tags) - }) + }), ) } diff --git a/src/UI/Wikipedia/WikidataPreviewBox.ts b/src/UI/Wikipedia/WikidataPreviewBox.ts index 41f2afb2c..16ed4ab04 100644 --- a/src/UI/Wikipedia/WikidataPreviewBox.ts +++ b/src/UI/Wikipedia/WikidataPreviewBox.ts @@ -9,9 +9,15 @@ import Combine from "../Base/Combine" import Img from "../Base/Img" import { WikimediaImageProvider } from "../../Logic/ImageProviders/WikimediaImageProvider" import Link from "../Base/Link" -import Svg from "../../Svg" import BaseUIElement from "../BaseUIElement" import { Utils } from "../../Utils" +import SvelteUIElement from "../Base/SvelteUIElement" +import * as Wikidata_icon from "../../assets/svg/Wikidata.svelte" +import Gender_male from "../../assets/svg/Gender_male.svelte" +import Gender_female from "../../assets/svg/Gender_female.svelte" +import Gender_inter from "../../assets/svg/Gender_inter.svelte" +import Gender_trans from "../../assets/svg/Gender_trans.svelte" +import Gender_queer from "../../assets/svg/Gender_queer.svelte" export default class WikidataPreviewBox extends VariableUiElement { private static isHuman = [{ p: 31 /*is a*/, q: 5 /* human */ }] @@ -28,22 +34,36 @@ export default class WikidataPreviewBox extends VariableUiElement { requires: WikidataPreviewBox.isHuman, property: "P21", display: new Map([ - ["Q6581097", () => Svg.gender_male_svg().SetStyle("width: 1rem; height: auto")], - ["Q6581072", () => Svg.gender_female_svg().SetStyle("width: 1rem; height: auto")], - ["Q1097630", () => Svg.gender_inter_svg().SetStyle("width: 1rem; height: auto")], + [ + "Q6581097", + () => new SvelteUIElement(Gender_male).SetStyle("width: 1rem; height: auto"), + ], + [ + "Q6581072", + () => new SvelteUIElement(Gender_female).SetStyle("width: 1rem; height: auto"), + ], + [ + "Q1097630", + () => new SvelteUIElement(Gender_inter).SetStyle("width: 1rem; height: auto"), + ], [ "Q1052281", () => - Svg.gender_trans_svg().SetStyle( + new SvelteUIElement(Gender_trans).SetStyle( "width: 1rem; height: auto" ) /*'transwomen'*/, ], [ "Q2449503", () => - Svg.gender_trans_svg().SetStyle("width: 1rem; height: auto") /*'transmen'*/, + new SvelteUIElement(Gender_trans).SetStyle( + "width: 1rem; height: auto" + ) /*'transmen'*/, + ], + [ + "Q48270", + () => new SvelteUIElement(Gender_queer).SetStyle("width: 1rem; height: auto"), ], - ["Q48270", () => Svg.gender_queer_svg().SetStyle("width: 1rem; height: auto")], ]), textMode: new Map([ ["Q6581097", "♂️"], @@ -116,7 +136,9 @@ export default class WikidataPreviewBox extends VariableUiElement { wikidata.id, options?.noImages ? wikidata.id - : Svg.wikidata_svg().SetStyle("width: 2.5rem").SetClass("block"), + : new SvelteUIElement(Wikidata_icon) + .SetStyle("width: 2.5rem") + .SetClass("block"), ]).SetClass("flex"), Wikidata.IdToArticle(wikidata.id), true From 7b9a74819993b00f01a22aae0ffe6776419ac3a2 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Thu, 11 Jan 2024 02:20:29 +0100 Subject: [PATCH 20/54] Refactoring: remove obsolete class --- src/Models/ThemeConfig/TagRenderingConfig.ts | 11 +++---- src/UI/Base/Paragraph.ts | 30 -------------------- 2 files changed, 4 insertions(+), 37 deletions(-) delete mode 100644 src/UI/Base/Paragraph.ts diff --git a/src/Models/ThemeConfig/TagRenderingConfig.ts b/src/Models/ThemeConfig/TagRenderingConfig.ts index 06106a7de..384c43912 100644 --- a/src/Models/ThemeConfig/TagRenderingConfig.ts +++ b/src/Models/ThemeConfig/TagRenderingConfig.ts @@ -15,7 +15,6 @@ import { QuestionableTagRenderingConfigJson, } from "./Json/QuestionableTagRenderingConfigJson" import { FixedUiElement } from "../../UI/Base/FixedUiElement" -import { Paragraph } from "../../UI/Base/Paragraph" import Validators, { ValidatorType } from "../../UI/InputElement/Validators" import { TagRenderingConfigJson } from "./Json/TagRenderingConfigJson" import Constants from "../Constants" @@ -754,12 +753,10 @@ export default class TagRenderingConfig { withRender = [ `This rendering asks information about the property `, Link.OsmWiki(this.freeform.key), - new Paragraph( - new Combine([ - "This is rendered with ", - new FixedUiElement(this.render.txt).SetClass("code font-bold"), - ]) - ), + new Combine([ + "This is rendered with ", + new FixedUiElement(this.render.txt).SetClass("code font-bold"), + ]), ] } diff --git a/src/UI/Base/Paragraph.ts b/src/UI/Base/Paragraph.ts deleted file mode 100644 index 4a8d4546a..000000000 --- a/src/UI/Base/Paragraph.ts +++ /dev/null @@ -1,30 +0,0 @@ -import BaseUIElement from "../BaseUIElement" - -export class Paragraph extends BaseUIElement { - public readonly content: string | BaseUIElement - - constructor(html: string | BaseUIElement) { - super() - this.content = html ?? "" - } - - AsMarkdown(): string { - let c: string - if (typeof this.content !== "string") { - c = this.content.AsMarkdown() - } else { - c = this.content - } - return "\n\n" + c + "\n\n" - } - - protected InnerConstructElement(): HTMLElement { - const e = document.createElement("p") - if (typeof this.content !== "string") { - e.appendChild(this.content.ConstructElement()) - } else { - e.innerHTML = this.content - } - return e - } -} From 34d852771855e8e4d7c2a771cb77907572d12d9f Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Thu, 11 Jan 2024 02:20:57 +0100 Subject: [PATCH 21/54] Refactoring: move uploadGPXToOSm into svelte --- assets/layers/gps_track/gps_track.json | 17 +- src/Logic/Actors/GeoLocationHandler.ts | 8 +- src/Logic/Osm/OsmConnection.ts | 8 +- src/UI/Base/SubtleButton.ts | 28 --- .../BigComponents/UploadTraceToOsmUI.svelte | 181 ++++++++++++++++++ src/UI/BigComponents/UploadTraceToOsmUI.ts | 155 --------------- src/UI/Popup/UploadToOsmViz.ts | 10 +- src/UI/ThemeViewGUI.svelte | 3 + src/Utils/selectDefault.ts | 10 + 9 files changed, 222 insertions(+), 198 deletions(-) create mode 100644 src/UI/BigComponents/UploadTraceToOsmUI.svelte delete mode 100644 src/UI/BigComponents/UploadTraceToOsmUI.ts create mode 100644 src/Utils/selectDefault.ts diff --git a/assets/layers/gps_track/gps_track.json b/assets/layers/gps_track/gps_track.json index d3797f616..6a934d223 100644 --- a/assets/layers/gps_track/gps_track.json +++ b/assets/layers/gps_track/gps_track.json @@ -23,7 +23,22 @@ "cs": "Ujetá cesta" } }, - "pointRendering": [], + "pointRendering": [ + { + "location": [ + "start" + ], + "marker": [ + { + "icon": "circle", + "color": "#bb000077" + } + ], + "iconSize": "10,10", + "pitchAlignment": "map", + "rotationAlignment": "map" + } + ], "lineRendering": [ { "width": 3, diff --git a/src/Logic/Actors/GeoLocationHandler.ts b/src/Logic/Actors/GeoLocationHandler.ts index 152b12979..9d32dead4 100644 --- a/src/Logic/Actors/GeoLocationHandler.ts +++ b/src/Logic/Actors/GeoLocationHandler.ts @@ -153,11 +153,7 @@ export default class GeoLocationHandler { const features: UIEventSource = new UIEventSource([]) this.currentUserLocation = new StaticFeatureSource(features) let i = 0 - this.geolocationState.currentGPSLocation.addCallbackAndRun((location) => { - if (location === undefined) { - return - } - + this.geolocationState.currentGPSLocation.addCallbackAndRunD((location) => { const properties = { id: "gps-" + i, "user:location": "yes", @@ -200,7 +196,6 @@ export default class GeoLocationHandler { ) }) features.ping() - let i = 0 this.currentUserLocation?.features?.addCallbackAndRunD(([location]: [Feature]) => { if (location === undefined) { return @@ -231,7 +226,6 @@ export default class GeoLocationHandler { const feature = JSON.parse(JSON.stringify(location)) feature.properties.id = "gps/" + features.data.length - i++ features.data.push(feature) features.ping() }) diff --git a/src/Logic/Osm/OsmConnection.ts b/src/Logic/Osm/OsmConnection.ts index 1c92f07e0..a6295bd8d 100644 --- a/src/Logic/Osm/OsmConnection.ts +++ b/src/Logic/Osm/OsmConnection.ts @@ -399,11 +399,12 @@ export class OsmConnection { return id } + public static GpxTrackVisibility = ["private", "public", "trackable", "identifiable"] as const public async uploadGpxTrack( gpx: string, options: { description: string - visibility: "private" | "public" | "trackable" | "identifiable" + visibility: (typeof OsmConnection.GpxTrackVisibility)[number] filename?: string /** * Some words to give some properties; @@ -425,11 +426,14 @@ export class OsmConnection { const contents = { file: gpx, - description: options.description ?? "", + description: options.description, tags: options.labels?.join(",") ?? "", visibility: options.visibility, } + if (!contents.description) { + throw "The description of a GPS-trace cannot be the empty string, undefined or null" + } const extras = { file: '; filename="' + diff --git a/src/UI/Base/SubtleButton.ts b/src/UI/Base/SubtleButton.ts index 5eb920b0a..02db03ab2 100644 --- a/src/UI/Base/SubtleButton.ts +++ b/src/UI/Base/SubtleButton.ts @@ -66,32 +66,4 @@ export class SubtleButton extends UIElement { this.SetClass(classes) return button } - - public OnClickWithLoading( - loadingText: BaseUIElement | string, - action: () => Promise - ): BaseUIElement { - const state = new UIEventSource<"idle" | "running">("idle") - const button = this - - button.onClick(async () => { - state.setData("running") - try { - await action() - } catch (e) { - console.error(e) - } finally { - state.setData("idle") - } - }) - const loading = new Lazy(() => new Loading(loadingText)) - return new VariableUiElement( - state.map((st) => { - if (st === "idle") { - return button - } - return loading - }) - ) - } } diff --git a/src/UI/BigComponents/UploadTraceToOsmUI.svelte b/src/UI/BigComponents/UploadTraceToOsmUI.svelte new file mode 100644 index 000000000..f754c5475 --- /dev/null +++ b/src/UI/BigComponents/UploadTraceToOsmUI.svelte @@ -0,0 +1,181 @@ + + + + + {#if !$gpxServerIsOnline} +
+ + +
+ {:else if $currentStep === "error"} +
+ + +
+ {:else if $currentStep === "init"} + + {:else if $currentStep === "please_confirm"} + uploadTrace()} + class="flex flex-col border-interactive interactive px-2 gap-y-1"> +

+ +

+ + + + +

+ +

+ + + + +