diff --git a/assets/themes/openwindpowermap/license_info.json b/assets/themes/openwindpowermap/license_info.json
new file mode 100644
index 000000000..1ca28a091
--- /dev/null
+++ b/assets/themes/openwindpowermap/license_info.json
@@ -0,0 +1,12 @@
+[
+ {
+ "authors": [
+ "Iconathon"
+ ],
+ "path": "wind_turbine.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Wind_Turbine_(2076)_-_The_Noun_Project.svg"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/assets/themes/openwindpowermap/openwindpowermap.json b/assets/themes/openwindpowermap/openwindpowermap.json
new file mode 100644
index 000000000..39c2baa41
--- /dev/null
+++ b/assets/themes/openwindpowermap/openwindpowermap.json
@@ -0,0 +1,165 @@
+{
+ "id": "openwindpowermap",
+ "title": {
+ "en": "OpenWindPowerMap"
+ },
+ "maintainer": "Seppe Santens",
+ "icon": "./assets/themes/openwindpowermap/wind_turbine.svg",
+ "description": {
+ "en": "A map for showing and editing wind turbines."
+ },
+ "language": [
+ "en"
+ ],
+ "version": "2021-06-18",
+ "startLat": 50.520,
+ "startLon": 4.643,
+ "startZoom": 8,
+ "clustering": {
+ "maxZoom": 8
+ },
+ "layers": [
+ {
+ "id": "windturbine",
+ "name": {
+ "en": "wind turbine"
+ },
+ "source": {
+ "osmTags": "generator:source=wind"
+ },
+ "minzoom": 10,
+ "wayHandling": 1,
+ "title": {
+ "render": {
+ "en": "wind turbine"
+ },
+ "mappings": [
+ {
+ "if": "name~*",
+ "then": {
+ "en": "{name}"
+ }
+ }
+ ]
+ },
+ "icon": "./assets/themes/openwindpowermap/wind_turbine.svg",
+ "iconSize": "40, 40, bottom",
+ "label": {
+ "mappings": [
+ {
+ "if": "generator:output:electricity~^[0-9]+.*[W]$",
+ "then": "
{generator:output:electricity}
"
+ }
+ ]
+ },
+ "tagRenderings": [
+ {
+ "render": {
+ "en": "The power output of this wind turbine is {generator:output:electricity}."
+ },
+ "question": {
+ "en": "What is the power output of this wind turbine? (e.g. 2.3 MW)"
+ },
+ "freeform": {
+ "key": "generator:output:electricity"
+ }
+ },
+ {
+ "render": {
+ "en": "This wind turbine is operated by {operator}."
+ },
+ "question": {
+ "en": "Who operates this wind turbine?"
+ },
+ "freeform": {
+ "key": "operator"
+ }
+ },
+ {
+ "render": {
+ "en": "The total height (including rotor radius) of this wind turbine is {height} metres."
+ },
+ "question": {
+ "en": "What is the total height of this wind turbine (including rotor radius), in metres?"
+ },
+ "freeform": {
+ "key": "height",
+ "type": "float"
+ }
+ },
+ {
+ "render": {
+ "en": "The rotor diameter of this wind turbine is {rotor:diameter} metres."
+ },
+ "question": {
+ "en": "What is the rotor diameter of this wind turbine, in metres?"
+ },
+ "freeform": {
+ "key": "rotor:diameter",
+ "type": "float"
+ }
+ },
+ {
+ "render": {
+ "en": "This wind turbine went into operation on/in {start_date}."
+ },
+ "question": {
+ "en": "When did this wind turbine go into operation?"
+ },
+ "freeform": {
+ "key": "start_date",
+ "type": "date"
+ }
+ },
+ "images"
+ ],
+ "presets": [
+ {
+ "tags": [
+ "power=generator",
+ "generator:source=wind"
+ ],
+ "title": {
+ "en": "wind turbine"
+ }
+ }
+ ]
+ }
+ ],
+ "units": [
+ {
+ "appliesToKey": ["generator:output:electricity"],
+ "applicableUnits": [{
+ "canonicalDenomination": "MW",
+ "alternativeDenomination": ["megawatts","megawatt"],
+ "human": {
+ "en": " megawatts",
+ "nl": " megawatt"
+ }
+ },{
+ "canonicalDenomination": "kW",
+ "alternativeDenomination": ["kilowatts","kilowatt"],
+ "human": {
+ "en": " kilowatts",
+ "nl": " kilowatt"
+ }
+ },{
+ "canonicalDenomination": "W",
+ "alternativeDenomination": ["watts","watt"],
+ "human": {
+ "en": " watts",
+ "nl": " watt"
+ }
+ },{
+ "canonicalDenomination": "GW",
+ "alternativeDenomination": ["gigawatts","gigawatt"],
+ "human": {
+ "en": " gigawatts",
+ "nl": " gigawatt"
+ }
+ }],
+ "eraseInvalidValues": true
+ }
+ ],
+ "defaultBackgroundId": "CartoDB.Voyager"
+}
diff --git a/assets/themes/openwindpowermap/wind_turbine.svg b/assets/themes/openwindpowermap/wind_turbine.svg
new file mode 100644
index 000000000..a388b8fae
--- /dev/null
+++ b/assets/themes/openwindpowermap/wind_turbine.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/langs/fi.json b/langs/fi.json
new file mode 100644
index 000000000..9b15cc0e6
--- /dev/null
+++ b/langs/fi.json
@@ -0,0 +1,43 @@
+{
+ "general": {
+ "opening_hours": {
+ "ph_open": "avattu",
+ "ph_closed": "suljettu",
+ "ph_not_known": " "
+ },
+ "weekdays": {
+ "sunday": "Sunnuntai",
+ "saturday": "Lauantai",
+ "friday": "Perjantai",
+ "thursday": "Torstai",
+ "wednesday": "Keskiviikko",
+ "tuesday": "Tiistai",
+ "monday": "Maanantai",
+ "abbreviations": {
+ "sunday": "Su",
+ "saturday": "La",
+ "friday": "Pe",
+ "thursday": "To",
+ "wednesday": "Ke",
+ "tuesday": "Ti",
+ "monday": "Ma"
+ }
+ },
+ "backgroundMap": "Taustakartta",
+ "pickLanguage": "Valitse kieli: ",
+ "number": "numero",
+ "cancel": "Peruuta",
+ "save": "Tallenna",
+ "search": {
+ "searching": "Etsitään…"
+ }
+ },
+ "centerMessage": {
+ "ready": "Valmis!"
+ },
+ "image": {
+ "doDelete": "Poista kuva",
+ "dontDelete": "Peruuta",
+ "addPicture": "Lisää kuva"
+ }
+}
diff --git a/langs/layers/fi.json b/langs/layers/fi.json
new file mode 100644
index 000000000..09fd6f9a8
--- /dev/null
+++ b/langs/layers/fi.json
@@ -0,0 +1,103 @@
+{
+ "bike_repair_station": {
+ "presets": {
+ "0": {
+ "title": "Pyöräpumppu"
+ }
+ },
+ "icon": {
+ "render": "./assets/layers/bike_repair_station/repair_station.svg"
+ }
+ },
+ "bike_parking": {
+ "tagRenderings": {
+ "5": {
+ "render": "{access}"
+ }
+ }
+ },
+ "bench_at_pt": {
+ "tagRenderings": {
+ "1": {
+ "render": "{name}"
+ }
+ },
+ "title": {
+ "render": "Penkki"
+ }
+ },
+ "bench": {
+ "presets": {
+ "0": {
+ "description": "Lisää uusi penkki",
+ "title": "Penkki"
+ }
+ },
+ "tagRenderings": {
+ "5": {
+ "mappings": {
+ "7": {
+ "then": "Väri: keltainen"
+ },
+ "6": {
+ "then": "Väri: sininen"
+ },
+ "5": {
+ "then": "Väri: musta"
+ },
+ "4": {
+ "then": "Väri: punainen"
+ },
+ "3": {
+ "then": "Väri: valkoinen"
+ },
+ "2": {
+ "then": "Väri: harmaa"
+ },
+ "1": {
+ "then": "Väri: vihreä"
+ },
+ "0": {
+ "then": "Väri: ruskea"
+ }
+ },
+ "render": "Väri: {colour}"
+ },
+ "3": {
+ "mappings": {
+ "5": {
+ "then": "Materiaali: teräs"
+ },
+ "4": {
+ "then": "Materiaali: muovi"
+ },
+ "3": {
+ "then": "Materiaali: betoni"
+ },
+ "2": {
+ "then": "Materiaali: kivi"
+ },
+ "0": {
+ "then": "Materiaali: puu"
+ }
+ },
+ "render": "Materiaali: {material}"
+ },
+ "1": {
+ "mappings": {
+ "1": {
+ "then": "Selkänoja: ei"
+ },
+ "0": {
+ "then": "Selkänoja: kyllä"
+ }
+ },
+ "render": "Selkänoja"
+ }
+ },
+ "title": {
+ "render": "Penkki"
+ },
+ "name": "Penkit"
+ }
+}
diff --git a/langs/layers/ru.json b/langs/layers/ru.json
index 6dfc7c0d8..d8905f92f 100644
--- a/langs/layers/ru.json
+++ b/langs/layers/ru.json
@@ -130,6 +130,9 @@
"mappings": {
"0": {
"then": "Прокат велосипедов бесплатен"
+ },
+ "1": {
+ "then": "Прокат велосипеда стоит €20/год и €20 залог"
}
}
},
@@ -199,7 +202,15 @@
"render": "Это велосипедное кафе называется {name}"
},
"2": {
- "question": "Есть ли в этом велосипедном кафе велосипедный насос для всеобщего использования?"
+ "question": "Есть ли в этом велосипедном кафе велосипедный насос для всеобщего использования?",
+ "mappings": {
+ "1": {
+ "then": "В этом велосипедном кафе нет велосипедного насоса для всеобщего использования"
+ },
+ "0": {
+ "then": "В этом велосипедном кафе есть велосипедный насос для всеобщего использования"
+ }
+ }
},
"5": {
"question": "Какой сайт у {name}?"
@@ -209,6 +220,31 @@
},
"7": {
"question": "Какой адрес электронной почты у {name}?"
+ },
+ "8": {
+ "question": "Каков режим работы этого велосипедного кафе?"
+ },
+ "4": {
+ "mappings": {
+ "1": {
+ "then": "В этом велосипедном кафе нет услуг ремонта велосипедов"
+ },
+ "0": {
+ "then": "В этом велосипедном кафе есть услуги ремонта велосипедов"
+ }
+ },
+ "question": "Есть ли услуги ремонта велосипедов в этом велосипедном кафе?"
+ },
+ "3": {
+ "mappings": {
+ "1": {
+ "then": "В этом велосипедном кафе нет инструментов для починки своего велосипеда"
+ },
+ "0": {
+ "then": "В этом велосипедном кафе есть инструменты для починки своего велосипеда"
+ }
+ },
+ "question": "Есть ли здесь инструменты для починки вашего велосипеда?"
}
},
"presets": {
@@ -220,7 +256,8 @@
"bike_parking": {
"tagRenderings": {
"1": {
- "question": "К какому типу относится эта велопарковка?"
+ "question": "К какому типу относится эта велопарковка?",
+ "render": "Это велопарковка типа {bicycle_parking}"
},
"2": {
"mappings": {
@@ -236,7 +273,21 @@
}
},
"5": {
- "render": "{access}"
+ "render": "{access}",
+ "question": "Кто может пользоваться этой велопарковкой?"
+ },
+ "4": {
+ "render": "Место для {capacity} велосипеда(ов)"
+ },
+ "3": {
+ "mappings": {
+ "1": {
+ "then": "Это открытая парковка"
+ },
+ "0": {
+ "then": "Это крытая парковка (есть крыша/навес)"
+ }
+ }
}
}
},
@@ -297,6 +348,14 @@
"then": "Есть манометр, но он сломан"
}
}
+ },
+ "3": {
+ "question": "Когда работает эта точка обслуживания велосипедов?",
+ "mappings": {
+ "0": {
+ "then": "Всегда открыто"
+ }
+ }
}
},
"icon": {
@@ -323,12 +382,14 @@
"4": {
"then": "Магазин велосипедов {name} "
}
- }
+ },
+ "render": "Обслуживание велосипедов/магазин"
},
"description": "Магазин, специализирующийся на продаже велосипедов или сопутствующих товаров",
"tagRenderings": {
"2": {
- "question": "Как называется магазин велосипедов?"
+ "question": "Как называется магазин велосипедов?",
+ "render": "Этот магазин велосипедов называется {name}"
},
"3": {
"question": "Какой сайт у {name}?"
@@ -347,7 +408,8 @@
"1": {
"then": "В этом магазине не продают велосипеды"
}
- }
+ },
+ "question": "Продаются ли велосипеды в этом магазине?"
},
"10": {
"question": "В этом магазине ремонтируют велосипеды?",
@@ -360,6 +422,9 @@
},
"2": {
"then": "Этот магазин ремонтирует только велосипеды, купленные здесь"
+ },
+ "3": {
+ "then": "В этом магазине обслуживают велосипеды определённого бренда"
}
}
},
@@ -389,9 +454,37 @@
}
},
"15": {
- "question": "Здесь моют велосипеды?"
+ "question": "Здесь моют велосипеды?",
+ "mappings": {
+ "2": {
+ "then": "В этом магазине нет услуг мойки/чистки велосипедов"
+ },
+ "0": {
+ "then": "В этом магазине оказываются услуги мойки/чистки велосипедов"
+ }
+ }
+ },
+ "13": {
+ "question": "Предлагается ли в этом магазине велосипедный насос для всеобщего пользования?",
+ "mappings": {
+ "1": {
+ "then": "В этом магазине нет велосипедного насоса для всеобщего пользования"
+ },
+ "0": {
+ "then": "В этом магазине есть велосипедный насос для всеобщего пользования"
+ }
+ }
+ },
+ "14": {
+ "mappings": {
+ "2": {
+ "then": "Инструменты для починки доступны только при покупке/аренде велосипеда в магазине"
+ }
+ },
+ "question": "Есть ли здесь инструменты для починки собственного велосипеда?"
}
- }
+ },
+ "name": "Обслуживание велосипедов/магазин"
},
"defibrillator": {
"name": "Дефибрилляторы",
@@ -424,6 +517,9 @@
"then": "Проверено сегодня!"
}
}
+ },
+ "15": {
+ "render": "Дополнительная информация для экспертов OpenStreetMap: {fixme}"
}
}
},
@@ -448,6 +544,12 @@
},
"4": {
"render": "{inscription} "
+ },
+ "5": {
+ "render": "Установлен {start_date}"
+ },
+ "2": {
+ "render": "В знак памяти о {name}"
}
}
},
@@ -783,5 +885,8 @@
"question": "Вы хотите добавить описание?"
}
}
+ },
+ "bike_monitoring_station": {
+ "name": "Станции мониторинга"
}
-}
\ No newline at end of file
+}
diff --git a/langs/ru.json b/langs/ru.json
index 6d24b6ec4..19feb61d8 100644
--- a/langs/ru.json
+++ b/langs/ru.json
@@ -98,7 +98,7 @@
"fsGeolocation": "Включить кнопку \"найди меня\" (только в мобильной версии)",
"fsSearch": "Включить строку поиска",
"fsUserbadge": "Включить кнопку входа в систему",
- "fsWelcomeMessage": "Показать всплывающее окно с приветствием и соответсвующие вкладки",
+ "fsWelcomeMessage": "Показать всплывающее окно с приветствием и соответствующие вкладки",
"fsLayers": "Включить выбор слоя карты",
"fsAddNew": "Включить кнопку \"добавить новую точку интереса\"",
"fsLayerControlToggle": "Открыть панель выбора слоя",
@@ -106,7 +106,7 @@
"editThisTheme": "Редактировать эту тему",
"thanksForSharing": "Спасибо, что поделились!",
"copiedToClipboard": "Ссылка скопирована в буфер обмена",
- "embedIntro": "Встроить на свой сайт Пожалуйста, вставьте эту карту на свой сайт. Мы призываем вас сделать это - вам даже не нужно спрашивать разрешения. Она бесплатна и всегда будет бесплатной. Чем больше людей пользуются ею, тем более ценной она становится.",
+ "embedIntro": "Встроить на свой сайт Пожалуйста, вставьте эту карту на свой сайт. Мы призываем вас сделать это - вам даже не нужно спрашивать разрешения. Карта бесплатна и всегда будет бесплатной. Чем больше людей пользуются ею, тем более ценной она становится.",
"addToHomeScreen": "Добавить на домашний экран Вы можете легко добавить этот сайт на домашний экран вашего смартфона. Для этого нажмите кнопку \"Добавить на главный экран\" в строке URL.",
"intro": "Поделиться этой картой Поделитесь этой картой, скопировав ссылку ниже и отправив её друзьям и близким:"
},
@@ -140,12 +140,12 @@
"doDelete": "Удалить изображение",
"dontDelete": "Отмена",
"uploadDone": "Ваше изображение добавлено. Спасибо за помощь! ",
- "respectPrivacy": "Не фотографируйте людей и номерные знаки. Не загружайте снимки Google Maps, Google Streetview и иные источники с закрытой лицензией.",
+ "respectPrivacy": "Не фотографируйте людей и номерные знаки. Не загружайте снимки Google Maps, Google Street View и иные источники с закрытой лицензией.",
"uploadFailed": "Не удалось загрузить изображение. Проверьте, есть ли у вас доступ в Интернет и разрешены ли сторонние API? Браузеры Brave и UMatrix могут блокировать их.",
"ccb": "под лицензией CC-BY",
"ccbs": "под лицензией CC-BY-SA",
"cco": "в открытом доступе",
- "willBePublished": "Ваше изображение будет опубликоавано: ",
+ "willBePublished": "Ваше изображение будет опубликовано: ",
"pleaseLogin": "Пожалуйста, войдите в систему, чтобы добавить изображение",
"uploadingMultiple": "Загружаем {count} изображений…",
"uploadingPicture": "Загружаем изображение…",
diff --git a/langs/shared-questions/fi.json b/langs/shared-questions/fi.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/langs/shared-questions/fi.json
@@ -0,0 +1 @@
+{}
diff --git a/langs/themes/fi.json b/langs/themes/fi.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/langs/themes/fi.json
@@ -0,0 +1 @@
+{}
diff --git a/langs/themes/ru.json b/langs/themes/ru.json
index 8f9cd01a6..c2d70c10f 100644
--- a/langs/themes/ru.json
+++ b/langs/themes/ru.json
@@ -276,6 +276,9 @@
"then": "Здесь нельзя утилизировать отходы химических туалетов"
}
}
+ },
+ "6": {
+ "question": "Кто может использовать эту станцию утилизации?"
}
}
}
@@ -522,4 +525,4 @@
"trees": {
"title": "Деревья"
}
-}
\ No newline at end of file
+}