diff --git a/assets/layers/building/building.json b/assets/layers/building/building.json
index 03cf34113e..67c09ec2ab 100644
--- a/assets/layers/building/building.json
+++ b/assets/layers/building/building.json
@@ -93,7 +93,8 @@
"en": "Gothic architecture",
"fr": "Architecture gothique",
"nl": "Gotische architectuur",
- "cs": "Gotická architektura"
+ "cs": "Gotická architektura",
+ "ca": "Arquitectura gòtica"
}
},
{
@@ -197,7 +198,8 @@
"en": "Historicism",
"fr": "Historicisme",
"nl": "Historisme",
- "cs": "Historicismus"
+ "cs": "Historicismus",
+ "ca": "Historicisme"
}
},
{
@@ -206,7 +208,8 @@
"en": "Romanesque Revival",
"fr": "Architecture néo-romane",
"nl": "Neo-Romaanse architectuur",
- "cs": "Novorománská architektura"
+ "cs": "Novorománská architektura",
+ "ca": "Arquitectura Neoromànica"
}
},
{
@@ -215,7 +218,8 @@
"en": "Byzantine Revival",
"fr": "Architecture néo-byzantine",
"nl": "Neo-Byzantijnse architectuur",
- "cs": "Novobyzantská architektura"
+ "cs": "Novobyzantská architektura",
+ "ca": "Arquitectura neobizantina"
}
},
{
@@ -323,7 +327,8 @@
"en": "International Style",
"fr": "Style international",
"nl": "Internationale Stijl",
- "cs": "Mezinárodní styl"
+ "cs": "Mezinárodní styl",
+ "ca": "Estil internacional"
}
},
{
@@ -341,7 +346,8 @@
"en": "Stalinist architecture",
"fr": "Architecture stalinienne",
"nl": "Stalinistische architectuur",
- "cs": "Socialistický realismus"
+ "cs": "Socialistický realismus",
+ "ca": "Arquitectura stalinista"
}
},
{
diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json
index 803f69da78..8ca5b88c9c 100644
--- a/assets/layers/charging_station/charging_station.json
+++ b/assets/layers/charging_station/charging_station.json
@@ -2647,19 +2647,22 @@
},
"question": {
"en": "What is the name of the app used for payment?",
- "nl": "Hoe heet de app die gebruikt wordt voor betaling?"
+ "nl": "Hoe heet de app die gebruikt wordt voor betaling?",
+ "cs": "Jaký je název aplikace používané pro platby?"
},
"freeform": {
"key": "payment:app",
"placeholder": {
"en": "Name of the app",
- "nl": "Naam van de app"
+ "nl": "Naam van de app",
+ "cs": "Název aplikace"
},
"type": "string"
},
"render": {
"en": "Payment can be done using the app {payment:app}",
- "nl": "Betalen kan met de app {payment:app}"
+ "nl": "Betalen kan met de app {payment:app}",
+ "cs": "Platbu lze provést pomocí aplikace {payment:app}"
},
"invalidValues": "payment:app=yes"
},
diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json
index 592b1d5f2b..40c9e867a4 100644
--- a/assets/layers/defibrillator/defibrillator.json
+++ b/assets/layers/defibrillator/defibrillator.json
@@ -761,7 +761,8 @@
"en": "Unknown access or times of accessibility",
"nl": "Onbekende toegang of onbekende tijden waarop toegankelijk",
"de": "Zugang oder Öffnungszeiten unbekannt",
- "cs": "Neznámý přístup nebo časy přístupnosti"
+ "cs": "Neznámý přístup nebo časy přístupnosti",
+ "ca": "Accés o horaris d'accessibilitat desconeguts"
}
}
]
diff --git a/assets/layers/school/school.json b/assets/layers/school/school.json
index 701acd8e32..b92590571c 100644
--- a/assets/layers/school/school.json
+++ b/assets/layers/school/school.json
@@ -169,7 +169,7 @@
"de": "Wie viele Schüler können sich maximal an dieser Schule anmelden?",
"nl": "Ten hoogste hoeveel studenten kunnen er les volgen in deze school?",
"fr": "Combien d'élèves peuvent s'inscrire au maximum dans cette école ?",
- "ca": "Quants alumnes poden matricular-se com a màxim a aquesta escola?",
+ "ca": "Quants alumnes, com a màxim, poden matricular-se en aquesta escola?",
"cs": "Kolik studentů se může na tuto školu maximálně zapsat?",
"es": "¿Cuántos alumnos como máximo pueden matricularse en esta escuela?",
"uk": "Скільки учнів можна зарахувати до цієї школи?"
@@ -830,11 +830,13 @@
"id": "uniform",
"question": {
"en": "Do pupils have to wear a uniform or obey a dresscode?",
- "nl": "Moeten leerlingen een uniform dragen of specifieke kledingsvoorschriften volgen?"
+ "nl": "Moeten leerlingen een uniform dragen of specifieke kledingsvoorschriften volgen?",
+ "ca": "Els estudiants han de dur uniforme o seguir un codi de vestimenta?"
},
"multiAnswer": true,
"render": {
- "en": "{dress_code}"
+ "en": "{dress_code}",
+ "ca": "{dress_code}"
},
"freeform": {
"key": "dress_code"
@@ -854,49 +856,56 @@
"if": "dress_code=uniform",
"then": {
"en": "Students must wear a uniform, which is extensively described",
- "nl": "Studenten moeten een specifiek uniform dragen"
+ "nl": "Studenten moeten een specifiek uniform dragen",
+ "ca": "Els estudiants han de portar un uniforme, que es descriu àmpliament"
}
},
{
"if": "dress_code=obligated_colour",
"then": {
"en": "Students must wear clothes in a specific colour scheme",
- "nl": "Leerlingen moeten kleren van een bepaalde kleur dragen"
+ "nl": "Leerlingen moeten kleren van een bepaalde kleur dragen",
+ "ca": "Els alumnes han de portar roba d'una combinació de colors específica"
}
},
{
"if": "dress_code=casual",
"then": {
"en": "There is no formal dress code, students are allowed to come in casual wear such as t-shirt, jeans, ...",
- "nl": "Er is geen uniformverplichting, leerlingen mogen kledij zoals t-shirts, jeans, ... dragen"
+ "nl": "Er is geen uniformverplichting, leerlingen mogen kledij zoals t-shirts, jeans, ... dragen",
+ "ca": "No hi ha cap codi de vestimenta formal, els estudiants poden venir amb roba casual com samarreta, texans,..."
}
},
{
"if": "dress_code=arms_covered",
"then": {
"en": "Arms must be covered by the clothes",
- "nl": "De armen moeten volledig bedekt zijn"
+ "nl": "De armen moeten volledig bedekt zijn",
+ "ca": "Els braços han d'estar coberts per roba"
}
},
{
"if": "dress_code=knees_covered",
"then": {
"en": "Knees must be covered by the clothes",
- "nl": "De knieën moeten volledig bedekt zijn"
+ "nl": "De knieën moeten volledig bedekt zijn",
+ "ca": "Els genolls han d'estar coberts per roba"
}
},
{
"if": "dress_code=legs_covered",
"then": {
"en": "Legs must be covered by the clothes",
- "nl": "De benen moeten volledig bedekt zijn"
+ "nl": "De benen moeten volledig bedekt zijn",
+ "ca": "Les cames han d'estar cobertes per roba"
}
},
{
"if": "dress_code=belly_covered",
"then": {
"en": "The belly must be covered by the clothes",
- "nl": "De buik mag niet zichtbaar zijn"
+ "nl": "De buik mag niet zichtbaar zijn",
+ "ca": "El melic ha d'estar cobert per roba"
}
}
]
diff --git a/assets/layers/slow_roads/slow_roads.json b/assets/layers/slow_roads/slow_roads.json
index 3309094bf4..b8729dea88 100644
--- a/assets/layers/slow_roads/slow_roads.json
+++ b/assets/layers/slow_roads/slow_roads.json
@@ -60,7 +60,8 @@
"nl": "Voetpad",
"de": "Fußweg",
"es": "Acera",
- "ca": "Vorera"
+ "ca": "Vorera",
+ "cs": "Stezka pro chodce"
}
},
{
@@ -70,7 +71,8 @@
"nl": "Fietspad",
"de": "Radweg",
"es": "Carril bici",
- "ca": "Via Ciclista"
+ "ca": "Via Ciclista",
+ "cs": "Stezka pro cyklisty"
}
},
{
@@ -80,7 +82,8 @@
"nl": "Voetgangersstraat",
"de": "Fußgängerzone",
"es": "Calle peatonal",
- "ca": "Carrer de vianants"
+ "ca": "Carrer de vianants",
+ "cs": "Pěší zóna"
}
},
{
@@ -90,7 +93,8 @@
"nl": "Woonerf",
"de": "Wohnstraße",
"es": "Calle residencial",
- "ca": "Carrer residencial"
+ "ca": "Carrer residencial",
+ "cs": "Obytná zóna"
}
},
{
@@ -205,7 +209,8 @@
"nl": "Wat is de wegverharding van dit pad?",
"de": "Welche Oberfläche hat diese Straße?",
"es": "¿Qué superficie tiene este camino?",
- "ca": "Quina superfície té aquesta carretera?"
+ "ca": "Quina superfície té aquesta carretera?",
+ "cs": "Jaký povrch má tato cesta?"
},
"render": {
"nl": "De ondergrond is {surface}",
diff --git a/assets/layers/sports_centre/sports_centre.json b/assets/layers/sports_centre/sports_centre.json
index a945eba659..bd7c10b929 100644
--- a/assets/layers/sports_centre/sports_centre.json
+++ b/assets/layers/sports_centre/sports_centre.json
@@ -129,7 +129,8 @@
"en": "Aikido",
"de": "Aikido",
"ca": "Aikido",
- "cy": "Aikido"
+ "cy": "Aikido",
+ "cs": "Aikido"
}
},
{
@@ -137,7 +138,8 @@
"then": {
"en": "Archery",
"de": "Bogenschießen",
- "ca": "Tir amb arc"
+ "ca": "Tir amb arc",
+ "cs": "Lukostřelba"
}
},
{
@@ -394,7 +396,8 @@
"en": "Dance",
"de": "Tanz",
"ca": "Dansa",
- "cy": "Dawns"
+ "cy": "Dawns",
+ "cs": "Tanec"
}
},
{
@@ -403,7 +406,8 @@
"en": "Darts",
"de": "Dart",
"ca": "Dards",
- "cy": "Dartiau"
+ "cy": "Dartiau",
+ "cs": "Šipky"
}
},
{
@@ -419,7 +423,8 @@
"then": {
"en": "Greyhound racing",
"de": "Windhundrennen",
- "ca": "Cursa de llebrers"
+ "ca": "Cursa de llebrers",
+ "cs": "Závody chrtů"
}
},
{
@@ -427,7 +432,8 @@
"then": {
"en": "Dragon Boat",
"de": "Drachenboot",
- "ca": "Bot dragó"
+ "ca": "Bot dragó",
+ "cs": "Dračí lodě"
}
},
{
@@ -436,7 +442,8 @@
"en": "Equestrianism",
"de": "Reitsport",
"ca": "Hípica",
- "cy": "Marchogaeth"
+ "cy": "Marchogaeth",
+ "cs": "Jezdectví"
}
},
{
@@ -445,7 +452,8 @@
"en": "Fencing",
"de": "Fechten",
"ca": "Esgrima",
- "cy": "Ffensio"
+ "cy": "Ffensio",
+ "cs": "Šerm"
}
},
{
@@ -478,7 +486,8 @@
"then": {
"en": "Floorball",
"de": "Unihockey",
- "ca": "Hoquei pista"
+ "ca": "Hoquei pista",
+ "cs": "Florbal"
}
},
{
@@ -494,7 +503,8 @@
"then": {
"en": "Paragliding",
"de": "Gleitschirmfliegen",
- "ca": "Parapent"
+ "ca": "Parapent",
+ "cs": "Paragliding"
}
},
{
@@ -503,7 +513,8 @@
"en": "Futsal",
"de": "Hallenfußball",
"ca": "Futbol sala",
- "cy": "Futsal"
+ "cy": "Futsal",
+ "cs": "Futsal"
}
},
{
@@ -528,7 +539,8 @@
"en": "Golf",
"de": "Golf",
"ca": "Golf",
- "cy": "Golff"
+ "cy": "Golff",
+ "cs": "Golf"
}
},
{
@@ -537,7 +549,8 @@
"en": "Gymnastics",
"de": "Turnen",
"ca": "Gimnàstica",
- "cy": "Gymnasteg"
+ "cy": "Gymnasteg",
+ "cs": "Gymnastika"
}
},
{
@@ -545,7 +558,8 @@
"then": {
"en": "Handball",
"de": "Handball",
- "ca": "Handbol"
+ "ca": "Handbol",
+ "cs": "Házená"
}
},
{
@@ -669,7 +683,8 @@
"en": "Lacrosse",
"de": "Lacrosse",
"ca": "Lacrosse",
- "cy": "Lacrosse"
+ "cy": "Lacrosse",
+ "cs": "Lakros"
}
},
{
@@ -685,7 +700,8 @@
"then": {
"en": "Martial arts",
"de": "Kampfsport",
- "ca": "Arts marcials"
+ "ca": "Arts marcials",
+ "cs": "Bojová umění"
}
},
{
@@ -693,7 +709,8 @@
"then": {
"en": "Miniature golf",
"de": "Minigolf",
- "ca": "Golf en miniatura"
+ "ca": "Golf en miniatura",
+ "cs": "Minigolf"
}
},
{
@@ -701,7 +718,8 @@
"then": {
"en": "Radio-controlled aircraft",
"de": "Modellflug",
- "ca": "Avions controlats per ràdio"
+ "ca": "Avions controlats per ràdio",
+ "cs": "RC létání"
}
},
{
@@ -709,7 +727,8 @@
"then": {
"en": "Motocross",
"de": "Motocross",
- "ca": "Motocròs"
+ "ca": "Motocròs",
+ "cs": "Motokros"
}
},
{
@@ -717,7 +736,8 @@
"then": {
"en": "Motorsport",
"de": "Motorsport",
- "ca": "Esport de motor"
+ "ca": "Esport de motor",
+ "cs": "Motorsport"
}
},
{
@@ -725,7 +745,8 @@
"then": {
"en": "Multiple kind of sports",
"de": "Viele verschiedene Sportarten",
- "ca": "Múltiples tipus d'esport"
+ "ca": "Múltiples tipus d'esport",
+ "cs": "Více druhů sportů"
}
},
{
@@ -749,7 +770,8 @@
"then": {
"en": "Orienteering",
"de": "Orientierungslauf",
- "ca": "Orientació"
+ "ca": "Orientació",
+ "cs": "Orientační běh"
}
},
{
@@ -766,7 +788,8 @@
"en": "Padel",
"de": "Padel-Tennis",
"ca": "Pàdel",
- "cy": "Padel"
+ "cy": "Padel",
+ "cs": "Padel"
}
},
{
@@ -782,7 +805,8 @@
"then": {
"en": "Parachuting",
"de": "Fallschirmspringen",
- "ca": "Paracaigudisme"
+ "ca": "Paracaigudisme",
+ "cs": "Parašutismus"
}
},
{
@@ -859,7 +883,8 @@
"then": {
"en": "Roller skating",
"de": "Rollschuhlaufen",
- "ca": "Patinatge sobre rodes"
+ "ca": "Patinatge sobre rodes",
+ "cs": "Kolečkové brusle"
}
},
{
@@ -868,7 +893,8 @@
"en": "Rowing",
"de": "Rudern",
"ca": "Rem",
- "cy": "Rhwyfo"
+ "cy": "Rhwyfo",
+ "cs": "Veslování"
}
},
{
diff --git a/assets/layers/tactile_map/tactile_map.json b/assets/layers/tactile_map/tactile_map.json
index 07d0507af0..89d1ef1b44 100644
--- a/assets/layers/tactile_map/tactile_map.json
+++ b/assets/layers/tactile_map/tactile_map.json
@@ -74,7 +74,8 @@
"render": {
"en": "Description: {blind:description:en}.",
"de": "Beschreibung: {blind:description:en}.",
- "ca": "Descripció: {blind:description:en}."
+ "ca": "Descripció: {blind:description:en}.",
+ "cs": "Popis: {blind:description:en}."
}
},
{
diff --git a/assets/layers/usersettings/usersettings.json b/assets/layers/usersettings/usersettings.json
index 09fb17d3f2..ff58c0a479 100644
--- a/assets/layers/usersettings/usersettings.json
+++ b/assets/layers/usersettings/usersettings.json
@@ -1167,13 +1167,15 @@
"if": "mapcomplete-reviews-allowed=yes",
"alsoShowIf": "mapcomplete-reviews-allowed=",
"then": {
- "en": "Show reviews by default, except in sensitive themes (where we'll ask per feature)"
+ "en": "Show reviews by default, except in sensitive themes (where we'll ask per feature)",
+ "ca": "Mostra les ressenyes de manera predeterminada, excepte en temes sensibles (on demanarem per element)"
}
},
{
"if": "mapcomplete-reviews-allowed=ask",
"then": {
- "en": "Always ask before loading"
+ "en": "Always ask before loading",
+ "ca": "Sempre pregunta abans de descarregar"
}
},
{
diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json
index f7f0dd3862..c10cb046e4 100644
--- a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json
@@ -480,21 +480,24 @@
{
"question": {
"en": "All platforms",
- "cs": "Všechny platformy"
+ "cs": "Všechny platformy",
+ "de": "Alle Plattformen"
},
"quesiton": "All platforms"
},
{
"question": {
"en": "Made with Android",
- "cs": "Vytvořeno s Androidem"
+ "cs": "Vytvořeno s Androidem",
+ "de": "Mit Android erstellt"
},
"osmTags": "android=yes"
},
{
"question": {
"en": "Made on the web",
- "cs": "Vytvořeno na webu"
+ "cs": "Vytvořeno na webu",
+ "de": "Im Internet erstellt"
},
"osmTags": "android="
}
diff --git a/assets/themes/scouting/scouting.json b/assets/themes/scouting/scouting.json
index c2b0e710ee..6579bb901b 100644
--- a/assets/themes/scouting/scouting.json
+++ b/assets/themes/scouting/scouting.json
@@ -27,7 +27,7 @@
"=presets": [],
"source": {
"=osmTags": {
- "or":[
+ "or": [
"leisure=summer_camp",
{
"and": [
diff --git a/langs/cs.json b/langs/cs.json
index 0abe3b7101..30f7c8d0f2 100644
--- a/langs/cs.json
+++ b/langs/cs.json
@@ -723,6 +723,10 @@
"typeTitle": "To je {title}"
},
"privacy": {
+ "browsingHistoryIntro": "MapComplete uloží, která témata a místa jste v minulosti navštívili, abyste se k nim mohli rychle dostat zpět. Pokud nejste přihlášeni, uloží se na vašem zařízení. Pokud přihlášeni jste, budou synchronizovány do OpenStreetMap, takže je budete mít k dispozici i na dalších zařízeních.",
+ "browsingHistoryLoggedIn": "Vaše aktuální nastavení jsou:",
+ "browsingHistoryNotLoggedIn": "Pro změnu svých nastavení se přihlašte",
+ "browsingHistoryTitle": "Historie procházení",
"editingIntro": "Když v mapě provedete změnu, tato změna se zaznamená na OpenStreetMap a je veřejně dostupná komukoli. Sada změn provedená pomocí MapComplete obsahuje následující data:",
"editingOutro": "Viz zásady ochrany osobních údajů na OpenStreetMap.org pro podrobné informace. Rádi bychom vám připomněli, že při registraci můžete použít smyšlené jméno.",
"editingTitle": "Při provádění změn",
diff --git a/langs/de.json b/langs/de.json
index 3332f616c6..418de370df 100644
--- a/langs/de.json
+++ b/langs/de.json
@@ -723,6 +723,10 @@
"typeTitle": "Dies ist {title}"
},
"privacy": {
+ "browsingHistoryIntro": "MapComplete speichert, welche Themen und Orte du zuvor besucht hast, damit du schnell darauf zurückgreifen kannst. Wenn du nicht angemeldet bist, wird dies auf deinem Gerät gespeichert. Wenn du angemeldet bist, kann dies mit OpenStreetMap synchronisiert werden, sodass du deinen Verlauf auch auf anderen Geräten nutzen kannst.",
+ "browsingHistoryLoggedIn": "Deine aktuellen Einstellungen sind:",
+ "browsingHistoryNotLoggedIn": "Melde dich an, um deine Einstellungen zu ändern",
+ "browsingHistoryTitle": "Browserverlauf",
"editingIntro": "Ihre Änderungen werden auf OpenStreetMap gespeichert und sind öffentlich zugänglich. Ein mit MapComplete erstellter Änderungssatz enthält folgende Daten:",
"editingOutro": "Ausführliche Informationen finden Sie in den Datenschutzbestimmungen auf OpenStreetMap.org. Wir möchten Sie daran erinnern, dass Sie zur Anmeldung einen fiktiven Namen verwenden können.",
"editingTitle": "Ihre Änderungen",
diff --git a/langs/layers/ca.json b/langs/layers/ca.json
index 41646be4f7..364df25142 100644
--- a/langs/layers/ca.json
+++ b/langs/layers/ca.json
@@ -2161,6 +2161,24 @@
"13": {
"then": "Arquitectura victoriana"
},
+ "14": {
+ "then": "Historicisme"
+ },
+ "15": {
+ "then": "Arquitectura Neoromànica"
+ },
+ "16": {
+ "then": "Arquitectura neobizantina"
+ },
+ "28": {
+ "then": "Estil internacional"
+ },
+ "3": {
+ "then": "Arquitectura gòtica"
+ },
+ "30": {
+ "then": "Arquitectura stalinista"
+ },
"31": {
"then": "Arquitectura brutalista"
},
@@ -4373,6 +4391,15 @@
},
"defibrillator": {
"description": "Una capa que mostra desfibril·ladors que es poden utilitzar en cas d'emergència. Conté desfibril·ladors públics, però també desfibril·ladors que poden necessitar de personal per agafar el dispositiu",
+ "filter": {
+ "5": {
+ "options": {
+ "0": {
+ "question": "Accés o horaris d'accessibilitat desconeguts"
+ }
+ }
+ }
+ },
"name": "Desfibril·ladors",
"presets": {
"0": {
@@ -9766,7 +9793,7 @@
},
"tagRenderings": {
"capacity": {
- "question": "Quants alumnes poden matricular-se com a màxim a aquesta escola?",
+ "question": "Quants alumnes, com a màxim, poden matricular-se en aquesta escola?",
"render": "A aquesta escola poden inscriure's com a màxim {capacity} estudiants"
},
"education-level-belgium": {
@@ -9942,6 +9969,33 @@
}
},
"question": "Quin tipus de necessitats especials es donen aquí?"
+ },
+ "uniform": {
+ "mappings": {
+ "0": {
+ "then": "Els estudiants han de portar un uniforme, que es descriu àmpliament"
+ },
+ "1": {
+ "then": "Els alumnes han de portar roba d'una combinació de colors específica"
+ },
+ "2": {
+ "then": "No hi ha cap codi de vestimenta formal, els estudiants poden venir amb roba casual com samarreta, texans,..."
+ },
+ "3": {
+ "then": "Els braços han d'estar coberts per roba"
+ },
+ "4": {
+ "then": "Els genolls han d'estar coberts per roba"
+ },
+ "5": {
+ "then": "Les cames han d'estar cobertes per roba"
+ },
+ "6": {
+ "then": "El melic ha d'estar cobert per roba"
+ }
+ },
+ "question": "Els estudiants han de dur uniforme o seguir un codi de vestimenta?",
+ "render": "{dress_code}"
}
},
"title": {
@@ -13029,6 +13083,16 @@
}
}
},
+ "mangrove-reviews-allowed": {
+ "mappings": {
+ "1": {
+ "then": "Mostra les ressenyes de manera predeterminada, excepte en temes sensibles (on demanarem per element)"
+ },
+ "2": {
+ "then": "Sempre pregunta abans de descarregar"
+ }
+ }
+ },
"more_privacy": {
"mappings": {
"0": {
diff --git a/langs/layers/cs.json b/langs/layers/cs.json
index 8411a69b9f..03d143ddea 100644
--- a/langs/layers/cs.json
+++ b/langs/layers/cs.json
@@ -2964,6 +2964,13 @@
"question": "Kdo je oprávněn používat tuto nabíjecí stanici?",
"render": "Přístup je {access}"
},
+ "app-name": {
+ "freeform": {
+ "placeholder": "Název aplikace"
+ },
+ "question": "Jaký je název aplikace používané pro platby?",
+ "render": "Platbu lze provést pomocí aplikace {payment:app}"
+ },
"capacity": {
"question": "Kolik vozidel tu lze současně nabíjet?",
"render": "Současně tu lze nabíjet {capacity} vozidel"
@@ -9236,8 +9243,25 @@
"then": "Povrch je zpevněný"
}
},
+ "question": "Jaký povrch má tato cesta?",
"render": "Povrch je {surface}"
}
+ },
+ "title": {
+ "mappings": {
+ "1": {
+ "then": "Stezka pro chodce"
+ },
+ "2": {
+ "then": "Stezka pro cyklisty"
+ },
+ "3": {
+ "then": "Pěší zóna"
+ },
+ "4": {
+ "then": "Obytná zóna"
+ }
+ }
}
},
"souvenir_note": {
@@ -9458,6 +9482,90 @@
"title": "sportovní centra"
}
},
+ "tagRenderings": {
+ "sport_centre-sport": {
+ "mappings": {
+ "35": {
+ "then": "Tanec"
+ },
+ "36": {
+ "then": "Šipky"
+ },
+ "38": {
+ "then": "Závody chrtů"
+ },
+ "39": {
+ "then": "Dračí lodě"
+ },
+ "4": {
+ "then": "Aikido"
+ },
+ "40": {
+ "then": "Jezdectví"
+ },
+ "41": {
+ "then": "Šerm"
+ },
+ "45": {
+ "then": "Florbal"
+ },
+ "47": {
+ "then": "Paragliding"
+ },
+ "48": {
+ "then": "Futsal"
+ },
+ "5": {
+ "then": "Lukostřelba"
+ },
+ "51": {
+ "then": "Golf"
+ },
+ "52": {
+ "then": "Gymnastika"
+ },
+ "53": {
+ "then": "Házená"
+ },
+ "68": {
+ "then": "Lakros"
+ },
+ "70": {
+ "then": "Bojová umění"
+ },
+ "71": {
+ "then": "Minigolf"
+ },
+ "72": {
+ "then": "RC létání"
+ },
+ "73": {
+ "then": "Motokros"
+ },
+ "74": {
+ "then": "Motorsport"
+ },
+ "75": {
+ "then": "Více druhů sportů"
+ },
+ "78": {
+ "then": "Orientační běh"
+ },
+ "80": {
+ "then": "Padel"
+ },
+ "82": {
+ "then": "Parašutismus"
+ },
+ "91": {
+ "then": "Kolečkové brusle"
+ },
+ "92": {
+ "then": "Veslování"
+ }
+ }
+ }
+ },
"title": {
"render": "Sportovní centrum"
}
@@ -9840,6 +9948,13 @@
"render": "Bezpečnostní kamera"
}
},
+ "tactile_map": {
+ "tagRenderings": {
+ "description": {
+ "render": "Popis: {blind:description:en}."
+ }
+ }
+ },
"tertiary_education": {
"name": "Vysoké školy a univerzity",
"presets": {
diff --git a/langs/themes/de.json b/langs/themes/de.json
index 8ade8ff59c..988fd937e5 100644
--- a/langs/themes/de.json
+++ b/langs/themes/de.json
@@ -731,6 +731,19 @@
}
}
},
+ "11": {
+ "options": {
+ "0": {
+ "question": "Alle Plattformen"
+ },
+ "1": {
+ "question": "Mit Android erstellt"
+ },
+ "2": {
+ "question": "Im Internet erstellt"
+ }
+ }
+ },
"2": {
"options": {
"0": {
diff --git a/src/Logic/Tags/TagUtils.ts b/src/Logic/Tags/TagUtils.ts
index aa92c24bd4..2f5506b96f 100644
--- a/src/Logic/Tags/TagUtils.ts
+++ b/src/Logic/Tags/TagUtils.ts
@@ -353,6 +353,7 @@ export class TagUtils {
/**
* Given multiple tagsfilters which can be used as answer, will take the tags with the same keys together as set.
+ * The result must be interpreted as 'and'
*
* @see MatchesMultiAnswer to do the reverse
*
@@ -369,10 +370,10 @@ export class TagUtils {
* and: ["x=b", "y=2"]
* }
* ]})
- * TagUtils.FlattenMultiAnswer([tag]) // => TagUtils.Tag({and:["x=a;b", "y=0;1;2;3"] })
+ * TagUtils.FlattenMultiAnswer([tag]) // => [new Tag("x","a;b"),new Tag("y","0;1;2;3")]
*
- * TagUtils.FlattenMultiAnswer(([new Tag("x","y"), new Tag("a","b")])) // => new And([new Tag("x","y"), new Tag("a","b")])
- * TagUtils.FlattenMultiAnswer(([new Tag("x","")])) // => new And([new Tag("x","")])
+ * TagUtils.FlattenMultiAnswer(([new Tag("x","y"), new Tag("a","b")])) // => [new Tag("x","y"), new Tag("a","b")]
+ * TagUtils.FlattenMultiAnswer(([new Tag("x","")])) // => [new Tag("x","")]
*/
static FlattenMultiAnswer(tagsFilters: UploadableTag[]): UploadableTag[] {
if (tagsFilters === undefined) {
diff --git a/src/Models/ThemeConfig/TagRenderingConfig.ts b/src/Models/ThemeConfig/TagRenderingConfig.ts
index 8751e77381..3d083299f7 100644
--- a/src/Models/ThemeConfig/TagRenderingConfig.ts
+++ b/src/Models/ThemeConfig/TagRenderingConfig.ts
@@ -686,7 +686,8 @@ export default class TagRenderingConfig {
}
/**
- * Given a value for the freeform key and an overview of the selected mappings, construct the correct tagsFilter to apply
+ * Given a value for the freeform key and an overview of the selected mappings, construct the correct tagsFilter to apply.
+ * Result should be interpreted as "and"
*
* const config = new TagRenderingConfig({"id":"bookcase-booktypes","render":{"en":"This place mostly serves {books}" },
* "question":{"en":"What kind of books can be found in this public bookcase?"},
@@ -696,17 +697,17 @@ export default class TagRenderingConfig {
* "mappings":[{"if":"books=children","then":"Mostly children books"},
* {"if":"books=adults","then": "Mostly books for adults"}]}
* , "testcase")
- * config.constructChangeSpecification(undefined, undefined, [false, true, false], {amenity: "public_bookcase"}) // => new And([new Tag("books","adults")])
+ * config.constructChangeSpecification(undefined, undefined, [false, true, false], {amenity: "public_bookcase"}) // => [new Tag("books","adults")]
*
* const config = new TagRenderingConfig({"id":"capacity", "render": "Fits {capcity} books",freeform: {"key":"capacity",type:"pnat"} })
* config.constructChangeSpecification("", undefined, undefined, {}) // => undefined
- * config.constructChangeSpecification("5", undefined, undefined, {}).optimize() // => new Tag("capacity", "5")
+ * config.constructChangeSpecification("5", undefined, undefined, {}).optimize() // => [new Tag("capacity", "5")]
*
- * // Should pick a mapping, even if freeform is used
+ * // Should pick a mapping, even if freeform is usedconstructChange
* const config = new TagRenderingConfig({"id": "shop-types", render: "Shop type is {shop}", freeform: {key: "shop", addExtraTags:["fixme=freeform shop type used"]}, mappings:[{if: "shop=second_hand", then: "Second hand shop"}]})
- * config.constructChangeSpecification("freeform", 1, undefined, {}).asHumanString(false, false, {}) // => "shop=freeform & fixme=freeform shop type used"
- * config.constructChangeSpecification("freeform", undefined, undefined, {}).asHumanString(false, false, {}) // => "shop=freeform & fixme=freeform shop type used"
- * config.constructChangeSpecification("second_hand", 1, undefined, {}).asHumanString(false, false, {}) // => "shop=second_hand"
+ * config.constructChangeSpecification("freeform", 1, undefined, {}).asHumanString(false, false, {}) // => [new Tag("shop","freeform",new Tag("fixme","freeform shop type used")]
+ * config.constructChangeSpecification("freeform", undefined, undefined, {}) // => [new Tag("shop","freeform), new Tag("fixme","freeform shop type used")]
+ * config.constructChangeSpecification("second_hand", 1, undefined, {}) // => [new Tag("shop","second_hand")]
*
*
* const config = new TagRenderingConfig({id: "oh", render: "{opening_hours}", question: {"en":"When open?"}, freeform: {key: "opening_hours"},
@@ -716,11 +717,11 @@ export default class TagRenderingConfig {
* },
* "hideInAnswer": true}] }
* const tags = config.constructChangeSpecification("Tu-Fr 05:30-09:30", undefined, undefined, { }}
- * tags // =>new And([ new Tag("opening_hours", "Tu-Fr 05:30-09:30")])
+ * tags // => [ new Tag("opening_hours", "Tu-Fr 05:30-09:30")]
*
* const config = new TagRenderingConfig({"id": "charge", render: "One tube costs {charge}", freeform: {key: "charge", postfixDistinguished: "bicycle_tube"]}, })
* const tags = config.constructChangeSpecification("€5", undefined, undefined, {vending: "books;bicycle_tubes" charge: "€42/book"})
- * tags // =>new And([ new Tag("charge", "€5/bicycle_tube; €42/book")])
+ * tags // => [ new Tag("charge", "€5/bicycle_tube; €42/book")]
*
*
* @param freeformValue The freeform value which will be applied as 'freeform.key'. Ignored if 'freeform.key' is not set