From a6501e84322bdfa1582dd3d6a6c65e71c48d4e58 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Fri, 18 Oct 2024 21:04:58 +0000
Subject: [PATCH 01/37] Translated using Weblate (Ukrainian)
Currently translated at 8.2% (315 of 3820 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/uk/
---
langs/layers/uk.json | 211 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 211 insertions(+)
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index 241f937d7..98b4f01bf 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -191,6 +191,18 @@
},
"11": {
"then": "Це кахельна плитка - реклама намальована на плитці"
+ },
+ "3": {
+ "then": "Це прапор"
+ },
+ "4": {
+ "then": "Це скринька для плакатів"
+ },
+ "5": {
+ "then": "Це екран"
+ },
+ "6": {
+ "then": "Це скульптура"
}
}
}
@@ -359,10 +371,31 @@
"then": "У цьому веломагазині раніше видавали велосипеди напрокат, але більше не видають"
}
}
+ },
+ "presets": {
+ "0": {
+ "description": "Магазин, який спеціалізується на прокаті велосипедів",
+ "title": "пункт прокату велосипедів"
+ }
+ },
+ "tagRenderings": {
+ "bicycle_rental_type": {
+ "mappings": {
+ "0": {
+ "then": "Це магазин, основним напрямком якого є прокат велосипедів"
+ },
+ "2": {
+ "then": "Це магазин, який продає або ремонтує велосипеди, а також здає їх напрокат"
+ }
+ }
+ }
}
},
"bike_parking": {
"tagRenderings": {
+ "operator_phone": {
+ "question": "Який номер телефону оператора цієї велопарковки?"
+ },
"operator_website": {
"question": "Яка адреса веб-сайту оператора цієї велопарковки?"
}
@@ -370,6 +403,9 @@
},
"bike_repair_station": {
"tagRenderings": {
+ "bike_repair_station-phone": {
+ "question": "Який номер телефону супровідника?"
+ },
"send_email_about_broken_pump": {
"render": {
"special": {
@@ -379,6 +415,15 @@
}
}
},
+ "bike_shop": {
+ "title": {
+ "mappings": {
+ "2": {
+ "then": "Пункт прокату велосипедів {name}"
+ }
+ }
+ }
+ },
"cafe_pub": {
"deletion": {
"extraDeleteReasons": {
@@ -414,6 +459,33 @@
}
}
},
+ "charging_station": {
+ "tagRenderings": {
+ "Network": {
+ "mappings": {
+ "0": {
+ "then": "Не є частиною більшої мережі, наприклад, тому що зарядна станція обслуговується місцевим підприємством"
+ },
+ "1": {
+ "then": "Не є частиною великої мережі"
+ }
+ },
+ "question": "Чи є ця зарядна станція частиною мережі?",
+ "render": "Частина мережі {network}"
+ }
+ }
+ },
+ "clock": {
+ "tagRenderings": {
+ "support": {
+ "mappings": {
+ "2": {
+ "then": "Цей годинник є частиною білборду"
+ }
+ }
+ }
+ }
+ },
"crossings": {
"tagRenderings": {
"crossing-vibration": {
@@ -421,6 +493,25 @@
}
}
},
+ "dentist": {
+ "tagRenderings": {
+ "name": {
+ "question": "Як звуть цього стоматолога?",
+ "render": "Цього стоматолога звуть {name}"
+ }
+ },
+ "title": {
+ "render": "Стоматологічний кабінет {name}"
+ }
+ },
+ "doctors": {
+ "tagRenderings": {
+ "name": {
+ "question": "Як називається ця лікарня?",
+ "render": "Ця лікарня називається {name}"
+ }
+ }
+ },
"drinking_water": {
"deletion": {
"nonDeleteMappings": {
@@ -433,6 +524,14 @@
}
}
},
+ "dumpstations": {
+ "tagRenderings": {
+ "dumpstations-network": {
+ "question": "Частиною якої мережі є цей заклад? (пропустіть, якщо немає)",
+ "render": "Ця станція є частиною мережі {мережа}"
+ }
+ }
+ },
"elongated_coin": {
"tagRenderings": {
"indoor": {
@@ -545,6 +644,61 @@
}
}
},
+ "playground": {
+ "tagRenderings": {
+ "playground-phone": {
+ "question": "Який номер телефону доглядача дитячого майданчика?"
+ }
+ }
+ },
+ "playground_equipment": {
+ "tagRenderings": {
+ "type": {
+ "mappings": {
+ "16": {
+ "then": "Це міст (або як окремий пристрій, або як частина більшої конструкції)"
+ }
+ }
+ }
+ }
+ },
+ "postoffices": {
+ "tagRenderings": {
+ "opening_hours": {
+ "override": {
+ "question": "Які години роботи цього поштового відділення?"
+ }
+ },
+ "partner-brand": {
+ "mappings": {
+ "0": {
+ "then": "У цьому приміщенні надаються послуги для DHL"
+ },
+ "1": {
+ "then": "У цій локації надаються послуги для DPD"
+ },
+ "2": {
+ "then": "Ця локація пропонує послуги для GLS"
+ },
+ "3": {
+ "then": "У цьому місці надаються послуги для UPS"
+ },
+ "4": {
+ "then": "Це відділення DHL Paketshop"
+ },
+ "5": {
+ "then": "Ця локація є магазином Hermes PaketShop"
+ },
+ "6": {
+ "then": "Це місце є PostNL-пунктом"
+ },
+ "7": {
+ "then": "Ця локація пропонує послуги для bpost"
+ }
+ }
+ }
+ }
+ },
"questions": {
"tagRenderings": {
"internet-ssid": {
@@ -553,6 +707,9 @@
"opening_hours": {
"question": "Які години роботи {title()}?"
},
+ "phone": {
+ "question": "Який номер телефону {title()}?"
+ },
"single_level": {
"mappings": {
"0": {
@@ -704,6 +861,44 @@
}
}
},
+ "shops": {
+ "tagRenderings": {
+ "bicycle_rental": {
+ "mappings": {
+ "0": {
+ "then": "У цьому магазині можна взяти напрокат велосипеди"
+ },
+ "1": {
+ "then": "Цей магазин не дає велосипеди напрокат"
+ }
+ },
+ "question": "Чи дає цей магазин велосипеди напрокат?",
+ "questionHint": "Йдеться про прокат для туристів, яким потрібен велосипед. Деякі майстерні з ремонту велосипедів пропонують велосипед на час ремонту, але це не вважається прокатом в даному випадку."
+ },
+ "brand": {
+ "mappings": {
+ "0": {
+ "then": "Цей магазин не має певного бренду, він не є частиною великої мережі"
+ }
+ },
+ "question": "Яка марка цього магазину?"
+ },
+ "id_presets.shop_types": {
+ "override": {
+ "+mappings": {
+ "0": {
+ "then": "Пункт прокату велосипедів"
+ }
+ },
+ "question": "Що це за магазин?"
+ }
+ },
+ "shops-name": {
+ "question": "Як називається цей магазин?",
+ "render": "Цей магазин називається {name}"
+ }
+ }
+ },
"speed_display": {
"tagRenderings": {
"inscription": {
@@ -715,6 +910,13 @@
}
}
},
+ "sport_pitch": {
+ "tagRenderings": {
+ "sport_pitch-phone": {
+ "question": "Який номер телефону оператора?"
+ }
+ }
+ },
"toilet": {
"tagRenderings": {
"menstrual_products_location": {
@@ -933,6 +1135,15 @@
"render": "Налаштування"
}
},
+ "vending_machine": {
+ "tagRenderings": {
+ "phone": {
+ "override": {
+ "question": "Який номер телефону оператора цього торгового автомата?"
+ }
+ }
+ }
+ },
"waste_disposal": {
"tagRenderings": {
"access": {
From 710603a0dd0fbcc12b6fbc91f2cfff5e36b34e47 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Sat, 19 Oct 2024 15:35:43 +0000
Subject: [PATCH 02/37] Translated using Weblate (Ukrainian)
Currently translated at 8.4% (321 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/uk/
---
langs/layers/uk.json | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index 98b4f01bf..bd89afbfa 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -617,6 +617,25 @@
}
}
},
+ "hospital": {
+ "tagRenderings": {
+ "inpatient": {
+ "mappings": {
+ "0": {
+ "then": "Це клініка - пацієнти не можуть залишатися на ніч"
+ },
+ "1": {
+ "then": "Це лікарня - пацієнти можуть перебувати тут кілька днів"
+ }
+ },
+ "question": "Чи приймає цей заклад стаціонарних пацієнтів?"
+ },
+ "name": {
+ "question": "Як називається ця лікарня?",
+ "render": "Ця лікарня називається {name}"
+ }
+ }
+ },
"memorial": {
"tagRenderings": {
"inscription": {
@@ -710,6 +729,11 @@
"phone": {
"question": "Який номер телефону {title()}?"
},
+ "qr_code": {
+ "render": {
+ "after": "Відскануйте цей код, щоб відкрити це місце на іншому пристрої"
+ }
+ },
"single_level": {
"mappings": {
"0": {
@@ -1188,4 +1212,4 @@
}
}
}
-}
\ No newline at end of file
+}
From 42adffa4792e98ad5e56c05c413f2c70b014349b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?=
Date: Sun, 20 Oct 2024 18:15:20 +0000
Subject: [PATCH 03/37] Translated using Weblate (Czech)
Currently translated at 77.3% (2956 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/cs/
---
langs/layers/cs.json | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/langs/layers/cs.json b/langs/layers/cs.json
index 9f7157c6e..606b9b923 100644
--- a/langs/layers/cs.json
+++ b/langs/layers/cs.json
@@ -541,6 +541,9 @@
"mappings": {
"0": {
"then": "Toto dílo slouží také jako památník"
+ },
+ "1": {
+ "then": "Toto umělecké dílo neslouží jako památník"
}
},
"question": "Slouží toto dílo jako památník?"
@@ -1216,7 +1219,19 @@
"freeform": {
"placeholder": "Název započítávané lokality"
},
- "question": "Jak se jmenuje započítávaná lokalita?"
+ "question": "Jak se jmenuje započítávaná lokalita?",
+ "render": "Název započítávaného místa: {name}"
+ },
+ "ref": {
+ "freeform": {
+ "placeholder": "Referenční číslo počítadla"
+ },
+ "mappings": {
+ "0": {
+ "then": "Toto počítadlo nemá referenční číslo"
+ }
+ },
+ "question": "Jaké je referenční číslo tohoto počítadla?"
}
}
},
@@ -5385,7 +5400,7 @@
"then": "Mapa zobrazující vesnici nebo město"
},
"3": {
- "then": " Mapa města"
+ "then": "Mapa města"
},
"4": {
"then": "Mapa celého regionu s několika městy a vesnicemi"
@@ -7637,7 +7652,7 @@
"name": "Obchod",
"presets": {
"0": {
- "description": "Přidat nový obchod",
+ "description": "Později můžete zadat, co tento obchod prodává.",
"title": "obchod"
}
},
@@ -8685,16 +8700,16 @@
"toilet-changing_table:location": {
"mappings": {
"0": {
- "then": "Přebalovací pult je na dámské toaletě. "
+ "then": "Přebalovací pult je na dámské toaletě"
},
"1": {
- "then": "Přebalovací pult je na pánské toaletě. "
+ "then": "Přebalovací pult je na pánské toaletě"
},
"2": {
- "then": "Přebalovací pult je na toaletě pro vozíčkáře. "
+ "then": "Přebalovací pult je na toaletě pro vozíčkáře"
},
"3": {
- "then": "Přebalovací pult je ve vyhrazené místnosti. "
+ "then": "Přebalovací pult je ve vyhrazené místnosti"
}
},
"question": "Kde je umístěn přebalovací pult?",
@@ -9398,7 +9413,7 @@
"language_picker": {
"mappings": {
"0": {
- "then": "Jazyk byl nastaven pomocí parametru URL a uživatel jej nemůže nastavit.²"
+ "then": "Jazyk byl nastaven pomocí parametru URL a uživatel jej nemůže nastavit."
}
}
},
@@ -10082,4 +10097,4 @@
"render": "větrná turbína"
}
}
-}
\ No newline at end of file
+}
From 7bf79b9d22280e624c5ed5c38c36703cba954981 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Mon, 21 Oct 2024 20:21:11 +0000
Subject: [PATCH 04/37] Translated using Weblate (Ukrainian)
Currently translated at 8.5% (328 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/uk/
---
langs/layers/uk.json | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index bd89afbfa..a1ed6c277 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -577,6 +577,27 @@
"Name": {
"question": "Як називається цей бізнес?",
"render": "Цей бізнес називається {name}"
+ },
+ "Takeaway": {
+ "mappings": {
+ "0": {
+ "then": "Це бізнес тільки на винос"
+ },
+ "1": {
+ "then": "Тут можна замовити їжу на винос"
+ },
+ "2": {
+ "then": "Замовлення на винос тут неможливе"
+ }
+ },
+ "question": "Чи пропонують тут їжу на винос?"
+ }
+ },
+ "title": {
+ "mappings": {
+ "1": {
+ "then": "Фаст-фуд {name}"
+ }
}
}
},
@@ -636,6 +657,15 @@
}
}
},
+ "last_click": {
+ "pointRendering": {
+ "0": {
+ "label": {
+ "render": "Натисніть тут, щоб додати новий об'єкт"
+ }
+ }
+ }
+ },
"memorial": {
"tagRenderings": {
"inscription": {
@@ -1210,6 +1240,9 @@
},
"question": "Що це за контейнер для сміття?"
}
+ },
+ "title": {
+ "render": "Утилізація відходів"
}
}
}
From 6600ca60c588081bf8005e9c4f193dc9bd0937f4 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Tue, 22 Oct 2024 14:32:42 +0000
Subject: [PATCH 05/37] Translated using Weblate (Ukrainian)
Currently translated at 8.6% (330 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/uk/
---
langs/layers/uk.json | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index a1ed6c277..30c206c4f 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -971,6 +971,14 @@
}
}
},
+ "street_lamps": {
+ "tagRenderings": {
+ "ref": {
+ "question": "Який ідентифікаційний номер цього вуличного ліхтаря?",
+ "render": "Цей вуличний ліхтар має ідентифікаційний номер {ref}"
+ }
+ }
+ },
"toilet": {
"tagRenderings": {
"menstrual_products_location": {
From 9a84aba5f2b1fef7e3cee2b73926448671e76695 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Sat, 19 Oct 2024 10:51:41 +0000
Subject: [PATCH 06/37] Translated using Weblate (Ukrainian)
Currently translated at 39.0% (275 of 705 strings)
Translation: MapComplete/Core
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/uk/
---
langs/uk.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/langs/uk.json b/langs/uk.json
index ac1ac7478..3a03a6f38 100644
--- a/langs/uk.json
+++ b/langs/uk.json
@@ -204,6 +204,7 @@
"noSearch": "Показати всі теми",
"previouslyHiddenTitle": "Раніше відвідані приховані теми"
},
+ "noTagsSelected": "Не вибрано жодного тегу",
"openStreetMapIntro": "Відкрита карта
Кожен може вільно використовувати та редагувати. Єдине місце для зберігання всієї геоінформації. Різні, маленькі, несумісні та застарілі карти ніде не потрібні.
OpenStreetMap це не карта ворога. Дані карти можна використовувати вільно (з зазначенням авторства та публікацією змін цих даних). Кожен може додавати нові дані та виправляти помилки. Цей веб-сайт використовує OpenStreetMap. Звідти надходять усі дані, а ваші відповіді та виправлення використовуються всюди.
Багато людей і програм уже використовують OpenStreetMap: Organic Maps, OsmAnd, а також карти у Facebook, Instagram, Apple-maps і Bing-maps (частково) працюють на OpenStreetMap.
",
"openTheMap": "Відкрити карту",
"openTheMapAtGeolocation": "Наблизьте до свого місцезнаходження",
From 3a18380a810df74cfbb2a71b88ee6956377a4b5b Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Sat, 19 Oct 2024 10:45:39 +0000
Subject: [PATCH 07/37] Translated using Weblate (Ukrainian)
Currently translated at 20.0% (87 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/uk/
---
langs/themes/uk.json | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index f9072856a..e4a5d3bff 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -277,5 +277,9 @@
}
}
}
+ },
+ "healthcare": {
+ "description": "На цій карті показані різні об'єкти, пов'язані з охороною здоров'я",
+ "title": "Охорона здоров'я"
}
}
\ No newline at end of file
From 2f212b79d2ca25eb90f1e422c707bbcc6040721e Mon Sep 17 00:00:00 2001
From: Teodor11
Date: Sun, 20 Oct 2024 10:39:45 +0000
Subject: [PATCH 08/37] Translated using Weblate (Polish)
Currently translated at 75.8% (329 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/pl/
---
langs/themes/pl.json | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/langs/themes/pl.json b/langs/themes/pl.json
index 347bf3fdd..bbff5ecde 100644
--- a/langs/themes/pl.json
+++ b/langs/themes/pl.json
@@ -97,6 +97,7 @@
"title": "Ławki"
},
"bicycle_parkings": {
+ "description": "Mapa pokazująca wszystkie typy parkingów dla rowerów",
"title": "Parkingi dla rowerów"
},
"bicycle_rental": {
@@ -154,6 +155,17 @@
"shortDescription": "Światowa mapa stacji ładowania",
"title": "Stacje ładowania"
},
+ "circular_economy": {
+ "description": "Różne przedmioty, które pomagają ludziom się dzielić, ponownie używać lub poddawać recyklingowi.",
+ "layers": {
+ "5": {
+ "override": {
+ "=name": "Sklepy second-hand"
+ }
+ }
+ },
+ "title": "Gospodarka o obiegu zamkniętym"
+ },
"climbing": {
"description": "Na tej mapie znajdziesz różne możliwości wspinaczki, takie jak sale wspinaczkowe, hale do boulderingu i skały w przyrodzie.",
"descriptionTail": "Mapa wspinaczkowa została pierwotnie stworzona przez Christiana Neumanna. Jeśli masz uwagi lub pytania, skontaktuj się z nim.
< p>Projekt wykorzystuje dane projektu OpenStreetMap.",
@@ -276,6 +288,11 @@
},
"1": {
"name": "węzły",
+ "presets": {
+ "0": {
+ "title": "węzeł rowerowy"
+ }
+ },
"tagRenderings": {
"node-expected_rcn_route_relations": {
"freeform": {
@@ -287,7 +304,9 @@
"node-rxn_ref": {
"freeform": {
"placeholder": "np. 1"
- }
+ },
+ "question": "Jaki jest numer referencyjny tego węzła rowerowego?",
+ "render": "Ten węzeł rowerowy ma numer referencyjny {rcn_ref}"
},
"node-survey:date": {
"override": {
@@ -1035,4 +1054,4 @@
"shortDescription": "Mapa koszy na śmieci",
"title": "Kosz na śmieci"
}
-}
\ No newline at end of file
+}
From 0de9b6f08044282448eb870b784abc93938d7c66 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Sun, 20 Oct 2024 20:55:09 +0000
Subject: [PATCH 09/37] Translated using Weblate (Ukrainian)
Currently translated at 20.5% (89 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/uk/
---
langs/themes/uk.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index e4a5d3bff..5863b1a7c 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -278,8 +278,12 @@
}
}
},
+ "elongated_coin": {
+ "description": "Знайдіть преси для монет, щоб створити власні витягнуті монети.",
+ "title": "Монетні преси"
+ },
"healthcare": {
"description": "На цій карті показані різні об'єкти, пов'язані з охороною здоров'я",
"title": "Охорона здоров'я"
}
-}
\ No newline at end of file
+}
From 9226a08bde151ce64f8ed2139858936f72251c4c Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Mon, 21 Oct 2024 20:28:09 +0000
Subject: [PATCH 10/37] Translated using Weblate (Ukrainian)
Currently translated at 40.2% (284 of 705 strings)
Translation: MapComplete/Core
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/uk/
---
langs/uk.json | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/langs/uk.json b/langs/uk.json
index 3a03a6f38..1cf3758ba 100644
--- a/langs/uk.json
+++ b/langs/uk.json
@@ -190,6 +190,7 @@
"loginWithOpenStreetMap": "Увійдіть за допомогою OpenStreetMap",
"logout": "Вийти з системи",
"menu": {
+ "aboutCurrentThemeTitle": "Про цю карту",
"aboutMapComplete": "Про MapComplete",
"filter": "Фільтр даних",
"moreUtilsTitle": "Дізнайтеся більше",
@@ -248,11 +249,15 @@
"save": "Зберегти",
"screenToSmall": "Відкрийте {theme} в новому вікні",
"search": {
+ "deleteSearchHistory": "Видалити історію місцезнаходжень",
+ "deleteThemeHistory": "Видалити раніше відвідані теми",
"editSearchSyncSettings": "Редагування налаштувань синхронізації",
"editThemeSync": "Редагування налаштувань синхронізації",
"instructions": "Використовуйте рядок пошуку вище для пошуку місцезнаходжень, фільтрів або інших тематичних мап",
+ "locations": "Локації",
"recentThemes": "Нещодавно відвідані карти",
- "recents": "Нещодавно відвідані місця"
+ "recents": "Нещодавно відвідані місця",
+ "search": "Пошук місцезнаходження"
},
"seeIndex": "Дивіться огляд з усіма тематичними картами",
"sharescreen": {
@@ -290,6 +295,7 @@
"title": "Завантажте свій трек на OpenStreetMap.org"
},
"waitingForGeopermission": "Очікуємо вашого дозволу на використання геолокації…",
+ "waitingForLocation": "Пошук вашого поточного місцезнаходження…",
"welcomeBack": "З поверненням!",
"welcomeExplanation": {
"addNew": "Відсутній об'єкт? Використовуйте кнопку внизу ліворуч, щоб додати новий об'єкт.",
@@ -312,7 +318,8 @@
"openLayersPanel": "Відкриває панель фонових шарів",
"selectFavourites": "Відкрийте сторінку обраного",
"selectMapnik": "Встановіть фоновий шар на OpenStreetMap-carto",
- "selectOsmbasedmap": "Встановіть фоновий шар на мапі на основі OpenStreetMap (або вимкніть фоновий растровий шар)"
+ "selectOsmbasedmap": "Встановіть фоновий шар на мапі на основі OpenStreetMap (або вимкніть фоновий растровий шар)",
+ "selectSearch": "Виберіть рядок пошуку, щоб знайти місцезнаходження"
},
"image": {
"addPicture": "Додати фото",
@@ -332,6 +339,10 @@
"importLayer": {
"nearbyImagesIntro": "Зображення поблизу
Наведені нижче зображення є зображеннями з геотегами з різних онлайн-служб. Вони можуть допомогти вам вирішити цю нотатку.{nearby_images(open)}"
},
+ "index": {
+ "intro": "Карти на різні теми, до яких ви можете долучитися",
+ "learnMore": "Дізнатися більше"
+ },
"move": {
"cannotBeMoved": "Цей об'єкт не можна перемістити.",
"inviteToMove": {
@@ -389,4 +400,4 @@
"description": "Години роботи"
}
}
-}
\ No newline at end of file
+}
From 37864760a5c29c1dff47cbd657061e37c644ff72 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Mon, 21 Oct 2024 20:35:27 +0000
Subject: [PATCH 11/37] Translated using Weblate (Ukrainian)
Currently translated at 26.0% (113 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/uk/
---
langs/themes/uk.json | 58 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index 5863b1a7c..ffaf60b76 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -278,12 +278,70 @@
}
}
},
+ "cyclestreets": {
+ "shortDescription": "Карта велодоріжок",
+ "title": "Велодоріжки"
+ },
+ "cyclofix": {
+ "title": "Cyclofix - карта для велосипедистів"
+ },
+ "disaster_response": {
+ "title": "Реагування на стихійні лиха та аварійні служби"
+ },
+ "drinking_water": {
+ "title": "Питна вода"
+ },
+ "education": {
+ "title": "Освіта"
+ },
"elongated_coin": {
"description": "Знайдіть преси для монет, щоб створити власні витягнуті монети.",
"title": "Монетні преси"
},
+ "etymology": {
+ "shortDescription": "Звідки походить топонім?",
+ "title": "Етимологія - на честь чого названо місце?"
+ },
+ "facadegardens": {
+ "shortDescription": "На цій карті показані фасадні сади з фотографіями та корисною інформацією про орієнтацію, сонячне освітлення та типи рослин.",
+ "title": "Фасадні сади"
+ },
+ "fireplace": {
+ "title": "Вогнища та барбекю"
+ },
+ "food": {
+ "description": "Ресторани та фаст-фуд",
+ "title": "Ресторани та фаст-фуд"
+ },
+ "fritures": {
+ "title": "Картопля фрі"
+ },
"healthcare": {
"description": "На цій карті показані різні об'єкти, пов'язані з охороною здоров'я",
"title": "Охорона здоров'я"
+ },
+ "personal": {
+ "description": "Створіть особисту тему на основі всіх доступних шарів усіх тем. Щоб показати деякі дані, відкрийте вибір шару",
+ "title": "Особиста тема"
+ },
+ "playgrounds": {
+ "shortDescription": "Карта з дитячими майданчиками",
+ "title": "Дитячі майданчики"
+ },
+ "shops": {
+ "title": "Магазини"
+ },
+ "sports": {
+ "title": "Спорт"
+ },
+ "surveillance": {
+ "shortDescription": "Камери спостереження та інші засоби спостереження",
+ "title": "Нагляд під наглядом"
+ },
+ "toilets": {
+ "title": "Громадські туалети"
+ },
+ "waste": {
+ "title": "Відходи"
}
}
From 9b2f12e8ab110c3429816473e909bc09647ba32e Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Tue, 22 Oct 2024 14:27:59 +0000
Subject: [PATCH 12/37] Translated using Weblate (Ukrainian)
Currently translated at 40.5% (286 of 705 strings)
Translation: MapComplete/Core
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/uk/
---
langs/uk.json | 2 ++
1 file changed, 2 insertions(+)
diff --git a/langs/uk.json b/langs/uk.json
index 1cf3758ba..da970c9e9 100644
--- a/langs/uk.json
+++ b/langs/uk.json
@@ -202,6 +202,7 @@
"createYourOwnTheme": "Створіть власну тему MapComplete з нуля",
"enterToOpen": "Натисніть enter, щоб відкрити тему",
"hiddenExplanation": "Ці теми доступні лише для тих, хто має посилання. Ви виявили {hidden_discovered} з {total_hidden} прихованих тем.",
+ "noMatchingThemes": "Ніякі теми не відповідають вашим критеріям пошуку",
"noSearch": "Показати всі теми",
"previouslyHiddenTitle": "Раніше відвідані приховані теми"
},
@@ -340,6 +341,7 @@
"nearbyImagesIntro": "Зображення поблизу
Наведені нижче зображення є зображеннями з геотегами з різних онлайн-служб. Вони можуть допомогти вам вирішити цю нотатку.{nearby_images(open)}"
},
"index": {
+ "about": "Про MapComplete",
"intro": "Карти на різні теми, до яких ви можете долучитися",
"learnMore": "Дізнатися більше"
},
From eb0bb8bef40a2fd5837c617637237c6e8d1f9587 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Tue, 22 Oct 2024 14:29:35 +0000
Subject: [PATCH 13/37] Translated using Weblate (Ukrainian)
Currently translated at 28.1% (122 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/uk/
---
langs/themes/uk.json | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index ffaf60b76..2ed107ae1 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -331,9 +331,19 @@
"shops": {
"title": "Магазини"
},
+ "ski": {
+ "title": "Гірськолижні траси та аеродроми"
+ },
+ "sport_pitches": {
+ "shortDescription": "Карта з позначенням спортивних майданчиків",
+ "title": "Спортивні майданчики"
+ },
"sports": {
"title": "Спорт"
},
+ "street_lighting": {
+ "title": "Вуличне освітлення"
+ },
"surveillance": {
"shortDescription": "Камери спостереження та інші засоби спостереження",
"title": "Нагляд під наглядом"
@@ -341,7 +351,18 @@
"toilets": {
"title": "Громадські туалети"
},
+ "transit": {
+ "title": "Автобусні маршрути"
+ },
+ "trees": {
+ "shortDescription": "Нанесіть на карту всі дерева",
+ "title": "Дерева"
+ },
"waste": {
"title": "Відходи"
+ },
+ "waste_basket": {
+ "shortDescription": "Мапа зі сміттєвими кошиками",
+ "title": "Кошики для сміття"
}
}
From d27c38d0e48d653675ffa44bc3812e6f8e05f5f8 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Wed, 23 Oct 2024 22:15:47 +0200
Subject: [PATCH 14/37] Feat: update update script
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 4e04e6ff0..6cefc5e93 100644
--- a/package.json
+++ b/package.json
@@ -141,7 +141,7 @@
"generate:summaryCache": "vite-node scripts/generateSummaryTileCache.ts",
"create:database": "vite-node scripts/osm2pgsql/createNewDatabase.ts",
"delete:database:old": "vite-node scripts/osm2pgsql/deleteOldDbs.ts",
- "upload:panoramax": "vite-node scripts/ImgurToPanoramax.ts"
+ "upload:panoramax": "vite-node scripts/ImgurToPanoramax.ts && josm imgur_to_panoramax.osc"
},
"keywords": [
"OpenStreetMap",
From b08ac021aafa015b4cb5a72c9d82ce8b47ed2556 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Wed, 23 Oct 2024 20:06:43 +0000
Subject: [PATCH 15/37] Translated using Weblate (Ukrainian)
Currently translated at 40.7% (287 of 705 strings)
Translation: MapComplete/Core
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/uk/
---
langs/uk.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/langs/uk.json b/langs/uk.json
index da970c9e9..bd4918e43 100644
--- a/langs/uk.json
+++ b/langs/uk.json
@@ -332,6 +332,9 @@
"upload": {
"failReasons": "Можливо, ви втратили зв'язок з інтернетом",
"failReasonsAdvanced": "Крім того, переконайтеся, що ваш браузер і розширення не блокують сторонні API.",
+ "multiple": {
+ "done": "{count} зображення успішно завантажено. Дякуємо!"
+ },
"one": {
"failed": "Вибачте, ми не змогли завантажити ваше зображення"
}
From 010f79d360c11cf1c42aa27f17dfff0746764530 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Wed, 23 Oct 2024 19:56:39 +0000
Subject: [PATCH 16/37] Translated using Weblate (Ukrainian)
Currently translated at 29.0% (126 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/uk/
---
langs/themes/uk.json | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index 2ed107ae1..1ddff257c 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -324,10 +324,20 @@
"description": "Створіть особисту тему на основі всіх доступних шарів усіх тем. Щоб показати деякі дані, відкрийте вибір шару",
"title": "Особиста тема"
},
+ "pets": {
+ "title": "Ветеринари, собачі парки та інші зручності для домашніх тварин"
+ },
"playgrounds": {
"shortDescription": "Карта з дитячими майданчиками",
"title": "Дитячі майданчики"
},
+ "postboxes": {
+ "shortDescription": "Мапа з позначенням поштових скриньок та поштових відділень",
+ "title": "Поштові скриньки та карта поштових відділень"
+ },
+ "rainbow_crossings": {
+ "title": "Веселкові пішохідні переходи"
+ },
"shops": {
"title": "Магазини"
},
From e70e3c29f8c02031a749f7e619b7a146d2bed16a Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Wed, 23 Oct 2024 20:02:34 +0000
Subject: [PATCH 17/37] Translated using Weblate (Ukrainian)
Currently translated at 8.8% (339 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/uk/
---
langs/layers/uk.json | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index 30c206c4f..1d034e874 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -706,6 +706,9 @@
"mappings": {
"16": {
"then": "Це міст (або як окремий пристрій, або як частина більшої конструкції)"
+ },
+ "19": {
+ "then": "Це притулок для підлітків"
}
}
}
@@ -915,6 +918,34 @@
}
}
},
+ "shelter": {
+ "tagRenderings": {
+ "shelter-type": {
+ "mappings": {
+ "0": {
+ "then": "Це притулок на зупинці громадського транспорту."
+ },
+ "1": {
+ "then": "Це накриття, що захищає від дощу на місці для пікніка."
+ },
+ "2": {
+ "then": "Це альтанка."
+ },
+ "3": {
+ "then": "Це невеликий притулок, призначений насамперед для коротких перерв. Зазвичай знаходиться в горах або вздовж доріг."
+ },
+ "4": {
+ "then": "Це сарай з 3-ма стінами, в першу чергу призначений для кемпінгу."
+ },
+ "5": {
+ "then": "Це павільйон"
+ }
+ },
+ "question": "Що це за притулок?",
+ "render": "Тип притулку: {shelter_type}"
+ }
+ }
+ },
"shops": {
"tagRenderings": {
"bicycle_rental": {
From 1851a176b7499a492d5079bafe977af9a6bc379a Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Wed, 23 Oct 2024 20:18:11 +0000
Subject: [PATCH 18/37] Translated using Weblate (Ukrainian)
Currently translated at 8.8% (339 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/uk/
---
langs/layers/uk.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index 1d034e874..38d3e12b9 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -528,7 +528,7 @@
"tagRenderings": {
"dumpstations-network": {
"question": "Частиною якої мережі є цей заклад? (пропустіть, якщо немає)",
- "render": "Ця станція є частиною мережі {мережа}"
+ "render": "Ця станція є частиною мережі {network}"
}
}
},
From e1be5ec34d7bae85b9ff35e5a5c3b72f4c52fd83 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Thu, 24 Oct 2024 00:56:24 +0200
Subject: [PATCH 19/37] chore: automated housekeeping...
---
Docs/Themes/circular_economy.md | 1 +
Docs/Themes/cyclestreets.md | 1 +
Docs/Themes/cyclofix.md | 1 +
Docs/Themes/disaster_response.md | 1 +
Docs/Themes/drinking_water.md | 1 +
Docs/Themes/education.md | 1 +
Docs/Themes/elongated_coin.md | 1 +
Docs/Themes/etymology.md | 1 +
Docs/Themes/facadegardens.md | 1 +
Docs/Themes/fireplace.md | 1 +
Docs/Themes/food.md | 1 +
Docs/Themes/fritures.md | 1 +
Docs/Themes/healthcare.md | 1 +
Docs/Themes/personal.md | 1 +
Docs/Themes/pets.md | 1 +
Docs/Themes/playgrounds.md | 1 +
Docs/Themes/postboxes.md | 1 +
Docs/Themes/rainbow_crossings.md | 1 +
Docs/Themes/shops.md | 1 +
Docs/Themes/ski.md | 1 +
Docs/Themes/sport_pitches.md | 1 +
Docs/Themes/sports.md | 1 +
Docs/Themes/street_lighting.md | 1 +
Docs/Themes/surveillance.md | 1 +
Docs/Themes/toilets.md | 1 +
Docs/Themes/transit.md | 1 +
Docs/Themes/trees.md | 1 +
Docs/Themes/waste.md | 1 +
Docs/Themes/waste_basket.md | 1 +
Docs/URL_Parameters.md | 54 +++++------
Docs/wikiIndex.txt | 30 +++---
assets/layers/advertising/advertising.json | 12 ++-
assets/layers/artwork/artwork.json | 3 +-
.../bicycle_counter/bicycle_counter.json | 12 ++-
.../layers/bicycle_rental/bicycle_rental.json | 12 ++-
assets/layers/bike_parking/bike_parking.json | 3 +-
.../bike_repair_station.json | 3 +-
assets/layers/bike_shop/bike_shop.json | 3 +-
.../charging_station/charging_station.json | 12 ++-
assets/layers/clock/clock.json | 3 +-
assets/layers/dentist/dentist.json | 9 +-
assets/layers/doctors/doctors.json | 6 +-
assets/layers/dumpstations/dumpstations.json | 6 +-
assets/layers/food/food.json | 15 ++-
assets/layers/hospital/hospital.json | 15 ++-
assets/layers/last_click/last_click.json | 3 +-
assets/layers/map/map.json | 2 +-
assets/layers/playground/playground.json | 3 +-
.../playground_equipment.json | 6 +-
assets/layers/postoffices/postoffices.json | 27 ++++--
assets/layers/questions/questions.json | 6 +-
assets/layers/shelter/shelter.json | 24 +++--
assets/layers/shops/shops.json | 32 ++++---
assets/layers/sport_pitch/sport_pitch.json | 3 +-
assets/layers/street_lamps/street_lamps.json | 6 +-
assets/layers/toilet/toilet.json | 8 +-
assets/layers/usersettings/usersettings.json | 2 +-
.../vending_machine/vending_machine.json | 3 +-
.../layers/waste_disposal/waste_disposal.json | 3 +-
.../bicycle_parkings/bicycle_parkings.json | 3 +-
.../circular_economy/circular_economy.json | 9 +-
assets/themes/cyclenodes/cyclenodes.json | 9 +-
assets/themes/cyclestreets/cyclestreets.json | 6 +-
assets/themes/cyclofix/cyclofix.json | 3 +-
.../disaster_response/disaster_response.json | 3 +-
.../themes/drinking_water/drinking_water.json | 3 +-
assets/themes/education/education.json | 3 +-
.../themes/elongated_coin/elongated_coin.json | 6 +-
assets/themes/etymology/etymology.json | 6 +-
.../themes/facadegardens/facadegardens.json | 6 +-
assets/themes/fireplace/fireplace.json | 3 +-
assets/themes/food/food.json | 6 +-
assets/themes/fritures/fritures.json | 3 +-
assets/themes/healthcare/healthcare.json | 6 +-
.../mapcomplete-changes.json | 51 ++++++----
assets/themes/personal/personal.json | 6 +-
assets/themes/pets/pets.json | 3 +-
assets/themes/playgrounds/playgrounds.json | 6 +-
assets/themes/postboxes/postboxes.json | 6 +-
.../rainbow_crossings/rainbow_crossings.json | 3 +-
assets/themes/shops/shops.json | 3 +-
assets/themes/ski/ski.json | 3 +-
.../themes/sport_pitches/sport_pitches.json | 6 +-
assets/themes/sports/sports.json | 3 +-
.../street_lighting/street_lighting.json | 3 +-
assets/themes/surveillance/surveillance.json | 6 +-
assets/themes/toilets/toilets.json | 3 +-
assets/themes/transit/transit.json | 3 +-
assets/themes/trees/trees.json | 6 +-
assets/themes/waste/waste.json | 3 +-
assets/themes/waste_basket/waste_basket.json | 6 +-
langs/layers/cs.json | 2 +-
langs/layers/uk.json | 2 +-
langs/themes/pl.json | 2 +-
langs/themes/uk.json | 2 +-
langs/uk.json | 2 +-
scripts/ImgurToPanoramax.ts | 92 +++++++++++--------
src/Logic/ImageProviders/Panoramax.ts | 34 ++++---
src/Logic/Osm/Changes.ts | 11 ++-
src/Logic/Search/CoordinateSearch.ts | 16 +++-
src/Logic/Search/OpenLocationCodeSearch.ts | 21 +++--
src/Logic/Search/PhotonSearch.ts | 7 +-
src/Logic/Search/SearchUtils.ts | 5 -
src/Models/Constants.ts | 7 +-
.../ThemeConfig/DependencyCalculator.ts | 4 +-
src/Models/ThemeViewState.ts | 10 +-
src/UI/Search/SearchResults.svelte | 4 +-
src/assets/contributors.json | 2 +-
src/assets/language_in_country.json | 6 +-
src/assets/translators.json | 16 ++--
110 files changed, 507 insertions(+), 288 deletions(-)
diff --git a/Docs/Themes/circular_economy.md b/Docs/Themes/circular_economy.md
index d6fe9ae59..d2fe8fbef 100644
--- a/Docs/Themes/circular_economy.md
+++ b/Docs/Themes/circular_economy.md
@@ -25,6 +25,7 @@ Available languages:
- cs
- uk
- hu
+ - pl
# Table of contents
diff --git a/Docs/Themes/cyclestreets.md b/Docs/Themes/cyclestreets.md
index 5b526d48c..e476c24e9 100644
--- a/Docs/Themes/cyclestreets.md
+++ b/Docs/Themes/cyclestreets.md
@@ -31,6 +31,7 @@ Available languages:
- eu
- pl
- ru
+ - uk
# Table of contents
diff --git a/Docs/Themes/cyclofix.md b/Docs/Themes/cyclofix.md
index eefe46b22..d644ccf3e 100644
--- a/Docs/Themes/cyclofix.md
+++ b/Docs/Themes/cyclofix.md
@@ -44,6 +44,7 @@ Available languages:
- da
- cs
- pl
+ - uk
# Table of contents
diff --git a/Docs/Themes/disaster_response.md b/Docs/Themes/disaster_response.md
index ed2cb2913..0f2d2691e 100644
--- a/Docs/Themes/disaster_response.md
+++ b/Docs/Themes/disaster_response.md
@@ -32,6 +32,7 @@ Available languages:
- cs
- ru
- hu
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/drinking_water.md b/Docs/Themes/drinking_water.md
index 61842c24f..4605a96fb 100644
--- a/Docs/Themes/drinking_water.md
+++ b/Docs/Themes/drinking_water.md
@@ -28,6 +28,7 @@ Available languages:
- pa_PK
- cs
- pl
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/education.md b/Docs/Themes/education.md
index ef04a499a..acac3d022 100644
--- a/Docs/Themes/education.md
+++ b/Docs/Themes/education.md
@@ -30,6 +30,7 @@ Available languages:
- it
- ru
- hu
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/elongated_coin.md b/Docs/Themes/elongated_coin.md
index d1a627765..60b9f8d71 100644
--- a/Docs/Themes/elongated_coin.md
+++ b/Docs/Themes/elongated_coin.md
@@ -21,6 +21,7 @@ Available languages:
- cs
- pl
- hu
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/etymology.md b/Docs/Themes/etymology.md
index e8baa0152..13d953051 100644
--- a/Docs/Themes/etymology.md
+++ b/Docs/Themes/etymology.md
@@ -33,6 +33,7 @@ Available languages:
- cs
- es
- pl
+ - uk
# Table of contents
diff --git a/Docs/Themes/facadegardens.md b/Docs/Themes/facadegardens.md
index d775e6618..6c19d6a27 100644
--- a/Docs/Themes/facadegardens.md
+++ b/Docs/Themes/facadegardens.md
@@ -27,6 +27,7 @@ Available languages:
- cs
- pl
- ru
+ - uk
# Table of contents
diff --git a/Docs/Themes/fireplace.md b/Docs/Themes/fireplace.md
index 2d98932e9..7b0465e54 100644
--- a/Docs/Themes/fireplace.md
+++ b/Docs/Themes/fireplace.md
@@ -19,6 +19,7 @@ Available languages:
- ca
- cs
- hu
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/food.md b/Docs/Themes/food.md
index eea1f3834..08d6e3e2c 100644
--- a/Docs/Themes/food.md
+++ b/Docs/Themes/food.md
@@ -29,6 +29,7 @@ Available languages:
- cs
- ru
- pl
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/fritures.md b/Docs/Themes/fritures.md
index b3476efb8..d920df26f 100644
--- a/Docs/Themes/fritures.md
+++ b/Docs/Themes/fritures.md
@@ -23,6 +23,7 @@ Available languages:
- cs
- es
- pl
+ - uk
# Table of contents
diff --git a/Docs/Themes/healthcare.md b/Docs/Themes/healthcare.md
index 56e6b7aaa..8dbecb954 100644
--- a/Docs/Themes/healthcare.md
+++ b/Docs/Themes/healthcare.md
@@ -34,6 +34,7 @@ Available languages:
- zh_Hant
- it
- hu
+ - uk
# Table of contents
diff --git a/Docs/Themes/personal.md b/Docs/Themes/personal.md
index 029f82a26..472398c27 100644
--- a/Docs/Themes/personal.md
+++ b/Docs/Themes/personal.md
@@ -157,6 +157,7 @@ Available languages:
- pl
- ru
- hu
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/pets.md b/Docs/Themes/pets.md
index a2edbc574..4b798f80b 100644
--- a/Docs/Themes/pets.md
+++ b/Docs/Themes/pets.md
@@ -32,6 +32,7 @@ Available languages:
- it
- ru
- hu
+ - uk
# Table of contents
diff --git a/Docs/Themes/playgrounds.md b/Docs/Themes/playgrounds.md
index 3af0fab88..a459d69b8 100644
--- a/Docs/Themes/playgrounds.md
+++ b/Docs/Themes/playgrounds.md
@@ -35,6 +35,7 @@ Available languages:
- cs
- eu
- pl
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/postboxes.md b/Docs/Themes/postboxes.md
index 35ac438d0..dd6e99587 100644
--- a/Docs/Themes/postboxes.md
+++ b/Docs/Themes/postboxes.md
@@ -28,6 +28,7 @@ Available languages:
- es
- cs
- pl
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/rainbow_crossings.md b/Docs/Themes/rainbow_crossings.md
index 86f612c38..1cd79255d 100644
--- a/Docs/Themes/rainbow_crossings.md
+++ b/Docs/Themes/rainbow_crossings.md
@@ -26,6 +26,7 @@ Available languages:
- zh_Hant
- pl
- hu
+ - uk
# Table of contents
diff --git a/Docs/Themes/shops.md b/Docs/Themes/shops.md
index 5ab5f437d..d5b1b650c 100644
--- a/Docs/Themes/shops.md
+++ b/Docs/Themes/shops.md
@@ -31,6 +31,7 @@ Available languages:
- cs
- eu
- pl
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/ski.md b/Docs/Themes/ski.md
index 4382d0f43..32936283f 100644
--- a/Docs/Themes/ski.md
+++ b/Docs/Themes/ski.md
@@ -29,6 +29,7 @@ Available languages:
- fr
- cs
- hu
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/sport_pitches.md b/Docs/Themes/sport_pitches.md
index c4b723858..51f4d99fd 100644
--- a/Docs/Themes/sport_pitches.md
+++ b/Docs/Themes/sport_pitches.md
@@ -26,6 +26,7 @@ Available languages:
- da
- cs
- pl
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/sports.md b/Docs/Themes/sports.md
index e48c1b55a..4c22b6d45 100644
--- a/Docs/Themes/sports.md
+++ b/Docs/Themes/sports.md
@@ -30,6 +30,7 @@ Available languages:
- it
- ru
- hu
+ - uk
# Table of contents
diff --git a/Docs/Themes/street_lighting.md b/Docs/Themes/street_lighting.md
index 62432c148..94ce6a4c5 100644
--- a/Docs/Themes/street_lighting.md
+++ b/Docs/Themes/street_lighting.md
@@ -29,6 +29,7 @@ Available languages:
- cs
- it
- pl
+ - uk
# Table of contents
diff --git a/Docs/Themes/surveillance.md b/Docs/Themes/surveillance.md
index ae25a26f3..f65d7162b 100644
--- a/Docs/Themes/surveillance.md
+++ b/Docs/Themes/surveillance.md
@@ -31,6 +31,7 @@ Available languages:
- pl
- sl
- ru
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/toilets.md b/Docs/Themes/toilets.md
index d42fe4372..6d4db8150 100644
--- a/Docs/Themes/toilets.md
+++ b/Docs/Themes/toilets.md
@@ -29,6 +29,7 @@ Available languages:
- da
- es
- cs
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/transit.md b/Docs/Themes/transit.md
index 847cd219b..98da68c85 100644
--- a/Docs/Themes/transit.md
+++ b/Docs/Themes/transit.md
@@ -30,6 +30,7 @@ Available languages:
- pl
- ru
- hu
+ - uk
# Table of contents
diff --git a/Docs/Themes/trees.md b/Docs/Themes/trees.md
index 4f36d0435..6d97f7b76 100644
--- a/Docs/Themes/trees.md
+++ b/Docs/Themes/trees.md
@@ -32,6 +32,7 @@ Available languages:
- pt_BR
- eu
- pt
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/waste.md b/Docs/Themes/waste.md
index 4703f7237..9b1905d97 100644
--- a/Docs/Themes/waste.md
+++ b/Docs/Themes/waste.md
@@ -29,6 +29,7 @@ Available languages:
- eu
- pl
- hu
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/Themes/waste_basket.md b/Docs/Themes/waste_basket.md
index a7f6a24ba..91a2e524f 100644
--- a/Docs/Themes/waste_basket.md
+++ b/Docs/Themes/waste_basket.md
@@ -28,6 +28,7 @@ Available languages:
- cs
- pl
- ru
+ - uk
# Layers defined in this theme configuration file
These layers can not be reused in different themes.
diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md
index acfb26baa..e9f30473e 100644
--- a/Docs/URL_Parameters.md
+++ b/Docs/URL_Parameters.md
@@ -112,7 +112,7 @@ The default value is _false_
Disables/Enables logging in and thus disables editing all together. This effectively puts MapComplete into read-only mode.
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L98)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L97)
The default value is _true_
@@ -120,7 +120,7 @@ The default value is _true_
Disables/Enables the search bar
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L113)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L112)
The default value is _true_
@@ -128,7 +128,7 @@ The default value is _true_
Disables/Enables the background layer control where a user can enable e.g. aerial imagery
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L118)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L117)
The default value is _true_
@@ -136,7 +136,7 @@ The default value is _true_
Disables/Enables the filter view where a user can enable/disable MapComplete-layers or filter for certain properties
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L124)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L123)
The default value is _true_
@@ -144,7 +144,7 @@ The default value is _true_
Disables/enables the help menu or welcome message
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L130)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L129)
The default value is _true_
@@ -152,7 +152,7 @@ The default value is _true_
Disables/enables the button to get in touch with the community
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L135)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L134)
The default value is _true_
@@ -160,7 +160,7 @@ The default value is _true_
Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled)
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L140)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L139)
The default value is _true_
@@ -168,7 +168,7 @@ The default value is _true_
Disables/Enables the various links which go back to the index page with the theme overview
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L145)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L144)
The default value is _true_
@@ -176,7 +176,7 @@ The default value is _true_
Disables/Enables the 'Share-screen'-tab in the welcome message
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L150)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L149)
The default value is _true_
@@ -184,7 +184,7 @@ The default value is _true_
Disables/Enables the geolocation button
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L155)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L154)
The default value is _true_
@@ -192,7 +192,7 @@ The default value is _true_
If set to false, all layers will be disabled - except the explicitly enabled layers
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L161)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L160)
The default value is _true_
@@ -200,7 +200,7 @@ The default value is _true_
Always show all questions
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L166)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L165)
The default value is _false_
@@ -208,7 +208,7 @@ The default value is _false_
Enable the export as GeoJSON and CSV button
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L172)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L171)
The default value is _true_
@@ -216,7 +216,7 @@ The default value is _true_
Enable/disable caching from localStorage
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L178)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L177)
The default value is _true_
@@ -224,7 +224,7 @@ The default value is _true_
If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L193)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L192)
The default value is _false_
@@ -232,7 +232,7 @@ The default value is _false_
If true, shows some extra debugging help such as all the available tags on every object
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L199)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L198)
The default value is _false_
@@ -240,7 +240,7 @@ The default value is _false_
If true, the location distance indication will not be written to the changeset and other privacy enhancing measures might be taken.
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L205)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L204)
The default value is _false_
@@ -248,7 +248,7 @@ The default value is _false_
Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L211)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L210)
The default value is _https://overpass-api.de/api/interpreter,https://overpass.private.coffee/api/interpreter,https://overpass.osm.jp/api/interpreter_
@@ -256,7 +256,7 @@ The default value is _https://overpass-api.de/api/interpreter,https://overpass.p
Set a different timeout (in seconds) for queries in overpass
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L222)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L221)
The default value is _30_
@@ -264,7 +264,7 @@ The default value is _30_
point to switch between OSM-api and overpass
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L230)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L229)
The default value is _16_
@@ -272,7 +272,7 @@ The default value is _16_
Tilesize when the OSM-API is used to fetch data within a BBOX
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L238)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L237)
The default value is _17_
@@ -332,7 +332,7 @@ One can use the [ID of an ELI-layer](./ELI-overview.md) or use one of the global
- HDM_HOT
- osmfr-occitan
-This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L245)
+This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L244)
No default value set
@@ -364,7 +364,7 @@ The default value is _0_
Used to complete the login
-This documentation is defined in the source code at [ThemeViewState.ts](/src/Models/ThemeViewState.ts#L182)
+This documentation is defined in the source code at [ThemeViewState.ts](/src/Models/ThemeViewState.ts#L188)
No default value set
@@ -380,7 +380,7 @@ The default value is _true_
State of filter kid-books
-This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L175)
+This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L185)
The default value is _false_
@@ -388,7 +388,7 @@ The default value is _false_
State of filter adult-books
-This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L175)
+This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L185)
The default value is _false_
@@ -396,7 +396,7 @@ The default value is _false_
State of filter inside
-This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L175)
+This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L185)
The default value is _0_
@@ -404,7 +404,7 @@ The default value is _0_
State of filter has_image
-This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L175)
+This documentation is defined in the source code at [FilterConfig.ts](/src/Models/ThemeConfig/FilterConfig.ts#L185)
The default value is _0_
diff --git a/Docs/wikiIndex.txt b/Docs/wikiIndex.txt
index 9ea4bfd0a..50364bf3d 100644
--- a/Docs/wikiIndex.txt
+++ b/Docs/wikiIndex.txt
@@ -4,7 +4,7 @@
{{service_item
|name= [https://mapcomplete.org/personal personal]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:gl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:it|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}
+|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:gl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:it|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: Create a personal theme based on all the available layers of all themes
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -22,7 +22,7 @@
{{service_item
|name= [https://mapcomplete.org/etymology etymology]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:ru|en}}
+|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:ru|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: What is the origin of a toponym?
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -40,7 +40,7 @@
{{service_item
|name= [https://mapcomplete.org/food food]
|region= Worldwide
-|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:nb_NO|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:it|en}}
+|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:nb_NO|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:it|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: Restaurants and fast food
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -67,7 +67,7 @@
{{service_item
|name= [https://mapcomplete.org/healthcare healthcare]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:ca|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:cs|en}}, {{#language:es|en}}, {{#language:pl|en}}, {{#language:it|en}}
+|lang= {{#language:en|en}}, {{#language:ca|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:cs|en}}, {{#language:es|en}}, {{#language:pl|en}}, {{#language:it|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: On this map, various healthcare related items are shown
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -103,7 +103,7 @@
{{service_item
|name= [https://mapcomplete.org/playgrounds playgrounds]
|region= Worldwide
-|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}
+|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: A map with playgrounds
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -166,7 +166,7 @@
{{service_item
|name= [https://mapcomplete.org/surveillance surveillance]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}}
+|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: Surveillance cameras and other means of surveillance
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -184,7 +184,7 @@
{{service_item
|name= [https://mapcomplete.org/circular_economy circular_economy]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:es|en}}, {{#language:de|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}
+|lang= {{#language:en|en}}, {{#language:es|en}}, {{#language:de|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:pl|en}}
|descr= A MapComplete theme: Various items which help people to share, reuse or recycle
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -211,7 +211,7 @@
{{service_item
|name= [https://mapcomplete.org/bicycle_parkings bicycle_parkings]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:it|en}}, {{#language:fil|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}
+|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:it|en}}, {{#language:fil|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:pl|en}}
|descr= A MapComplete theme: A map showing all types of bicycle parkings
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -283,7 +283,7 @@
{{service_item
|name= [https://mapcomplete.org/cyclestreets cyclestreets]
|region= Worldwide
-|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}
+|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: A map of cyclestreets
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -310,7 +310,7 @@
{{service_item
|name= [https://mapcomplete.org/elongated_coin elongated_coin]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}
+|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: Find penny presses to create your own elongated coins
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -319,7 +319,7 @@
{{service_item
|name= [https://mapcomplete.org/facadegardens facadegardens]
|region= Worldwide
-|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:pl|en}}
+|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: This map shows facade gardens with pictures and useful info about orientation, sunshine and plant types.
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -555,7 +555,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/postboxes postboxes]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}
+|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: A map showing postboxes and post offices
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -582,7 +582,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/sport_pitches sport_pitches]
|region= Worldwide
-|lang= {{#language:nl|en}}, {{#language:fr|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}
+|lang= {{#language:nl|en}}, {{#language:fr|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: A map showing sport pitches
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -609,7 +609,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/trees trees]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}
+|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: Map all the trees
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@@ -618,7 +618,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/waste_basket waste_basket]
|region= Worldwide
-|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:pl|en}}
+|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|descr= A MapComplete theme: A map with waste baskets
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
diff --git a/assets/layers/advertising/advertising.json b/assets/layers/advertising/advertising.json
index 4a2b54e70..92b111df7 100644
--- a/assets/layers/advertising/advertising.json
+++ b/assets/layers/advertising/advertising.json
@@ -1002,7 +1002,8 @@
"he": "זה דגל",
"pl": "To jest flaga",
"zh_Hans": "这是一面旗帜",
- "pt": "Isto é uma bandeira"
+ "pt": "Isto é uma bandeira",
+ "uk": "Це прапор"
},
"icon": {
"path": "./assets/themes/advertising/flag.svg",
@@ -1021,7 +1022,8 @@
"pl": "To jest pudełko plakatowe",
"pt_BR": "Isso é um quadro de pôster",
"zh_Hans": "这是海报盒",
- "pt": "Isto é um quadro de pôster"
+ "pt": "Isto é um quadro de pôster",
+ "uk": "Це скринька для плакатів"
},
"icon": {
"path": "./assets/themes/advertising/poster_box.svg",
@@ -1040,7 +1042,8 @@
"pl": "To jest ekran",
"pt_BR": "Isso é uma tela",
"zh_Hans": "这是一个屏幕",
- "pt": "Isto é um ecrã"
+ "pt": "Isto é um ecrã",
+ "uk": "Це екран"
},
"icon": {
"path": "./assets/themes/advertising/screen.svg",
@@ -1059,7 +1062,8 @@
"pl": "To jest rzeźba",
"pt_BR": "Isso é uma escultura",
"zh_Hans": "这是一个雕塑",
- "pt": "Isto é uma escultura"
+ "pt": "Isto é uma escultura",
+ "uk": "Це скульптура"
},
"icon": {
"path": "./assets/themes/advertising/sculpture.svg",
diff --git a/assets/layers/artwork/artwork.json b/assets/layers/artwork/artwork.json
index 26fc41438..c78bf481e 100644
--- a/assets/layers/artwork/artwork.json
+++ b/assets/layers/artwork/artwork.json
@@ -833,7 +833,8 @@
"then": {
"en": "This artwork does not serve as a memorial",
"de": "Dieses Kunstwerk dient nicht als Denkmal",
- "uk": "Ця робота не є меморіалом"
+ "uk": "Ця робота не є меморіалом",
+ "cs": "Toto umělecké dílo neslouží jako památník"
}
}
]
diff --git a/assets/layers/bicycle_counter/bicycle_counter.json b/assets/layers/bicycle_counter/bicycle_counter.json
index cf91d872b..e8eaeaa94 100644
--- a/assets/layers/bicycle_counter/bicycle_counter.json
+++ b/assets/layers/bicycle_counter/bicycle_counter.json
@@ -81,7 +81,8 @@
},
"render": {
"en": "Name of the counted location: {name}",
- "de": "Name des Zählorts: {name}"
+ "de": "Name des Zählorts: {name}",
+ "cs": "Název započítávaného místa: {name}"
}
},
{
@@ -133,14 +134,16 @@
"id": "ref",
"question": {
"en": "What is the reference number of this counter?",
- "de": "Wie lautet die Kennziffer der Zählstelle?"
+ "de": "Wie lautet die Kennziffer der Zählstelle?",
+ "cs": "Jaké je referenční číslo tohoto počítadla?"
},
"freeform": {
"key": "ref",
"type": "string",
"placeholder": {
"en": "Reference number of the counter",
- "de": "Kennziffer der Zählstelle"
+ "de": "Kennziffer der Zählstelle",
+ "cs": "Referenční číslo počítadla"
},
"addExtraTags": [
"noref="
@@ -155,7 +158,8 @@
"if": "noref=yes",
"then": {
"en": "This counter has no reference number",
- "de": "Die Zählstelle hat keine Kennziffer"
+ "de": "Die Zählstelle hat keine Kennziffer",
+ "cs": "Toto počítadlo nemá referenční číslo"
}
}
]
diff --git a/assets/layers/bicycle_rental/bicycle_rental.json b/assets/layers/bicycle_rental/bicycle_rental.json
index c93c1f4a6..6b8e06f87 100644
--- a/assets/layers/bicycle_rental/bicycle_rental.json
+++ b/assets/layers/bicycle_rental/bicycle_rental.json
@@ -112,7 +112,8 @@
"cs": "půjčovna jízdních kol",
"ca": "una botiga de lloguer de bicicletes",
"pt_BR": "uma loja de aluguel de bicicletas",
- "pt": "uma loja de aluguel de bicicletas"
+ "pt": "uma loja de aluguel de bicicletas",
+ "uk": "пункт прокату велосипедів"
},
"tags": [
"amenity=bicycle_rental",
@@ -128,7 +129,8 @@
"cs": "Obsluhovaný obchod zaměřený na půjčování jízdních kol",
"ca": "Una botiga atesa que es centra en el lloguer de bicicletes",
"pt_BR": "Uma loja com atendimento pessoal que foca no aluguel de bicicletas",
- "pt": "Uma loja com atendimento pessoal que foca no aluguel de bicicletas"
+ "pt": "Uma loja com atendimento pessoal que foca no aluguel de bicicletas",
+ "uk": "Магазин, який спеціалізується на прокаті велосипедів"
}
},
{
@@ -184,7 +186,8 @@
"cs": "Jedná se o obchod, jehož hlavním zaměřením je půjčování jízdních kol",
"ca": "Es tracta d'una botiga que té com a objectiu principal el lloguer de bicicletes",
"pt_BR": "Essa é uma loja cujo foco principal é o aluguel de bicicletas",
- "pt": "Esta é uma loja cujo foco principal é o aluguel de bicicletas"
+ "pt": "Esta é uma loja cujo foco principal é o aluguel de bicicletas",
+ "uk": "Це магазин, основним напрямком якого є прокат велосипедів"
}
},
{
@@ -219,7 +222,8 @@
"cs": "Jedná se o prodejnu, která prodává nebo opravuje jízdní kola, ale také je pronajímá",
"ca": "Es tracta d'una botiga que ven o repara bicicletes, però també lloga bicicletes",
"pt_BR": "Essa é uma loja que vende ou conserta bicicletas, mas também aluga elas",
- "pt": "Esta é uma loja que vende ou conserta bicicletas, mas também aluga elas"
+ "pt": "Esta é uma loja que vende ou conserta bicicletas, mas também aluga elas",
+ "uk": "Це магазин, який продає або ремонтує велосипеди, а також здає їх напрокат"
}
},
{
diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json
index 0d2d3121b..646b326f4 100644
--- a/assets/layers/bike_parking/bike_parking.json
+++ b/assets/layers/bike_parking/bike_parking.json
@@ -770,7 +770,8 @@
"nl": "Wat is het telefoonnummer van de operator van deze fietsenstalling?",
"de": "Wie lautet die Telefonnummer des Betreibers dieses Fahrradparkplatzes?",
"ca": "Quin és el número de telèfon de l'operador d'aquest aparcament per a bicis?",
- "es": "¿Cuál es número de teléfono del operador de este aparcamiento de bicicletas?"
+ "es": "¿Cuál es número de teléfono del operador de este aparcamiento de bicicletas?",
+ "uk": "Який номер телефону оператора цієї велопарковки?"
},
"questionHint": {
"en": "One might be able to call this number in case of problems, e.g. to remove unmaintained bicycles",
diff --git a/assets/layers/bike_repair_station/bike_repair_station.json b/assets/layers/bike_repair_station/bike_repair_station.json
index cc25cdbd9..f3ee796c5 100644
--- a/assets/layers/bike_repair_station/bike_repair_station.json
+++ b/assets/layers/bike_repair_station/bike_repair_station.json
@@ -738,7 +738,8 @@
"es": "¿Cual es el número de teléfono del mantenedor?",
"da": "Hvad er telefonnummeret på vedligeholderen?",
"cs": "Jaké je telefonní číslo správce?",
- "ca": "Quin és el número de telèfon del responsable?"
+ "ca": "Quin és el número de telèfon del responsable?",
+ "uk": "Який номер телефону супровідника?"
},
"freeform": {
"key": "phone",
diff --git a/assets/layers/bike_shop/bike_shop.json b/assets/layers/bike_shop/bike_shop.json
index 959b267d7..ae6143d77 100644
--- a/assets/layers/bike_shop/bike_shop.json
+++ b/assets/layers/bike_shop/bike_shop.json
@@ -119,7 +119,8 @@
"it": "Noleggio di biciclette {name}",
"pt": "Aluguel de bicicletas {name}",
"pt_BR": "Aluguel de bicicletas {name}",
- "ru": "Прокат велосипедов {name}"
+ "ru": "Прокат велосипедов {name}",
+ "uk": "Пункт прокату велосипедів {name}"
}
},
{
diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json
index 5ed693edf..5b26df56d 100644
--- a/assets/layers/charging_station/charging_station.json
+++ b/assets/layers/charging_station/charging_station.json
@@ -2448,14 +2448,16 @@
"nl": "Maakt deel uit van het {network}-netwerk",
"ca": "Part de la xarxa {network}",
"de": "Teil des Netzwerks {network}",
- "pl": "Część sieci {network}"
+ "pl": "Część sieci {network}",
+ "uk": "Частина мережі {network}"
},
"question": {
"en": "Is this charging station part of a network?",
"nl": "Is dit oplaadpunt deel van een groter netwerk?",
"ca": "Aquesta estació de càrrega forma part d'una xarxa?",
"de": "Ist diese Ladestation Teil eines Netzwerks?",
- "pl": "Czy ta stacja ładowania jest częścią sieci?"
+ "pl": "Czy ta stacja ładowania jest częścią sieci?",
+ "uk": "Чи є ця зарядна станція частиною мережі?"
},
"freeform": {
"key": "network"
@@ -2466,7 +2468,8 @@
"then": {
"en": "Not part of a bigger network, e.g. because the charging station is maintained by a local business",
"nl": "Maakt geen deel uit van een groter netwerk, een lokale zaak of organisatie beheert dit oplaadpunt",
- "de": "Nicht Teil eines größeren Netzwerks, z. B. weil die Ladestation von einem lokalen Unternehmen betrieben wird"
+ "de": "Nicht Teil eines größeren Netzwerks, z. B. weil die Ladestation von einem lokalen Unternehmen betrieben wird",
+ "uk": "Не є частиною більшої мережі, наприклад, тому що зарядна станція обслуговується місцевим підприємством"
}
},
{
@@ -2475,7 +2478,8 @@
"en": "Not part of a bigger network",
"nl": "Maakt geen deel uit van een groter netwerk",
"de": "Nicht Teil eines größeren Netzwerks",
- "pl": "Nie jest częścią większej sieci"
+ "pl": "Nie jest częścią większej sieci",
+ "uk": "Не є частиною великої мережі"
},
"hideInAnswer": true
},
diff --git a/assets/layers/clock/clock.json b/assets/layers/clock/clock.json
index 88d310dc6..5c159a579 100644
--- a/assets/layers/clock/clock.json
+++ b/assets/layers/clock/clock.json
@@ -166,7 +166,8 @@
"ca": "Aquest rellotge està muntat en una tanca publicitària",
"fr": "Cette horloge fait partie d'un panneau publicitaire",
"pl": "Ten zegar jest częścią bilbordu",
- "cs": "Tyto hodiny jsou součástí billboardu"
+ "cs": "Tyto hodiny jsou součástí billboardu",
+ "uk": "Цей годинник є частиною білборду"
}
},
{
diff --git a/assets/layers/dentist/dentist.json b/assets/layers/dentist/dentist.json
index 094d62407..ddd68e65a 100644
--- a/assets/layers/dentist/dentist.json
+++ b/assets/layers/dentist/dentist.json
@@ -28,7 +28,8 @@
"nl": "Tandartspraktijk {name}",
"fr": "Cabinet medical {name}",
"ca": "Clínica Dental {name}",
- "cs": "Zubní ordinace {name}"
+ "cs": "Zubní ordinace {name}",
+ "uk": "Стоматологічний кабінет {name}"
}
},
"pointRendering": [
@@ -92,7 +93,8 @@
"nl": "Hoe heet deze tandarts?",
"ca": "Com s'anomena aquest dentista?",
"pl": "Jaka jest nazwa tego gabinetu dentystycznego?",
- "cs": "Jak se jmenuje tento zubař?"
+ "cs": "Jak se jmenuje tento zubař?",
+ "uk": "Як звуть цього стоматолога?"
},
"render": {
"en": "This dentist is called {name}",
@@ -100,7 +102,8 @@
"nl": "Deze tandarts heet {name}",
"ca": "El dentista s'anomena {name}",
"pl": "Nazwa tego gabinetu dentystycznego to {name}",
- "cs": "Tento zubař se jmenuje {name}"
+ "cs": "Tento zubař se jmenuje {name}",
+ "uk": "Цього стоматолога звуть {name}"
},
"freeform": {
"key": "name"
diff --git a/assets/layers/doctors/doctors.json b/assets/layers/doctors/doctors.json
index 66f9dd1f8..61f5f2912 100644
--- a/assets/layers/doctors/doctors.json
+++ b/assets/layers/doctors/doctors.json
@@ -78,7 +78,8 @@
"fr": "Comment s'appelle ce cabinet médical ?",
"ca": "Com es diu aquesta consulta mèdica?",
"he": "מה השם של מקום הרופאים הזה?",
- "cs": "Jak se jmenuje toto místo lékařů?"
+ "cs": "Jak se jmenuje toto místo lékařů?",
+ "uk": "Як називається ця лікарня?"
},
"render": {
"en": "This doctors place is called {name}",
@@ -86,7 +87,8 @@
"nl": "Deze dokterspraktijk heet {name}",
"fr": "Ce cabinet médical s'appelle {name}",
"ca": "Aquest consultori mèdic és diu {name}",
- "cs": "Toto místo lékařů se jmenuje {name}"
+ "cs": "Toto místo lékařů se jmenuje {name}",
+ "uk": "Ця лікарня називається {name}"
},
"freeform": {
"key": "name"
diff --git a/assets/layers/dumpstations/dumpstations.json b/assets/layers/dumpstations/dumpstations.json
index bd4f3cf87..a6fc811ec 100644
--- a/assets/layers/dumpstations/dumpstations.json
+++ b/assets/layers/dumpstations/dumpstations.json
@@ -606,7 +606,8 @@
"da": "Denne station er en del af netværket {network}",
"ca": "Aquesta estació forma part de la xarxa {network}",
"cs": "Tato stanice je součástí sítě {network}",
- "pl": "Ta stacja jest częścią sieci {network}"
+ "pl": "Ta stacja jest częścią sieci {network}",
+ "uk": "Ця станція є частиною мережі {network}"
},
"question": {
"en": "What network is this place a part of? (skip if none)",
@@ -621,7 +622,8 @@
"da": "Hvilket netværk er dette sted en del af? (spring over hvis ingen)",
"ca": "A quina xarxa forma part aquest lloc? (Salta si a cap)",
"cs": "Jaké sítě je toto místo součástí? (přeskočte, pokud žádné)",
- "pl": "Do jakiej sieci należy to miejsce? (pomiń, jeśli nie ma)"
+ "pl": "Do jakiej sieci należy to miejsce? (pomiń, jeśli nie ma)",
+ "uk": "Частиною якої мережі є цей заклад? (пропустіть, якщо немає)"
},
"freeform": {
"key": "network"
diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json
index 27a2eb33b..5b42afb18 100644
--- a/assets/layers/food/food.json
+++ b/assets/layers/food/food.json
@@ -83,7 +83,8 @@
"ca": "Lloc de menjar ràpid {name}",
"es": "Comida rápida {name}",
"fr": "Fast-food {name}",
- "cs": "Rychlé občerstvení {name}"
+ "cs": "Rychlé občerstvení {name}",
+ "uk": "Фаст-фуд {name}"
}
},
{
@@ -699,7 +700,8 @@
"es": "¿Este local ofrece comida para llevar?",
"fr": "Cet établissement propose-t-il des plats à emporter ?",
"ca": "Aquest lloc ofereix per a emportar?",
- "cs": "Nabízí toto místo jídlo s sebou?"
+ "cs": "Nabízí toto místo jídlo s sebou?",
+ "uk": "Чи пропонують тут їжу на винос?"
},
"mappings": [
{
@@ -711,7 +713,8 @@
"es": "Este es un negocio solo para pedir para llevar",
"fr": "Ce restaurant ne propose que de la vente à emporter",
"ca": "Aquest és un negoci només per emportar",
- "cs": "Jedná se o podnik jídlo pouze s sebou"
+ "cs": "Jedná se o podnik jídlo pouze s sebou",
+ "uk": "Це бізнес тільки на винос"
}
},
{
@@ -723,7 +726,8 @@
"es": "Aquí es posible pedir para llevar",
"fr": "La vente à emporter est possible ici",
"ca": "Aquí és possible demanar per emportar",
- "cs": "Je zde možné vzít si s sebou"
+ "cs": "Je zde možné vzít si s sebou",
+ "uk": "Тут можна замовити їжу на винос"
}
},
{
@@ -735,7 +739,8 @@
"es": "Aquí no es posible pedir para llevar",
"fr": "La vente à emporter n'est pas possible ici",
"ca": "Aquí no és possible demanar per emportar",
- "cs": "Jídlo sebou zde není možné"
+ "cs": "Jídlo sebou zde není možné",
+ "uk": "Замовлення на винос тут неможливе"
}
}
],
diff --git a/assets/layers/hospital/hospital.json b/assets/layers/hospital/hospital.json
index 34038d41d..532d1b164 100644
--- a/assets/layers/hospital/hospital.json
+++ b/assets/layers/hospital/hospital.json
@@ -78,7 +78,8 @@
"nl": "Dit ziekenhuis heet {name}",
"ru": "Эта больница называется {name}",
"cs": "Tato nemocnice se jmenuje {name}",
- "pl": "Nazwa tego szpitala to {name}"
+ "pl": "Nazwa tego szpitala to {name}",
+ "uk": "Ця лікарня називається {name}"
},
"question": {
"en": "What is the name of this hospital?",
@@ -87,7 +88,8 @@
"ca": "Quin és el nom d'aquest hospital?",
"ru": "Как называется эта больница?",
"cs": "Jak se jmenuje tato nemocnice?",
- "pl": "Jak nazywa się ten szpital?"
+ "pl": "Jak nazywa się ten szpital?",
+ "uk": "Як називається ця лікарня?"
},
"freeform": {
"key": "name"
@@ -99,7 +101,8 @@
"en": "Does this facility admit inpatients?",
"de": "Nimmt die Einrichtung stationäre Patienten auf?",
"ca": "Aquesta instal·lació admet hospitalitzacions?",
- "cs": "Přijímá toto zařízení pacienty na lůžko?"
+ "cs": "Přijímá toto zařízení pacienty na lůžko?",
+ "uk": "Чи приймає цей заклад стаціонарних пацієнтів?"
},
"mappings": [
{
@@ -108,7 +111,8 @@
"en": "This is a clinic - patients can not stay overnight",
"de": "Dies ist ein Medizinisches Versorgungszentrum - Patienten können nicht über Nacht bleiben",
"ca": "Açò és una clínica: els pacients no poden passar la nit",
- "cs": "Toto je klinika - pacienti nemohou zůstat přes noc"
+ "cs": "Toto je klinika - pacienti nemohou zůstat přes noc",
+ "uk": "Це клініка - пацієнти не можуть залишатися на ніч"
}
},
{
@@ -117,7 +121,8 @@
"en": "This is a hospital - patients can be admitted here for multiple days",
"de": "Dies ist ein Krankenhaus - Patienten können hier für mehrere Tage aufgenommen werden",
"ca": "Es tracta d'un hospital: els pacients poden estar ingressats aquí durant diversos dies",
- "cs": "Jedná se o nemocnici – pacienti zde mohou být přijímáni na více dní"
+ "cs": "Jedná se o nemocnici – pacienti zde mohou být přijímáni na více dní",
+ "uk": "Це лікарня - пацієнти можуть перебувати тут кілька днів"
}
}
],
diff --git a/assets/layers/last_click/last_click.json b/assets/layers/last_click/last_click.json
index 6b92391c4..019beb94e 100644
--- a/assets/layers/last_click/last_click.json
+++ b/assets/layers/last_click/last_click.json
@@ -126,7 +126,8 @@
"nl": "Klik hier om een item toe te voegen",
"pt": "Adicionar novo item",
"zh_Hant": "點這邊新增新項目",
- "pl": "Kliknij tutaj, aby dodać nowy obiekt"
+ "pl": "Kliknij tutaj, aby dodać nowy obiekt",
+ "uk": "Натисніть тут, щоб додати новий об'єкт"
},
"mappings": [
{
diff --git a/assets/layers/map/map.json b/assets/layers/map/map.json
index c8b15d456..06eee4b10 100644
--- a/assets/layers/map/map.json
+++ b/assets/layers/map/map.json
@@ -238,7 +238,7 @@
"de": "Stadt",
"pl": " Mapa miasta",
"ca": " Un mapa d'una ciutat",
- "cs": " Mapa města",
+ "cs": "Mapa města",
"fr": " Une carte de ville"
}
},
diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json
index 57bd40a40..8c0361e8f 100644
--- a/assets/layers/playground/playground.json
+++ b/assets/layers/playground/playground.json
@@ -609,7 +609,8 @@
"it": "Qual è il numero di telefono del gestore del campetto?",
"de": "Wie lautet die Telefonnummer des Spielplatzbetreibers?",
"ca": "Quin és el telèfon del mantenidor del parc infantil?",
- "cs": "Jaké je telefonní číslo na správce hřiště?"
+ "cs": "Jaké je telefonní číslo na správce hřiště?",
+ "uk": "Який номер телефону доглядача дитячого майданчика?"
},
"render": {
"nl": "De bevoegde dienst kan getelefoneerd worden via {phone}",
diff --git a/assets/layers/playground_equipment/playground_equipment.json b/assets/layers/playground_equipment/playground_equipment.json
index 3b3ff9b87..86466db06 100644
--- a/assets/layers/playground_equipment/playground_equipment.json
+++ b/assets/layers/playground_equipment/playground_equipment.json
@@ -297,7 +297,8 @@
"if": "playground=bridge",
"then": {
"en": "This is a bridge (either as a standalone device or as part of a larger structure)",
- "de": "Dies ist eine Brücke (entweder als eigenständiges Gerät oder als Teil einer größeren Struktur)"
+ "de": "Dies ist eine Brücke (entweder als eigenständiges Gerät oder als Teil einer größeren Struktur)",
+ "uk": "Це міст (або як окремий пристрій, або як частина більшої конструкції)"
},
"icon": {
"path": "./assets/layers/playground_equipment/Playground_in_Muchall_Park,_Wolverhampton_-_geograph.org.uk_-_2735437.jpg",
@@ -330,7 +331,8 @@
"if": "playground=teenshelter",
"then": {
"en": "This is a teen shelter",
- "de": "Dies ist eine Jugendherberge"
+ "de": "Dies ist eine Jugendherberge",
+ "uk": "Це притулок для підлітків"
},
"icon": {
"path": "./assets/layers/playground_equipment/Teen_shelter_near_former_coastguard_lookout,_Watchet_-_geograph.org.uk_-_1714960.jpg",
diff --git a/assets/layers/postoffices/postoffices.json b/assets/layers/postoffices/postoffices.json
index 80aa3366b..d348a3ec2 100644
--- a/assets/layers/postoffices/postoffices.json
+++ b/assets/layers/postoffices/postoffices.json
@@ -157,7 +157,8 @@
"nl": "Wat zijn de openingsuren voor dit postkantoor?",
"fr": "Quelles sont les heures d’ouverture de ce bureau de poste ?",
"ca": "Quines son els horaris d'apertura per a aquesta oficina postal?",
- "cs": "Jaká je otevírací doba této pošty?"
+ "cs": "Jaká je otevírací doba této pošty?",
+ "uk": "Які години роботи цього поштового відділення?"
}
}
},
@@ -245,7 +246,8 @@
"de": "Dieser Standort bietet Dienstleistungen für DHL an",
"nl": "Deze locatie biedt diensten aan voor DHL",
"ca": "Aquesta localització ofereix serveis per a DHL",
- "cs": "Toto místo nabízí služby pro společnost DHL"
+ "cs": "Toto místo nabízí služby pro společnost DHL",
+ "uk": "У цьому приміщенні надаються послуги для DHL"
},
"hideInAnswer": "_country=de"
},
@@ -256,7 +258,8 @@
"de": "Dieser Standort bietet Dienstleistungen für DPD an",
"nl": "Deze locatie biedt diensten aan voor DPD",
"ca": "Aquesta localització ofereix serveis per a DPD",
- "cs": "Toto místo nabízí služby pro společnost DPD"
+ "cs": "Toto místo nabízí služby pro společnost DPD",
+ "uk": "У цій локації надаються послуги для DPD"
}
},
{
@@ -266,7 +269,8 @@
"de": "Dieser Standort bietet Dienstleistungen für GLS an",
"nl": "Deze locatie biedt diensten aan voor GLS",
"ca": "Aquesta localització ofereix serveis per a GLS",
- "cs": "Toto místo nabízí služby pro společnost GLS"
+ "cs": "Toto místo nabízí služby pro společnost GLS",
+ "uk": "Ця локація пропонує послуги для GLS"
}
},
{
@@ -276,7 +280,8 @@
"de": "Dieser Standort bietet Dienstleistungen für UPS an",
"nl": "Deze locatie biedt diensten aan voor UPS",
"ca": "Aquesta localització ofereix serveis per a UPS",
- "cs": "Toto místo nabízí služby pro společnost UPS"
+ "cs": "Toto místo nabízí služby pro společnost UPS",
+ "uk": "У цьому місці надаються послуги для UPS"
}
},
{
@@ -285,7 +290,8 @@
"en": "This location is a DHL Paketshop",
"de": "Dieser Standort ist ein DHL Paketshop",
"ca": "Aquesta ubicació és una botiga DHL Paketshop",
- "cs": "Tato lokalita je DHL Paketshop"
+ "cs": "Tato lokalita je DHL Paketshop",
+ "uk": "Це відділення DHL Paketshop"
},
"hideInAnswer": "_country!=de"
},
@@ -295,7 +301,8 @@
"en": "This location is a Hermes PaketShop",
"de": "Dieser Standort ist ein Hermes PaketShop",
"ca": "Aquesta ubicació és una botiga Hermes PaketShop",
- "cs": "Tato lokalita je Hermes Paketshop"
+ "cs": "Tato lokalita je Hermes Paketshop",
+ "uk": "Ця локація є магазином Hermes PaketShop"
},
"hideInAnswer": "_country!=de"
},
@@ -306,7 +313,8 @@
"de": "Dieser Standort ist ein PostNL-Punkt",
"nl": "Deze locatie is een PostNL-punt",
"ca": "Aquesta ubicació és un punt PostNL",
- "cs": "Toto umístění je bod PostNL"
+ "cs": "Toto umístění je bod PostNL",
+ "uk": "Це місце є PostNL-пунктом"
},
"hideInAnswer": {
"and": [
@@ -321,7 +329,8 @@
"en": "This location offers services for bpost",
"de": "Dieser Standort bietet Dienstleistungen für bpost an",
"nl": "Deze locatie biedt diensten aan voor bpost",
- "cs": "Toto místo nabízí služby pro společnost bpost"
+ "cs": "Toto místo nabízí služby pro společnost bpost",
+ "uk": "Ця локація пропонує послуги для bpost"
},
"hideInAnswer": "_country!=be"
}
diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json
index f5fbda128..5c3f92532 100644
--- a/assets/layers/questions/questions.json
+++ b/assets/layers/questions/questions.json
@@ -179,7 +179,8 @@
"es": "¿Cuál es el número de teléfono de {title()}?",
"zh_Hans": "{title()} 的电话号码为何?",
"da": "Hvad er telefonnummeret til {title()}?",
- "cs": "Jaké je telefonní číslo {title()}?"
+ "cs": "Jaké je telefonní číslo {title()}?",
+ "uk": "Який номер телефону {title()}?"
},
"render": {
"special": {
@@ -2792,7 +2793,8 @@
"de": "QR Code scannen, um diesen Ort auf einem anderen Gerät zu öffnen",
"sl": "Skenirajte to kodo, da odprete ta kraj na drugi napravi",
"da": "Skan denne kode for at åbne dette sted på en anden enhed",
- "hu": "Szkenneld be ezt a kódot, hogy egy másik eszközön is meg tudd nyitni a helyet"
+ "hu": "Szkenneld be ezt a kódot, hogy egy másik eszközön is meg tudd nyitni a helyet",
+ "uk": "Відскануйте цей код, щоб відкрити це місце на іншому пристрої"
}
}
},
diff --git a/assets/layers/shelter/shelter.json b/assets/layers/shelter/shelter.json
index 6b7b55ceb..82224f96f 100644
--- a/assets/layers/shelter/shelter.json
+++ b/assets/layers/shelter/shelter.json
@@ -55,7 +55,8 @@
"en": "This is a shelter at a public transport stop.",
"de": "Das ist ein Unterstand an einer Haltestelle für öffentliche Verkehrsmittel.",
"nl": "Dit is een schuilplaats bij een halte voor openbaar vervoer.",
- "cs": "Jedná se o přístřešek u zastávky MHD."
+ "cs": "Jedná se o přístřešek u zastávky MHD.",
+ "uk": "Це притулок на зупинці громадського транспорту."
}
},
{
@@ -63,7 +64,8 @@
"then": {
"en": "This is a shelter protecting from rain at a picnic site.",
"de": "Dies ist ein Unterstand zum Schutz vor Regen auf einem Picknickplatz.",
- "cs": "Jedná se o přístřešek chránící před deštěm na piknikovém místě."
+ "cs": "Jedná se o přístřešek chránící před deštěm na piknikovém místě.",
+ "uk": "Це накриття, що захищає від дощу на місці для пікніка."
}
},
{
@@ -71,7 +73,8 @@
"then": {
"en": "This is a gazebo.",
"de": "Das ist ein offener Gartenpavillon.",
- "cs": "Toto je altán."
+ "cs": "Toto je altán.",
+ "uk": "Це альтанка."
}
},
{
@@ -80,7 +83,8 @@
"en": "This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads.",
"de": "Dies ist ein kleiner Unterstand, der vor allem für kurze Pausen gedacht ist. Normalerweise findet man ihn in Bergen oder an Straßen.",
"cs": "Jedná se o malý přístřešek, primárně určený pro krátké přestávky. Obvykle se vyskytuje v horách nebo podél silnic.",
- "ca": "Es tracta d'un petit refugi, principalment destinat a descansos curts. Normalment es troba a les muntanyes o al costat de les carreteres."
+ "ca": "Es tracta d'un petit refugi, principalment destinat a descansos curts. Normalment es troba a les muntanyes o al costat de les carreteres.",
+ "uk": "Це невеликий притулок, призначений насамперед для коротких перерв. Зазвичай знаходиться в горах або вздовж доріг."
}
},
{
@@ -89,7 +93,8 @@
"en": "This is a shed with 3 walls, primarily intended for camping.",
"de": "Es handelt sich um einen an 3 Seiten geschlossenen Unterstand, der in erster Linie zum Campen gedacht ist.",
"ca": "Es tracta d'un cobert amb 3 parets, destinat principalment a l'acampada.",
- "cs": "Jedná se o přístřešek se 3 stěnami, primárně určený pro kempování."
+ "cs": "Jedná se o přístřešek se 3 stěnami, primárně určený pro kempování.",
+ "uk": "Це сарай з 3-ма стінами, в першу чергу призначений для кемпінгу."
}
},
{
@@ -97,7 +102,8 @@
"then": {
"en": "This is a pavilion",
"de": "Das ist ein Pavillon",
- "cs": "Toto je pavilon"
+ "cs": "Toto je pavilon",
+ "uk": "Це павільйон"
}
},
{
@@ -110,12 +116,14 @@
"de": "Um welche Art von Unterstand handelt es sich?",
"nl": "Wat voor schuilplaats is dit?",
"ca": "Quin tipus de refugi és aquest?",
- "cs": "Co je to za přístřešek?"
+ "cs": "Co je to za přístřešek?",
+ "uk": "Що це за притулок?"
},
"render": {
"en": "Shelter type: {shelter_type}",
"de": "Art des Unterstands: {shelter_type}",
- "cs": "Typ přístřešku: {shelter_type}"
+ "cs": "Typ přístřešku: {shelter_type}",
+ "uk": "Тип притулку: {shelter_type}"
},
"freeform": {
"key": "shelter_type",
diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json
index b825129b5..d631fb62c 100644
--- a/assets/layers/shops/shops.json
+++ b/assets/layers/shops/shops.json
@@ -215,7 +215,7 @@
"description": {
"en": "You can specify later on what this shop sells.",
"ca": "Podeu especificar més endavant el que ven aquesta botiga.",
- "cs": "Přidat nový obchod",
+ "cs": "Později můžete zadat, co tento obchod prodává.",
"de": "Sie können später angeben, was das Geschäft verkauft.",
"eo": "Enmeti novan butikon",
"es": "Puedes especificar más adelante lo que vende esta tienda.",
@@ -239,7 +239,8 @@
"de": "Wie ist der Name dieses Geschäfts?",
"es": "¿Cual es el nombre de esta tienda?",
"ca": "Quin és el nom d'aquesta botiga?",
- "cs": "Jak se jmenuje tento obchod?"
+ "cs": "Jak se jmenuje tento obchod?",
+ "uk": "Як називається цей магазин?"
},
"render": {
"en": "This shop is called {name}",
@@ -247,7 +248,8 @@
"nl": "Deze zaak heet {name}",
"ca": "La botiga s'anomena {name}",
"fr": "Ce commerce s'appelle {name}",
- "cs": "Tento obchod se jmenuje {name}"
+ "cs": "Tento obchod se jmenuje {name}",
+ "uk": "Цей магазин називається {name}"
},
"freeform": {
"key": "name"
@@ -266,7 +268,8 @@
"de": "Um was für ein Geschäft handelt es sich?",
"fr": "Quel genre de magasin est-ce?",
"ca": "Quin tipus de botiga és aquesta?",
- "cs": "Co je to za obchod?"
+ "cs": "Co je to za obchod?",
+ "uk": "Що це за магазин?"
},
"render": {
"en": "This is a {shop}",
@@ -302,7 +305,8 @@
"then": {
"en": "Bicycle rental shop",
"nl": "Fietsverhuurzaak",
- "de": "Fahrradverleih"
+ "de": "Fahrradverleih",
+ "uk": "Пункт прокату велосипедів"
}
}
],
@@ -315,7 +319,8 @@
"id": "brand",
"question": {
"en": "What is the brand of this shop?",
- "de": "Zu welcher Marke gehört dieses Geschäft?"
+ "de": "Zu welcher Marke gehört dieses Geschäft?",
+ "uk": "Яка марка цього магазину?"
},
"render": {
"en": "Part of {brand}",
@@ -329,7 +334,8 @@
"if": "not:brand=yes",
"then": {
"en": "This shop does not have a specific brand, it is not part of a bigger chain",
- "de": "Das Geschäft gehört zu keiner Marke oder Handelskette"
+ "de": "Das Geschäft gehört zu keiner Marke oder Handelskette",
+ "uk": "Цей магазин не має певного бренду, він не є частиною великої мережі"
}
}
]
@@ -803,11 +809,13 @@
"es": "¿Alquila bicicis esta tienda?",
"da": "Udlejer denne butik cykler?",
"ca": "Aquesta botiga alquila bicicletes?",
- "cs": "Pronajímá tento obchod kola?"
+ "cs": "Pronajímá tento obchod kola?",
+ "uk": "Чи дає цей магазин велосипеди напрокат?"
},
"questionHint": {
"en": "This is about rental for e.g. tourists who need a bike. Some bicycle repair shops offer a bicycle to use while your bicycle is being repaired but this is not considered rental for this question.",
- "de": "Es geht um die Vermietung, z.B. an Touristen, die ein Fahrrad benötigen. Einige Fahrradwerkstätten bieten ein Fahrrad an, das man benutzen kann, während das eigene Fahrrad repariert wird, aber dies wird für diese Frage nicht als Vermietung betrachtet."
+ "de": "Es geht um die Vermietung, z.B. an Touristen, die ein Fahrrad benötigen. Einige Fahrradwerkstätten bieten ein Fahrrad an, das man benutzen kann, während das eigene Fahrrad repariert wird, aber dies wird für diese Frage nicht als Vermietung betrachtet.",
+ "uk": "Йдеться про прокат для туристів, яким потрібен велосипед. Деякі майстерні з ремонту велосипедів пропонують велосипед на час ремонту, але це не вважається прокатом в даному випадку."
},
"mappings": [
{
@@ -825,7 +833,8 @@
"es": "Esta tienda alquila bicis",
"da": "Denne butik udlejer cykler",
"ca": "Aquesta botiga lloga bicis",
- "cs": "Tento obchod pronajímá jízdní kola"
+ "cs": "Tento obchod pronajímá jízdní kola",
+ "uk": "У цьому магазині можна взяти напрокат велосипеди"
}
},
{
@@ -843,7 +852,8 @@
"es": "Esta tienda no alquila bicis",
"da": "Denne butik udlejer ikke cykler",
"ca": "Aquesta botiga no lloga bicis",
- "cs": "Tento obchod nepronajímá kola"
+ "cs": "Tento obchod nepronajímá kola",
+ "uk": "Цей магазин не дає велосипеди напрокат"
}
}
]
diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json
index 7958b40f8..70d3556fa 100644
--- a/assets/layers/sport_pitch/sport_pitch.json
+++ b/assets/layers/sport_pitch/sport_pitch.json
@@ -656,7 +656,8 @@
"de": "Wie lautet die Telefonnummer des Betreibers?",
"es": "¿Cual es el número de teléfono de la operadora?",
"ca": "Quin és el telèfon de l'operadora?",
- "cs": "Jaké je telefonní číslo provozovatele?"
+ "cs": "Jaké je telefonní číslo provozovatele?",
+ "uk": "Який номер телефону оператора?"
},
"freeform": {
"key": "phone",
diff --git a/assets/layers/street_lamps/street_lamps.json b/assets/layers/street_lamps/street_lamps.json
index d06961660..7ff0b4559 100644
--- a/assets/layers/street_lamps/street_lamps.json
+++ b/assets/layers/street_lamps/street_lamps.json
@@ -90,7 +90,8 @@
"de": "Diese Straßenlaterne hat die Referenznummer {ref}",
"es": "Esta lámpara callejera tiene el número de referencia {ref}",
"ca": "Aquest fanal té el número de referència {ref}",
- "cs": "Tato pouliční lampa má referenční číslo {ref}"
+ "cs": "Tato pouliční lampa má referenční číslo {ref}",
+ "uk": "Цей вуличний ліхтар має ідентифікаційний номер {ref}"
},
"question": {
"en": "What is the reference number of this street lamp?",
@@ -98,7 +99,8 @@
"de": "Wie lautet die Referenznummer dieser Straßenlaterne?",
"es": "¿Cual es el número de referencia de esta lámpara callejera?",
"ca": "Quin és el número de referència d'aquest fanal?",
- "cs": "Jaké je referenční číslo této pouliční lampy?"
+ "cs": "Jaké je referenční číslo této pouliční lampy?",
+ "uk": "Який ідентифікаційний номер цього вуличного ліхтаря?"
},
"freeform": {
"key": "ref"
diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json
index cae62d04e..f654c4d3f 100644
--- a/assets/layers/toilet/toilet.json
+++ b/assets/layers/toilet/toilet.json
@@ -828,7 +828,7 @@
"it": "Un fasciatoio è nei servizi igienici femminili",
"da": "Puslebordet er på toilettet til kvinder. ",
"ca": "Al lavabo per a dones hi ha un canviador",
- "cs": "Přebalovací pult je na dámské toaletě. "
+ "cs": "Přebalovací pult je na dámské toaletě"
},
"if": "changing_table:location=female_toilet"
},
@@ -840,7 +840,7 @@
"nl": "Er bevindt zich een luiertafel in de herentoiletten ",
"it": "Un fasciatoio è nei servizi igienici maschili",
"ca": "Al lavabo per a homes hi ha un canviador",
- "cs": "Přebalovací pult je na pánské toaletě. "
+ "cs": "Přebalovací pult je na pánské toaletě"
},
"if": "changing_table:location=male_toilet"
},
@@ -854,7 +854,7 @@
"it": "Un fasciatoio è nei servizi igienici per persone in sedia a rotelle",
"da": "Puslebordet er på toilettet for kørestolsbrugere. ",
"ca": "Al lavabo per a usuaris de cadira de rodes hi ha un canviador",
- "cs": "Přebalovací pult je na toaletě pro vozíčkáře. "
+ "cs": "Přebalovací pult je na toaletě pro vozíčkáře"
}
},
{
@@ -868,7 +868,7 @@
"es": "El cambiador está en una habitación dedicada",
"da": "Vuggestuen står i et særligt rum. ",
"ca": "Hi ha un canviador en una habitació dedicada",
- "cs": "Přebalovací pult je ve vyhrazené místnosti. "
+ "cs": "Přebalovací pult je ve vyhrazené místnosti"
}
}
],
diff --git a/assets/layers/usersettings/usersettings.json b/assets/layers/usersettings/usersettings.json
index 967791d01..1184f8f48 100644
--- a/assets/layers/usersettings/usersettings.json
+++ b/assets/layers/usersettings/usersettings.json
@@ -249,7 +249,7 @@
"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.",
- "cs": "Jazyk byl nastaven pomocí parametru URL a uživatel jej nemůže nastavit.²",
+ "cs": "Jazyk byl nastaven pomocí parametru URL a uživatel jej nemůže nastavit.",
"nl": "De taal werd ingesteld via een URL-parameter en kan niet manueel ingesteld worden.",
"da": "Sproget er angivet vha. en URL-parameter og kan ikke angives af brugeren.",
"hu": "A nyelv egy URL-paraméterrel lett megadva ezért felhasználó nem tudja beállítani."
diff --git a/assets/layers/vending_machine/vending_machine.json b/assets/layers/vending_machine/vending_machine.json
index a677baedb..63b40ec21 100644
--- a/assets/layers/vending_machine/vending_machine.json
+++ b/assets/layers/vending_machine/vending_machine.json
@@ -877,7 +877,8 @@
"en": "What is the phone number of the operator of this vending machine?",
"ca": "Quin és el número de telèfon de l'operador d'aquesta màquina expenedora?",
"de": "Wie lautet die Telefonnummer des Automatenbetreibers?",
- "cs": "Jaké je telefonní číslo na provozovatele tohoto automatu?"
+ "cs": "Jaké je telefonní číslo na provozovatele tohoto automatu?",
+ "uk": "Який номер телефону оператора цього торгового автомата?"
},
"questionHint": {
"en": "This is the number you can call in case of problems with the vending machine",
diff --git a/assets/layers/waste_disposal/waste_disposal.json b/assets/layers/waste_disposal/waste_disposal.json
index 3834adb81..05f19ea64 100644
--- a/assets/layers/waste_disposal/waste_disposal.json
+++ b/assets/layers/waste_disposal/waste_disposal.json
@@ -36,7 +36,8 @@
"da": "Bortskaffelse af affald",
"ca": "Contenidor de fem",
"cs": "Nakládání s odpady",
- "zh_Hant": "廢棄物處理"
+ "zh_Hant": "廢棄物處理",
+ "uk": "Утилізація відходів"
}
},
"pointRendering": [
diff --git a/assets/themes/bicycle_parkings/bicycle_parkings.json b/assets/themes/bicycle_parkings/bicycle_parkings.json
index 64320d382..68e1b73ff 100644
--- a/assets/themes/bicycle_parkings/bicycle_parkings.json
+++ b/assets/themes/bicycle_parkings/bicycle_parkings.json
@@ -25,7 +25,8 @@
"fil": "Mapa na nagpapakita ng lahat ng uri ng paradahan ng bisikleta",
"ca": "Un mapa que mostra tots els tipus d'aparcaments de bicicletes",
"cs": "Mapa všech typů parkovišť pro jízdní kola",
- "uk": "Карта, що показує всі типи велосипедних парковок"
+ "uk": "Карта, що показує всі типи велосипедних парковок",
+ "pl": "Mapa pokazująca wszystkie typy parkingów dla rowerów"
},
"icon": "./assets/themes/bicycle_parkings/logo.svg",
"layers": [
diff --git a/assets/themes/circular_economy/circular_economy.json b/assets/themes/circular_economy/circular_economy.json
index 48ee6f61c..6872fa143 100644
--- a/assets/themes/circular_economy/circular_economy.json
+++ b/assets/themes/circular_economy/circular_economy.json
@@ -7,7 +7,8 @@
"ca": "Economia circular",
"cs": "Cirkulární ekonomika",
"uk": "Переробна економіка",
- "hu": "Körforgásos gazdaság"
+ "hu": "Körforgásos gazdaság",
+ "pl": "Gospodarka o obiegu zamkniętym"
},
"description": {
"en": "Various items which help people to share, reuse or recycle.",
@@ -15,7 +16,8 @@
"de": "Verschiedene Gegenstände, die den Menschen helfen, zu teilen, wiederzuverwenden oder zu recyceln.",
"ca": "Varios elements que ajuden a la gent a compartir, reutilitzar o reciclar.",
"cs": "Různé předměty, které pomáhají lidem sdílet, znovu používat nebo recyklovat.",
- "uk": "Різноманітні предмети, які допомагають людям ділитися, повторно використовувати або переробляти."
+ "uk": "Різноманітні предмети, які допомагають людям ділитися, повторно використовувати або переробляти.",
+ "pl": "Różne przedmioty, które pomagają ludziom się dzielić, ponownie używać lub poddawać recyklingowi."
},
"icon": "./assets/themes/circular_economy/circular.svg",
"layers": [
@@ -47,7 +49,8 @@
"de": "Second-Hand-Läden",
"ca": "Tendes de segona mà",
"cs": "Obchody s použitým zbožím",
- "uk": "Магазини секонд-хенду"
+ "uk": "Магазини секонд-хенду",
+ "pl": "Sklepy second-hand"
},
"filter": null,
"source": {
diff --git a/assets/themes/cyclenodes/cyclenodes.json b/assets/themes/cyclenodes/cyclenodes.json
index 41b99eb7c..dd6121c64 100644
--- a/assets/themes/cyclenodes/cyclenodes.json
+++ b/assets/themes/cyclenodes/cyclenodes.json
@@ -222,7 +222,8 @@
"de": "Wie lautet die Nummer des Knotenpunkts im Fahrradknotenpunktnetzwerk?",
"cs": "Jaké je referenční číslo tohoto cyklistického uzlu?",
"ca": "Quin és el número de referència d'aquest node ciclista?",
- "es": "¿Cuál es el número de referencia de este nodo cíclico?"
+ "es": "¿Cuál es el número de referencia de este nodo cíclico?",
+ "pl": "Jaki jest numer referencyjny tego węzła rowerowego?"
},
"freeform": {
"key": "rcn_ref",
@@ -244,7 +245,8 @@
"de": "Knotenpunktnummer {rcn_ref} des Fahrradknotenpunktnetzwerks",
"cs": "Tento cyklistický uzel má referenční číslo {rcn_ref}",
"ca": "Aquest node ciclista té la referència número {rcn_ref}",
- "es": "Este nodo cíclico tiene el número de referencia {rcn_ref}"
+ "es": "Este nodo cíclico tiene el número de referencia {rcn_ref}",
+ "pl": "Ten węzeł rowerowy ma numer referencyjny {rcn_ref}"
},
"condition": "rcn_ref~*"
},
@@ -325,7 +327,8 @@
"de": "ein Knoten eines Fahrradknotenpunktnetzwerks",
"ca": "un node ciclista",
"es": "un nodo cíclico",
- "cs": "cyklistický uzel"
+ "cs": "cyklistický uzel",
+ "pl": "węzeł rowerowy"
},
"snapToLayer": [
"cycleways_and_roads"
diff --git a/assets/themes/cyclestreets/cyclestreets.json b/assets/themes/cyclestreets/cyclestreets.json
index 22d3bc5b9..dda1309b4 100644
--- a/assets/themes/cyclestreets/cyclestreets.json
+++ b/assets/themes/cyclestreets/cyclestreets.json
@@ -17,7 +17,8 @@
"cs": "Cyklostezky",
"eu": "Bidegorriak",
"pl": "Ulice rowerowe",
- "ru": "Велосипедные дорожки"
+ "ru": "Велосипедные дорожки",
+ "uk": "Велодоріжки"
},
"description": {
"nl": "Een fietsstraat is een straat waar - automobilisten geen fietsers mogen inhalen
- Er een maximumsnelheid van 30km/u geldt
- Fietsers gemotoriseerde voertuigen links mogen inhalen
- Fietsers nog steeds voorrang aan rechts moeten verlenen - ook aan auto's en voetgangers op het zebrapad
Op deze open kaart kan je alle gekende fietsstraten zien en kan je ontbrekende fietsstraten aanduiden. Fietszones worden aangeduid door elke straat apart als fietsstraat te markeren.
Om de kaart aan te passen, moet je je aanmelden met OpenStreetMap en helemaal inzoomen tot straatniveau. ",
@@ -48,7 +49,8 @@
"fr": "Une carte des rues cyclables",
"da": "Et kort over cykelgader",
"cs": "Mapa cyklostezek",
- "pl": "Mapa ulic rowerowych"
+ "pl": "Mapa ulic rowerowych",
+ "uk": "Карта велодоріжок"
},
"icon": "./assets/themes/cyclestreets/logo.svg",
"startZoom": 14,
diff --git a/assets/themes/cyclofix/cyclofix.json b/assets/themes/cyclofix/cyclofix.json
index 6d9d05934..c036a4440 100644
--- a/assets/themes/cyclofix/cyclofix.json
+++ b/assets/themes/cyclofix/cyclofix.json
@@ -16,7 +16,8 @@
"ca": "Cyclofix - un mapa per a ciclistes",
"da": "Cyclofix - et åbent kort for cyklister",
"cs": "Cyklofix - mapa pro cyklisty",
- "pl": "Cyclofix - mapa dla rowerzystów"
+ "pl": "Cyclofix - mapa dla rowerzystów",
+ "uk": "Cyclofix - карта для велосипедистів"
},
"description": {
"en": "A map for cyclists to find the appropriate infrastructure for their needs, such as bicycle pumps, drinking water, bicycle shops, repair stations or parkings.",
diff --git a/assets/themes/disaster_response/disaster_response.json b/assets/themes/disaster_response/disaster_response.json
index 5e724f903..9ec1776ae 100644
--- a/assets/themes/disaster_response/disaster_response.json
+++ b/assets/themes/disaster_response/disaster_response.json
@@ -9,7 +9,8 @@
"da": "Beredskab",
"cs": "Reakce na katastrofy a záchranné služby",
"ru": "Ликвидация последствий стихийных бедствий и аварийные службы",
- "hu": "Katasztrófaelhárítás és sürgősségi szolgálatok"
+ "hu": "Katasztrófaelhárítás és sürgősségi szolgálatok",
+ "uk": "Реагування на стихійні лиха та аварійні служби"
},
"description": {
"en": "This map contains elements meant for disaster preparedness and response.",
diff --git a/assets/themes/drinking_water/drinking_water.json b/assets/themes/drinking_water/drinking_water.json
index 8d1f1cc8c..82d351919 100644
--- a/assets/themes/drinking_water/drinking_water.json
+++ b/assets/themes/drinking_water/drinking_water.json
@@ -16,7 +16,8 @@
"da": "Drikkevand",
"pa_PK": "پیݨ والا پاݨی",
"cs": "Pitná voda",
- "pl": "Woda pitna"
+ "pl": "Woda pitna",
+ "uk": "Питна вода"
},
"description": {
"en": "On this map, publicly accessible drinking water spots are shown and can be easily added",
diff --git a/assets/themes/education/education.json b/assets/themes/education/education.json
index d8275763e..4ab6677bf 100644
--- a/assets/themes/education/education.json
+++ b/assets/themes/education/education.json
@@ -16,7 +16,8 @@
"zh_Hant": "教育",
"it": "Istruzione",
"ru": "Образование",
- "hu": "Oktatás"
+ "hu": "Oktatás",
+ "uk": "Освіта"
},
"description": {
"en": "On this map, you'll find information about all types of schools and education and can easily add more information",
diff --git a/assets/themes/elongated_coin/elongated_coin.json b/assets/themes/elongated_coin/elongated_coin.json
index 297fa14b1..3785e6175 100644
--- a/assets/themes/elongated_coin/elongated_coin.json
+++ b/assets/themes/elongated_coin/elongated_coin.json
@@ -7,7 +7,8 @@
"ca": "Premsa de cèntims",
"cs": "Stroje na ražbu mincí",
"pl": "Prasy do groszy",
- "hu": "Kinyújtottérem-automaták"
+ "hu": "Kinyújtottérem-automaták",
+ "uk": "Монетні преси"
},
"description": {
"en": "Find penny presses to create your own elongated coins.",
@@ -15,7 +16,8 @@
"es": "Encuentra prensas de centimos para crear tus propias monedas alargadas.",
"ca": "Trobeu premses de cèntims per crear les vostres pròpies monedes allargades.",
"cs": "Najděte automaty na ražbu suvenýrových mincí.",
- "pl": "Znajdź prasy do groszy, aby stworzyć własne wydłużone monety."
+ "pl": "Znajdź prasy do groszy, aby stworzyć własne wydłużone monety.",
+ "uk": "Знайдіть преси для монет, щоб створити власні витягнуті монети."
},
"icon": "./assets/themes/elongated_coin/penny.svg",
"startZoom": 11,
diff --git a/assets/themes/etymology/etymology.json b/assets/themes/etymology/etymology.json
index ec47b4605..dd62f877e 100644
--- a/assets/themes/etymology/etymology.json
+++ b/assets/themes/etymology/etymology.json
@@ -14,7 +14,8 @@
"nb_NO": "Åpent etymologikart",
"cs": "Etymologie - podle čeho je místo pojmenováno?",
"es": "Etimología: ¿De qué recibe el nombre un lugar?",
- "pl": "Etymologia - od czego pochodzi nazwa ulicy?"
+ "pl": "Etymologia - od czego pochodzi nazwa ulicy?",
+ "uk": "Етимологія - на честь чого названо місце?"
},
"description": {
"en": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. In the popup, you'll see the Wikipedia article (if it exists) or a wikidata box of what the object is named after. If the object itself has a wikipedia page, that'll be shown too.
You can help contribute too!Zoom in enough and all streets will show up. You can click one and a Wikidata-search box will popup. With a few clicks, you can add an etymology link. Note that you need a free OpenStreetMap account to do this.",
@@ -43,7 +44,8 @@
"da": "Hvad er oprindelsen af et stednavn?",
"cs": "Jaký je původ toponyma?",
"pl": "Jakie jest pochodzenie toponimów?",
- "ru": "Каково происхождение топонима?"
+ "ru": "Каково происхождение топонима?",
+ "uk": "Звідки походить топонім?"
},
"icon": "./assets/layers/etymology/logo.svg",
"hideFromOverview": false,
diff --git a/assets/themes/facadegardens/facadegardens.json b/assets/themes/facadegardens/facadegardens.json
index e8c8bfaa7..01f037ba7 100644
--- a/assets/themes/facadegardens/facadegardens.json
+++ b/assets/themes/facadegardens/facadegardens.json
@@ -14,7 +14,8 @@
"da": "Facadehaver",
"cs": "Fasádní zahrady",
"pl": "Ogrody fasadowe",
- "ru": "Фасадные сады"
+ "ru": "Фасадные сады",
+ "uk": "Фасадні сади"
},
"description": {
"nl": "Ontharde voortuintjes, groene gevels en bomen ín de stad brengen naast rust ook een mooiere stad, een grotere biodiversiteit, een verkoelend effect en een betere luchtkwaliteit.
Klimaan VZW en 'Mechelen Klimaatneutraal' willen met het project Klim(t)aan je Gevel bestaande en nieuwe geveltuintjes in kaart brengen als voorbeeld voor mensen zelf een tuintje willen aanleggen of voor stadwandelaars die houden van de natuur.
Meer info over het project op klimaan.be.",
@@ -43,7 +44,8 @@
"da": "Dette kort viser facadehaver med billeder og nyttig info om orientering, solskin og plantetyper.",
"cs": "Tato mapa zobrazuje fasádní zahrady s obrázky a užitečnými informacemi o orientaci, oslunění a druzích rostlin.",
"ca": "Aquest mapa mostra jardins a façanes amb fotografies i informació útil sobre l'orientació, llum del sol i els tipus de plantes.",
- "pl": "Mapa przedstawia ogrody fasadowe ze zdjęciami i przydatnymi informacjami na temat orientacji, nasłonecznienia i rodzajów roślin."
+ "pl": "Mapa przedstawia ogrody fasadowe ze zdjęciami i przydatnymi informacjami na temat orientacji, nasłonecznienia i rodzajów roślin.",
+ "uk": "На цій карті показані фасадні сади з фотографіями та корисною інформацією про орієнтацію, сонячне освітлення та типи рослин."
},
"icon": "./assets/themes/facadegardens/geveltuin.svg",
"startZoom": 15,
diff --git a/assets/themes/fireplace/fireplace.json b/assets/themes/fireplace/fireplace.json
index e6cbf29d4..8825bde74 100644
--- a/assets/themes/fireplace/fireplace.json
+++ b/assets/themes/fireplace/fireplace.json
@@ -6,7 +6,8 @@
"es": "Chimenea y barbacoas",
"ca": "Xemeneies i barbacoes",
"cs": "Ohniště a grily",
- "hu": "Tűzrakó- és grillezőhelyek"
+ "hu": "Tűzrakó- és grillezőhelyek",
+ "uk": "Вогнища та барбекю"
},
"description": {
"de": "Stelle im Freien zum Feuermachen oder ein ortsfest installierter Grill an einer offizielle Stelle.",
diff --git a/assets/themes/food/food.json b/assets/themes/food/food.json
index 687a5b01e..ad197b290 100644
--- a/assets/themes/food/food.json
+++ b/assets/themes/food/food.json
@@ -14,7 +14,8 @@
"da": "Restauranter og fastfood",
"cs": "Restaurace a rychlé občerstvení",
"ru": "Общественное питание",
- "pl": "Restauracje i fast foody"
+ "pl": "Restauracje i fast foody",
+ "uk": "Ресторани та фаст-фуд"
},
"description": {
"nl": "Restaurants en fast food",
@@ -27,7 +28,8 @@
"ca": "Restaurants i menjar ràpid",
"cs": "Restaurace a rychlého občerstvení",
"pl": "Restauracje i fast foody",
- "it": "Ristoranti e fast food"
+ "it": "Ristoranti e fast food",
+ "uk": "Ресторани та фаст-фуд"
},
"icon": "./assets/layers/food/restaurant.svg",
"layers": [
diff --git a/assets/themes/fritures/fritures.json b/assets/themes/fritures/fritures.json
index 5fc590fb5..6424b5afb 100644
--- a/assets/themes/fritures/fritures.json
+++ b/assets/themes/fritures/fritures.json
@@ -10,7 +10,8 @@
"pa_PK": "فرائیاں دیاں دکاناں",
"cs": "Obchody s hranolky",
"es": "Tiendas de patatas fritas",
- "pl": "Sklepy z frytkami"
+ "pl": "Sklepy z frytkami",
+ "uk": "Картопля фрі"
},
"description": {
"en": "On this map, you'll find your favourite fries shop!",
diff --git a/assets/themes/healthcare/healthcare.json b/assets/themes/healthcare/healthcare.json
index 04737fa2f..61e6bdec8 100644
--- a/assets/themes/healthcare/healthcare.json
+++ b/assets/themes/healthcare/healthcare.json
@@ -16,7 +16,8 @@
"pl": "Służba zdrowia",
"zh_Hant": "醫療保健",
"it": "Assistenza sanitaria",
- "hu": "Egészségügy"
+ "hu": "Egészségügy",
+ "uk": "Охорона здоров'я"
},
"description": {
"en": "On this map, various healthcare related items are shown",
@@ -28,7 +29,8 @@
"cs": "Na této mapě jsou zobrazeny různé položky související se zdravotní péčí",
"es": "En este mapa se muestran varios elementos relacionados con la salud",
"pl": "Na tej mapie pokazane są różne elementy związane z opieką zdrowotną",
- "it": "Su questa mappa sono indicati vari elementi relativi all'assistenza sanitaria"
+ "it": "Su questa mappa sono indicati vari elementi relativi all'assistenza sanitaria",
+ "uk": "На цій карті показані різні об'єкти, пов'язані з охороною здоров'я"
},
"icon": "./assets/layers/doctors/doctors.svg",
"startZoom": 16,
diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
index d02f116aa..7011f4506 100644
--- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
@@ -3,12 +3,14 @@
"title": {
"en": "Changes made with MapComplete",
"de": "Änderungen mit MapComplete",
- "cs": "Změny provedené pomocí MapComplete"
+ "cs": "Změny provedené pomocí MapComplete",
+ "es": "Cambios realizados con MapComplete"
},
"shortDescription": {
"en": "Shows changes made by MapComplete",
"de": "Zeigt die von MapComplete vorgenommenen Änderungen an",
- "cs": "Zobrazuje změny provedené nástrojem MapComplete"
+ "cs": "Zobrazuje změny provedené nástrojem MapComplete",
+ "es": "Muestra los cambios realizados por MapComplete"
},
"description": {
"en": "This maps shows all the changes made with MapComplete",
@@ -27,7 +29,8 @@
"id": "mapcomplete-changes",
"name": {
"en": "Changeset centers",
- "de": "Changeset-Zentren"
+ "de": "Changeset-Zentren",
+ "es": "Centro del conjunto de cambios"
},
"minzoom": 0,
"source": {
@@ -39,7 +42,8 @@
"render": {
"en": "Changeset for {theme}",
"de": "Änderungssatz für {theme}",
- "cs": "Sada změn pro {theme}"
+ "cs": "Sada změn pro {theme}",
+ "es": "Conjunto de cambios para {theme}"
}
},
"description": {
@@ -54,7 +58,8 @@
"render": {
"en": "Changeset {id}",
"de": "Änderungssatz {id}",
- "cs": "Sada změn {id}"
+ "cs": "Sada změn {id}",
+ "es": "Conjunto de cambios {id}"
}
},
{
@@ -62,7 +67,8 @@
"question": {
"en": "What contributor did make this change?",
"de": "Wer hat zu dieser Änderung beigetragen?",
- "cs": "Který přispěvatel provedl tuto změnu?"
+ "cs": "Který přispěvatel provedl tuto změnu?",
+ "es": "¿Qué colaborador realizó este cambio?"
},
"freeform": {
"key": "user"
@@ -70,7 +76,8 @@
"render": {
"en": "Change made by {user}",
"de": "Änderung vorgenommen von {user}",
- "cs": "Změna provedena uživatelem {user}"
+ "cs": "Změna provedena uživatelem {user}",
+ "es": "Cambio realizado por {user}"
}
},
{
@@ -78,14 +85,16 @@
"question": {
"en": "What theme was used to make this change?",
"de": "Welches Thema wurde für diese Änderung verwendet?",
- "cs": "Jaký motiv byl použit k provedení této změny?"
+ "cs": "Jaký motiv byl použit k provedení této změny?",
+ "es": "¿Qué tema se utilizó para hacer este cambio?"
},
"freeform": {
"key": "theme"
},
"render": {
"en": "Change with theme {theme}",
- "de": "Änderung mit Thema {theme}"
+ "de": "Änderung mit Thema {theme}",
+ "es": "Cambiar con el tema {theme}"
}
},
{
@@ -96,12 +105,14 @@
"question": {
"en": "What locale (language) was this change made in?",
"de": "In welcher Sprache (Locale) wurde diese Änderung vorgenommen?",
- "cs": "V jakém prostředí (jazyce) byla tato změna provedena?"
+ "cs": "V jakém prostředí (jazyce) byla tato změna provedena?",
+ "es": "¿En qué idioma (ubicación) se realizó este cambio?"
},
"render": {
"en": "User locale is {locale}",
"de": "Die Benutzersprache ist {locale}",
- "cs": "Uživatelské prostředí je {locale}"
+ "cs": "Uživatelské prostředí je {locale}",
+ "es": "La configuración local del usuario es {locale}"
}
},
{
@@ -109,12 +120,14 @@
"render": {
"en": "Change with with {host}",
"de": "Änderung mit {host}",
- "cs": "Změnit pomocí {host}"
+ "cs": "Změnit pomocí {host}",
+ "es": "Cambiado con {host}"
},
"question": {
"en": "What host (website) was this change made with?",
"de": "Bei welchem Host (Website) wurde diese Änderung vorgenommen?",
- "cs": "U jakého hostitele (webové stránky) byla tato změna provedena?"
+ "cs": "U jakého hostitele (webové stránky) byla tato změna provedena?",
+ "es": "¿Con qué host (página web) se hizo este cambio?"
},
"freeform": {
"key": "host"
@@ -137,12 +150,14 @@
"question": {
"en": "What version of MapComplete was used to make this change?",
"de": "Welche Version von MapComplete wurde verwendet, um diese Änderung vorzunehmen?",
- "cs": "Jaká verze aplikace MapComplete byla použita k provedení této změny?"
+ "cs": "Jaká verze aplikace MapComplete byla použita k provedení této změny?",
+ "es": "¿Qué versión de MapComplete se utilizó para hacer este cambio?"
},
"render": {
"en": "Made with {editor}",
"de": "Erstellt mit {editor}",
- "cs": "Vytvořeno pomocí {editor}"
+ "cs": "Vytvořeno pomocí {editor}",
+ "es": "Hecho con {editor}"
},
"freeform": {
"key": "editor"
@@ -706,7 +721,8 @@
"question": {
"en": "Exclude GRB theme",
"de": "GRB-Thema ausschließen",
- "cs": "Vyloučit motiv GRB"
+ "cs": "Vyloučit motiv GRB",
+ "es": "Excluir tema GRB"
}
}
]
@@ -737,7 +753,8 @@
"render": {
"en": "More statistics can be found here",
"de": "Weitere Statistiken findest du hier",
- "cs": "Další statistiky najdete zde"
+ "cs": "Další statistiky najdete zde",
+ "es": "Se pueden encontrar más estadísticas aquí"
}
},
{
diff --git a/assets/themes/personal/personal.json b/assets/themes/personal/personal.json
index c81107c35..e03bfb344 100644
--- a/assets/themes/personal/personal.json
+++ b/assets/themes/personal/personal.json
@@ -18,7 +18,8 @@
"cs": "Osobní téma",
"pl": "Temat osobisty",
"ru": "Собственная тема",
- "hu": "Személyes téma"
+ "hu": "Személyes téma",
+ "uk": "Особиста тема"
},
"description": {
"en": "Create a personal theme based on all the available layers of all themes. In order to show some data, open layer selection",
@@ -34,7 +35,8 @@
"it": "Crea un tema personale basato sui livelli disponibili per tutti i temi. Per mostrare dei dati, apri selezione livello",
"da": "Opret et personligt tema baseret på alle de tilgængelige lag af alle temaer. For at vise nogle data skal du åbne lagvalg",
"cs": "Vytvořte si osobní téma na základě všech dostupných vrstev všech témat. Chcete-li vidět nějaká data, otevřete si výběr vrstev",
- "pl": "Utwórz osobisty temat w oparciu o wszystkie dostępne warstwy wszystkich tematów. Aby wyświetlić dane, otwórz wybór warstwy"
+ "pl": "Utwórz osobisty temat w oparciu o wszystkie dostępne warstwy wszystkich tematów. Aby wyświetlić dane, otwórz wybór warstwy",
+ "uk": "Створіть особисту тему на основі всіх доступних шарів усіх тем. Щоб показати деякі дані, відкрийте вибір шару"
},
"icon": "./assets/svg/addSmall.svg",
"layers": [],
diff --git a/assets/themes/pets/pets.json b/assets/themes/pets/pets.json
index 79dba61cb..608573a70 100644
--- a/assets/themes/pets/pets.json
+++ b/assets/themes/pets/pets.json
@@ -13,7 +13,8 @@
"pl": "Kliniki weterynaryjne, parki dla psów i inne obiekty dla zwierząt",
"it": "Veterinari, parchi accessibili ai cani e altri servizi per animali domestici",
"ru": "Ветеринары, парки для собак и другие удобства для домашних животных",
- "hu": "Állatorvosok, kutyafuttatók és hasonló, kedvtelésből tartott állatoknak szóló létesítmények"
+ "hu": "Állatorvosok, kutyafuttatók és hasonló, kedvtelésből tartott állatoknak szóló létesítmények",
+ "uk": "Ветеринари, собачі парки та інші зручності для домашніх тварин"
},
"description": {
"en": "On this map, you'll find various interesting places for you pets: veterinarians, dog parks, pet shops, dog-friendly restaurants, ...",
diff --git a/assets/themes/playgrounds/playgrounds.json b/assets/themes/playgrounds/playgrounds.json
index 02efb01d3..bfb41566a 100644
--- a/assets/themes/playgrounds/playgrounds.json
+++ b/assets/themes/playgrounds/playgrounds.json
@@ -17,7 +17,8 @@
"da": "Legepladser",
"cs": "Dětská hřiště",
"eu": "Jolas parkeak",
- "pl": "Place zabaw"
+ "pl": "Place zabaw",
+ "uk": "Дитячі майданчики"
},
"description": {
"nl": "Op deze kaart vind je speeltuinen en kan je zelf meer informatie en foto's toevoegen",
@@ -52,7 +53,8 @@
"es": "Un mapa con parques infantiles",
"da": "Et kort med legepladser",
"cs": "Mapa dětských hřišť",
- "pl": "Mapa z placami zabaw"
+ "pl": "Mapa z placami zabaw",
+ "uk": "Карта з дитячими майданчиками"
},
"icon": "./assets/themes/playgrounds/playground.svg",
"startZoom": 13,
diff --git a/assets/themes/postboxes/postboxes.json b/assets/themes/postboxes/postboxes.json
index 2843e7935..e76a4591f 100644
--- a/assets/themes/postboxes/postboxes.json
+++ b/assets/themes/postboxes/postboxes.json
@@ -13,7 +13,8 @@
"ca": "Mapa de bústies i oficines de correus",
"es": "Mapa de Buzones y Oficinas de Correos",
"cs": "Mapa poštovních schránek a pošt",
- "pl": "Mapa skrzynek i urzędów pocztowych"
+ "pl": "Mapa skrzynek i urzędów pocztowych",
+ "uk": "Поштові скриньки та карта поштових відділень"
},
"description": {
"en": "On this map you can find and add data of post offices and post boxes. You can use this map to find where you can mail your next postcard! :)
Spotted an error or is a post box missing? You can edit this map with a free OpenStreetMap account.",
@@ -42,7 +43,8 @@
"da": "Et kort med postkasser og posthuse",
"ca": "Un mapa que mostra bústies i oficines de correus",
"cs": "Mapa s poštovními schránkami a poštami",
- "pl": "Mapa pokazująca skrzynki pocztowe i urzędy pocztowe"
+ "pl": "Mapa pokazująca skrzynki pocztowe i urzędy pocztowe",
+ "uk": "Мапа з позначенням поштових скриньок та поштових відділень"
},
"icon": "./assets/layers/postboxes/postbox.svg",
"startZoom": 13,
diff --git a/assets/themes/rainbow_crossings/rainbow_crossings.json b/assets/themes/rainbow_crossings/rainbow_crossings.json
index 09050d0af..5c5795e4e 100644
--- a/assets/themes/rainbow_crossings/rainbow_crossings.json
+++ b/assets/themes/rainbow_crossings/rainbow_crossings.json
@@ -12,7 +12,8 @@
"cs": "Duhové přechody pro chodce",
"zh_Hant": "彩虹人行穿越道",
"pl": "Tęczowe przejścia dla pieszych",
- "hu": "Szivárványos gyalogosátkelők"
+ "hu": "Szivárványos gyalogosátkelők",
+ "uk": "Веселкові пішохідні переходи"
},
"description": {
"en": "On this map, rainbow-painted pedestrian crossings are shown and can be easily added",
diff --git a/assets/themes/shops/shops.json b/assets/themes/shops/shops.json
index 60dd03bf6..f6bb74a37 100644
--- a/assets/themes/shops/shops.json
+++ b/assets/themes/shops/shops.json
@@ -16,7 +16,8 @@
"es": "Tiendas",
"cs": "Obchody",
"eu": "Denda",
- "pl": "Sklepy"
+ "pl": "Sklepy",
+ "uk": "Магазини"
},
"description": {
"en": "On this map, one can mark basic information about shops, add opening hours and phone numbers",
diff --git a/assets/themes/ski/ski.json b/assets/themes/ski/ski.json
index c54f4397c..6ff348995 100644
--- a/assets/themes/ski/ski.json
+++ b/assets/themes/ski/ski.json
@@ -7,7 +7,8 @@
"da": "Skiløjper og skilifte",
"fr": "Pistes de ski et remontées mécaniques",
"cs": "Sjezdovky a lanové dráhy",
- "hu": "Sípályák és felvonók"
+ "hu": "Sípályák és felvonók",
+ "uk": "Гірськолижні траси та аеродроми"
},
"description": {
"en": "Everything you need to go skiing",
diff --git a/assets/themes/sport_pitches/sport_pitches.json b/assets/themes/sport_pitches/sport_pitches.json
index 4d594d265..fe410ef92 100644
--- a/assets/themes/sport_pitches/sport_pitches.json
+++ b/assets/themes/sport_pitches/sport_pitches.json
@@ -14,7 +14,8 @@
"es": "Pistas de deportes",
"da": "Sportspladser",
"cs": "Sportovní hřiště",
- "pl": "Boiska sportowe"
+ "pl": "Boiska sportowe",
+ "uk": "Спортивні майданчики"
},
"description": {
"nl": "Een sportveld is een ingerichte plaats met infrastructuur om een sport te beoefenen",
@@ -46,7 +47,8 @@
"da": "Et kort, der viser sportspladser",
"ca": "Un mapa que mostra pistes d'esports",
"cs": "Mapa sportovních hřišť",
- "pl": "Mapa przedstawiająca boiska sportowe"
+ "pl": "Mapa przedstawiająca boiska sportowe",
+ "uk": "Карта з позначенням спортивних майданчиків"
},
"icon": "./assets/layers/sport_pitch/table_tennis.svg",
"layers": [
diff --git a/assets/themes/sports/sports.json b/assets/themes/sports/sports.json
index ea271b39f..0554142f1 100644
--- a/assets/themes/sports/sports.json
+++ b/assets/themes/sports/sports.json
@@ -14,7 +14,8 @@
"pl": "Sporty",
"it": "Sport",
"ru": "Спортивные объекты",
- "hu": "Sporttérkép"
+ "hu": "Sporttérkép",
+ "uk": "Спорт"
},
"description": {
"en": "All about sports, find sport pitches, fitness centres and more.",
diff --git a/assets/themes/street_lighting/street_lighting.json b/assets/themes/street_lighting/street_lighting.json
index cf3029294..c510260a6 100644
--- a/assets/themes/street_lighting/street_lighting.json
+++ b/assets/themes/street_lighting/street_lighting.json
@@ -15,7 +15,8 @@
"es": "Alumbrado público",
"cs": "Pouliční osvětlení",
"it": "Illuminazione stradale",
- "pl": "Oświetlenie uliczne"
+ "pl": "Oświetlenie uliczne",
+ "uk": "Вуличне освітлення"
},
"description": {
"en": "On this map you can find everything about street lighting",
diff --git a/assets/themes/surveillance/surveillance.json b/assets/themes/surveillance/surveillance.json
index d048d2219..26ee3bd8f 100644
--- a/assets/themes/surveillance/surveillance.json
+++ b/assets/themes/surveillance/surveillance.json
@@ -16,7 +16,8 @@
"cs": "Dohled pod dohledem",
"pl": "Monitoring monitoringu",
"sl": "Nadzor nadzora",
- "ru": "Наблюдение под наблюдением"
+ "ru": "Наблюдение под наблюдением",
+ "uk": "Нагляд під наглядом"
},
"description": {
"en": "On this open map, you can find surveillance cameras.",
@@ -49,7 +50,8 @@
"nb_NO": "Overvåkningskameraer og andre typer overvåkning",
"ca": "Càmeres de vigilància i altres tipus de vigilància",
"es": "Cámaras de vigilancia y otros medios de vigilancia",
- "cs": "Bezpečnostní kamery a další prostředky sledování"
+ "cs": "Bezpečnostní kamery a další prostředky sledování",
+ "uk": "Камери спостереження та інші засоби спостереження"
},
"icon": "./assets/themes/surveillance/logo.svg",
"defaultBackgroundId": "maptiler.carto",
diff --git a/assets/themes/toilets/toilets.json b/assets/themes/toilets/toilets.json
index 33aa11f82..1b6202175 100644
--- a/assets/themes/toilets/toilets.json
+++ b/assets/themes/toilets/toilets.json
@@ -15,7 +15,8 @@
"ca": "Lavabos públics",
"da": "Offentlige toiletter",
"es": "Baños públicos",
- "cs": "Veřejné toalety"
+ "cs": "Veřejné toalety",
+ "uk": "Громадські туалети"
},
"description": {
"en": "A map of public toilets",
diff --git a/assets/themes/transit/transit.json b/assets/themes/transit/transit.json
index 08d1b9033..1ff7715a9 100644
--- a/assets/themes/transit/transit.json
+++ b/assets/themes/transit/transit.json
@@ -14,7 +14,8 @@
"zh_Hant": "公車路線",
"pl": "Trasy autobusowe",
"ru": "Автобусные маршруты",
- "hu": "Buszjáratok"
+ "hu": "Buszjáratok",
+ "uk": "Автобусні маршрути"
},
"description": {
"en": "Plan your trip with the help of the public transport system.",
diff --git a/assets/themes/trees/trees.json b/assets/themes/trees/trees.json
index 63799d09e..5a7470e0f 100644
--- a/assets/themes/trees/trees.json
+++ b/assets/themes/trees/trees.json
@@ -20,7 +20,8 @@
"cs": "Stromy",
"pt_BR": "Árvores",
"eu": "Zuhaitzak",
- "pt": "Árvores"
+ "pt": "Árvores",
+ "uk": "Дерева"
},
"description": {
"nl": "Breng bomen in kaart!",
@@ -56,7 +57,8 @@
"ca": "Mapeja tots els arbres",
"es": "Mapa de los Árboles",
"da": "Kortlæg alle træer",
- "cs": "Zmapujte všechny stromy"
+ "cs": "Zmapujte všechny stromy",
+ "uk": "Нанесіть на карту всі дерева"
},
"icon": "./assets/themes/trees/logo.svg",
"socialImage": "./assets/themes/trees/logo.svg",
diff --git a/assets/themes/waste/waste.json b/assets/themes/waste/waste.json
index 07f3eee1c..92eb3363f 100644
--- a/assets/themes/waste/waste.json
+++ b/assets/themes/waste/waste.json
@@ -15,7 +15,8 @@
"zh_Hant": "廢棄物",
"eu": "Hondakinak eta birziklapena",
"pl": "Odpady",
- "hu": "Hulladék"
+ "hu": "Hulladék",
+ "uk": "Відходи"
},
"description": {
"en": "Map showing waste baskets and recycling facilities.",
diff --git a/assets/themes/waste_basket/waste_basket.json b/assets/themes/waste_basket/waste_basket.json
index d5e6b38cc..e7eace14b 100644
--- a/assets/themes/waste_basket/waste_basket.json
+++ b/assets/themes/waste_basket/waste_basket.json
@@ -16,7 +16,8 @@
"es": "Papeleras",
"cs": "Odpadkové koše",
"pl": "Kosz na śmieci",
- "ru": "Корзины для мусора"
+ "ru": "Корзины для мусора",
+ "uk": "Кошики для сміття"
},
"description": {
"en": "On this map, you'll find waste baskets near you. If a waste basket is missing on this map, you can add it yourself.",
@@ -45,7 +46,8 @@
"ca": "Un mapa amb papereres",
"es": "Un mapa con papeleras",
"cs": "Mapa odpadkových košů",
- "pl": "Mapa koszy na śmieci"
+ "pl": "Mapa koszy na śmieci",
+ "uk": "Мапа зі сміттєвими кошиками"
},
"icon": "./assets/themes/waste_basket/waste_basket.svg",
"layers": [
diff --git a/langs/layers/cs.json b/langs/layers/cs.json
index 606b9b923..ee0182b28 100644
--- a/langs/layers/cs.json
+++ b/langs/layers/cs.json
@@ -10097,4 +10097,4 @@
"render": "větrná turbína"
}
}
-}
+}
\ No newline at end of file
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index 38d3e12b9..6eef98640 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -1284,4 +1284,4 @@
"render": "Утилізація відходів"
}
}
-}
+}
\ No newline at end of file
diff --git a/langs/themes/pl.json b/langs/themes/pl.json
index bbff5ecde..e6c60a270 100644
--- a/langs/themes/pl.json
+++ b/langs/themes/pl.json
@@ -1054,4 +1054,4 @@
"shortDescription": "Mapa koszy na śmieci",
"title": "Kosz na śmieci"
}
-}
+}
\ No newline at end of file
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index 1ddff257c..7d6927fc6 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -375,4 +375,4 @@
"shortDescription": "Мапа зі сміттєвими кошиками",
"title": "Кошики для сміття"
}
-}
+}
\ No newline at end of file
diff --git a/langs/uk.json b/langs/uk.json
index bd4918e43..0875e4036 100644
--- a/langs/uk.json
+++ b/langs/uk.json
@@ -405,4 +405,4 @@
"description": "Години роботи"
}
}
-}
+}
\ No newline at end of file
diff --git a/scripts/ImgurToPanoramax.ts b/scripts/ImgurToPanoramax.ts
index 019fc7931..253cc1500 100644
--- a/scripts/ImgurToPanoramax.ts
+++ b/scripts/ImgurToPanoramax.ts
@@ -17,14 +17,15 @@ import { ChangeDescription } from "../src/Logic/Osm/Actions/ChangeDescription"
import OsmObjectDownloader from "../src/Logic/Osm/OsmObjectDownloader"
import { OsmObject } from "../src/Logic/Osm/OsmObject"
import { createReadStream } from "node:fs"
-import { File } from 'buffer';
-import { open } from 'node:fs/promises';
+import { File } from "buffer"
+import { open } from "node:fs/promises"
import { UploadableTag } from "../src/Logic/Tags/TagTypes"
-
export class ImgurToPanoramax extends Script {
-
- private readonly panoramax = new PanoramaxUploader(Constants.panoramax.url, Constants.panoramax.token)
+ private readonly panoramax = new PanoramaxUploader(
+ Constants.panoramax.url,
+ Constants.panoramax.token
+ )
private _imageDirectory: string
private _licenseDirectory: string
@@ -36,17 +37,20 @@ export class ImgurToPanoramax extends Script {
ccbysa: "f3d02893-b4c1-4cd6-8b27-e27ab57eb59a",
} as const
-
constructor() {
super(
- "Queries OSM for 'imgur'-images, uploads them to Panoramax and creates a changeset to update OSM",
+ "Queries OSM for 'imgur'-images, uploads them to Panoramax and creates a changeset to update OSM"
)
}
- async uploadImage(key: string, feat: Feature, sequences: ({
- id: string;
- "stats:items": { count: number }
- })[]): Promise {
+ async uploadImage(
+ key: string,
+ feat: Feature,
+ sequences: {
+ id: string
+ "stats:items": { count: number }
+ }[]
+ ): Promise {
const v = feat.properties[key]
if (!v) {
return undefined
@@ -61,7 +65,8 @@ export class ImgurToPanoramax extends Script {
if (!path) {
return undefined
}
- const licensePath = this._licenseDirectory + "/" + v.replaceAll(/[^a-zA-Z0-9]/g, "_") + ".json"
+ const licensePath =
+ this._licenseDirectory + "/" + v.replaceAll(/[^a-zA-Z0-9]/g, "_") + ".json"
if (!existsSync(licensePath)) {
return undefined
}
@@ -74,36 +79,43 @@ export class ImgurToPanoramax extends Script {
const sequence = this.sequenceIds[license]
const author = licenseText.artist
+ const handle = await open(path)
- const handle = await open(path);
-
- const stat = await handle.stat();
+ const stat = await handle.stat()
class MyFile extends File {
// we should set correct size
// otherwise we will encounter UND_ERR_REQ_CONTENT_LENGTH_MISMATCH
- size = stat.size;
+ size = stat.size
stream = undefined
}
const file = new MyFile([], path)
- file.stream = function() {
- return handle.readableWebStream();
- };
+ file.stream = function () {
+ return handle.readableWebStream()
+ }
console.log("Uploading", imageHash, sequence)
- const result = await this.panoramax.uploadImage( file, GeoOperations.centerpointCoordinates(feat), author, true, sequence)
+ const result = await this.panoramax.uploadImage(
+ file,
+ GeoOperations.centerpointCoordinates(feat),
+ author,
+ true,
+ sequence
+ )
await handle.close()
- return new And([new Tag(key.replace("image", result.key), result.value),
- new Tag(key,"")])
+ return new And([new Tag(key.replace("image", result.key), result.value), new Tag(key, "")])
}
async main(args: string[]): Promise {
this._imageDirectory = args[0] ?? "/home/pietervdvn/data/imgur-image-backup"
this._licenseDirectory = args[1] ?? "/home/pietervdvn/git/MapComplete-data/ImageLicenseInfo"
- const bounds = new BBox([[3.6984301050112833, 51.06715570450848], [3.7434328399847914, 51.039379568816145]])
+ const bounds = new BBox([
+ [3.6984301050112833, 51.06715570450848],
+ [3.7434328399847914, 51.039379568816145],
+ ])
const maxcount = 100
const filter = new RegexTag("image", /^https:\/\/i.imgur.com\/.*/)
const overpass = new Overpass(filter, [], Constants.defaultOverpassUrls[0])
@@ -124,33 +136,39 @@ export class ImgurToPanoramax extends Script {
for (const k of ["image", "image:menu", "image:streetsign"]) {
changedTags.push(await this.uploadImage(k, f, sequences))
for (let i = 0; i < 20; i++) {
- changedTags.push(
- await this.uploadImage(k + ":" + i, f, sequences),
- )
+ changedTags.push(await this.uploadImage(k + ":" + i, f, sequences))
}
}
- const action = new ChangeTagAction(f.properties.id, new And(Utils.NoNull(changedTags)),
- f.properties, {
+ const action = new ChangeTagAction(
+ f.properties.id,
+ new And(Utils.NoNull(changedTags)),
+ f.properties,
+ {
theme: "image-mover",
changeType: "link-image",
- },
+ }
)
- changes.push(...await action.CreateChangeDescriptions())
+ changes.push(...(await action.CreateChangeDescriptions()))
converted++
} while (converted < maxcount)
- const modif: string[] = Utils.Dedup(changes.map(ch => ch.type + "/" + ch.id))
- const modifiedObjectsFresh =
- (await Promise.all(modif.map(id => new OsmObjectDownloader().DownloadObjectAsync(id))))
- .filter(m => m !== "deleted")
+ const modif: string[] = Utils.Dedup(changes.map((ch) => ch.type + "/" + ch.id))
+ const modifiedObjectsFresh = (
+ (
+ await Promise.all(
+ modif.map((id) => new OsmObjectDownloader().DownloadObjectAsync(id))
+ )
+ ).filter((m) => m !== "deleted")
+ )
const modifiedObjects = Changes.createChangesetObjectsStatic(
changes,
- modifiedObjectsFresh,false, [])
+ modifiedObjectsFresh,
+ false,
+ []
+ )
const cs = Changes.buildChangesetXML("0", modifiedObjects)
writeFileSync("imgur_to_panoramax.osc", cs, "utf8")
-
}
-
}
new ImgurToPanoramax().run()
diff --git a/src/Logic/ImageProviders/Panoramax.ts b/src/Logic/ImageProviders/Panoramax.ts
index 6b2379631..97c82663d 100644
--- a/src/Logic/ImageProviders/Panoramax.ts
+++ b/src/Logic/ImageProviders/Panoramax.ts
@@ -14,7 +14,11 @@ import Link from "../../UI/Base/Link"
export default class PanoramaxImageProvider extends ImageProvider {
public static readonly singleton = new PanoramaxImageProvider()
private static readonly xyz = new PanoramaxXYZ()
- private static defaultPanoramax = new AuthorizedPanoramax(Constants.panoramax.url, Constants.panoramax.token, 3000)
+ private static defaultPanoramax = new AuthorizedPanoramax(
+ Constants.panoramax.url,
+ Constants.panoramax.token,
+ 3000
+ )
public defaultKeyPrefixes: string[] = ["panoramax"]
public readonly name: string = "panoramax"
@@ -48,7 +52,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
* @param id
* @private
*/
- private async getInfoFromMapComplete(id: string): Promise<{ data: ImageData, url: string }> {
+ private async getInfoFromMapComplete(id: string): Promise<{ data: ImageData; url: string }> {
const url = `https://panoramax.mapcomplete.org/`
const data = await PanoramaxImageProvider.defaultPanoramax.imageInfo(id)
return { url, data }
@@ -138,16 +142,14 @@ export default class PanoramaxImageProvider extends ImageProvider {
)
}
- Stores.Chronic(1500, () =>
- hasLoading(source.data),
- ).addCallback(_ => {
- super.getRelevantUrlsFor(tags, prefixes).then(data => {
+ Stores.Chronic(1500, () => hasLoading(source.data)).addCallback((_) => {
+ super.getRelevantUrlsFor(tags, prefixes).then((data) => {
source.set(data)
return !hasLoading(data)
})
})
- return Stores.ListStabilized( source)
+ return Stores.ListStabilized(source)
}
public async DownloadAttribution(providedImage: {
@@ -195,24 +197,28 @@ export class PanoramaxUploader implements ImageUploader {
let datetime = new Date().toISOString()
try {
const tags = await ExifReader.load(blob)
- const [[latD], [latM], [latS, latSDenom]] =<[[number,number],[number,number],[number,number]]> tags?.GPSLatitude.value
- const [[lonD], [lonM], [lonS, lonSDenom]] =<[[number,number],[number,number],[number,number]]> tags?.GPSLongitude.value
+ const [[latD], [latM], [latS, latSDenom]] = <
+ [[number, number], [number, number], [number, number]]
+ >tags?.GPSLatitude.value
+ const [[lonD], [lonM], [lonS, lonSDenom]] = <
+ [[number, number], [number, number], [number, number]]
+ >tags?.GPSLongitude.value
lat = latD + latM / 60 + latS / (3600 * latSDenom)
- lon = lonD + lonM / 60 + lonS / ( 3600 * lonSDenom)
+ lon = lonD + lonM / 60 + lonS / (3600 * lonSDenom)
const [date, time] = tags.DateTime.value[0].split(" ")
- datetime = new Date(date.replaceAll(":", "-")+"T"+time).toISOString()
+ datetime = new Date(date.replaceAll(":", "-") + "T" + time).toISOString()
console.log("Tags are", tags)
} catch (e) {
console.error("Could not read EXIF-tags")
}
-
const p = this.panoramax
sequenceId ??= this._targetSequence?.data ?? Constants.panoramax.sequence
- const sequence: {id: string, "stats:items":{count:number}} =
- (await p.mySequences()).find(s => s.id === sequenceId)
+ const sequence: { id: string; "stats:items": { count: number } } = (
+ await p.mySequences()
+ ).find((s) => s.id === sequenceId)
const img = await p.addImage(blob, sequence, {
lon,
lat,
diff --git a/src/Logic/Osm/Changes.ts b/src/Logic/Osm/Changes.ts
index b4634a57c..69fd53f85 100644
--- a/src/Logic/Osm/Changes.ts
+++ b/src/Logic/Osm/Changes.ts
@@ -300,14 +300,19 @@ export class Changes {
newObjects: OsmObject[]
modifiedObjects: OsmObject[]
deletedObjects: OsmObject[]
- }{
- return Changes.createChangesetObjectsStatic(changes, downloadedOsmObjects, ignoreNoCreate, this.previouslyCreated)
+ } {
+ return Changes.createChangesetObjectsStatic(
+ changes,
+ downloadedOsmObjects,
+ ignoreNoCreate,
+ this.previouslyCreated
+ )
}
public static createChangesetObjectsStatic(
changes: ChangeDescription[],
downloadedOsmObjects: OsmObject[],
ignoreNoCreate: boolean = false,
- previouslyCreated : OsmObject[]
+ previouslyCreated: OsmObject[]
): {
newObjects: OsmObject[]
modifiedObjects: OsmObject[]
diff --git a/src/Logic/Search/CoordinateSearch.ts b/src/Logic/Search/CoordinateSearch.ts
index 8b33cd88d..58e7f7e7a 100644
--- a/src/Logic/Search/CoordinateSearch.ts
+++ b/src/Logic/Search/CoordinateSearch.ts
@@ -73,20 +73,26 @@ export default class CoordinateSearch implements GeocodingProvider {
(m) => CoordinateSearch.asResult(m[2], m[1], "latlon")
)
- const matchesLonLat = Utils.NoNull(CoordinateSearch.lonLatRegexes.map(r => query.match(r)))
- .map(m => CoordinateSearch.asResult(m[1], m[2], "lonlat"))
+ const matchesLonLat = Utils.NoNull(
+ CoordinateSearch.lonLatRegexes.map((r) => query.match(r))
+ ).map((m) => CoordinateSearch.asResult(m[1], m[2], "lonlat"))
const init = matches.concat(matchesLonLat)
if (init.length > 0) {
return init
}
try {
- const c = new CoordinateParser(query);
- return [CoordinateSearch.asResult(""+c.getLongitude(), ""+c.getLatitude(), "coordinateParser")]
+ const c = new CoordinateParser(query)
+ return [
+ CoordinateSearch.asResult(
+ "" + c.getLongitude(),
+ "" + c.getLatitude(),
+ "coordinateParser"
+ ),
+ ]
} catch {
return []
}
-
}
private static round6(n: number): string {
diff --git a/src/Logic/Search/OpenLocationCodeSearch.ts b/src/Logic/Search/OpenLocationCodeSearch.ts
index 84ea9332e..299ced97f 100644
--- a/src/Logic/Search/OpenLocationCodeSearch.ts
+++ b/src/Logic/Search/OpenLocationCodeSearch.ts
@@ -8,11 +8,11 @@ import GeocodingProvider, {
import { decode as pluscode_decode } from "pluscodes"
export default class OpenLocationCodeSearch implements GeocodingProvider {
-
/**
* A regex describing all plus-codes
*/
- public static readonly _isPlusCode = /^([2-9CFGHJMPQRVWX]{2}|00){2,4}\+([2-9CFGHJMPQRVWX]{2,3})?$/
+ public static readonly _isPlusCode =
+ /^([2-9CFGHJMPQRVWX]{2}|00){2,4}\+([2-9CFGHJMPQRVWX]{2,3})?$/
/**
*
@@ -35,17 +35,18 @@ export default class OpenLocationCodeSearch implements GeocodingProvider {
}
const { latitude, longitude } = pluscode_decode(query)
- return [{
- lon: longitude,
- lat: latitude,
- description: "Open Location Code",
- osm_id: query,
- display_name: query.toUpperCase(),
- }]
+ return [
+ {
+ lon: longitude,
+ lat: latitude,
+ description: "Open Location Code",
+ osm_id: query,
+ display_name: query.toUpperCase(),
+ },
+ ]
}
suggest?(query: string, options?: GeocodingOptions): Store {
return Stores.FromPromise(this.search(query, options))
}
-
}
diff --git a/src/Logic/Search/PhotonSearch.ts b/src/Logic/Search/PhotonSearch.ts
index 881713c9b..6b16a6250 100644
--- a/src/Logic/Search/PhotonSearch.ts
+++ b/src/Logic/Search/PhotonSearch.ts
@@ -25,7 +25,12 @@ export default class PhotonSearch implements GeocodingProvider, ReverseGeocoding
private readonly suggestionLimit: number = 5
private readonly searchLimit: number = 1
- constructor(ignoreBounds: boolean = false, suggestionLimit:number = 5, searchLimit:number = 1, endpoint?: string) {
+ constructor(
+ ignoreBounds: boolean = false,
+ suggestionLimit: number = 5,
+ searchLimit: number = 1,
+ endpoint?: string
+ ) {
this.ignoreBounds = ignoreBounds
this.suggestionLimit = suggestionLimit
this.searchLimit = searchLimit
diff --git a/src/Logic/Search/SearchUtils.ts b/src/Logic/Search/SearchUtils.ts
index 6573f761e..1268d193e 100644
--- a/src/Logic/Search/SearchUtils.ts
+++ b/src/Logic/Search/SearchUtils.ts
@@ -15,27 +15,22 @@ export default class SearchUtils {
if (searchTerm === "personal") {
window.location.href = ThemeSearch.createUrlFor({ id: "personal" }, undefined)
return true
-
}
if (searchTerm === "bugs" || searchTerm === "issues") {
window.location.href = "https://github.com/pietervdvn/MapComplete/issues"
return true
-
}
if (searchTerm === "source") {
window.location.href = "https://github.com/pietervdvn/MapComplete"
return true
-
}
if (searchTerm === "docs") {
window.location.href = "https://github.com/pietervdvn/MapComplete/tree/develop/Docs"
return true
-
}
if (searchTerm === "osmcha" || searchTerm === "stats") {
window.location.href = Utils.OsmChaLinkFor(7)
return true
-
}
if (searchTerm === "studio") {
window.location.href = "./studio.html"
diff --git a/src/Models/Constants.ts b/src/Models/Constants.ts
index ab3516f3b..5ccc614ee 100644
--- a/src/Models/Constants.ts
+++ b/src/Models/Constants.ts
@@ -50,7 +50,12 @@ export default class Constants {
...Constants.no_include,
] as const
- public static panoramax: { url: string; token: string, sequence: string, testsequence: string } = packagefile.config.panoramax
+ public static panoramax: {
+ url: string
+ token: string
+ sequence: string
+ testsequence: string
+ } = packagefile.config.panoramax
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
diff --git a/src/Models/ThemeConfig/DependencyCalculator.ts b/src/Models/ThemeConfig/DependencyCalculator.ts
index 3f124cbcf..868a75e62 100644
--- a/src/Models/ThemeConfig/DependencyCalculator.ts
+++ b/src/Models/ThemeConfig/DependencyCalculator.ts
@@ -31,9 +31,7 @@ export default class DependencyCalculator {
* Returns a set of all other layer-ids that this layer needs to function.
* E.g. if this layers does snap to another layer in the preset, this other layer id will be mentioned
*/
- public static getLayerDependencies(
- layer: LayerConfig
- ): {
+ public static getLayerDependencies(layer: LayerConfig): {
neededLayer: string
reason: string
context?: string
diff --git a/src/Models/ThemeViewState.ts b/src/Models/ThemeViewState.ts
index a7656963a..e91dffcf6 100644
--- a/src/Models/ThemeViewState.ts
+++ b/src/Models/ThemeViewState.ts
@@ -373,9 +373,13 @@ export default class ThemeViewState implements SpecialVisualizationState {
this.hasDataInView = new NoElementsInViewDetector(this).hasFeatureInView
this.imageUploadManager = new ImageUploadManager(
layout,
- new PanoramaxUploader(Constants.panoramax.url, Constants.panoramax.token,
- this.featureSwitchIsTesting.map(t => t ? Constants.panoramax.testsequence : Constants.panoramax.sequence)
- ),
+ new PanoramaxUploader(
+ Constants.panoramax.url,
+ Constants.panoramax.token,
+ this.featureSwitchIsTesting.map((t) =>
+ t ? Constants.panoramax.testsequence : Constants.panoramax.sequence
+ )
+ ),
this.featureProperties,
this.osmConnection,
this.changes,
diff --git a/src/UI/Search/SearchResults.svelte b/src/UI/Search/SearchResults.svelte
index e725a083c..70d68f9e6 100644
--- a/src/UI/Search/SearchResults.svelte
+++ b/src/UI/Search/SearchResults.svelte
@@ -18,7 +18,7 @@
.filter(
(f) =>
f.filter.options[0].fields.length === 0 &&
- Constants.priviliged_layers.indexOf(f.layer.id) < 0,
+ Constants.priviliged_layers.indexOf(f.layer.id) < 0
)
.map((af) => {
const index = af.control.data
@@ -28,7 +28,7 @@
option: af.filter.options[index],
}
return r
- }),
+ })
)
let searchTerm = state.searchState.searchTerm
diff --git a/src/assets/contributors.json b/src/assets/contributors.json
index a83f8bcfa..f15292bb7 100644
--- a/src/assets/contributors.json
+++ b/src/assets/contributors.json
@@ -1,7 +1,7 @@
{
"contributors": [
{
- "commits": 8493,
+ "commits": 8513,
"contributor": "Pieter Vander Vennet"
},
{
diff --git a/src/assets/language_in_country.json b/src/assets/language_in_country.json
index 3af61415a..b900d23d8 100644
--- a/src/assets/language_in_country.json
+++ b/src/assets/language_in_country.json
@@ -181,9 +181,9 @@
"ar"
],
"ER": [
- "en",
"ar",
- "ti"
+ "ti",
+ "en"
],
"ES": [
"es",
@@ -572,6 +572,8 @@
"en"
],
"SM": [
+ "it",
+ "it",
"it"
],
"SN": [
diff --git a/src/assets/translators.json b/src/assets/translators.json
index 5f7016de0..85dbb3b95 100644
--- a/src/assets/translators.json
+++ b/src/assets/translators.json
@@ -1,7 +1,7 @@
{
"contributors": [
{
- "commits": 484,
+ "commits": 485,
"contributor": "Pieter Vander Vennet"
},
{
@@ -37,7 +37,11 @@
"contributor": "Harry Bond"
},
{
- "commits": 47,
+ "commits": 49,
+ "contributor": "mike140"
+ },
+ {
+ "commits": 48,
"contributor": "Jiří Podhorecký"
},
{
@@ -60,10 +64,6 @@
"commits": 36,
"contributor": "Iago"
},
- {
- "commits": 35,
- "contributor": "mike140"
- },
{
"commits": 29,
"contributor": "Artem"
@@ -544,6 +544,10 @@
"commits": 2,
"contributor": "Leo Alcaraz"
},
+ {
+ "commits": 1,
+ "contributor": "Teodor11"
+ },
{
"commits": 1,
"contributor": "Emmanuel Arrechea"
From 2ee15b964a43b6102689d232ea807b45da3da021 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Thu, 24 Oct 2024 01:19:58 +0200
Subject: [PATCH 20/37] Chore: linting
---
scripts/osm2pgsql/tilecountServer.ts | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/scripts/osm2pgsql/tilecountServer.ts b/scripts/osm2pgsql/tilecountServer.ts
index 5e0b24c69..602844af3 100644
--- a/scripts/osm2pgsql/tilecountServer.ts
+++ b/scripts/osm2pgsql/tilecountServer.ts
@@ -65,9 +65,11 @@ class TileCountServer extends Script {
const layers = await tcs.getLayers()
const meta = await tcs.getMeta()
const mostSuitable = await tcs.findSuitableDatabases()
- return JSON.stringify({ meta,
+ return JSON.stringify({
+ meta,
suitableDatabases: mostSuitable,
- layers: Array.from(layers) })
+ layers: Array.from(layers),
+ })
},
},
{
From f60c077554bde83350b7616a529ae5c98c6a0eb4 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Sun, 27 Oct 2024 14:09:58 +0100
Subject: [PATCH 21/37] Scripts: imgur to panoramax now remembers earlier used
images
---
scripts/ImgurToPanoramax.ts | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/scripts/ImgurToPanoramax.ts b/scripts/ImgurToPanoramax.ts
index 253cc1500..551b202ba 100644
--- a/scripts/ImgurToPanoramax.ts
+++ b/scripts/ImgurToPanoramax.ts
@@ -24,9 +24,11 @@ import { UploadableTag } from "../src/Logic/Tags/TagTypes"
export class ImgurToPanoramax extends Script {
private readonly panoramax = new PanoramaxUploader(
Constants.panoramax.url,
- Constants.panoramax.token
+ Constants.panoramax.token,
)
+ private readonly alreadyUploaded: Record = {}
+
private _imageDirectory: string
private _licenseDirectory: string
@@ -39,7 +41,7 @@ export class ImgurToPanoramax extends Script {
constructor() {
super(
- "Queries OSM for 'imgur'-images, uploads them to Panoramax and creates a changeset to update OSM"
+ "Queries OSM for 'imgur'-images, uploads them to Panoramax and creates a changeset to update OSM",
)
}
@@ -49,13 +51,20 @@ export class ImgurToPanoramax extends Script {
sequences: {
id: string
"stats:items": { count: number }
- }[]
+ }[],
): Promise {
const v = feat.properties[key]
if (!v) {
return undefined
}
const imageHash = v.split("/").at(-1).split(".").at(0)
+
+ if (this.alreadyUploaded[imageHash]) {
+ const panohash = this.alreadyUploaded[imageHash]
+ return new And([new Tag(key.replace("image", panohash), panohash), new Tag(key, "")])
+ }
+
+
let path: string = undefined
if (existsSync(this._imageDirectory + "/" + imageHash + ".jpg")) {
path = this._imageDirectory + "/" + imageHash + ".jpg"
@@ -92,7 +101,7 @@ export class ImgurToPanoramax extends Script {
const file = new MyFile([], path)
- file.stream = function () {
+ file.stream = function() {
return handle.readableWebStream()
}
@@ -102,8 +111,9 @@ export class ImgurToPanoramax extends Script {
GeoOperations.centerpointCoordinates(feat),
author,
true,
- sequence
+ sequence,
)
+ this.alreadyUploaded[imageHash] = result.value
await handle.close()
return new And([new Tag(key.replace("image", result.key), result.value), new Tag(key, "")])
}
@@ -116,7 +126,7 @@ export class ImgurToPanoramax extends Script {
[3.6984301050112833, 51.06715570450848],
[3.7434328399847914, 51.039379568816145],
])
- const maxcount = 100
+ const maxcount = 500
const filter = new RegexTag("image", /^https:\/\/i.imgur.com\/.*/)
const overpass = new Overpass(filter, [], Constants.defaultOverpassUrls[0])
const features = (await overpass.queryGeoJson(bounds))[0].features
@@ -146,7 +156,7 @@ export class ImgurToPanoramax extends Script {
{
theme: "image-mover",
changeType: "link-image",
- }
+ },
)
changes.push(...(await action.CreateChangeDescriptions()))
converted++
@@ -156,7 +166,7 @@ export class ImgurToPanoramax extends Script {
const modifiedObjectsFresh = (
(
await Promise.all(
- modif.map((id) => new OsmObjectDownloader().DownloadObjectAsync(id))
+ modif.map((id) => new OsmObjectDownloader().DownloadObjectAsync(id)),
)
).filter((m) => m !== "deleted")
)
@@ -164,7 +174,7 @@ export class ImgurToPanoramax extends Script {
changes,
modifiedObjectsFresh,
false,
- []
+ [],
)
const cs = Changes.buildChangesetXML("0", modifiedObjects)
writeFileSync("imgur_to_panoramax.osc", cs, "utf8")
From 905f1768f2b994fa83af31224447c96003ab70ce Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Sun, 27 Oct 2024 15:07:57 +0100
Subject: [PATCH 22/37] Fix: fix #2222, restore global background layers which
were not included in the connect-src
---
scripts/generateLayouts.ts | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/scripts/generateLayouts.ts b/scripts/generateLayouts.ts
index d62c2008f..54af9c83c 100644
--- a/scripts/generateLayouts.ts
+++ b/scripts/generateLayouts.ts
@@ -10,16 +10,18 @@ import ScriptUtils from "./ScriptUtils"
import { Utils } from "../src/Utils"
import SpecialVisualizations from "../src/UI/SpecialVisualizations"
import Constants from "../src/Models/Constants"
-import { AvailableRasterLayers, RasterLayerPolygon } from "../src/Models/RasterLayers"
+import { AvailableRasterLayers, EditorLayerIndexProperties, RasterLayerPolygon } from "../src/Models/RasterLayers"
import { ImmutableStore } from "../src/Logic/UIEventSource"
import * as eli from "../public/assets/data/editor-layer-index.json"
-import * as eli_global from "../src/assets/global-raster-layers.json"
+import * as layers_global from "../src/assets/global-raster-layers.json"
+import eli_global from "../src/assets/generated/editor-layer-index-global.json"
+
import ValidationUtils from "../src/Models/ThemeConfig/Conversion/ValidationUtils"
import { LayerConfigJson } from "../src/Models/ThemeConfig/Json/LayerConfigJson"
import { QuestionableTagRenderingConfigJson } from "../src/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson"
import Script from "./Script"
import crypto from "crypto"
-
+import { RasterLayerProperties } from "../src/Models/RasterLayerProperties"
const sharp = require("sharp")
class GenerateLayouts extends Script {
@@ -264,10 +266,11 @@ class GenerateLayouts extends Script {
}
const urls: string[] = []
const regex = /{switch:([^}]+)}/
- const rasterLayers = [
+ const rasterLayers: {properties: RasterLayerProperties}[] = [
AvailableRasterLayers.defaultBackgroundLayer,
...eli.features,
- ...eli_global.layers.map((properties) => ({ properties })),
+ ...eli_global.map((properties) => ({ properties })),
+ ...layers_global.layers.map((properties) => ({ properties })),
]
for (const feature of rasterLayers) {
const f = feature
From b065af8bf70a49e3eca6375f01e8947a74d5bbcc Mon Sep 17 00:00:00 2001
From: mcliquid
Date: Fri, 25 Oct 2024 11:50:39 +0000
Subject: [PATCH 23/37] Translated using Weblate (German)
Currently translated at 100.0% (3821 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/de/
---
langs/layers/de.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/langs/layers/de.json b/langs/layers/de.json
index d276d71a5..eb37d7a5f 100644
--- a/langs/layers/de.json
+++ b/langs/layers/de.json
@@ -1561,6 +1561,9 @@
"1": {
"then": "Radständer mit Seitenbügel"
},
+ "10": {
+ "then": "Ein Anlehnbügel mit der Möglichkeit, ein Schloss durch eine Öse zu verwenden. Das Sitzrohr kann durch den Ständer durch einen Anker gehalten werden"
+ },
"2": {
"then": "Metallgestänge"
},
@@ -12499,4 +12502,4 @@
"render": "Windrad"
}
}
-}
\ No newline at end of file
+}
From 0ce256679d23cbdd922a07688986c9ce084398c5 Mon Sep 17 00:00:00 2001
From: Lucas
Date: Thu, 24 Oct 2024 18:32:11 +0000
Subject: [PATCH 24/37] Translated using Weblate (French)
Currently translated at 58.0% (2219 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/fr/
---
langs/layers/fr.json | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/langs/layers/fr.json b/langs/layers/fr.json
index da7b4f512..9884fee7b 100644
--- a/langs/layers/fr.json
+++ b/langs/layers/fr.json
@@ -111,6 +111,17 @@
},
"question": "Est-ce que cette publicité fait défiler différent messages ?"
},
+ "historic": {
+ "mappings": {
+ "0": {
+ "then": "C'est une publicité historique (publicité pour un commerce qui n'existe plus ou une très vielle publicité avec un intérêt patrimonial)"
+ },
+ "1": {
+ "then": "Cette publicité n'a pas de valeur historique (le commerce existe toujours, mais n'a pas de valeur patrimoniale particulière)"
+ }
+ },
+ "question": "Est-ce l'enseigne d'un commerce qui n'existe plus ou n'est plus en activité ?"
+ },
"luminous_or_lit_advertising": {
"override": {
"+mappings": {
@@ -7556,4 +7567,4 @@
"render": "éolienne"
}
}
-}
\ No newline at end of file
+}
From 0bf5f5db54a85f5080cc388c80a655b25dbdbc5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?=
Date: Thu, 24 Oct 2024 22:09:52 +0000
Subject: [PATCH 25/37] Translated using Weblate (Czech)
Currently translated at 78.4% (2998 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/cs/
---
langs/layers/cs.json | 109 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 105 insertions(+), 4 deletions(-)
diff --git a/langs/layers/cs.json b/langs/layers/cs.json
index ee0182b28..2d7870173 100644
--- a/langs/layers/cs.json
+++ b/langs/layers/cs.json
@@ -1231,8 +1231,26 @@
"then": "Toto počítadlo nemá referenční číslo"
}
},
- "question": "Jaké je referenční číslo tohoto počítadla?"
+ "question": "Jaké je referenční číslo tohoto počítadla?",
+ "render": "Referenční číslo počítadla: {ref}"
+ },
+ "start_date": {
+ "freeform": {
+ "placeholder": "Datum spuštění počítadla"
+ },
+ "question": "Kdy toto počítadlo začalo počítat?",
+ "render": "Toto počítadlo se začalo počítat dne {start_date}"
+ },
+ "website": {
+ "freeform": {
+ "placeholder": "Webové stránky počítadla"
+ },
+ "question": "Existuje webová stránka tohoto počítadla jízdních kol?",
+ "render": "Webové stránky počítadla: {web}"
}
+ },
+ "title": {
+ "render": "Počítadlo jízdních kol"
}
},
"bicycle_library": {
@@ -1330,6 +1348,9 @@
},
"7": {
"then": "Zde si můžete půjčit cyklistické přilby"
+ },
+ "8": {
+ "then": "Nákladní kola si můžete půjčit zde"
}
},
"question": "Jaká jízdní kola a příslušenství se zde půjčují?",
@@ -1524,6 +1545,9 @@
},
"2": {
"then": "Přístup je omezen na členy školy, společnosti nebo organizace"
+ },
+ "3": {
+ "then": "Soukromé parkoviště pro kola, které není nikdy přístupné veřejnosti, a to ani za členský poplatek"
}
},
"question": "Kdo může parkoviště pro jízdní kola využívat?",
@@ -1534,6 +1558,12 @@
"0": {
"then": "Stojany"
},
+ "1": {
+ "then": "Stojan s bočními smyčkami"
+ },
+ "10": {
+ "then": "Skloněný držák s možností použití zámku přes očko. Sedlovou trubku lze za stojan uchytit pomocí kotvy"
+ },
"2": {
"then": "Stojan na kola / smyčky"
},
@@ -1554,16 +1584,25 @@
},
"8": {
"then": "Plocha na zemi označená pro parkování jízdních kol"
+ },
+ "9": {
+ "then": "Skříňka - kola jsou uzavřena zcela samostatně nebo s několika koly dohromady. Skříňka je příliš malá na to, aby se do ní vešla stojící osoba.."
}
},
"question": "Jaký je typ tohoto parkoviště pro jízdní kola?",
"render": "Jde o typ parkoviště pro jízdní kola: {bicycle_parking}"
},
"Capacity": {
- "question": "Kolik jízdních kol se vejde na toto parkoviště (včetně případných nákladních kol)?",
+ "question": "Kolik jízdních kol se vejde na toto parkoviště?",
+ "questionHint": "Patří sem běžná jízdní kola, nákladní kola, elektrokola, ...",
"render": "Místo pro {capacity} kol"
},
"Cargo bike capacity?": {
+ "mappings": {
+ "0": {
+ "then": "Nejsou zde žádná vyhrazená místa pro nákladní kola nebo zde není parkování nákladních kol povoleno"
+ }
+ },
"question": "Kolik nákladních jízdních kol se vejde do tohoto parkoviště pro jízdní kola?",
"render": "Toto parkoviště je vhodné pro {capacity:cargo_bike} nákladních kol"
},
@@ -1576,7 +1615,7 @@
"then": "Toto parkoviště má vyhrazená (oficiální) místa pro nákladní kola."
},
"2": {
- "then": "Není povoleno parkovat nákladní kola"
+ "then": "Parkovat nákladní kola není povoleno nebo nejsou k dispozici žádná místa pro nákladní kola"
}
},
"question": "Má toto parkoviště místa pro nákladní kola?"
@@ -1608,6 +1647,41 @@
}
},
"question": "Jaké je relativní umístění tohoto parkoviště pro jízdní kola?"
+ },
+ "charge": {
+ "question": "Kolik stojí zaparkování kola na tomto místě?",
+ "questionHint": "To je částka, která se účtuje za jedno jízdní kolo",
+ "render": "Parkování kola stojí {charge}"
+ },
+ "fee": {
+ "mappings": {
+ "0": {
+ "then": "Za použití tohoto parkoviště pro kola se musí platit"
+ },
+ "1": {
+ "then": "Bezplatné použití"
+ }
+ },
+ "question": "Jsou tato parkoviště pro jízdní kola zdarma?"
+ },
+ "maxstay": {
+ "question": "Jaká je maximální povolená doba parkování?",
+ "questionHint": "Pokud je kolo zaparkované delší dobu, může ho provozovatel odstranit",
+ "render": "Kolo zde může být zaparkováno maximálně po dobu {canonical(maxstay)}"
+ },
+ "operator": {
+ "question": "Kdo se stará o parkování jízdních kol?",
+ "render": "Toto parkoviště pro jízdní kola spravuje {operator}"
+ },
+ "operator_email": {
+ "question": "Jaká je e-mailová adresa provozovatele tohoto parkoviště pro jízdní kola?"
+ },
+ "operator_phone": {
+ "question": "Jaké je telefonní číslo na provozovatele tohoto parkoviště pro jízdní kola?",
+ "questionHint": "Na toto číslo je možné volat v případě problémů, např. při odstraňování neudržovaných jízdních kol"
+ },
+ "operator_website": {
+ "question": "Jaké je číslo internetové stránky provozovatele tohoto parkoviště pro jízdní kola?"
}
},
"title": {
@@ -1961,6 +2035,24 @@
"render": "Místo pozorování ptáků"
}
},
+ "brothel": {
+ "description": "Zařízení zaměřené speciálně na prostituci. ",
+ "name": "Nevěstince",
+ "presets": {
+ "0": {
+ "title": "nevěstinec"
+ }
+ },
+ "tagRenderings": {
+ "name": {
+ "question": "Jak se jmenuje tento nevěstinec?",
+ "render": "Tento nevěstinec se jmenuje {name}"
+ }
+ },
+ "title": {
+ "render": "Nevěstinec"
+ }
+ },
"cafe_pub": {
"deletion": {
"extraDeleteReasons": {
@@ -2022,6 +2114,15 @@
"mappings": {
"0": {
"then": "{name}"
+ },
+ "1": {
+ "then": "Bar"
+ },
+ "2": {
+ "then": "Kavárna"
+ },
+ "3": {
+ "then": "Noční klub"
}
},
"render": "Hospoda"
@@ -10097,4 +10198,4 @@
"render": "větrná turbína"
}
}
-}
\ No newline at end of file
+}
From e0ab739a1300b261e000890815302005d3921786 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Thu, 24 Oct 2024 22:36:16 +0000
Subject: [PATCH 26/37] Translated using Weblate (Ukrainian)
Currently translated at 9.1% (351 of 3821 strings)
Translation: MapComplete/Layer translations
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/uk/
---
langs/layers/uk.json | 56 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
diff --git a/langs/layers/uk.json b/langs/layers/uk.json
index 6eef98640..3a3482d49 100644
--- a/langs/layers/uk.json
+++ b/langs/layers/uk.json
@@ -1110,6 +1110,23 @@
}
}
},
+ "contributor-thanks": {
+ "mappings": {
+ "0": {
+ "then": "Ви внесли код до MapComplete за допомогою {_code_contributions} коммітів! Це чудово!"
+ }
+ }
+ },
+ "cscount-thanks": {
+ "mappings": {
+ "0": {
+ "then": "Ви вносили зміни {_csCount} разів! Це чудово!"
+ }
+ }
+ },
+ "debug-title": {
+ "render": "Опції налагодження
"
+ },
"fixate-north": {
"mappings": {
"0": {
@@ -1158,6 +1175,20 @@
"question": "Чи потрібно показувати перехрестя в центрі дисплея?",
"questionHint": "Це може допомогти точно позиціонувати новий елемент"
},
+ "show_debug": {
+ "mappings": {
+ "0": {
+ "then": "Показати інформацію про налагодження"
+ },
+ "1": {
+ "then": "Не показувати інформацію про налагодження"
+ },
+ "2": {
+ "then": "Не показувати інформацію про налагодження"
+ }
+ },
+ "question": "Показувати інформацію про налагодження налаштувань користувача?"
+ },
"show_tags": {
"mappings": {
"0": {
@@ -1206,9 +1237,25 @@
"question": "Чи потрібно зберігати тематичні карти, які ви відвідуєте?",
"questionHint": "Якщо ви відвідуєте мапу на певну тему, MapComplete може запам'ятати це і запропонувати її як підказку."
},
+ "title-id": {
+ "render": "Керування ідентифікатором Mangrove
"
+ },
"title-map": {
"render": "Налаштування карти
"
},
+ "title-privacy-legal": {
+ "render": "Приватність і законність
"
+ },
+ "translation-completeness": {
+ "render": "Переклади {_theme} {_language} становлять {_translation_percentage}%: {_translation_translated_count} рядків із {_translation_total} перекладено"
+ },
+ "translation-help": {
+ "mappings": {
+ "0": {
+ "then": "Натисніть на іконку \"перекласти\" поруч з рядком, щоб ввести або оновити фрагмент тексту. Для цього вам потрібен обліковий запис Weblate. Створіть його з вашим OSM-іменем користувача, щоб автоматично розблокувати режим перекладу."
+ }
+ }
+ },
"translation-mode": {
"mappings": {
"0": {
@@ -1222,6 +1269,13 @@
}
},
"question": "Ви хочете допомогти з перекладом MapComplete?"
+ },
+ "translation-thanks": {
+ "mappings": {
+ "0": {
+ "then": "Ви зробили внесок у переклад MapComplete за допомогою {_translation_contributions} комітів! Це чудово!"
+ }
+ }
}
},
"title": {
@@ -1284,4 +1338,4 @@
"render": "Утилізація відходів"
}
}
-}
\ No newline at end of file
+}
From 41b87a79b4e77dd617c191717eb0290ebe51ec59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?=
Date: Thu, 24 Oct 2024 09:28:11 +0000
Subject: [PATCH 27/37] Translated using Weblate (Czech)
Currently translated at 100.0% (705 of 705 strings)
Translation: MapComplete/Core
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/cs/
---
langs/cs.json | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/langs/cs.json b/langs/cs.json
index 926b9e4bf..2f01babd6 100644
--- a/langs/cs.json
+++ b/langs/cs.json
@@ -130,7 +130,7 @@
"osm": "OpenStreetMap je online mapa, kterou může kdokoli upravovat a znovu používat k jakémukoli účelu, pokud uvede autora a data zůstanou otevřená.\n\nJedná se o největší geoprostorovou databázi na světě, kterou opakovaně využívají tisíce aplikací a webových stránek.",
"tagline": "Shromažďování geodat pomocí OpenStreetMap",
"title": "mapcomplete.org",
- "toerisme_vlaanderen": "Pro společný projekt s Visit Flanders byl vytvořen projekt \"Pin your point\". Více než 160 přispěvatelů přidalo několik tisíc laviček a piknikových stolů a objevilo 100 nabíjecích stanic pro kola.",
+ "toerisme_vlaanderen": "V rámci společného projektu s Visit Flanders byl vytvořen projekt „Pin your point“. Více než 160 přispěvatelů přidalo několik tisíc laviček a piknikových stolů a objevilo 100 dobíjecích stanic pro kola.",
"whatIsOsm": "Co je OpenStreetMap?"
},
"general": {
@@ -206,6 +206,7 @@
"openPanoramax": "Zde otevřete Panoramax",
"openThemeDocumentation": "Otevřít dokumentaci k tematické mapě {name}",
"panoramaxHelp": "Panoramax je online služba, která shromažďuje snímky z úrovně ulic a nabízí je pod bezplatnou licencí. Přispěvatelé mohou tyto snímky používat ke zlepšení OpenStreetMap",
+ "panoramaxLicenseCCBYSA": "Vaše obrázky jsou zveřejněny pod licencí CC-BY-SA - každý může váš obrázek znovu použít, pokud uvede vaše jméno",
"seeOnMapillary": "Podívejte se na tento obrázek na Mapillary",
"themeBy": "Téma spravuje {author}",
"title": "Autorská práva a uvedení zdroje",
@@ -223,7 +224,7 @@
"customThemeTitle": "Vlastní témata",
"download": {
"custom": {
- "download": "Stáhnout PNG o {width} mm na šířku a {height} mm na výšku",
+ "download": "Stáhněte si formát PNG o šířce {width}mm a výšce {height}mm",
"downloadHelper": "Toto je určeno pro tisk",
"height": "Výška obrázku (v mm):",
"title": "Stáhněte si obrázek s vlastní šířkou a výškou",
@@ -257,8 +258,8 @@
"toMuch": "Existuje mnoho funkcí, které lze stáhnout všechny",
"uploadGpx": "Nahrajte svou trasu do OpenStreetMap"
},
- "enableGeolocationForSafari": "Nezobrazilo se vám vyskakovací okno s žádostí o geografické povolení?",
- "enableGeolocationForSafariLink": "Přečtěte si, jak povolit oprávnění ke geolokaci v nastavení",
+ "enableGeolocationForSafari": "Nezobrazilo se vyskakovací okno s žádostí o povolení k umístění?",
+ "enableGeolocationForSafariLink": "Zjistěte, jak povolit oprávnění k poloze v nastavení",
"eraseValue": "Vymažte tuto hodnotu",
"error": "Něco se pokazilo",
"example": "Příklad",
@@ -269,7 +270,7 @@
"disableAll": "Zakázat vše",
"enableAll": "Povolit vše"
},
- "geopermissionDenied": "Použití geolokace bylo zamítnuto",
+ "geopermissionDenied": "Povolení k poloze bylo zamítnuto",
"getStartedLogin": "Přihlaste se pomocí OpenStreetMap a začněte",
"getStartedNewAccount": " nebo vytvořte nový účet",
"goToInbox": "Otevřete složku Doručená pošta",
@@ -309,6 +310,7 @@
"aboutMapComplete": "O MapComplete",
"filter": "Filtrování dat",
"moreUtilsTitle": "Zjistit více",
+ "openHereDifferentApp": "Otevřít aktuální polohu v jiných aplikacích",
"showIntroduction": "Zobrazit úvod",
"title": "Menu"
},
@@ -496,6 +498,7 @@
"slight_right": "mírně vpravo",
"straight": "přímo vpřed"
},
+ "east": "Pohyb na východ",
"fromGps": "{distance} {direction} vaší polohy",
"fromMapCenter": "{distance} {direction} středu mapy",
"in": "Přiblížení na úroveň {z}",
@@ -503,10 +506,14 @@
"locked": "Zobrazení je nyní uzamčeno na vaši polohu GPS, pohyb je zakázán.",
"navigation": "Pomocí kláves se šipkami posouvejte mapu, stisknutím mezerníku vyberte nejbližší objekt. Stisknutím čísla vyberte místa dále.",
"noCloseFeatures": "Nejsou zobrazeny žádné funkce.",
+ "north": "Pohyb na sever",
"oneFeatureInView": "Jedna funkce ve výřezu.",
"out": "Oddálení na úroveň {z}",
+ "south": "Pohyb na jih",
+ "unlocked": "Pohyb povolen.",
"viewportCenterCloseToGps": "Mapa je vycentrována kolem vaší polohy.",
- "viewportCenterDetails": "Střed výřezu je vzdálen {distance} a {bearing} od vaší polohy."
+ "viewportCenterDetails": "Střed výřezu je vzdálen {distance} a {bearing} od vaší polohy.",
+ "west": "Pohyb na západ"
},
"waitingForGeopermission": "Čekáme na vaše povolení používat geolokaci…",
"waitingForLocation": "Vyhledávání vaší aktuální polohy…",
@@ -602,6 +609,7 @@
"someFailed": "Litujeme, nepodařilo se nám nahrát {count} obrázků",
"uploading": "Nahrává se {count} obrázků…"
},
+ "noBlur": "Snímky nebudou rozmazané. Nefotografujte lidi",
"one": {
"done": "Váš obrázek byl úspěšně nahrán. Děkuji!",
"failed": "Omlouváme se, váš obrázek se nepodařilo nahrát",
@@ -890,4 +898,4 @@
"startsWithQ": "Identifikátor wikidat začíná písmenem Q a následuje za ním číslo"
}
}
-}
\ No newline at end of file
+}
From ab9ee4da4f7d7a835d6d51af298d3166b4372dc4 Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Thu, 24 Oct 2024 21:55:40 +0000
Subject: [PATCH 28/37] Translated using Weblate (Ukrainian)
Currently translated at 38.9% (169 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/uk/
---
langs/themes/uk.json | 81 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 80 insertions(+), 1 deletion(-)
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index 7d6927fc6..b0a7feab5 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -283,15 +283,18 @@
"title": "Велодоріжки"
},
"cyclofix": {
+ "description": "Карта, на якій велосипедисти можуть знайти відповідну інфраструктуру для своїх потреб, наприклад, велосипедні насоси, питну воду, веломагазини, ремонтні станції або парковки.",
"title": "Cyclofix - карта для велосипедистів"
},
"disaster_response": {
"title": "Реагування на стихійні лиха та аварійні служби"
},
"drinking_water": {
+ "description": "На цій карті показані загальнодоступні місця з питною водою, які можна легко додати",
"title": "Питна вода"
},
"education": {
+ "description": "На цій карті ви знайдете інформацію про всі типи шкіл та освіти і зможете легко додати додаткову інформацію",
"title": "Освіта"
},
"elongated_coin": {
@@ -299,6 +302,7 @@
"title": "Монетні преси"
},
"etymology": {
+ "description": "На цій карті ви можете побачити, на честь якого об’єкта названо. Вулиці, будинки, ... взяті з OpenStreetMap, який пов’язано з Wikidata. У спливаючому вікні ви побачите статтю Вікіпедії (якщо вона існує) або вікно вікіданих, на честь якого об’єкта названо. Якщо сам об’єкт має сторінку у Вікіпедії, це також буде показано.
Ви також можете допомогти!Збільште достатньо та всі вулиці з'явиться. Ви можете клацнути одну з них, і з’явиться вікно пошуку Вікіданих. За допомогою кількох клацань ви можете додати етимологічне посилання. Зауважте, що для цього вам потрібен безкоштовний обліковий запис OpenStreetMap.",
"shortDescription": "Звідки походить топонім?",
"title": "Етимологія - на честь чого названо місце?"
},
@@ -314,20 +318,87 @@
"title": "Ресторани та фаст-фуд"
},
"fritures": {
+ "description": "На цій карті ви знайдете свій улюблений магазин картоплі фрі!",
"title": "Картопля фрі"
},
+ "ghostbikes": {
+ "description": "Велосипед-примара — це меморіал велосипедисту, який загинув у дорожньо-транспортній пригоді, у вигляді білого велосипеда, постійно розміщеного поблизу місця аварії.
На цій карті один може побачити всі велосипеди-привиди, відомі OpenStreetMap. Зник велосипед-привид? Кожен може додавати або оновлювати інформацію тут - вам потрібно лише мати (безкоштовний) обліковий запис OpenStreetMap. На Mastodon існує автоматичний обліковий запис, який публікує щомісячний огляд велосипедів-привидів у всьому світі
"
+ },
+ "glutenfree": {
+ "description": "Краудсорсингова карта з безглютеновими продуктами",
+ "title": "Без глютену"
+ },
+ "guideposts": {
+ "title": "Вказівники"
+ },
+ "hackerspaces": {
+ "title": "Хакерспейси та мейкерспейси"
+ },
+ "hailhydrant": {
+ "shortDescription": "Мапа, що показує гідранти, вогнегасники, пожежні станції та станції швидкої допомоги.",
+ "title": "Гідранти, вогнегасники, пожежні станції та станції швидкої допомоги"
+ },
"healthcare": {
"description": "На цій карті показані різні об'єкти, пов'язані з охороною здоров'я",
"title": "Охорона здоров'я"
},
+ "hotels": {
+ "description": "На цій карті ви знайдете готелі у вашому регіоні",
+ "title": "Готелі"
+ },
+ "icecream": {
+ "title": "Морозиво"
+ },
+ "indoors": {
+ "description": "На цій карті показані загальнодоступні криті приміщення"
+ },
+ "kerbs_and_crossings": {
+ "title": "Бордюри та переходи"
+ },
+ "lighthouses": {
+ "title": "Маяки"
+ },
+ "maps": {
+ "shortDescription": "Ця тема показує всі (туристичні) мапи, які відомі OpenStreetMap",
+ "title": "Карта карт"
+ },
+ "maxspeed": {
+ "shortDescription": "Ця карта показує дозволену законом максимальну швидкість на кожній дорозі.",
+ "title": "Максимальна швидкість"
+ },
+ "nature": {
+ "description": "На цій карті можна знайти цікаву інформацію для туристів та любителів природи.",
+ "shortDescription": "Карта для любителів природи, з цікавими об'єктами POI",
+ "title": "На природі"
+ },
+ "notes": {
+ "title": "Нотатки OpenStreetMap"
+ },
+ "observation_towers": {
+ "shortDescription": "Загальнодоступні вежі, з яких можна насолоджуватися краєвидом",
+ "title": "Спостережні вежі"
+ },
+ "onwheels": {
+ "description": "На цій карті показані громадські місця, доступні для інвалідних візків, які можна легко додати"
+ },
+ "osm_community_index": {
+ "shortDescription": "Індекс ресурсів спільноти для OpenStreetMap.",
+ "title": "Індекс спільноти OSM"
+ },
+ "parkings": {
+ "shortDescription": "На цій карті показані різні місця для паркування",
+ "title": "Парковки"
+ },
"personal": {
"description": "Створіть особисту тему на основі всіх доступних шарів усіх тем. Щоб показати деякі дані, відкрийте вибір шару",
"title": "Особиста тема"
},
"pets": {
+ "description": "На цій карті ви знайдете різні цікаві місця для ваших домашніх улюбленців: ветеринари, парки для собак, зоомагазини, ресторани, дружні до собак, ...",
"title": "Ветеринари, собачі парки та інші зручності для домашніх тварин"
},
"playgrounds": {
+ "description": "На цій карті ви знайдете дитячі майданчики і зможете додати додаткову інформацію",
"shortDescription": "Карта з дитячими майданчиками",
"title": "Дитячі майданчики"
},
@@ -336,9 +407,12 @@
"title": "Поштові скриньки та карта поштових відділень"
},
"rainbow_crossings": {
+ "description": "На цій карті пішохідні переходи позначені райдужним кольором і можуть бути легко додані",
"title": "Веселкові пішохідні переходи"
},
"shops": {
+ "description": "На цій карті можна позначити основну інформацію про магазини, додати години роботи та номери телефонів",
+ "shortDescription": "Редагована карта з основною інформацією про магазин",
"title": "Магазини"
},
"ski": {
@@ -349,16 +423,19 @@
"title": "Спортивні майданчики"
},
"sports": {
+ "shortDescription": "Карта з позначенням спортивних об'єктів.",
"title": "Спорт"
},
"street_lighting": {
"title": "Вуличне освітлення"
},
"surveillance": {
+ "description": "На цій відкритій карті ви можете знайти камери спостереження.",
"shortDescription": "Камери спостереження та інші засоби спостереження",
"title": "Нагляд під наглядом"
},
"toilets": {
+ "description": "Карта громадських туалетів",
"title": "Громадські туалети"
},
"transit": {
@@ -369,10 +446,12 @@
"title": "Дерева"
},
"waste": {
+ "description": "Карта з позначенням сміттєвих контейнерів та пунктів переробки.",
"title": "Відходи"
},
"waste_basket": {
+ "description": "На цій мапі ви знайдете найближчі до вас контейнери для сміття. Якщо на мапі відсутній кошик для сміття, ви можете додати його самостійно.",
"shortDescription": "Мапа зі сміттєвими кошиками",
"title": "Кошики для сміття"
}
-}
\ No newline at end of file
+}
From ef41b6af2db23a8c0cbd1efba08f9f760523c6da Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Fri, 25 Oct 2024 22:31:51 +0000
Subject: [PATCH 29/37] Translated using Weblate (Ukrainian)
Currently translated at 40.8% (288 of 705 strings)
Translation: MapComplete/Core
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/uk/
---
langs/uk.json | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/langs/uk.json b/langs/uk.json
index 0875e4036..f93b48b1b 100644
--- a/langs/uk.json
+++ b/langs/uk.json
@@ -204,7 +204,8 @@
"hiddenExplanation": "Ці теми доступні лише для тих, хто має посилання. Ви виявили {hidden_discovered} з {total_hidden} прихованих тем.",
"noMatchingThemes": "Ніякі теми не відповідають вашим критеріям пошуку",
"noSearch": "Показати всі теми",
- "previouslyHiddenTitle": "Раніше відвідані приховані теми"
+ "previouslyHiddenTitle": "Раніше відвідані приховані теми",
+ "streetcomplete": "Інша подібна програма — StreetComplete."
},
"noTagsSelected": "Не вибрано жодного тегу",
"openStreetMapIntro": "Відкрита карта
Кожен може вільно використовувати та редагувати. Єдине місце для зберігання всієї геоінформації. Різні, маленькі, несумісні та застарілі карти ніде не потрібні.
OpenStreetMap це не карта ворога. Дані карти можна використовувати вільно (з зазначенням авторства та публікацією змін цих даних). Кожен може додавати нові дані та виправляти помилки. Цей веб-сайт використовує OpenStreetMap. Звідти надходять усі дані, а ваші відповіді та виправлення використовуються всюди.
Багато людей і програм уже використовують OpenStreetMap: Organic Maps, OsmAnd, а також карти у Facebook, Instagram, Apple-maps і Bing-maps (частково) працюють на OpenStreetMap.
",
@@ -405,4 +406,4 @@
"description": "Години роботи"
}
}
-}
\ No newline at end of file
+}
From 28b143d887362ff2073d5e076a43db614d0f179c Mon Sep 17 00:00:00 2001
From: mike140 <140mic@gmail.com>
Date: Sat, 26 Oct 2024 11:52:40 +0000
Subject: [PATCH 30/37] Translated using Weblate (Ukrainian)
Currently translated at 39.6% (172 of 434 strings)
Translation: MapComplete/themes
Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/uk/
---
langs/themes/uk.json | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/langs/themes/uk.json b/langs/themes/uk.json
index b0a7feab5..880e8e15c 100644
--- a/langs/themes/uk.json
+++ b/langs/themes/uk.json
@@ -279,6 +279,7 @@
}
},
"cyclestreets": {
+ "description": "Велодоріжка - це вулиця, на якій моторизованому транспорту заборонено обганяти велосипедистів. Вони позначені спеціальним дорожнім знаком. Велодоріжки можна знайти в Нідерландах і Бельгії, а також у Німеччині та Франції. ",
"shortDescription": "Карта велодоріжок",
"title": "Велодоріжки"
},
@@ -379,7 +380,11 @@
"title": "Спостережні вежі"
},
"onwheels": {
- "description": "На цій карті показані громадські місця, доступні для інвалідних візків, які можна легко додати"
+ "description": "На цій карті показані громадські місця, доступні для інвалідних візків, які можна легко додати",
+ "title": "На колесах"
+ },
+ "openwindpowermap": {
+ "title": "Вітрогенератори"
},
"osm_community_index": {
"shortDescription": "Індекс ресурсів спільноти для OpenStreetMap.",
From 51608fb22348a79b7459a7d3558202edb68ec773 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Sun, 27 Oct 2024 15:30:24 +0100
Subject: [PATCH 31/37] Fix: bing layer, see #2222
---
scripts/generateLayouts.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/scripts/generateLayouts.ts b/scripts/generateLayouts.ts
index 54af9c83c..a771409db 100644
--- a/scripts/generateLayouts.ts
+++ b/scripts/generateLayouts.ts
@@ -15,6 +15,7 @@ import { ImmutableStore } from "../src/Logic/UIEventSource"
import * as eli from "../public/assets/data/editor-layer-index.json"
import * as layers_global from "../src/assets/global-raster-layers.json"
import eli_global from "../src/assets/generated/editor-layer-index-global.json"
+import bing from "../src/assets/bing.json"
import ValidationUtils from "../src/Models/ThemeConfig/Conversion/ValidationUtils"
import { LayerConfigJson } from "../src/Models/ThemeConfig/Json/LayerConfigJson"
@@ -269,6 +270,7 @@ class GenerateLayouts extends Script {
const rasterLayers: {properties: RasterLayerProperties}[] = [
AvailableRasterLayers.defaultBackgroundLayer,
...eli.features,
+ bing.properties.url,
...eli_global.map((properties) => ({ properties })),
...layers_global.layers.map((properties) => ({ properties })),
]
From 01c8d63943c0df74892e2ae02720a469bf3bdb89 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Sun, 27 Oct 2024 17:21:18 +0100
Subject: [PATCH 32/37] Fix: build
---
scripts/generateLayouts.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/generateLayouts.ts b/scripts/generateLayouts.ts
index a771409db..f9eff70f9 100644
--- a/scripts/generateLayouts.ts
+++ b/scripts/generateLayouts.ts
@@ -270,7 +270,7 @@ class GenerateLayouts extends Script {
const rasterLayers: {properties: RasterLayerProperties}[] = [
AvailableRasterLayers.defaultBackgroundLayer,
...eli.features,
- bing.properties.url,
+ bing,
...eli_global.map((properties) => ({ properties })),
...layers_global.layers.map((properties) => ({ properties })),
]
From d77bb7e22525aef3b64ce3a9aa57a39351ebb441 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Mon, 28 Oct 2024 15:26:46 +0100
Subject: [PATCH 33/37] Themes(education): add images, move contact information
up
---
assets/layers/school/school.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/assets/layers/school/school.json b/assets/layers/school/school.json
index 39a4ef0af..befaad528 100644
--- a/assets/layers/school/school.json
+++ b/assets/layers/school/school.json
@@ -84,6 +84,7 @@
}
],
"tagRenderings": [
+ "images",
{
"render": {
"en": "This school is named {name}",
@@ -108,6 +109,7 @@
},
"id": "school-name"
},
+ "contact",
{
"id": "capacity",
"question": {
@@ -142,6 +144,7 @@
"ca": "Quin nivell d'educació s'imparteix en aquesta escola?",
"cs": "Jaký stupeň vzdělání se na této škole poskytuje?"
},
+ "filter": true,
"mappings": [
{
"if": "school=kindergarten",
@@ -496,9 +499,6 @@
"cs": "Ad hoc opatření nestačí k tomu, aby se škola považovala za školu pro žáky se speciálními vzdělávacími potřebami"
}
},
- "website",
- "phone",
- "email",
{
"id": "school-language",
"render": {
From 69a6ec6b0291bf1a5ec0bdcece605c7cf9f6ea0a Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Mon, 28 Oct 2024 15:27:19 +0100
Subject: [PATCH 34/37] Feat(filters): show tags that are filtered on, deal
with multi-answer tags to allow having this option with auto-filters
---
src/Models/ThemeConfig/Conversion/PrepareLayer.ts | 12 ++++++++++--
src/UI/BigComponents/Filterview.svelte | 11 ++++++++++-
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts
index edd779a62..d5945503c 100644
--- a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts
+++ b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts
@@ -33,6 +33,8 @@ import LineRenderingConfigJson from "../Json/LineRenderingConfigJson"
import { ConversionContext } from "./ConversionContext"
import { ExpandRewrite } from "./ExpandRewrite"
import { TagUtils } from "../../../Logic/Tags/TagUtils"
+import { Tag } from "../../../Logic/Tags/Tag"
+import { RegexTag } from "../../../Logic/Tags/RegexTag"
class AddFiltersFromTagRenderings extends DesugaringStep {
constructor() {
@@ -138,16 +140,22 @@ class ExpandFilter extends DesugaringStep {
"Found a matching tagRendering to base a filter on, but this tagRendering does not contain any mappings"
)
}
- const options = (tr).mappings.map((mapping) => {
+ const qtr = (tr)
+ const options = qtr.mappings.map((mapping) => {
let icon: string = mapping.icon?.["path"] ?? mapping.icon
let emoji: string = undefined
if (Utils.isEmoji(icon)) {
emoji = icon
icon = undefined
}
+ let osmTags = TagUtils.Tag( mapping.if)
+ if(qtr.multiAnswer && osmTags instanceof Tag){
+ osmTags = new RegexTag(osmTags.key, new RegExp("^(.+;)?"+osmTags.value+"(;.+)$","is"))
+ }
+
return {
question: mapping.then,
- osmTags: mapping.if,
+ osmTags: osmTags.asJson(),
searchTerms: mapping.searchTerms,
icon,
emoji,
diff --git a/src/UI/BigComponents/Filterview.svelte b/src/UI/BigComponents/Filterview.svelte
index 26e084ed4..82cc34028 100644
--- a/src/UI/BigComponents/Filterview.svelte
+++ b/src/UI/BigComponents/Filterview.svelte
@@ -13,6 +13,7 @@
import Tr from "../Base/Tr.svelte"
import Translations from "../i18n/Translations"
import type { SpecialVisualizationState } from "../SpecialVisualization"
+ import Constants from "../../Models/Constants"
export let state: SpecialVisualizationState
export let filteredLayer: FilteredLayer
@@ -22,6 +23,7 @@
let isDisplayed: UIEventSource = filteredLayer.isDisplayed
let isDebugging = state?.featureSwitches?.featureSwitchIsDebugging ?? new ImmutableStore(false)
+ let showTags = state?.userRelatedState?.showTags?.map(s => (s === "yes" && state?.userRelatedState?.osmConnection?.userDetails?.data?.csCount >= Constants.userJourney.tagsVisibleAt) || s === "always" || s === "full")
/**
* Gets a UIEventSource as boolean for the given option, to be used with a checkbox
@@ -31,7 +33,7 @@
return state.sync(
(f) => f === 0,
[],
- (b) => (b ? 0 : undefined)
+ (b) => (b ? 0 : undefined),
)
}
@@ -67,6 +69,10 @@
{#if filter.options.length === 1 && filter.options[0].fields.length === 0}
+
+ {filter.options[0].osmTags.asHumanString()}
+
+
{/if}
@@ -82,6 +88,9 @@
{option.emoji}
{/if}
+ {#if $showTags && option.osmTags !== undefined}
+ ({option.osmTags.asHumanString()})
+ {/if}
{/each}
From 6257c2415a6fff2859168bb671f54e700f0b3152 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Mon, 28 Oct 2024 18:05:19 +0100
Subject: [PATCH 35/37] Fix: Use alternative way to read coordinates from exif
data
---
src/Logic/ImageProviders/Panoramax.ts | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/src/Logic/ImageProviders/Panoramax.ts b/src/Logic/ImageProviders/Panoramax.ts
index 97c82663d..d9b6bb86d 100644
--- a/src/Logic/ImageProviders/Panoramax.ts
+++ b/src/Logic/ImageProviders/Panoramax.ts
@@ -197,15 +197,8 @@ export class PanoramaxUploader implements ImageUploader {
let datetime = new Date().toISOString()
try {
const tags = await ExifReader.load(blob)
- const [[latD], [latM], [latS, latSDenom]] = <
- [[number, number], [number, number], [number, number]]
- >tags?.GPSLatitude.value
- const [[lonD], [lonM], [lonS, lonSDenom]] = <
- [[number, number], [number, number], [number, number]]
- >tags?.GPSLongitude.value
- lat = latD + latM / 60 + latS / (3600 * latSDenom)
- lon = lonD + lonM / 60 + lonS / (3600 * lonSDenom)
-
+ lat = Number(tags?.GPSLatitude?.description)
+ lon = Number(tags?.GPSLongitude?.description)
const [date, time] = tags.DateTime.value[0].split(" ")
datetime = new Date(date.replaceAll(":", "-") + "T" + time).toISOString()
From 899312ba7cb2b9b00fc8c4483ffe57955f08cdf2 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Mon, 28 Oct 2024 18:08:04 +0100
Subject: [PATCH 36/37] Themes(items_with_image): include 'panoramax' and
'mapillary' as tags for items with image, fix #2225
---
.../layers/item_with_image/item_with_image.json | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/assets/layers/item_with_image/item_with_image.json b/assets/layers/item_with_image/item_with_image.json
index 5d52bfc63..c752b6ec7 100644
--- a/assets/layers/item_with_image/item_with_image.json
+++ b/assets/layers/item_with_image/item_with_image.json
@@ -19,7 +19,20 @@
"image:7~*",
"image:8~*",
"image:9~*",
- "image:10~*"
+ "image:10~*",
+ "panoramax~*",
+ "panoramax:0~*",
+ "panoramax:1~*",
+ "panoramax:2~*",
+ "panoramax:3~*",
+ "panoramax:4~*",
+ "panoramax:5~*",
+ "panoramax:6~*",
+ "panoramax:7~*",
+ "panoramax:8~*",
+ "panoramax:9~*",
+ "panoramax:10~*",
+ "mapillary~*"
]
}
},
From 0dd96f469b8ed7fd83da4543998b0b473bcc2206 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet
Date: Mon, 28 Oct 2024 18:45:04 +0100
Subject: [PATCH 37/37] Fix: fix build by having correct regextag.asJson()
---
src/Logic/Tags/RegexTag.ts | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/Logic/Tags/RegexTag.ts b/src/Logic/Tags/RegexTag.ts
index 9602df9a7..69c3fa568 100644
--- a/src/Logic/Tags/RegexTag.ts
+++ b/src/Logic/Tags/RegexTag.ts
@@ -106,14 +106,22 @@ export class RegexTag extends TagsFilter {
*
* const t = TagUtils.Tag("a=")
* t.asJson() // => "a="
+ *
+ * const t = TagUtils.Tag("a~i~b")
+ * t.asJson() // => "a~i~b"
*/
asJson(): TagConfigJson {
const v = RegexTag.source(this.value, false)
- if (typeof this.key === "string") {
- const oper = typeof this.value === "string" ? "=" : "~"
- return `${this.key}${this.invert ? "!" : ""}${oper}${v}`
+ const valueIsString = typeof this.value === "string"
+ if(typeof this.key === "string" && valueIsString){
+ return `${this.key}${this.invert ? "!" : ""}=${v}`
}
- return `${this.key.source}${this.invert ? "!" : ""}~~${v}`
+ const caseInvariant = typeof this.value !== "string" && this.value.ignoreCase
+ if (typeof this.key === "string" && !caseInvariant) {
+ return `${this.key}${this.invert ? "!" : ""}~${v}`
+ }
+ const k = typeof this.key === "string" ? this.key : this.key.source
+ return `${k}${this.invert ? "!" : ""}~${caseInvariant ? "i": ""}~${v}`
}
isUsableAsAnswer(): boolean {