diff --git a/.gitignore b/.gitignore index d8e8f299c..715afe780 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ public/assets/langs/* android/ dist-full/ public/assets/icons/*.webp +uploaded_images.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fb8a7df0..9b930e434 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.47.10](https://github.com/pietervdvn/mapcomplete/compare/v0.47.9...v0.47.10) (2024-11-14) + + +### Bug Fixes + +* actually download all OSM-data when downloading as geojson or CSV ([05298c2](https://github.com/pietervdvn/mapcomplete/commits05298c2498bb908860f49f057b7466f4a8feb5ba)) +* don't show `maxstay=30 days` in velopark, this is actually 'unknown' ([d2237cf](https://github.com/pietervdvn/mapcomplete/commitsd2237cf26c1e3af034f0c3b72bd5ffa878ef1c64)) +* fix image upload ([f1106ad](https://github.com/pietervdvn/mapcomplete/commitsf1106ad4a816c9fb84a92974cb7d88e9aae7633b)) + + +### Theme improvements + +* **surveillance:** add doorbell as option ([88a4bd5](https://github.com/pietervdvn/mapcomplete/commits88a4bd561952b3d9d0cd8e4ebaab123b739909e8)) + ### [0.47.9](https://github.com/pietervdvn/mapcomplete/compare/v0.47.8...v0.47.9) (2024-11-07) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 14fa619a6..97c6f4c4c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,7 @@ Hi! Thanks for checking out how to contribute to MapComplete! There are multiple ways to contribute: - Translating MapComplete to your own language can be done - on [the Weblate website](https://hosted.weblate.org/projects/mapcomplete/) + on [the Weblate website](https://translate.mapcomplete.org/projects/mapcomplete/) - If you encounter a bug, the [issue tracker](https://github.com/pietervdvn/MapComplete/issues) is the place to be - A good start to contribute is to create a single map layer showing features which interest you. Read more about [making your own theme](/Docs/Making_Your_Own_Theme.md). - Feel free to hop in [our chat channel on matrix](https://app.element.io/#/room/#MapComplete:matrix.org) diff --git a/Docs/ELI-overview.md b/Docs/ELI-overview.md index 0bfae3933..c043bd5d9 100644 --- a/Docs/ELI-overview.md +++ b/Docs/ELI-overview.md @@ -538,8 +538,7 @@ This table gives a summary of ids, names and other metainformation. [See the onl | CBJ_Aerial_20230516 | CBJ Aerial Imagery (May 2023) | photo | ⭐ | City and Borough of Juneau | | CBJ_Aerial_20230618 | CBJ Aerial Imagery (June 2023) | photo | | City and Borough of Juneau | | FNSB_Aerial_2023 | FNSB Aerial Imagery (2023) | photo | ⭐ | Fairbanks North Star Borough | -| MOA_Aerial_2021 | MOA Aerial Imagery (2021) | historicphoto | | Municipality of Anchorage GIS | -| MOA_Aerial_2024 | MOA Aerial Imagery (2024) | photo | ⭐ | Municipality of Anchorage GIS | +| MOA_Aerial_2021 | MOA Aerial Imagery (2021) | photo | | Municipality of Anchorage GIS | | MSB_Aerial_2019 | MSB Aerial Imagery - Area 1(2019) | historicphoto | | Matanuska-Susitna Borough GIS Division | | MSB_Aerial_2020 | MSB Aerial Imagery - Area 2 (2020) | historicphoto | | Matanuska-Susitna Borough GIS Division | | MSB_Aerial_2021 | MSB Aerial Imagery - Area 3 (2021) | historicphoto | | Matanuska-Susitna Borough GIS Division | @@ -559,27 +558,20 @@ This table gives a summary of ids, names and other metainformation. [See the onl | LA_County_Basemap | LA County Basemap | map | | Los Angeles County | | Manhattan_Beach_CA_2023 | City of Manhattan Beach Orthoimagery (2023) | photo | | City of Manhattan Beach | | Manteca_CA_2022 | City of Manteca Orthoimagery (2022) | photo | | City of Manteca | -| Modesto_CA_2023 | City of Modesto Orthoimagery (2023) | historicphoto | | City of Modesto | -| Modesto_CA_2024 | City of Modesto Orthoimagery (2024) | photo | | City of Modesto | +| Modesto_CA_2023 | City of Modesto Orthoimagery (2023) | photo | | City of Modesto | | Orange_CA_2022 | Orange County Orthoimagery (2022) | photo | | Orange County | | Roseville_CA_2023 | City of Roseville Orthoimagery (2023) | historicphoto | | City of Roseville | | Roseville_CA_2024 | City of Roseville Orthoimagery (2024) | photo | | City of Roseville | | Sacramento_CA_2022 | Sacramento County Orthoimagery (2022) | photo | | Sacramento County | -| San_Bernardino_CA_2023 | San Bernardino County Orthoimagery (2023) | historicphoto | | San Bernardino County | -| San_Bernardino_CA_2024 | San Bernardino County Orthoimagery (2024) | photo | | San Bernardino County | -| San_Francisco_2022 | San Francisco Orthoimagery (2022) | historicphoto | | City and County of San Francisco | -| San_Francisco_2022_CIR | San Francisco Orthoimagery CIR (2022) | historicphoto | | City and County of San Francisco | -| San_Francisco_2023 | San Francisco Orthoimagery (2023) | historicphoto | | City and County of San Francisco | -| San_Francisco_2023_CIR | San Francisco Orthoimagery CIR (2023) | historicphoto | | City and County of San Francisco | -| San_Francisco_2024 | San Francisco Orthoimagery (2024) | photo | | City and County of San Francisco | -| San_Francisco_2024_CIR | San Francisco Orthoimagery CIR (2024) | photo | | City and County of San Francisco | +| San_Bernardino_CA_2023 | San Bernardino County Orthoimagery (2023) | photo | | San Bernardino County | +| San_Francisco_CA_2022 | San Francisco Orthoimagery (2022) | historicphoto | | City and County of San Francisco | +| San_Francisco_CA_2022_CIR | San Francisco Orthoimagery CIR (2022) | historicphoto | | City and County of San Francisco | +| San_Francisco_Ortho_2023 | San Francisco Orthoimagery (2023) | photo | | City and County of San Francisco | | San_Mateo_CA_2022 | San Mateo County Orthoimagery (2022) | photo | | San Mateo County | | Santa_Clara_CA_2022 | Santa Clara County Orthoimagery (2022) | photo | | County of Santa Clara | | Santa_Clara_CA_2023 | Santa Clara County Orthoimagery (2023) | photo | | County of Santa Clara | | Santa_Rosa_CA_2022 | City of Santa Rosa Orthoimagery (2022) | photo | | City of Santa Rosa | -| Solano_CA_2022 | Solano County Orthoimagery (2022) | historicphoto | | Solano County | -| Solano_CA_2023 | Solano County Orthoimagery (2023) | historicphoto | | Solano County | -| Solano_CA_2024 | Solano County Orthoimagery (2024) | photo | | Solano County | +| Solano_CA_2022 | Solano County Orthoimagery (2022) | photo | | Solano County | | Stockton_CA_2023 | City of Stockton Orthoimagery (2023) | photo | | City of Stockton | | Arapahoe-County-Aerials-Latest | Arapahoe County Aerials Latest | photo | | Arapahoe County GIS | | MCGIS-County-NAIP-Imagery-2015 | Mesa County GIS NAIP 2015 | historicphoto | | Mesa County GIS | @@ -587,8 +579,7 @@ This table gives a summary of ids, names and other metainformation. [See the onl | MCGIS-County-Valleywide-Imagery-2020 | Mesa County GIS Valleywide 2020 | historicphoto | | Mesa County GIS | | MCGIS-County-Valleywide-Imagery-2022 | Mesa County GIS Valleywide 2022 | photo | | Mesa County GIS | | MCGIS-County-Valleywide-Imagery-2024 | Mesa County GIS Valleywide 2024 | photo | | Mesa County GIS | -| CT_ECO_Ortho_2019_RGB | CT ECO Orthoimagery (2019) | historicphoto | | Connecticut Environmental Conditions Online | -| CT_ECO_Ortho_2023_RGB | CT ECO Orthoimagery (2023) | photo | | Connecticut Environmental Conditions Online | +| CT_ECO_Ortho_2019_RGB | CT ECO Orthoimagery (2019) | photo | | Connecticut Environmental Conditions Online | | CT_ECO_Shaded_relief_2016 | CT ECO Shaded Relief | elevation | | Connecticut Environmental Conditions Online | | MetroCOG_Ortho_2020 | MetroCOG Orthoimagery (2020) | photo | | Connecticut Metropolitan Council of Governments | | DC_From_Above_Ortho_2019 | DC From Above Orthophoto 2019 | historicphoto | | OCTO, DCGIS | @@ -827,8 +818,7 @@ This table gives a summary of ids, names and other metainformation. [See the onl | Suan_Juan_WA_2023 | Suan Juan County Aerials (2023) | photo | ⭐ | San Juan County GIS | | Suan_Juan_WA_Basemap | Suan Juan County Basemap | map | | San Juan County GIS | | Snohomish_WA_2020 | Snohomish County Orthoimagery (2020) | historicphoto | | Snohomish County GIS | -| Snohomish_WA_2022 | Snohomish County Orthoimagery (2022) | historicphoto | | Snohomish County GIS | -| Snohomish_WA_2024 | Snohomish County Orthoimagery (2024) | photo | | Snohomish County GIS | +| Snohomish_WA_2022 | Snohomish County Orthoimagery (2022) | photo | | Snohomish County GIS | | WISC_DNR_Ortho_Composite | Wisconsin Leaf-Off Orthophotography (DNR) | photo | | Wisconsin Regional Orthoimagery Consortium, Southeastern Wisconsin Regional Planning Commission, Wisconsin Department of Natural Resources | | Monongalia_WV_2022 | Monongalia County 2022 Aerial Imagery | historicphoto | | Monongalia Morgantown Area Geospatial Information Consortium | | Monongalia_WV_2023 | Monongalia County 2023 Aerial Imagery | photo | ⭐ | Monongalia Morgantown Area Geospatial Information Consortium | diff --git a/Docs/LanguagePicker.md b/Docs/LanguagePicker.md index aaf1e1f3d..fcc609c58 100644 --- a/Docs/LanguagePicker.md +++ b/Docs/LanguagePicker.md @@ -3,7 +3,7 @@ (Originally published as diary-entry) -In my [little OpenStreetMap-editor](https://mapcomplete.org) translations are provided by contributors on [hosted weblate](https://hosted.weblate.org/projects/mapcomplete/), where thousands of text snippets have been translated already in the past year - which is awesome. +In my [little OpenStreetMap-editor](https://mapcomplete.org) translations are provided by contributors on [hosted weblate](https://translate.mapcomplete.org/projects/mapcomplete/), where thousands of text snippets have been translated already in the past year - which is awesome. However, the language picker was a bit dry: it used to have codes for every language, e.g. `nl`, `en`, `ja`, 'pt_BR', 'zh_Hant'... Quite boring and not really user-friendly - but easy to implement. diff --git a/Docs/Layers/artwork.md b/Docs/Layers/artwork.md index 10471656c..e852de4be 100644 --- a/Docs/Layers/artwork.md +++ b/Docs/Layers/artwork.md @@ -362,25 +362,6 @@ This tagrendering has labels | artwork-artwork_type.12 | Tilework | artwork_type=tilework | | artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving | -| id | question | osmTags | ------|-----|----- | -| memorial-type.0 | *What type of memorial is this?* (default) | | -| memorial-type.1 | This is a statue | memorial=statue | -| memorial-type.2 | This is a plaque | memorial=plaque | -| memorial-type.3 | This is a commemorative bench | memorial=bench | -| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike | -| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein | -| memorial-type.6 | This is a stele | memorial=stele | -| memorial-type.7 | This is a memorial stone | memorial=stone | -| memorial-type.8 | This is a bust | memorial=bust | -| memorial-type.9 | This is a sculpture | memorial=sculpture | -| memorial-type.10 | This is an obelisk | memorial=obelisk | -| memorial-type.11 | This is a cross | memorial=cross | -| memorial-type.12 | This is a blue plaque | memorial=blue_plaque | -| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank | -| memorial-type.14 | This is a memorial tree | memorial=tree | -| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb | - This document is autogenerated from [assets/layers/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/artwork/artwork.json) diff --git a/Docs/Layers/artwork_on_wall.md b/Docs/Layers/artwork_on_wall.md index 25ad7f9a9..e67ee12a3 100644 --- a/Docs/Layers/artwork_on_wall.md +++ b/Docs/Layers/artwork_on_wall.md @@ -365,25 +365,6 @@ This tagrendering has labels | artwork-artwork_type.12 | Tilework | artwork_type=tilework | | artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving | -| id | question | osmTags | ------|-----|----- | -| memorial-type.0 | *What type of memorial is this?* (default) | | -| memorial-type.1 | This is a statue | memorial=statue | -| memorial-type.2 | This is a plaque | memorial=plaque | -| memorial-type.3 | This is a commemorative bench | memorial=bench | -| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike | -| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein | -| memorial-type.6 | This is a stele | memorial=stele | -| memorial-type.7 | This is a memorial stone | memorial=stone | -| memorial-type.8 | This is a bust | memorial=bust | -| memorial-type.9 | This is a sculpture | memorial=sculpture | -| memorial-type.10 | This is an obelisk | memorial=obelisk | -| memorial-type.11 | This is a cross | memorial=cross | -| memorial-type.12 | This is a blue plaque | memorial=blue_plaque | -| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank | -| memorial-type.14 | This is a memorial tree | memorial=tree | -| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb | - This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json) diff --git a/Docs/Layers/bike_shop.md b/Docs/Layers/bike_shop.md index d6b539c3f..0d8bff4a7 100644 --- a/Docs/Layers/bike_shop.md +++ b/Docs/Layers/bike_shop.md @@ -434,7 +434,7 @@ The question is `Does this shop sell bikes?` - *This shop sells new bikes* is shown if with service:bicycle:retail=yes - *This shop doesn't sell new bikes* is shown if with service:bicycle:retail=no -This tagrendering is only visible in the popup if the following condition is met: shop=outdoor | shop=sport | shop=sports | shop=diy | shop=doityourself | service:bicycle:retail~.+ +This tagrendering is only visible in the popup if the following condition is met: shop=outdoor | shop=sport | shop=diy | shop=doityourself | service:bicycle:retail~.+ ### bike_second_hand @@ -455,7 +455,7 @@ The question is `Does this shop repair bikes?` - *This shop only repairs bikes bought here* is shown if with service:bicycle:repair=only_sold - *This shop only repairs bikes of a certain brand* is shown if with service:bicycle:repair=brand -This tagrendering is only visible in the popup if the following condition is met: service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:repair~.+ +This tagrendering is only visible in the popup if the following condition is met: service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:repair~.+ ### bicycle_rental @@ -464,7 +464,7 @@ The question is `Does this shop rent out bikes?` - *This shop rents out bikes* is shown if with service:bicycle:rental=yes - *This shop doesn't rent out bikes* is shown if with service:bicycle:rental=no -This tagrendering is only visible in the popup if the following condition is met: shop=bicycle | shop=sport | shop=sports | shop=bicycle_repair | shop=outdoor | shop=rental | service:bicycle:rental~.+ +This tagrendering is only visible in the popup if the following condition is met: shop=bicycle | shop=sport | shop=bicycle_repair | shop=outdoor | shop=rental | service:bicycle:rental~.+ ### bicycle-types @@ -586,7 +586,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/dogshop.md b/Docs/Layers/dogshop.md index 2e3d33ed4..42a6b339b 100644 --- a/Docs/Layers/dogshop.md +++ b/Docs/Layers/dogshop.md @@ -578,7 +578,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/medical_shops.md b/Docs/Layers/medical_shops.md index bd6ce185b..51274309e 100644 --- a/Docs/Layers/medical_shops.md +++ b/Docs/Layers/medical_shops.md @@ -587,7 +587,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/shops.md b/Docs/Layers/shops.md index 786574e25..7ab509d1d 100644 --- a/Docs/Layers/shops.md +++ b/Docs/Layers/shops.md @@ -595,7 +595,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/shops_glutenfree.md b/Docs/Layers/shops_glutenfree.md index 14888a9d1..3723522e4 100644 --- a/Docs/Layers/shops_glutenfree.md +++ b/Docs/Layers/shops_glutenfree.md @@ -592,7 +592,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/shops_lactosefree.md b/Docs/Layers/shops_lactosefree.md index 3f406d7bf..40dc257e0 100644 --- a/Docs/Layers/shops_lactosefree.md +++ b/Docs/Layers/shops_lactosefree.md @@ -592,7 +592,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/shops_second_hand.md b/Docs/Layers/shops_second_hand.md index 95bdbb5ce..af0410de4 100644 --- a/Docs/Layers/shops_second_hand.md +++ b/Docs/Layers/shops_second_hand.md @@ -578,7 +578,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/shops_with_climbing_shoe_repair.md b/Docs/Layers/shops_with_climbing_shoe_repair.md index acec124a7..766b74195 100644 --- a/Docs/Layers/shops_with_climbing_shoe_repair.md +++ b/Docs/Layers/shops_with_climbing_shoe_repair.md @@ -587,7 +587,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/sport_shops.md b/Docs/Layers/sport_shops.md index 6266e7476..7a50a7707 100644 --- a/Docs/Layers/sport_shops.md +++ b/Docs/Layers/sport_shops.md @@ -582,7 +582,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Layers/surveillance_camera.md b/Docs/Layers/surveillance_camera.md index 293ce7724..ef5d01e90 100644 --- a/Docs/Layers/surveillance_camera.md +++ b/Docs/Layers/surveillance_camera.md @@ -59,7 +59,7 @@ Elements must match **all** of the following expressions: | attribute | type | values which are supported by this layer | -----|-----|----- | | [surveillance:type](https://wiki.openstreetmap.org/wiki/Key:surveillance:type) | Multiple choice | [camera](https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dcamera) [ALPR](https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3DALPR) | -| [camera:type](https://wiki.openstreetmap.org/wiki/Key:camera:type) | Multiple choice | [fixed](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Dfixed) [dome](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Ddome) [panning](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Dpanning) | +| [camera:type](https://wiki.openstreetmap.org/wiki/Key:camera:type) | Multiple choice | [fixed](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Dfixed) [dome](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Ddome) [panning](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Dpanning) [doorbell](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Ddoorbell) | | [camera:direction](https://wiki.openstreetmap.org/wiki/Key:camera:direction) | [direction](../SpecialInputElements.md#direction) | | | [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) | | | [surveillance](https://wiki.openstreetmap.org/wiki/Key:surveillance) | Multiple choice | [public](https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dpublic) [outdoor](https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Doutdoor) [indoor](https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dindoor) | @@ -87,6 +87,7 @@ The question is `What kind of camera is this?` - *A fixed (non-moving) camera* is shown if with camera:type=fixed - *A dome camera (which can turn)* is shown if with camera:type=dome - *A panning camera* is shown if with camera:type=panning + - *A doorbell which might be turned on remotely at any time or by motion detection. These are typically Smart, internet-connected doorbells. Typical brands are Ring, Google Nest, Eufy, ...* is shown if with camera:type=doorbell ### camera_direction diff --git a/Docs/Making_Your_Own_Theme.md b/Docs/Making_Your_Own_Theme.md index 3db8fe6bf..ebc7e5061 100644 --- a/Docs/Making_Your_Own_Theme.md +++ b/Docs/Making_Your_Own_Theme.md @@ -260,23 +260,22 @@ contributor). If that is not possible, send the JSON file and assets, e.g. as a 1) Fork this repository 2) Go to `assets/themes` and create a new directory named `yourtheme` 3) Create a new file named `yourtheme.json`, paste the theme configuration in there. You can find your theme configuration in - the customThemeBuilder (the tab with the *Floppy disk* icon) -4) Copy all the images into this new directory. **No external sources are allowed!** External image sources leak privacy + the customThemeBuilder (the tab with the *Floppy disk* icon +4) Individual layers go into `assets/layers//.json`. +5) Copy all the images into this new directory. **No external sources are allowed!** External image sources leak privacy or can break. - Make sure the license is suitable, preferable a Creative Commons license or CC0-license. - If an SVG version is available, use the SVG version - - Make sure all the links in `yourtheme.json` are updated. You can use a relative link like `./assets/themes/yourtheme/yourimage.svg` - instead of an HTML link - - Create the file `license_info.json` in the theme directory, which contains metadata on every artwork source -5) Add your theme to the code base: add it into `assets/themes` and make sure all the images are there too. Running ` - ts-node scripts/fixTheme ` will help downloading the images and attempts to get the licenses if - on Wikimedia. -6) Add some finishing touches, such as a social image. + - Make sure all the links in `yourtheme.json` are updated. You can use a relative link like `./assets/themes/yourtheme/yourimage.svg` (or `./assets/layers/yourlayer/yourimage.svg` if you placed in the layers directory) +6) Run `npm run query:licenses` and input the relevant information about asset sources. + - Alternatively (if the script doesn't work), create the file `license_info.json` in the theme directory, which contains metadata on every artwork source +7) OPTIONAL: Add some finishing touches, such as a social image. See [this blog post](https://www.h3xed.com/web-and-internet/how-to-use-og-image-meta-tag-facebook-reddit) for some hints. -7) Test your theme: run the project as described in [development_deployment](Development_deployment.md) -8) Happy with your theme? Time to open a Pull Request! -9) Thanks a lot for improving MapComplete! +8) Test your theme: run the project as described in [development_deployment](Development_deployment.md) + If you can't figure this out, just open the PR. The continuous integration will test for you. +9) Happy with your theme? Time to open a Pull Request! +10) Thanks a lot for improving MapComplete! The theme JSON format ---------------- diff --git a/Docs/Reasonings/2023 in Review.md b/Docs/Reasonings/2023 in Review.md index 7ada1d686..9e14209ca 100644 --- a/Docs/Reasonings/2023 in Review.md +++ b/Docs/Reasonings/2023 in Review.md @@ -273,7 +273,7 @@ it is not a surprise that Dutch is over-represented. Catalan is also slightly overrepresented, but that is because a proud catalan took the time to translate it to catalan early on and uses it frequently. -If you want to see MapComplete in _your_ language, head over to [Weblate](https://hosted.weblate.org/projects/mapcomplete/), create an account +If you want to see MapComplete in _your_ language, head over to [Weblate](https://translate.mapcomplete.org/projects/mapcomplete/), create an account and start translating! There is, in settings, also an option to enable 'translation mode' in MapComplete. Many pieces of text in the interface will gain a small 'translate'-button which you can click to immediately translate or correct that piece of text. diff --git a/Docs/Reasonings/2023_in_review/2024-01-15 TranslationCompleteness.svg b/Docs/Reasonings/2023_in_review/2024-01-15 TranslationCompleteness.svg index aaa2effb1..6dbfa362f 100644 --- a/Docs/Reasonings/2023_in_review/2024-01-15 TranslationCompleteness.svg +++ b/Docs/Reasonings/2023_in_review/2024-01-15 TranslationCompleteness.svg @@ -106,156 +106,156 @@ - + Basque - + Catalan - + Chinese (Min Nan) (nan) - + Chinese (Simplified) - + Chinese (Traditional) - + Czech - + Danish - + Dutch - + English - + Esperanto - + Filipino - + Finnish - + French - + Galician - + German - + Hebrew - + Hungarian - + Indonesian - + Italian - + Japanese - + Norwegian Bokmål - + Polish - + Portuguese - + Portuguese (Brazil) - + Punjabi (Pakistan) - + Russian - + Slovenian - + Spanish - + Swedish - + Tamazight (Standard Moroccan) - \ No newline at end of file + diff --git a/Docs/Reasonings/ImageGraph.png b/Docs/Reasonings/ImageGraph.png new file mode 100644 index 000000000..13e1f0431 Binary files /dev/null and b/Docs/Reasonings/ImageGraph.png differ diff --git a/Docs/Reasonings/ImgurToPanoramax.md b/Docs/Reasonings/ImgurToPanoramax.md new file mode 100644 index 000000000..fddf3c4cd --- /dev/null +++ b/Docs/Reasonings/ImgurToPanoramax.md @@ -0,0 +1,78 @@ +# Moving pictures from IMGUR to Panoramax: some thoughts and little facts + +As you might know, I'm the main developer of [MapComplete](https://mapcomplete.org). For those who don't know, MapComplete is an OSM-viewer _and_ editor, where contributors can easily answer questions, add new points and upload pictures from a POI from a cozy website. +Instead of showing all data at once, it only shows one items within a single topic, resulting in many thematic maps to choose from. + +Four years ago, I started with uploading images to IMGUR, a "free" (paid for by advertisements) image host. They were really permissive at the time, and I got the API up and running in about 15 minutes. +For the past four years, they served us well with barely any trouble. They rarely had outages and if there was one, it only lasted a few hours at most. + +But it was not meant to last. The first crack in this relationship was a little over a year ago. Igmur changed their terms of use, making clear that they would remove "images that aren't watched often". +In practice, this was mostly meant to remove NSFW pictures from there platform, but it was a good excuse for us to start backing up all the imgur images linked to from OpenStreetMap. + +The next omen was the change of terms. From being very permissive, those went to "please, don't use IMGUR as your Content Distribution Network", which pretty much is how MapComplete used IMGUR. Oops. +In [this forum thread](https://community.openstreetmap.org/t/usage-of-imgur-hosted-images/118806/6), I wrote _"I hope IMGUR wouldn't notice us before MapComplete made the switch to Panoramax"_. + +Famous last words. + +About a week later, our upload got blocked. Contributors were not able to upload new pictures anymore + +As such, Thibault Mol setup a Panoramax instance to be used with MapComplete (thank you very much for this!). +I spent quite some time to change MapComplete to support panoramax as backend, making uploads possible again! + +This has been notable in the [graph by TagHistory for Panoramax](https://taghistory.raifer.tech/?#***/panoramax/): +one can notice the graph going steeper during october: + +![](./PanoramaxGraphSmall.png) + +## Moving all pictures + +With all the machinery in place to upload to panoramax, I also created a script to upload the images from my backup to this panoramax instance. +I've been moving the pictures over in the past few weeks (before the divorce gets ugly and we get completely blocked off). +The technical details are documented on [the issue tracker](https://github.com/pietervdvn/MapComplete/issues/2189) + +But, by now, there are 39.124 pictures in our Panoramax server. At most a few (<10) pictures made with MapComplete had been lost by now. +The script deleted a few more image links - mostly in Germany - but these links have been dead for a long time - the original image was linked about 12 year ago for some POI. + +Ths can be seen when zooming out from the previous graph: + +![](./ImgurToPanoramaxAll.png) + +Even more impressive is the dent this makes in the [`image`-key graph](https://taghistory.raifer.tech/?#***/image/). About 39 out of 375K image tags were removed - close to 10% (!) of the image tags. +This means that MapComplete was responsible for 1 out of 10 images linked in OpenStreetMap. + +![](ImageGraph.png) + +## Why didn't you use panoramax from the start? + +For the simple reason that it didn't exist back then ;) +Panoramax development only started in [2022](https://gitlab.com/panoramax/server/api/-/commit/7217aa9b3aa5345cbc7c9532a4a174b9a20cb813). +It works quite well, but there are still a few small issues to work out (especially regarding some legal screens and missing tooling, e.g. for moderation). +I'm sure these will appear in the near future! + +However, all software grows with their users - especially if those users let the developers know what is still missing. +With that respect, I'm proud that this is the first Panoramax-server that is not related to the development team (being OSM-France and IGN France). +Again: Kudos to Thibault for creating and maintaining the server! And we'd like to encourage all local communities and other, similar projects to setup their own +panoramax server! + + +## Downstream effects + +Even cooler are the downstream effects. For starters, people who saw the 'imgur'-tags thought of Imgur to upload pictures to. +As such, some people started uploading pictures there to link to OSM because of MapComplete, but not using MapComplete. + +At the same time, other editors have been noticing this and are thinking of implementing features that were pioneered by MapComplete, +such as thematic maps (such as the streetcomplete overlays) or having image uploads too. + +## Support the project + +Please, continue to support the project! The most obvious way is to [simply use it to make edit](https://mapcomplete.org), +by [reporting bugs](https://github.com/pietervdvn/MapComplete/issues) (but I'm swamped with work and studies right now, so it'll take a while before I'll look to your bug report) +or by [supporting me financially](https://liberapay.com/pietervdvn/) + +You can follow us on Mastodon: + +MapComplete: https://en.osm.town/@MapComplete +Edits made with mapcomplete, including some pictures: https://en.osm.town/@MapComplete_edits +Panoramax: https://mapstodon.space/@panoramax +My personal account: https://en.osm.town/@pietervdvn +And Thibault: https://en.osm.town/@thibaultmol diff --git a/Docs/Reasonings/ImgurToPanoramaxAll.png b/Docs/Reasonings/ImgurToPanoramaxAll.png new file mode 100644 index 000000000..e1fa33b05 Binary files /dev/null and b/Docs/Reasonings/ImgurToPanoramaxAll.png differ diff --git a/Docs/Reasonings/PanoramaxGraphSmall.png b/Docs/Reasonings/PanoramaxGraphSmall.png new file mode 100644 index 000000000..705376585 Binary files /dev/null and b/Docs/Reasonings/PanoramaxGraphSmall.png differ diff --git a/Docs/Schemas/LayerConfigJson.schema.json b/Docs/Schemas/LayerConfigJson.schema.json index 684e142f1..de0eecc0f 100644 --- a/Docs/Schemas/LayerConfigJson.schema.json +++ b/Docs/Schemas/LayerConfigJson.schema.json @@ -208,7 +208,7 @@ "type": "boolean" }, "presets": { - "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", + "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", "type": "array", "items": { "type": "object", diff --git a/Docs/Schemas/LayerConfigJsonJSC.ts b/Docs/Schemas/LayerConfigJsonJSC.ts index e0cf24bc7..9c95f2b48 100644 --- a/Docs/Schemas/LayerConfigJsonJSC.ts +++ b/Docs/Schemas/LayerConfigJsonJSC.ts @@ -208,7 +208,7 @@ export default { "type": "boolean" }, "presets": { - "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", + "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", "type": "array", "items": { "type": "object", diff --git a/Docs/Schemas/ThemeConfigJson.schema.json b/Docs/Schemas/ThemeConfigJson.schema.json index 2dde50d99..b8c2cc21b 100644 --- a/Docs/Schemas/ThemeConfigJson.schema.json +++ b/Docs/Schemas/ThemeConfigJson.schema.json @@ -2206,7 +2206,7 @@ "type": "boolean" }, "presets": { - "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", + "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", "type": "array", "items": { "type": "object", @@ -2650,7 +2650,7 @@ "type": "boolean" }, "presets": { - "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", + "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", "type": "array", "items": { "type": "object", diff --git a/Docs/Schemas/ThemeConfigJsonJSC.ts b/Docs/Schemas/ThemeConfigJsonJSC.ts index ad1a859c5..a4a2e05b0 100644 --- a/Docs/Schemas/ThemeConfigJsonJSC.ts +++ b/Docs/Schemas/ThemeConfigJsonJSC.ts @@ -2183,7 +2183,7 @@ export default { "type": "boolean" }, "presets": { - "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", + "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", "type": "array", "items": { "type": "object", @@ -2626,7 +2626,7 @@ export default { "type": "boolean" }, "presets": { - "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", + "description": "
\n
\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n
\n
\n\ngroup: presets\ntitle: value.title", "type": "array", "items": { "type": "object", diff --git a/Docs/TagInfo/mapcomplete_circular_economy.json b/Docs/TagInfo/mapcomplete_circular_economy.json index b919d5122..70451b80b 100644 --- a/Docs/TagInfo/mapcomplete_circular_economy.json +++ b/Docs/TagInfo/mapcomplete_circular_economy.json @@ -1917,21 +1917,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Second hand shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Second hand shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_climbing.json b/Docs/TagInfo/mapcomplete_climbing.json index 70fb87b9b..0fb300d29 100644 --- a/Docs/TagInfo/mapcomplete_climbing.json +++ b/Docs/TagInfo/mapcomplete_climbing.json @@ -1926,21 +1926,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_cyclofix.json b/Docs/TagInfo/mapcomplete_cyclofix.json index ae42f740d..59cae1e19 100644 --- a/Docs/TagInfo/mapcomplete_cyclofix.json +++ b/Docs/TagInfo/mapcomplete_cyclofix.json @@ -1321,12 +1321,12 @@ }, { "key": "service:bicycle:retail", - "description": "Layer 'Bike repair/shop' shows service:bicycle:retail=yes with a fixed text, namely 'This shop sells new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=sports | shop=diy | shop=doityourself)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:retail=yes with a fixed text, namely 'This shop sells new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=diy | shop=doityourself)", "value": "yes" }, { "key": "service:bicycle:retail", - "description": "Layer 'Bike repair/shop' shows service:bicycle:retail=no with a fixed text, namely 'This shop doesn't sell new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=sports | shop=diy | shop=doityourself)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:retail=no with a fixed text, namely 'This shop doesn't sell new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=diy | shop=doityourself)", "value": "no" }, { @@ -1346,32 +1346,32 @@ }, { "key": "service:bicycle:repair", - "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=yes with a fixed text, namely 'This shop repairs bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=yes with a fixed text, namely 'This shop repairs bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "value": "yes" }, { "key": "service:bicycle:repair", - "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=no with a fixed text, namely 'This shop doesn't repair bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=no with a fixed text, namely 'This shop doesn't repair bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "value": "no" }, { "key": "service:bicycle:repair", - "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=only_sold with a fixed text, namely 'This shop only repairs bikes bought here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=only_sold with a fixed text, namely 'This shop only repairs bikes bought here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "value": "only_sold" }, { "key": "service:bicycle:repair", - "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=brand with a fixed text, namely 'This shop only repairs bikes of a certain brand' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=brand with a fixed text, namely 'This shop only repairs bikes of a certain brand' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "value": "brand" }, { "key": "service:bicycle:rental", - "description": "Layer 'Bike repair/shop' shows service:bicycle:rental=yes with a fixed text, namely 'This shop rents out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=sports | shop=bicycle_repair | shop=outdoor | shop=rental)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:rental=yes with a fixed text, namely 'This shop rents out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=bicycle_repair | shop=outdoor | shop=rental)", "value": "yes" }, { "key": "service:bicycle:rental", - "description": "Layer 'Bike repair/shop' shows service:bicycle:rental=no with a fixed text, namely 'This shop doesn't rent out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=sports | shop=bicycle_repair | shop=outdoor | shop=rental)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:rental=no with a fixed text, namely 'This shop doesn't rent out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=bicycle_repair | shop=outdoor | shop=rental)", "value": "no" }, { @@ -1498,21 +1498,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_glutenfree.json b/Docs/TagInfo/mapcomplete_glutenfree.json index e167576d2..632806102 100644 --- a/Docs/TagInfo/mapcomplete_glutenfree.json +++ b/Docs/TagInfo/mapcomplete_glutenfree.json @@ -2108,21 +2108,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_healthcare.json b/Docs/TagInfo/mapcomplete_healthcare.json index f0bf20dec..4863b0042 100644 --- a/Docs/TagInfo/mapcomplete_healthcare.json +++ b/Docs/TagInfo/mapcomplete_healthcare.json @@ -1642,21 +1642,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_lactosefree.json b/Docs/TagInfo/mapcomplete_lactosefree.json index 587cc7677..1f3bdcbd3 100644 --- a/Docs/TagInfo/mapcomplete_lactosefree.json +++ b/Docs/TagInfo/mapcomplete_lactosefree.json @@ -2108,21 +2108,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_onwheels.json b/Docs/TagInfo/mapcomplete_onwheels.json index cff43f7a3..6a271d3d7 100644 --- a/Docs/TagInfo/mapcomplete_onwheels.json +++ b/Docs/TagInfo/mapcomplete_onwheels.json @@ -2666,21 +2666,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_pets.json b/Docs/TagInfo/mapcomplete_pets.json index db0f037c4..58ee027b2 100644 --- a/Docs/TagInfo/mapcomplete_pets.json +++ b/Docs/TagInfo/mapcomplete_pets.json @@ -1996,21 +1996,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_postboxes.json b/Docs/TagInfo/mapcomplete_postboxes.json index 9cfda6105..ac7d31350 100644 --- a/Docs/TagInfo/mapcomplete_postboxes.json +++ b/Docs/TagInfo/mapcomplete_postboxes.json @@ -1557,21 +1557,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_shops.json b/Docs/TagInfo/mapcomplete_shops.json index 09e6d0671..781f760e4 100644 --- a/Docs/TagInfo/mapcomplete_shops.json +++ b/Docs/TagInfo/mapcomplete_shops.json @@ -1215,21 +1215,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_sports.json b/Docs/TagInfo/mapcomplete_sports.json index 92e790100..afb4e606b 100644 --- a/Docs/TagInfo/mapcomplete_sports.json +++ b/Docs/TagInfo/mapcomplete_sports.json @@ -1790,21 +1790,21 @@ }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" + "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "no" }, { "key": "service:bicycle:cleaning:fee", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "yes" }, { "key": "service:bicycle:cleaning:charge", - "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", + "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "value": "" }, { diff --git a/Docs/TagInfo/mapcomplete_surveillance.json b/Docs/TagInfo/mapcomplete_surveillance.json index a54716a47..9285a2cee 100644 --- a/Docs/TagInfo/mapcomplete_surveillance.json +++ b/Docs/TagInfo/mapcomplete_surveillance.json @@ -79,6 +79,11 @@ "description": "Layer 'Surveillance camera's' shows camera:type=panning with a fixed text, namely 'A panning camera' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance')", "value": "panning" }, + { + "key": "camera:type", + "description": "Layer 'Surveillance camera's' shows camera:type=doorbell with a fixed text, namely 'A doorbell which might be turned on remotely at any time or by motion detection. These are typically Smart, internet-connected doorbells. Typical brands are Ring, Google Nest, Eufy, ...' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance')", + "value": "doorbell" + }, { "key": "camera:direction", "description": "Layer 'Surveillance camera's' shows and asks freeform values for key 'camera:direction' (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if camera:direction~.+ | direction~.+ | camera:type!=dome | (camera:type=dome & camera:mount=wall))" diff --git a/Docs/Themes/bicycle_parkings.md b/Docs/Themes/bicycle_parkings.md index 13850f291..277b0dd3e 100644 --- a/Docs/Themes/bicycle_parkings.md +++ b/Docs/Themes/bicycle_parkings.md @@ -26,6 +26,7 @@ Available languages: - ru - uk - hu + - nl # Layers defined in this theme configuration file These layers can not be reused in different themes. diff --git a/Docs/Themes/circular_economy.md b/Docs/Themes/circular_economy.md index 2c32d8768..fb9edc3a2 100644 --- a/Docs/Themes/circular_economy.md +++ b/Docs/Themes/circular_economy.md @@ -26,6 +26,7 @@ Available languages: - uk - hu - pl + - nl # Table of contents @@ -607,7 +608,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Themes/climbing.md b/Docs/Themes/climbing.md index 0d47a9797..a1b10543f 100644 --- a/Docs/Themes/climbing.md +++ b/Docs/Themes/climbing.md @@ -627,7 +627,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Themes/disaster_response.md b/Docs/Themes/disaster_response.md index 0f2d2691e..d94a8c2d1 100644 --- a/Docs/Themes/disaster_response.md +++ b/Docs/Themes/disaster_response.md @@ -33,6 +33,7 @@ Available languages: - ru - hu - uk + - nl # Layers defined in this theme configuration file These layers can not be reused in different themes. diff --git a/Docs/Themes/ghostsigns.md b/Docs/Themes/ghostsigns.md index 0a7f5764c..25b8d246a 100644 --- a/Docs/Themes/ghostsigns.md +++ b/Docs/Themes/ghostsigns.md @@ -543,25 +543,6 @@ This tagrendering has labels | artwork-artwork_type.12 | Tilework | artwork_type=tilework | | artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving | -| id | question | osmTags | ------|-----|----- | -| memorial-type.0 | *What type of memorial is this?* (default) | | -| memorial-type.1 | This is a statue | memorial=statue | -| memorial-type.2 | This is a plaque | memorial=plaque | -| memorial-type.3 | This is a commemorative bench | memorial=bench | -| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike | -| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein | -| memorial-type.6 | This is a stele | memorial=stele | -| memorial-type.7 | This is a memorial stone | memorial=stone | -| memorial-type.8 | This is a bust | memorial=bust | -| memorial-type.9 | This is a sculpture | memorial=sculpture | -| memorial-type.10 | This is an obelisk | memorial=obelisk | -| memorial-type.11 | This is a cross | memorial=cross | -| memorial-type.12 | This is a blue plaque | memorial=blue_plaque | -| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank | -| memorial-type.14 | This is a memorial tree | memorial=tree | -| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb | - This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json) diff --git a/Docs/Themes/glutenfree.md b/Docs/Themes/glutenfree.md index 7dd1cec73..bb35bbd2d 100644 --- a/Docs/Themes/glutenfree.md +++ b/Docs/Themes/glutenfree.md @@ -1405,7 +1405,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Themes/healthcare.md b/Docs/Themes/healthcare.md index 68e38a69e..c17d2ea09 100644 --- a/Docs/Themes/healthcare.md +++ b/Docs/Themes/healthcare.md @@ -625,7 +625,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Themes/lactosefree.md b/Docs/Themes/lactosefree.md index 7528bfb10..4796c99dc 100644 --- a/Docs/Themes/lactosefree.md +++ b/Docs/Themes/lactosefree.md @@ -1403,7 +1403,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Themes/openlovemap.md b/Docs/Themes/openlovemap.md index 27ff9f681..a436eaac2 100644 --- a/Docs/Themes/openlovemap.md +++ b/Docs/Themes/openlovemap.md @@ -659,7 +659,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Themes/pets.md b/Docs/Themes/pets.md index 30d4d1c73..ef385eb05 100644 --- a/Docs/Themes/pets.md +++ b/Docs/Themes/pets.md @@ -1177,7 +1177,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/Themes/sports.md b/Docs/Themes/sports.md index 6b6ca9f6c..ede2f78ae 100644 --- a/Docs/Themes/sports.md +++ b/Docs/Themes/sports.md @@ -616,7 +616,7 @@ The question is `How much does it cost to use the cleaning service?` - *The cleaning service is free to use* is shown if with service:bicycle:cleaning:fee=no - *Free to use* is shown if with service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ -This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ +This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ ### internet diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md index a940d9ad8..4d173a553 100644 --- a/Docs/URL_Parameters.md +++ b/Docs/URL_Parameters.md @@ -412,7 +412,7 @@ The default value is _0_ The mode the application starts in, e.g. 'map', 'dashboard' or 'statistics' -This documentation is defined in the source code at [generateDocs.ts](ervdvn/git/MapComplete/scripts/generateDocs.ts#L436) +This documentation is defined in the source code at [generateDocs.ts](ervdvn/git2/MapComplete/scripts/generateDocs.ts#L436) The default value is _map_ diff --git a/Docs/wikiIndex.txt b/Docs/wikiIndex.txt index 5621add51..a759083e1 100644 --- a/Docs/wikiIndex.txt +++ b/Docs/wikiIndex.txt @@ -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}}, {{#language:pl|en}} +|lang= {{#language:en|en}}, {{#language:es|en}}, {{#language:de|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:pl|en}}, {{#language:nl|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}}, {{#language:pl|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}}, {{#language:nl|en}} |descr= A MapComplete theme: A map showing all types of bicycle parkings |material= {{yes|[https://mapcomplete.org/ Yes]}} |image= MapComplete_Screenshot.png @@ -292,7 +292,7 @@ {{service_item |name= [https://mapcomplete.org/disaster_response disaster_response] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:it|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}} +|lang= {{#language:en|en}}, {{#language:it|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}} |descr= A MapComplete theme: This map contains elements meant for disaster preparedness and response |material= {{yes|[https://mapcomplete.org/ Yes]}} |image= MapComplete_Screenshot.png @@ -328,7 +328,7 @@ {{service_item |name= [https://mapcomplete.org/fireplace fireplace] |region= Worldwide -|lang= {{#language:de|en}}, {{#language:en|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}} +|lang= {{#language:de|en}}, {{#language:en|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}} |descr= A MapComplete theme: Outdoor place to make a fire or a fixed barbecue in an official place |material= {{yes|[https://mapcomplete.org/ Yes]}} |image= MapComplete_Screenshot.png diff --git a/README.md b/README.md index 06e11ee14..ba0f3a35c 100644 --- a/README.md +++ b/README.md @@ -126,14 +126,14 @@ own change and are using it, I would like to know about it. Drop me a line, give ## Translating MapComplete The core strings and builtin themes of MapComplete are translated -on [Hosted Weblate](https://hosted.weblate.org/projects/mapcomplete/core/). You can easily make an account and start +on [Weblate](https://translate.mapcomplete.org/projects/mapcomplete/core/). You can easily make an account and start translating in their web-environment - no installation required. You can even jump to the right translation string directly from MapComplete: ![](./Docs/Misc/HowToTranslate.gif) -[![Translation status](https://hosted.weblate.org/widgets/mapcomplete/-/multi-blue.svg)](https://hosted.weblate.org/engage/mapcomplete/) +[![Translation status](https://translate.mapcomplete.org/widgets/mapcomplete/-/multi-blue.svg)](https://translate.mapcomplete.org/engage/mapcomplete/) ## Architecture diff --git a/assets/layers/advertising/advertising.json b/assets/layers/advertising/advertising.json index e034e2f99..34bdb0673 100644 --- a/assets/layers/advertising/advertising.json +++ b/assets/layers/advertising/advertising.json @@ -31,7 +31,8 @@ "pt_BR": "Completaremos os dados das características de publicidade com referência, operador e iluminação", "it": "Completeremo i dati da caratteristiche pubblicitarie, con referenza, operatore e illuminazione", "fr": "Nous allons compléter les information sur la publicité avec la référence, l'opérateur et l'éclairage", - "uk": "Ми доповнимо дані з рекламних об'єктів посиланням, оператором та освітленням" + "uk": "Ми доповнимо дані з рекламних об'єктів посиланням, оператором та освітленням", + "nl": "We vullen de informatie over de advertentie aan met de referentie, de operator en de verlichting" }, "source": { "osmTags": { @@ -440,7 +441,8 @@ "it": "un cartellone", "zh_Hant": "一塊告示牌", "ru": "билборд", - "uk": "білборд" + "uk": "білборд", + "nl": "een reclamebord" }, "description": { "en": "A large outdoor advertising structure, typically found in high-traffic areas such as alongside busy roads", @@ -455,7 +457,8 @@ "pl": "Duża struktura reklamowa na dworze, zwykle znajdująca się w obszarach z dużym ruchem, np. w pobliżu ruchliwych dróg", "pt_BR": "Uma grande estrutura de publicidade outdoor, geralmente encontrada em áreas com alto tráfego, como ao longo de estradas movimentadas", "it": "Grande struttura pubblicitaria all'aperto, trovata normalmente in aree ad alto traffico come accanto a strade molto trafficate", - "uk": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг" + "uk": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг", + "nl": "Een grote structuur voor reclame, meestal te vinden in gebieden met veel verkeer, zoals langs drukke wegen" }, "exampleImages": [ "./assets/themes/advertising/KFC_Billboard.jpg", @@ -476,7 +479,8 @@ "cs": "billboard připevněný na stěnu", "ca": "un cartell muntat a una paret", "es": "una valla publicitaria montada en una pared", - "uk": "білборд, прикріплений до стіни" + "uk": "білборд, прикріплений до стіни", + "nl": "een reclamebord bevestigd aan een muur" }, "description": { "en": "A large outdoor advertising structure, typically found in high-traffic areas such as alongside busy roads mounted on a wall", @@ -485,7 +489,8 @@ "pl": "Duży obiekt reklamowy na zewnątrz, zazwyczaj znajduje się w obszarach z dużym ruchem, np. obok ruchliwych dróg na ścianie", "ca": "Una gran estructura publicitària exterior, que normalment es troba en zones de gran trànsit, com ara al costat de carreteres transitades muntades a una paret", "es": "Una gran estructura publicitaria exterior, que normalmente se encuentra en áreas de mucho tráfico, como junto a carreteras concurridas, montada en una pared", - "uk": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг, встановлена на стіні" + "uk": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг, встановлена на стіні", + "nl": "Een grote structuur voor reclame, meestal te vinden in verkeersrijke gebieden zoals langs drukke wegen, bevestigd op een muur" }, "exampleImages": [ "./assets/themes/advertising/billboard_wall.jpg" @@ -507,7 +512,8 @@ "pt_BR": "uma caixa expositora independente", "it": "un cartellone pubblicitario fissato a terra", "zh_Hant": "獨自設立的海報框", - "uk": "окремо стояча коробка для плакатів" + "uk": "окремо стояча коробка для плакатів", + "nl": "een vrijstaande posterbak" }, "exampleImages": [ "./assets/themes/advertising/Mupi_spain.jpg", @@ -530,7 +536,8 @@ "pt_BR": "uma caixa de pôster montada em uma parede", "zh_Hans": "安装在墙上的海报盒子", "it": "un cartellone pubblicitario fissato al muro", - "uk": "коробка для плакатів, що кріпиться на стіну" + "uk": "коробка для плакатів, що кріпиться на стіну", + "nl": "een aan de muur gemonteerde posterbak" }, "snapToLayer": [ "walls_and_buildings" @@ -549,7 +556,8 @@ "es": "un expositor de carteles que forma parte de un refugio de transporte público", "cs": "plakátovací skříňka, která je součástí přístřešku veřejné dopravy", "ca": "un mupi que forma part d'un refugi de transport públic", - "uk": "афішна скринька, що є частиною зупинки громадського транспорту" + "uk": "афішна скринька, що є частиною зупинки громадського транспорту", + "nl": "een posterbak die deel uitmaakt van een bushokje" }, "snapToLayer": [ "shelter" @@ -722,7 +730,8 @@ "es": "una pantalla montada en un refugio de transporte público", "cs": "obrazovka namontovaná na dopravním přístřešku", "ca": "una pantalla muntada en una marquesina", - "uk": "екран, встановлений на тимчасовому укритті" + "uk": "екран, встановлений на тимчасовому укритті", + "nl": "een scherm gemonteerd op een schuilhokje" }, "snapToLayer": [ "shelter" @@ -787,7 +796,8 @@ "pt_BR": "um totem", "zh_Hans": "图腾", "it": "un totem", - "uk": "тотем" + "uk": "тотем", + "nl": "een totem" }, "exampleImages": [ "./assets/themes/advertising/AdvertisingTotem_004.jpg", @@ -812,7 +822,8 @@ "pl": "znak", "zh_Hans": "标志", "it": "un'insegna", - "uk": "знак" + "uk": "знак", + "nl": "een bord" }, "description": { "en": "Used for advertising signs, neon signs, logos & institutional entrance signs", @@ -826,7 +837,8 @@ "pl": "Używany do znaków reklamowych, neonów, logo i znaków wejściowych do instytucji", "pt_BR": "Usado para placas de publicidade, letreiros de neon, logotipos e placas de entrada institucionais", "it": "Utilizzato per insegna pubblicitaria, un'insegna al neon, i loghi o le indicazioni d'entrata", - "uk": "Використовується для рекламних вивісок, неонових вивісок, логотипів та вхідних табличок установ" + "uk": "Використовується для рекламних вивісок, неонових вивісок, логотипів та вхідних табличок установ", + "nl": "Gebruikt voor reclameborden, neonborden, logo's & toegangsborden voor instellingen" }, "exampleImages": [ "./assets/themes/advertising/Waitrose_sign.jpg", @@ -855,7 +867,8 @@ "pt_BR": "uma escultura", "zh_Hans": "雕像", "it": "una scultura", - "uk": "скульптура" + "uk": "скульптура", + "nl": "een beeldhouwwerk" }, "exampleImages": [ "./assets/themes/advertising/Aircraft_Sculpture.jpg", @@ -941,7 +954,8 @@ "pl": "To jest bilbord", "pt_BR": "Isso é um outdoor", "zh_Hans": "这是一个广告牌", - "uk": "Це білборд" + "uk": "Це білборд", + "nl": "Dit is een reclamebord" }, "icon": { "path": "./assets/themes/advertising/billboard.svg", @@ -961,7 +975,8 @@ "pl": "To jest tablica", "pt_BR": "Isso é uma placa", "zh_Hans": "这是一块板", - "uk": "Це дошка" + "uk": "Це дошка", + "nl": "Dit is een bord" }, "icon": { "path": "./assets/themes/advertising/board.svg", @@ -1023,7 +1038,8 @@ "pt_BR": "Isso é um quadro de pôster", "zh_Hans": "这是海报盒", "pt": "Isto é um quadro de pôster", - "uk": "Це скринька для плакатів" + "uk": "Це скринька для плакатів", + "nl": "Dit is een posterbak" }, "icon": { "path": "./assets/themes/advertising/poster_box.svg", @@ -1043,7 +1059,8 @@ "pt_BR": "Isso é uma tela", "zh_Hans": "这是一个屏幕", "pt": "Isto é um ecrã", - "uk": "Це екран" + "uk": "Це екран", + "nl": "Dit is een scherm" }, "icon": { "path": "./assets/themes/advertising/screen.svg", @@ -1063,7 +1080,8 @@ "pt_BR": "Isso é uma escultura", "zh_Hans": "这是一个雕塑", "pt": "Isto é uma escultura", - "uk": "Це скульптура" + "uk": "Це скульптура", + "nl": "Dit is een beeldhouwerk" }, "icon": { "path": "./assets/themes/advertising/sculpture.svg", @@ -1082,7 +1100,8 @@ "pt_BR": "Isto é uma placa", "pl": "To jest znak", "zh_Hans": "这是一个标志", - "pt": "Isto é uma placa" + "pt": "Isto é uma placa", + "nl": "Dit is een teken" }, "icon": { "path": "./assets/themes/advertising/sign.svg", @@ -1140,7 +1159,8 @@ "pt_BR": "Isso é uma pintura mural", "zh_Hans": "这是一幅壁画", "pt": "Isto é uma pintura mural", - "uk": "Це настінний розпис" + "uk": "Це настінний розпис", + "nl": "Dit is een muurschildering" }, "icon": { "path": "./assets/themes/advertising/wall_painting.svg", @@ -1154,7 +1174,8 @@ "de": "Dies ist eine Kachelarbeit - die Werbung ist auf Fliesen gemalt", "cs": "Jedná se o dlaždice - reklama je namalovaná na dlaždicích", "es": "Se trata de un trabajo en azulejo: el anuncio está pintado en azulejos", - "uk": "Це кахельна плитка - реклама намальована на плитці" + "uk": "Це кахельна плитка - реклама намальована на плитці", + "nl": "Dit is betegeling - de reclame is op tegels geschilderd" } }, { @@ -1163,7 +1184,8 @@ "en": "This is a relief", "de": "Dies ist ein Relief", "cs": "Toto je reliéf", - "es": "Se trata de un relieve" + "es": "Se trata de un relieve", + "nl": "Dit is een reliëf" } } ] @@ -1181,7 +1203,8 @@ "pl": "Czy ta reklama przechodzi przez wiele różnych wiadomości?", "pt_BR": "Este anúncio passa por várias mensagens em sequência?", "zh_Hans": "该广告是否会在多条消息中循环播放?", - "uk": "Чи циркулює ця реклама через кілька повідомлень?" + "uk": "Чи циркулює ця реклама через кілька повідомлень?", + "nl": "Doorloopt deze advertentie meerdere berichten?" }, "condition": { "#": "Screens are _always_ animated; flags, tarps, and wall_paintings cannot be animated; signs can be anything so we don't make guesses", @@ -1208,7 +1231,8 @@ "pl": "Statyczne, zawsze pokazuje tą samą wiadomość", "pt_BR": "Estático, mostra sempre a mesma mensagem", "zh_Hans": "静态,始终显示相同的消息", - "uk": "Статичний, завжди показує одне й те саме повідомлення" + "uk": "Статичний, завжди показує одне й те саме повідомлення", + "nl": "Statisch, toont altijd hetzelfde bericht" } }, { @@ -1224,7 +1248,8 @@ "pl": "Ten obiekt ma wbudowany cyfrowy wyświetlacz do pokazywania cen lub innych informacji", "pt_BR": "Este objeto possui um display digital incorporado para mostrar preços ou alguma outra mensagem", "zh_Hans": "该对象有一个内置的数字显示器来显示价格或其他一些消息", - "uk": "Цей об'єкт має вбудований цифровий дисплей для відображення цін або іншого повідомлення" + "uk": "Цей об'єкт має вбудований цифровий дисплей для відображення цін або іншого повідомлення", + "nl": "Dit object heeft een ingebouwd digitaal scherm om prijzen of andere berichten weer te geven" }, "hideInAnswer": { "and": [ @@ -1247,7 +1272,8 @@ "pt": "Trivision - o outdoor consiste em muitos prismas triangulares que giram regularmente", "pt_BR": "Trivision - o outdoor consiste em muitos prismas triangulares que giram regularmente", "zh_Hans": "Trivision - 广告牌由许多有规律旋转的三棱柱组成", - "uk": "Поділ - білборд складається з багатьох трикутних призм, які регулярно обертаються" + "uk": "Поділ - білборд складається з багатьох трикутних призм, які регулярно обертаються", + "nl": "Trivision - het reclamebord bestaat uit verschillende driehoekige prisma's die regelmatig ronddraaien" }, "icon": { "class": "large", @@ -1268,7 +1294,8 @@ "pt": "Pôsteres de rolagem", "pt_BR": "Pôsteres deslizantes", "zh_Hans": "滚动海报", - "uk": "Прокрутка постерів" + "uk": "Прокрутка постерів", + "nl": "Roterende posters" }, "hideInAnswer": { "and": [ @@ -1290,7 +1317,8 @@ "pt": "Gira sobre si mesmo", "pt_BR": "Gira sobre si mesmo", "zh_Hans": "自行旋转", - "uk": "Обертається на себе" + "uk": "Обертається на себе", + "nl": "Roteert vanzelf" }, "hideInAnswer": { "and": [ @@ -1446,7 +1474,8 @@ "pl": "Informacje dotyczące bezpieczeństwa", "pt_BR": "Informações de segurança", "zh_Hans": "安全信息", - "uk": "Інформація про безпеку" + "uk": "Інформація про безпеку", + "nl": "Veiligheidsinformatie" }, "hideInAnswer": { "and": [ @@ -1469,7 +1498,8 @@ "pl": "Reklamy wyborcze", "pt_BR": "Propaganda eleitoral", "zh_Hans": "选举广告", - "uk": "Передвиборча реклама" + "uk": "Передвиборча реклама", + "nl": "Verkiezingsadvertentie" } }, { @@ -1529,7 +1559,8 @@ "pl": "Żeby wyrazić swoją opinię", "pt_BR": "Para expressar sua opinião", "zh_Hans": "表达您的意见", - "uk": "Щоб висловити свою думку" + "uk": "Щоб висловити свою думку", + "nl": "Om je mening te geven" }, "hideInAnswer": { "or": [ @@ -1570,7 +1601,8 @@ "pl": "Znak finansowania", "pt_BR": "Placa de financiamento", "zh_Hans": "资助标志", - "uk": "Ознака фінансування" + "uk": "Ознака фінансування", + "nl": "Financieringsteken" }, "hideInAnswer": { "or": [ @@ -1626,7 +1658,8 @@ "pl": "Z ilu stron można oglądać reklamy?", "pt_BR": "De quantos lados você consegue visualizar os anúncios?", "zh_Hans": "您可以从几个侧面观看广告?", - "uk": "Зі скількох сторін можна дивитися рекламу?" + "uk": "Зі скількох сторін можна дивитися рекламу?", + "nl": "Vanaf hoeveel kanten kun je naar reclame kijken?" }, "mappings": [ { @@ -1644,7 +1677,8 @@ "pt_BR": "Este objeto tem anúncios em um único lado", "zh_Hans": "该物体单面有广告", "it": "Questo oggetto ha la pubblicità solo da un lato", - "uk": "Цей об'єкт має рекламу з одного боку" + "uk": "Цей об'єкт має рекламу з одного боку", + "nl": "Dit object heeft reclame aan een enkele zijde" } }, { @@ -1661,7 +1695,8 @@ "pl": "Ten obiekt ma reklamy po dwóch stronach", "pt_BR": "Este objeto tem anúncios em ambos os lados", "zh_Hans": "该物体双面有广告", - "uk": "Цей об'єкт має рекламу з обох боків" + "uk": "Цей об'єкт має рекламу з обох боків", + "nl": "Dit object heeft reclame aan beide zijdes" } } ] @@ -1713,7 +1748,8 @@ "es": "¿Este letrero es de un negocio que ya no existe o que ya no se mantiene?", "cs": "Je tato značka určena pro již neexistující nebo neudržovaný podnik?", "uk": "Це знак для бізнесу, який більше не існує або більше не підтримується?", - "fr": "Est-ce l'enseigne d'un commerce qui n'existe plus ou n'est plus en activité ?" + "fr": "Est-ce l'enseigne d'un commerce qui n'existe plus ou n'est plus en activité ?", + "nl": "Is dit bord voor een bedrijf dat niet meer bestaat of niet meer wordt onderhouden?" }, "mappings": [ { @@ -1725,7 +1761,8 @@ "cs": "Jedná se o historický reklamní nápis (reklama na již neexistující podnik nebo velmi starý nápis s památkovou hodnotou)", "es": "Se trata de un anuncio histórico (un anuncio de un negocio que ya no existe o un cartel muy antiguo con valor patrimonial)", "uk": "Це історична рекламна вивіска (реклама підприємства, яке більше не існує, або дуже стара вивіска, що має історичну цінність)", - "fr": "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)" + "fr": "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)", + "nl": "Dit is een historisch reclamebord (een advertentie voor een bedrijf dat niet meer bestaat of een heel oud bord met erfgoedwaarde)" } }, { @@ -1736,7 +1773,8 @@ "cs": "Tento reklamní nápis nemá žádnou historickou hodnotu (podnik stále existuje a nemá žádnou památkovou hodnotu)", "es": "Este anuncio no tiene valor histórico (el negocio sigue existiendo y no tiene valor patrimonial)", "uk": "Ця рекламна вивіска не має історичної цінності (бізнес все ще існує і не має історичної цінності)", - "fr": "Cette publicité n'a pas de valeur historique (le commerce existe toujours, mais n'a pas de valeur patrimoniale particulière)" + "fr": "Cette publicité n'a pas de valeur historique (le commerce existe toujours, mais n'a pas de valeur patrimoniale particulière)", + "nl": "Dit reclamebord heeft geen historische waarde (het bedrijf bestaat nog steeds en heeft geen erfgoedwaarde)" } } ] diff --git a/assets/layers/aerialway/aerialway.json b/assets/layers/aerialway/aerialway.json index f140424fc..0ed61dafb 100644 --- a/assets/layers/aerialway/aerialway.json +++ b/assets/layers/aerialway/aerialway.json @@ -104,7 +104,8 @@ "en": "This is a cable car where the car goes up and down again on the same cable.", "de": "Es handelt sich um eine Seilbahn, bei der die Kabine auf demselben Seil nach oben und wieder nach unten fährt.", "cs": "Jedná se o lanovku, kde vagon jezdí nahoru a dolů po stejném laně.", - "es": "Se trata de un teleférico donde la cabina sube y baja por el mismo cable." + "es": "Se trata de un teleférico donde la cabina sube y baja por el mismo cable.", + "nl": "Dit is een kabelbaan waar de gondel op dezelfde kabel naar boven en naar beneden gaat." }, "icon": "./assets/layers/aerialway/cable_car.svg" }, @@ -114,7 +115,8 @@ "en": "This is a gondola where the cars go around in continuous circles", "de": "Es handelt sich um eine Seilbahn, bei der die Kabinen in ständigen Kreisen fahren", "cs": "Jedná se o gondolu, kde vozy jezdí v nepřetržitých kruzích", - "es": "Se trata de una góndola donde las cabinas giran en círculos continuos" + "es": "Se trata de una góndola donde las cabinas giran en círculos continuos", + "nl": "Dit is een kabellift waar de gondel in een continue circuit gaat" }, "icon": "./assets/layers/aerialway/gondola_lift.svg" }, diff --git a/assets/layers/animal_shelter/animal_shelter.json b/assets/layers/animal_shelter/animal_shelter.json index e17f6e92f..2821e8481 100644 --- a/assets/layers/animal_shelter/animal_shelter.json +++ b/assets/layers/animal_shelter/animal_shelter.json @@ -32,7 +32,8 @@ "ca": "Refugi d'animals", "pl": "Schronisko dla zwierząt", "fr": "Un refuge animalier", - "cs": "Útulek pro zvířata" + "cs": "Útulek pro zvířata", + "nl": "Dierenasiel" }, "mappings": [ { @@ -44,7 +45,8 @@ "zh_Hans": "{name}", "ca": "{name}", "pl": "{name}", - "cs": "{name}" + "cs": "{name}", + "nl": "{name}" } } ] @@ -131,7 +133,8 @@ "zh_Hans": "动物收容所的目的是什么?", "ca": "Quina és la finalitat del refugi d'animals?", "pl": "Jaki jest cel tego schroniska dla zwierząt?", - "cs": "Jaký je účel útulku pro zvířata?" + "cs": "Jaký je účel útulku pro zvířata?", + "nl": "Wat is het doel van dit dierenasiel?" }, "mappings": [ { @@ -143,7 +146,8 @@ "ca": "Els animals romanen ací fins que son adoptats per un nou propietari", "pl": "Zwierzęta są tutaj dopóki nie znajdą nowego właściciela", "fr": "Les animaux sont gardés jusqu'à ce qu'ils soient adoptés par un nouveau maître", - "cs": "Zvířata jsou zde držena do doby, než si je osvojí nový majitel" + "cs": "Zvířata jsou zde držena do doby, než si je osvojí nový majitel", + "nl": "Dieren worden hier gehouden totdat ze geadopteerd worden" }, "if": "purpose=adoption" }, @@ -155,7 +159,8 @@ "zh_Hans": "动物的余生都得到照顾", "ca": "Els animals reben cures per a la resta de la seva vida", "fr": "Les animaux sont recueillis pour le reste de leur vie", - "cs": "Zvířata jsou v péči po zbytek života" + "cs": "Zvířata jsou v péči po zbytek života", + "nl": "Dieren worden hier verzorgd voor de rest van hun leven" }, "if": "purpose=sanctuary" }, @@ -168,7 +173,8 @@ "ca": "Els animals ferits es rehabiliten aquí fins que puguen ser alliberats de nou a la natura ", "pl": "Ranne zwierzęta przechodzą tutaj rehabilitację do momentu, kiedy mogą zostać wypuszczone na wolność ", "fr": "Les animaux blessés sont soignés jusqu'à ce qu'ils soient en état d'être relâchés dans la nature ", - "cs": "Zraněná zvířata jsou zde rehabilitována do doby, než mohou být opět vypuštěna do přírody " + "cs": "Zraněná zvířata jsou zde rehabilitována do doby, než mohou být opět vypuštěna do přírody ", + "nl": "Gewonde dieren worden hier gerevalideerd totdat ze terug in het wild vrijgelaten worden " }, "if": "purpose=release" } @@ -183,7 +189,8 @@ "pl": "Jakie zwierzęta są tutaj przyjmowane?", "ca": "Quins animals s'accepten aquí?", "cs": "Která zvířata jsou zde přijímána?", - "es": "¿Qué animales son aceptados aquí?" + "es": "¿Qué animales son aceptados aquí?", + "nl": "Welke dieren worden hier opgevangen?" }, "id": "boarded_animals", "mappings": [ @@ -194,7 +201,8 @@ "de": "Hunde werden hier gehalten", "pl": "Są tutaj trzymane psy", "cs": "Chovají se zde psi", - "es": "Aquí se mantienen perros" + "es": "Aquí se mantienen perros", + "nl": "Honden worden hier opgevangen" } }, { @@ -204,7 +212,8 @@ "de": "Katzen werden hier gehalten", "pl": "Są tutaj trzymane koty", "cs": "Chovají se zde kočky", - "es": "Aquí se mantienen gatos" + "es": "Aquí se mantienen gatos", + "nl": "Katten worden hier opgevangen" } }, { @@ -214,7 +223,8 @@ "de": "Pferde werden hier gehalten", "pl": "Są tutaj trzymane konie", "cs": "Chovají se zde koně", - "es": "Aquí se mantienen caballos" + "es": "Aquí se mantienen caballos", + "nl": "Paarden worden hier opgevangen" } }, { @@ -224,7 +234,8 @@ "de": "Vögel werden hier gehalten", "pl": "Są tutaj trzymane ptaki", "cs": "Chovají se zde ptáci", - "es": "Aquí se mantienen aves" + "es": "Aquí se mantienen aves", + "nl": "Vogels worden hier opgevangen" } }, { @@ -234,7 +245,8 @@ "de": "Wildtiere werden hier gehalten", "pl": "Są tutaj trzymane dzikie zwierzęta", "cs": "Chovají se zde divoká zvířata", - "es": "Aquí se mantienen animales salvajes" + "es": "Aquí se mantienen animales salvajes", + "nl": "Wilde dieren worden hier opgevangen" } } ], @@ -242,7 +254,8 @@ "en": "{animal_shelter} is kept here", "de": "{animal_shelter} wird hier gehalten", "cs": "{animal_shelter} je uložen zde", - "es": "{animal_shelter} se mantiene aquí" + "es": "{animal_shelter} se mantiene aquí", + "nl": "{animal_shelter} worden hier opgevangen" }, "freeform": { "key": "animal_shelter" diff --git a/assets/layers/artwork/artwork.json b/assets/layers/artwork/artwork.json index 32f04bd45..274797062 100644 --- a/assets/layers/artwork/artwork.json +++ b/assets/layers/artwork/artwork.json @@ -706,7 +706,8 @@ "cs": "Existuje webová stránka s dalšími informacemi o tomto uměleckém díle?", "ca": "Hi ha un lloc web amb més informació sobre aquesta obra d'art?", "he": "האם יש אתר אינטרנט עם מידע נוסף על היצירה הזו?", - "pt_BR": "Há um website com mais informações sobre essa arte?" + "pt_BR": "Há um website com mais informações sobre essa arte?", + "uk": "Чи є веб-сайт із додатковою інформацією про цей твір мистецтва?" }, "render": { "special": { @@ -730,7 +731,8 @@ "da": "Yderligere oplysninger på dette websted", "cs": "Více informací na této webové stránce", "ca": "Més informació a aquesta pàgina web", - "pt_BR": "Mais informações nesse website" + "pt_BR": "Mais informações nesse website", + "uk": "Більше інформації на цьому сайті" } } }, @@ -824,7 +826,8 @@ "fr": "Cette œuvre est un mémorial", "cs": "Toto dílo slouží také jako památník", "es": "Esta obra de arte también sirve como monumento", - "uk": "Цей витвір мистецтва також слугує меморіалом" + "uk": "Цей витвір мистецтва також слугує меморіалом", + "nl": "Dit kunstwerk doet ook dienst als herdenkingsmonument" } }, { diff --git a/assets/layers/assisted_repair/assisted_repair.json b/assets/layers/assisted_repair/assisted_repair.json index 4638d1d86..d3e159b8e 100644 --- a/assets/layers/assisted_repair/assisted_repair.json +++ b/assets/layers/assisted_repair/assisted_repair.json @@ -135,7 +135,8 @@ "en": "Mobile phones are repaired here", "de": "Mobiltelefone werden hier repariert", "cs": "Zde se opravují mobilní telefony", - "es": "Aquí se reparan teléfonos móviles" + "es": "Aquí se reparan teléfonos móviles", + "uk": "Тут ремонтують мобільні телефони" }, "ifnot": "service:mobile_phone:repair=no" }, diff --git a/assets/layers/atm/atm.json b/assets/layers/atm/atm.json index d230f078a..08ae9c6d0 100644 --- a/assets/layers/atm/atm.json +++ b/assets/layers/atm/atm.json @@ -550,7 +550,8 @@ "he": "לכספומט זה יש פלט דיבור, זמין בדרך כלל דרך שקע אוזניות", "pt_BR": "Este caixa eletrônico possui saída de fala, geralmente disponível por meio de um plug de fone de ouvido", "es": "Este cajero automático tiene salida de voz, generalmente disponible a través de una toma de auriculares", - "pt": "Este multibanco tem saída de fala, geralmente disponível por meio de um plug de auscultadores" + "pt": "Este multibanco tem saída de fala, geralmente disponível por meio de um plug de auscultadores", + "uk": "Цей банкомат має мовний вихід, зазвичай доступний через роз'єм для навушників" } }, { diff --git a/assets/layers/bench/bench.json b/assets/layers/bench/bench.json index 116c35343..bbebfc02c 100644 --- a/assets/layers/bench/bench.json +++ b/assets/layers/bench/bench.json @@ -22,7 +22,8 @@ "cs": "Lavičky", "pa_PK": "بینچ", "he": "ספסלים", - "eu": "Bankuak" + "eu": "Bankuak", + "uk": "Лавки" }, "description": { "nl": "Een zitbank is een houten, metalen, stenen, … oppervlak waar een mens kan zitten. Deze laag toont ze en stelt er enkele vragen over.", diff --git a/assets/layers/bench_at_pt/bench_at_pt.json b/assets/layers/bench_at_pt/bench_at_pt.json index e0446271e..827db3f23 100644 --- a/assets/layers/bench_at_pt/bench_at_pt.json +++ b/assets/layers/bench_at_pt/bench_at_pt.json @@ -17,7 +17,8 @@ "pt": "Bancos em pontos de transporte público", "da": "Bænke ved stoppesteder for offentlig transport", "cs": "Lavičky na zastávkách veřejné dopravy", - "ca": "Bancs en una parada de transport públic" + "ca": "Bancs en una parada de transport públic", + "uk": "Лавки на зупинках громадського транспорту" }, "description": { "en": "A layer showing all public-transport-stops which do have a bench", @@ -193,7 +194,8 @@ "cs": "Co je to za lavičku?", "pt": "Que tipo de banco é este?", "ca": "Quin tipus de banc és aquest?", - "pt_BR": "Qual tipo de banco é esse?" + "pt_BR": "Qual tipo de banco é esse?", + "uk": "Що це за лавка?" }, "mappings": [ { @@ -208,7 +210,8 @@ "cs": "Zde je normální lavička k sezení", "ca": "Aquí hi ha un banc normal", "pt_BR": "Há um banco comum, para sentar, aqui", - "pt": "Há um banco comum, para sentar, aqui" + "pt": "Há um banco comum, para sentar, aqui", + "uk": "Тут є звичайна лавка для сидіння" } }, { @@ -242,7 +245,8 @@ "cs": "Zde není žádná lavička", "pt": "Não há nenhum banco aqui", "ca": "Aquí no hi ha cap banc", - "pt_BR": "Não há banco aqui" + "pt_BR": "Não há banco aqui", + "uk": "Тут немає лавки" } } ] diff --git a/assets/layers/bicycle_counter/bicycle_counter.json b/assets/layers/bicycle_counter/bicycle_counter.json index d4a42a443..1c14665dd 100644 --- a/assets/layers/bicycle_counter/bicycle_counter.json +++ b/assets/layers/bicycle_counter/bicycle_counter.json @@ -193,7 +193,8 @@ "en": "Is there a website for this bicycle counter?", "de": "Gibt es eine Website für die Fahrradzählstelle?", "cs": "Existuje webová stránka tohoto počítadla jízdních kol?", - "es": "¿Hay un sitio web para este contador de bicicletas?" + "es": "¿Hay un sitio web para este contador de bicicletas?", + "uk": "Є веб-сайт для цього велосипедного прилавка?" }, "freeform": { "key": "website", @@ -202,7 +203,8 @@ "en": "Website of the counter", "de": "Website der Zählstelle", "cs": "Webové stránky počítadla", - "es": "Sitio web del contador" + "es": "Sitio web del contador", + "uk": "Сайт лічильника" } }, "render": { diff --git a/assets/layers/bike_cleaning/bike_cleaning.json b/assets/layers/bike_cleaning/bike_cleaning.json index 78956543b..c564c6f71 100644 --- a/assets/layers/bike_cleaning/bike_cleaning.json +++ b/assets/layers/bike_cleaning/bike_cleaning.json @@ -284,7 +284,10 @@ { "question": { "en": "Is this bicycle cleaning service automated?", - "nl": "Is dit fietsschoonmaakpunt geautomatiseerd?" + "nl": "Is dit fietsschoonmaakpunt geautomatiseerd?", + "de": "Ist dieser Fahrradreinigungsdienst automatisiert?", + "cs": "Je tato služba čištění kol bez obsluhy?", + "es": "¿Está este servicio de limpieza de bicicletas automatizado?" }, "id": "automated", "mappings": [ @@ -292,14 +295,20 @@ "if": "automated=no", "then": { "en": "This is a manual bike washing station", - "nl": "Dit is een handmatig fietsschoonmaakpunt" + "nl": "Dit is een handmatig fietsschoonmaakpunt", + "de": "Dies ist eine manuelle Fahrradwaschanlage", + "cs": "Jedná se o ruční mycí stanici kol", + "es": "Esta es una estación manual de lavado de bicicletas" } }, { "if": "automated=yes", "then": { "en": "This is an automated bike wash", - "nl": "Dit is een automatisch fietsschoonmaakpunt" + "nl": "Dit is een automatisch fietsschoonmaakpunt", + "de": "Dies ist eine automatische Fahrradwaschanlage", + "cs": "Jedná se o mytí kol bez obsluhy", + "es": "Esta es una estación automática de lavado de bicicletas" } } ], @@ -308,7 +317,10 @@ { "question": { "nl": "Is dit fietsschoonmaakpunt zelfbediening?", - "en": "Is this cleaning service self-service?" + "en": "Is this cleaning service self-service?", + "de": "Muss die Reinigung selbständig erfolgen?", + "cs": "Je tato mycí služba samoobslužná?", + "es": "¿Es este servicio de limpieza de autoservicio?" }, "id": "self_service", "mappings": [ @@ -316,14 +328,20 @@ "if": "self_service=yes", "then": { "nl": "Dit fietsschoonmaakpunt is zelfbediening", - "en": "This cleaning service is self-service" + "en": "This cleaning service is self-service", + "de": "Die Reinigung erfolgt selbständig", + "cs": "Tato mycí služba je samoobslužná", + "es": "Este servicio de limpieza es de autoservicio" } }, { "if": "self_service=no", "then": { "nl": "Dit fietsschoonmaakpunt wordt bediend door aanwezig personeel", - "en": "This cleaning service is operated by an employee" + "en": "This cleaning service is operated by an employee", + "de": "Dieser Reinigungsdienst wird von einem Angestellten betrieben", + "cs": "Tuto mycí službu provozuje zaměstnanec", + "es": "Este servicio de limpieza está operado por un empleado" } } ], diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json index 9e3031f16..2337fbca1 100644 --- a/assets/layers/bike_parking/bike_parking.json +++ b/assets/layers/bike_parking/bike_parking.json @@ -823,7 +823,8 @@ "de": "Man könnte diese Nummer anrufen, wenn es Probleme gibt, z. B. um nicht gewartete Fahrräder zu entfernen", "ca": "És possible que es pugui trucar a aquest número en cas de problemes, p. per retirar les bicicletes abandonades", "cs": "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", - "es": "Se puede llamar a este número en caso de problemas, por ejemplo, para retirar bicicletas sin mantenimiento" + "es": "Se puede llamar a este número en caso de problemas, por ejemplo, para retirar bicicletas sin mantenimiento", + "uk": "За цим номером можна буде зателефонувати у разі виникнення проблем, наприклад, щоб прибрати недоглянуті велосипеди" }, "icon": "./assets/layers/questions/phone.svg", "freeform": { diff --git a/assets/layers/birdhide/birdhide.json b/assets/layers/birdhide/birdhide.json index 5b03da9dc..42dd01709 100644 --- a/assets/layers/birdhide/birdhide.json +++ b/assets/layers/birdhide/birdhide.json @@ -164,7 +164,8 @@ "fr": "un camouflage d’observation ornithologique", "da": "et fugletårn", "ca": "un observatori d'ocells", - "es": "un escondrijo para pájaros" + "es": "un escondrijo para pájaros", + "cs": "ptačí pozorovatelna" }, "description": { "en": "A screen or wall with openings to watch birds", diff --git a/assets/layers/caravansites/caravansites.json b/assets/layers/caravansites/caravansites.json index 435f93f97..52f5ce88b 100644 --- a/assets/layers/caravansites/caravansites.json +++ b/assets/layers/caravansites/caravansites.json @@ -762,7 +762,8 @@ "da": "Officiel hjemmeside: {website}", "cs": "Oficiální webové stránky: {website}", "pl": "Official website: {website}", - "pt": "Site oficial: {website}" + "pt": "Site oficial: {website}", + "uk": "Офіційний веб-сайт: {website}" }, "freeform": { "type": "url", @@ -786,7 +787,8 @@ "cs": "Má toto místo webové stránky?", "eu": "Toki honek webgunerik ba al du?", "pl": "Czy to miejsce ma stronę internetową?", - "pt": "Este lugar tem um website?" + "pt": "Este lugar tem um website?", + "uk": "Це місце має веб-сайт?" }, "id": "caravansites-website" }, diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index dd27e3f36..adb527132 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -74,6 +74,7 @@ "en": "A charging station", "nl": "Oplaadpunten", "ca": "Una estació de càrrega", + "cs": "Nabíjecí stanice", "de": "Eine Ladestation", "es": "Un punto de carga", "fr": "Une station de recharge" @@ -1153,7 +1154,8 @@ "en": "USB to charge phones and small electronics", "nl": "USB om GSMs en kleine electronica op te laden", "de": "USB zum Aufladen von Handys und kleinen Elektrogeräten", - "es": "USB para cargar teléfonos y pequeños dispositivos electrónicos" + "es": "USB para cargar teléfonos y pequeños dispositivos electrónicos", + "uk": "USB для зарядки телефонів і дрібної електроніки" }, "icon": { "path": "./assets/layers/charging_station/usb_port.svg", @@ -1171,7 +1173,8 @@ "en": "USB to charge phones and small electronics", "nl": "USB om GSMs en kleine electronica op te laden", "de": "USB zum Aufladen von Handys und kleinen Elektrogeräten", - "es": "USB para cargar teléfonos y pequeños dispositivos electrónicos" + "es": "USB para cargar teléfonos y pequeños dispositivos electrónicos", + "uk": "USB для зарядки телефонів і дрібної електроніки" }, "hideInAnswer": true, "icon": { @@ -1947,7 +1950,8 @@ "en": "USB to charge phones and small electronics", "nl": "USB om GSMs en kleine electronica op te laden", "de": "USB zum Aufladen von Handys und kleinen Elektrogeräten", - "es": "USB para cargar teléfonos y pequeños dispositivos electrónicos" + "es": "USB para cargar teléfonos y pequeños dispositivos electrónicos", + "uk": "USB для зарядки телефонів і дрібної електроніки" }, "usb_port.svg", [ @@ -2427,7 +2431,8 @@ "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk", "de": "Authentifizierung per Anruf ist möglich", "es": "Hay disponible autenticación por llamada telefónica", - "fr": "Authentification possible par appel téléphonique" + "fr": "Authentification possible par appel téléphonique", + "uk": "Доступна автентифікація за допомогою телефонного дзвінка" } }, { @@ -2500,14 +2505,16 @@ "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}", "ca": "Autentiqueu-vos trucant o enviant SMS a {authentication:phone_call:number}", "de": "Authentifiziere dich, indem du anrufst oder eine SMS sendest an {authentication:phone_call:number}", - "es": "Autentifícate llamando o enviando un SMS a {authentication:phone_call:number}" + "es": "Autentifícate llamando o enviando un SMS a {authentication:phone_call:number}", + "uk": "Авторизуйтесь, зателефонувавши або надіславши SMS на {authentication:phone_call:number}" }, "question": { "en": "What's the phone number for authentication call or SMS?", "nl": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", "ca": "Quin és el número de telèfon per a la trucada d'autenticació o SMS?", "de": "Wie lautet die Telefonnummer für den Authentifizierungsanruf oder die SMS?", - "es": "¿Cuál es el número de teléfono para la llamada o SMS de autenticación?" + "es": "¿Cuál es el número de teléfono para la llamada o SMS de autenticación?", + "uk": "Який номер телефону для аутентифікаційного дзвінка або SMS?" }, "freeform": { "key": "authentication:phone_call:number", @@ -2695,7 +2702,8 @@ "ca": "A quin número es pot cridar si hi ha algun problema amb aquest punt de càrrega?", "de": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?", "es": "¿A qué número se puede llamar si hay un problema con este punto de carga?", - "pl": "Na jaki numer można zadzwonić w przypadku problemów z tą stacją ładowania?" + "pl": "Na jaki numer można zadzwonić w przypadku problemów z tą stacją ładowania?", + "uk": "За яким номером можна зателефонувати, якщо виникла проблема з цією зарядною станцією?" }, "render": { "en": "In case of problems, call {phone}", @@ -2703,7 +2711,8 @@ "ca": "En cas de problemes, truqueu a {phone}", "de": "Bei Problemen, anrufen unter {phone}", "es": "En caso de problemas, llama a {phone}", - "pl": "W przypadku problemów zadzwoń na {phone}" + "pl": "W przypadku problemów zadzwoń na {phone}", + "uk": "У разі виникнення проблем телефонуйте {phone}" }, "freeform": { "key": "phone", @@ -2739,13 +2748,15 @@ "en": "What is the website where one can find more information about this charging station?", "nl": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?", "de": "Auf welcher Webseite kann man weitere Informationen über diese Ladestation finden?", - "es": "¿Cuál es la página web donde se puede encontrar más información sobre este punto de carga?" + "es": "¿Cuál es la página web donde se puede encontrar más información sobre este punto de carga?", + "uk": "На якому веб-сайті можна знайти більше інформації про цю зарядну станцію?" }, "render": { "en": "More info on {website}", "nl": "Meer informatie op {website}", "de": "Weitere Informationen unter {website}", - "es": "Más información en {website}" + "es": "Más información en {website}", + "uk": "Більше інформації на {website}" }, "freeform": { "key": "website", @@ -3246,7 +3257,8 @@ "en": "Has a
USB to charge phones and small electronics
connector", "nl": "Heeft een
USB om GSMs en kleine electronica op te laden
", "de": "Hat einen
USB-Anschluss zum Aufladen von Telefonen und kleinen Elektrogeräten
", - "es": "Tiene un conector
USB para cargar teléfonos y pequeños dispositivos electrónicos
" + "es": "Tiene un conector
USB para cargar teléfonos y pequeños dispositivos electrónicos
", + "uk": "Має
USB для зарядки телефонів і малої електроніки
роз'єм" }, "osmTags": "socket:USB-A~*" }, diff --git a/assets/layers/climbing/climbing.json b/assets/layers/climbing/climbing.json index 34133a701..5e8943697 100644 --- a/assets/layers/climbing/climbing.json +++ b/assets/layers/climbing/climbing.json @@ -25,7 +25,8 @@ "fr": "Existe-t’il un site avec plus d’informations (ex : topographie) ?", "it": "C’è un sito web (anche non ufficiale) con qualche informazione in più (ad es. topografie)?", "cs": "Existuje (neoficiální) webová stránka s více informacemi (např. topos)?", - "es": "¿Hay una página web (no oficial) con más información (p. ej., croquis)?" + "es": "¿Hay una página web (no oficial) con más información (p. ej., croquis)?", + "uk": "Чи існує (неофіційний) веб-сайт з додатковою інформацією (наприклад, топос)?" }, "condition": { "and": [ diff --git a/assets/layers/clock/clock.json b/assets/layers/clock/clock.json index 29155fb40..9f2aed631 100644 --- a/assets/layers/clock/clock.json +++ b/assets/layers/clock/clock.json @@ -131,11 +131,15 @@ ], "title": { "en": "a wall-mounted clock, mounted directly on a wall", - "nl": "een klok aan een muur, rechtstreeks bevestigd aan een muur" + "nl": "een klok aan een muur, rechtstreeks bevestigd aan een muur", + "de": "eine Wanduhr, die direkt an der Wand angebracht ist", + "es": "un reloj, montado directamente en una pared" }, "description": { "en": "A publicly visible clock mounted directly on a wall", - "nl": "Een publiekelijk zichtbare klok rechtstreeks bevestigd aan een muur" + "nl": "Een publiekelijk zichtbare klok rechtstreeks bevestigd aan een muur", + "de": "Eine öffentlich sichtbare Uhr, die direkt an einer Wand angebracht ist", + "es": "Un reloj visible públicamente montado directamente en una pared" }, "snapToLayer": [ "walls_and_buildings" @@ -175,12 +179,12 @@ "then": { "en": "This clock is mounted on a wall, usually through a support perpendicular to the wall", "nl": "Deze klok is bevestigd aan een muur, meestal met een steun loodrecht op de muur", - "de": "Diese Uhr ist an einer Wand montiert", + "de": "Diese Uhr wird an der Wand befestigt, in der Regel durch einen Träger, der senkrecht zur Wand steht", "ca": "Aquest rellotge està muntat en una paret", "fr": "Cette horloge est fixée sur un mur", "pl": "Ten zegar jest zamontowany na ścianie", "cs": "Tyto hodiny jsou namontovány na stěně", - "es": "Este reloj está montado en una pared" + "es": "Este reloj está montado en una pared, generalmente a través de un soporte perpendicular a la pared" } }, { @@ -188,7 +192,8 @@ "then": { "en": "This clock is mounted directly on a wall", "nl": "Deze klok is rechtstreeks aan een muur bevestigd", - "es": "Este reloj forma parte de una cartelera" + "es": "Este reloj está montado directamente en una pared", + "de": "Diese Uhr ist direkt an einer Wand montiert" } }, { @@ -202,7 +207,7 @@ "pl": "Ten zegar jest częścią bilbordu", "cs": "Tyto hodiny jsou součástí billboardu", "uk": "Цей годинник є частиною білборду", - "es": "Este reloj está en el suelo" + "es": "Este reloj es parte de un cartel" } }, { @@ -291,20 +296,26 @@ "override": { "question": { "en": "Is this clock indoors?", - "nl": "Is deze klok binnen?" + "nl": "Is deze klok binnen?", + "de": "Befindet sich diese Uhr in Innenräumen?", + "es": "¿Este reloj está en el interior?" }, "mappings": [ { "then": { "en": "This clock is indoors", - "nl": "Deze klok is binnen" + "nl": "Deze klok is binnen", + "de": "Diese Uhr befindet sich in Innenräumen", + "es": "Este reloj está en un espacio interior" } }, { "if": "indoor=no", "then": { "en": "This clock is outdoors", - "nl": "Deze klok is buiten" + "nl": "Deze klok is buiten", + "de": "Diese Uhr ist im Freien", + "es": "Este reloj está en un espacio exterior" } } ] diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json index 6bdb8800a..9537db741 100644 --- a/assets/layers/crossings/crossings.json +++ b/assets/layers/crossings/crossings.json @@ -232,14 +232,18 @@ "id": "markings", "question": { "en": "What kind of markings does this crossing have?", - "nl": "Wat voor markering heeft deze oversteekplaats?" + "nl": "Wat voor markering heeft deze oversteekplaats?", + "de": "Welche Art von Markierungen gibt es an diesem Übergang?", + "es": "¿Qué tipo de señalización tiene este cruce?" }, "mappings": [ { "if": "crossing:markings=no", "then": { "en": "This crossing has no markings", - "nl": "Deze oversteekplaats heeft geen markeringen" + "nl": "Deze oversteekplaats heeft geen markeringen", + "de": "Diese Kreuzung hat keine Markierungen", + "es": "Este cruce no está señalizado" }, "icon": { "class": "large", @@ -250,7 +254,9 @@ "if": "crossing:markings=zebra", "then": { "en": "This crossing has zebra markings", - "nl": "Deze oversteekplaats heeft een zebramarkering" + "nl": "Deze oversteekplaats heeft een zebramarkering", + "de": "Dieser Übergang ist mit Zebrastreifen markiert", + "es": "Este paso de cebra está señalizado" }, "icon": { "class": "large", @@ -261,7 +267,9 @@ "hideInAnswer": true, "then": { "en": "This crossing has markings of an unknown type", - "nl": "Deze oversteekplaats heeft markeringen van een onbekend type" + "nl": "Deze oversteekplaats heeft markeringen van een onbekend type", + "de": "Dieser Übergang weist Markierungen unbekannter Art auf", + "es": "Este cruce tiene marcas de tipo desconocido" }, "if": "crossing:markings=yes" }, @@ -269,7 +277,9 @@ "if": "crossing:markings=lines", "then": { "en": "This crossings has lines on either side of the crossing", - "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats" + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats", + "de": "Dieser Übergang hat Linien auf beiden Seiten des Übergangs", + "es": "Este cruce tiene líneas a ambos lados del cruce" }, "icon": { "class": "large", @@ -280,7 +290,9 @@ "if": "crossing:markings=ladder", "then": { "en": "This crossing has lines on either side of the crossing, along with bars connecting them", - "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden" + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden", + "de": "Diese Kreuzung hat Linien auf beiden Seiten der Kreuzung, zusammen mit Stangen, die sie verbinden", + "es": "Este cruce tiene líneas a ambos lados, junto con barras que las conectan" }, "icon": { "class": "large", @@ -291,7 +303,9 @@ "if": "crossing:markings=dashes", "then": { "en": "This crossing has dashed lines on either sides of the crossing", - "nl": "Deze oversteekplaats heeft onderbroken lijnen aan beide kanten van de oversteekplaats" + "nl": "Deze oversteekplaats heeft onderbroken lijnen aan beide kanten van de oversteekplaats", + "de": "Dieser Übergang hat gestrichelte Linien auf beiden Seiten des Übergangs", + "es": "Este cruce tiene líneas discontinuas a ambos lados del cruce" }, "icon": { "class": "large", @@ -302,7 +316,9 @@ "if": "crossing:markings=dots", "then": { "en": "This crossing has dotted lines on either sides of the crossing", - "nl": "Deze oversteekplaats heeft stippellijnen aan beide kanten van de oversteekplaats" + "nl": "Deze oversteekplaats heeft stippellijnen aan beide kanten van de oversteekplaats", + "de": "Dieser Übergang hat gestrichelte Linien auf beiden Seiten des Übergangs", + "es": "Este cruce tiene líneas de puntos a ambos lados del cruce" }, "icon": { "class": "large", @@ -313,7 +329,9 @@ "if": "crossing:markings=surface", "then": { "en": "This crossing is marked by using a different coloured surface", - "nl": "Deze oversteekplaats is gemarkeerd door een anders gekleurd wegdek" + "nl": "Deze oversteekplaats is gemarkeerd door een anders gekleurd wegdek", + "de": "Dieser Übergang wird durch eine andersfarbige Oberfläche gekennzeichnet", + "es": "Este cruce se marca utilizando una superficie de color diferente" }, "icon": { "class": "large", @@ -324,7 +342,9 @@ "if": "crossing:markings=ladder:skewed", "then": { "en": "This crossing has lines on either side of the crossing, along with angled bars connecting them", - "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met schuine strepen die ze verbinden" + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met schuine strepen die ze verbinden", + "de": "Diese Kreuzung hat Linien auf beiden Seiten der Kreuzung, zusammen mit abgewinkelten Stangen, die sie verbinden", + "es": "Este cruce tiene líneas a ambos lados, junto con barras en ángulo que las conectan" }, "icon": { "class": "large", @@ -335,14 +355,18 @@ "if": "crossing:markings=zebra:paired", "then": { "en": "This crossing has zebra markings with an interruption in every bar", - "nl": "Deze oversteekplaats heeft zebramarkeringen met een onderbreking van elke streep" + "nl": "Deze oversteekplaats heeft zebramarkeringen met een onderbreking van elke streep", + "de": "Dieser Übergang hat Zebrastreifen mit einer Unterbrechung in jedem Balken", + "es": "Este paso tiene marcas de cebra con una interrupción en cada barra" } }, { "if": "crossing:markings=zebra:bicolour", "then": { "en": "This crossing has zebra markings in alternating colours", - "nl": "Deze oversteekplaats heeft een zebramarkering in afwisselende kleuren" + "nl": "Deze oversteekplaats heeft een zebramarkering in afwisselende kleuren", + "de": "Dieser Übergang hat Zebrastreifen in wechselnden Farben", + "es": "Este paso tiene marcas de cebra en colores alternos" }, "icon": { "class": "large", @@ -353,7 +377,9 @@ "if": "crossing:markings=zebra:double", "then": { "en": "This crossing has double zebra markings", - "nl": "Deze oversteekplaats heeft een dubbele zebramarkering" + "nl": "Deze oversteekplaats heeft een dubbele zebramarkering", + "de": "Dieser Übergang hat doppelte Zebrastreifen", + "es": "Este paso de cebra tiene doble señalización" }, "icon": { "class": "large", @@ -364,21 +390,27 @@ "if": "crossing:markings=pictograms", "then": { "en": "This crossing has pictograms on the road", - "nl": "Deze oversteekplaats heeft pictogrammen op de weg" + "nl": "Deze oversteekplaats heeft pictogrammen op de weg", + "de": "Diese Kreuzung hat Piktogramme auf der Straße", + "es": "Este cruce tiene pictogramas en la calzada" } }, { "if": "crossing:markings=ladder:paired", "then": { "en": "This crossing has lines on either side of the crossing, along with bars connecting them, with an interruption in every bar", - "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden, met een onderbreking van elke streep" + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden, met een onderbreking van elke streep", + "de": "Diese Kreuzung hat Linien auf beiden Seiten der Kreuzung und Balken, die sie verbinden, mit einer Unterbrechung in jedem Balken", + "es": "Este cruce tiene líneas a cada lado del cruce, junto con barras que las conectan, con una interrupción en cada barra" } }, { "if": "crossing:markings=lines:paired", "then": { "en": "This crossing has double lines on either side of the crossing", - "nl": "Deze oversteekplaats heeft dubbele lijnen aan beide kanten van de oversteekplaats" + "nl": "Deze oversteekplaats heeft dubbele lijnen aan beide kanten van de oversteekplaats", + "de": "Dieser Übergang hat doppelte Linien auf beiden Seiten des Übergangs", + "es": "Este cruce tiene líneas dobles a cada lado del cruce" }, "icon": { "class": "large", @@ -388,7 +420,9 @@ ], "render": { "en": "This crossing has {crossing:markings} markings", - "nl": "Deze oversteekplaats heeft {crossing:markings} markeringen" + "nl": "Deze oversteekplaats heeft {crossing:markings} markeringen", + "de": "Dieser Übergang hat {crossing:markings} Markierungen", + "es": "Este cruce tiene marcas {crossing:markings}" }, "freeform": { "key": "crossing:markings", diff --git a/assets/layers/cyclist_waiting_aid/cyclist_waiting_aid.json b/assets/layers/cyclist_waiting_aid/cyclist_waiting_aid.json index eb6ab3ea3..9bab3caea 100644 --- a/assets/layers/cyclist_waiting_aid/cyclist_waiting_aid.json +++ b/assets/layers/cyclist_waiting_aid/cyclist_waiting_aid.json @@ -22,7 +22,8 @@ "images", { "question": { - "en": "What kind of components does this waiting aid have?" + "en": "What kind of components does this waiting aid have?", + "de": "Aus welchen Bestandteilen besteht diese Wartehilfe?" }, "id": "type", "multiAnswer": true, @@ -30,14 +31,16 @@ { "if": "footrest=yes", "then": { - "en": "There is a board or peg to rest your foot on here" + "en": "There is a board or peg to rest your foot on here", + "de": "Hier gibt es ein Brett oder einen Pflock zum Abstützen des Fußes" }, "ifnot": "footrest=" }, { "if": "handrest=yes", "then": { - "en": "There is a rail or a handle to hold on to here" + "en": "There is a rail or a handle to hold on to here", + "de": "Hier gibt es eine Schiene oder einen Griff zum Festhalten" }, "ifnot": "handrest=" } @@ -45,26 +48,34 @@ }, { "question": { - "en": "On what side of the road is this located?" + "en": "On what side of the road is this located?", + "de": "Auf welcher Straßenseite befindet sich dies?", + "es": "¿En qué lado de la carretera se encuentra?" }, "id": "side", "mappings": [ { "if": "side=left", "then": { - "en": "This waiting aid is located on the left side" + "en": "This waiting aid is located on the left side", + "de": "Diese Wartehilfe befindet sich auf der linken Seite", + "es": "Esta ayuda a la espera se encuentra en el lado izquierdo" } }, { "if": "side=right", "then": { - "en": "This waiting aid is located on the right side" + "en": "This waiting aid is located on the right side", + "de": "Diese Wartehilfe befindet sich auf der rechten Seite", + "es": "Esta ayuda a la espera se encuentra en el lado derecho" } }, { "if": "side=both", "then": { - "en": "There are waiting aids on both sides of the road" + "en": "There are waiting aids on both sides of the road", + "de": "Auf beiden Seiten der Straße gibt es Wartehilfen", + "es": "Hay ayudas a la espera a ambos lados de la carretera" } } ] @@ -76,18 +87,24 @@ { "if": "direction=forward", "then": { - "en": "This waiting aid can be used when going forward on this way" + "en": "This waiting aid can be used when going forward on this way", + "de": "Diese Wartehilfe kann bei der Weiterfahrt auf diesem Weg genutzt werden", + "es": "Esta ayuda a la espera puede utilizarse cuando se avanza por esta vía" } }, { "if": "direction=backward", "then": { - "en": "This waiting aid can be used when going backward on this way" + "en": "This waiting aid can be used when going backward on this way", + "de": "Diese Wartehilfe kann beim Rückwärtsfahren auf diesem Weg benutzt werden", + "es": "Esta ayuda a la espera puede utilizarse cuando se retrocede por este camino" } } ], "render": { - "en": "This waiting aid can be used when going in {direction} direction" + "en": "This waiting aid can be used when going in {direction} direction", + "de": "Diese Wartehilfe kann in Fahrtrichtung {direction} benutzt werden", + "es": "Esta ayuda a la espera puede utilizarse cuando se va en dirección {direction}" } } ], @@ -100,17 +117,22 @@ "credits:uid": 5093765, "id": "cyclist_waiting_aid", "description": { - "en": "Various pieces of infrastructure that aid cyclists while they wait at a traffic light." + "en": "Various pieces of infrastructure that aid cyclists while they wait at a traffic light.", + "de": "Verschiedene Infrastruktureinrichtungen, die Radfahrern helfen, während sie an einer Ampel warten.", + "es": "Diversas infraestructuras que ayudan a los ciclistas mientras esperan en un semáforo." }, "source": { "osmTags": "highway=cyclist_waiting_aid" }, "name": { - "en": "Cyclist Waiting Aids" + "en": "Cyclist Waiting Aids", + "de": "Radfahrer-Wartehilfen", + "es": "Ayudas a la espera de ciclistas" }, "title": { "render": { - "en": "Cyclist Waiting Aid" + "en": "Cyclist Waiting Aid", + "de": "Radfahrer-Wartehilfe" } }, "deletion": { @@ -132,13 +154,17 @@ "presets": [ { "title": { - "en": "a cyclist waiting aid" + "en": "a cyclist waiting aid", + "de": "eine Radfahrer-Wartehilfe", + "es": "un ciclista espera ayuda" }, "tags": [ "highway=cyclist_waiting_aid" ], "description": { - "en": "A footrest, handrail or other aid, to improve comfort while waiting at traffic lights" + "en": "A footrest, handrail or other aid, to improve comfort while waiting at traffic lights", + "de": "Eine Fußstütze, ein Handlauf oder ein anderes Hilfsmittel zur Verbesserung des Komforts beim Warten an der Ampel", + "es": "Reposapiés, pasamanos u otro tipo de ayuda para mejorar la comodidad durante la espera en los semáforos" }, "snapToLayer": [ "cycleways_and_roads" diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json index dd48eab4d..dc0d19efb 100644 --- a/assets/layers/defibrillator/defibrillator.json +++ b/assets/layers/defibrillator/defibrillator.json @@ -605,7 +605,8 @@ "sl": "Telefonska številka za vprašanja o tem defibrilatorju: {phone}", "ca": "Telèfon per a dubtes sobre aquest desfibril·lador: {phone}", "cs": "Telefon pro dotazy ohledně tohoto defibrilátoru: {phone}", - "es": "Teléfono para preguntas sobre este desfibrilador: {phone}" + "es": "Teléfono para preguntas sobre este desfibrilador: {phone}", + "uk": "Телефонуйте з питань щодо цього дефібрилятора: {phone}" }, "question": { "en": "What is the phone number for questions about this defibrillator?", @@ -616,7 +617,8 @@ "sl": "Kakšna je telefonska številka za vprašanja o tem defibrilatorju?", "es": "¿Cuál es el número de teléfono para preguntas sobre este desfibrilador?", "ca": "Quin és el número de telèfon on preguntar sobre aquest desfibril·lador?", - "cs": "Jaké je telefonní číslo pro dotazy k tomuto defibrilátoru?" + "cs": "Jaké je telefonní číslo pro dotazy k tomuto defibrilátoru?", + "uk": "Який номер телефону для запитань щодо цього дефібрилятора?" }, "freeform": { "key": "phone", diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index 7a6306b5a..77d776907 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -625,7 +625,8 @@ "en": "On what webpage is the menu published?", "de": "Auf welcher Webseite wird das Menü veröffentlicht?", "ca": "A quina web està publicat el menú?", - "es": "¿En qué página web se publica el menú?" + "es": "¿En qué página web se publica el menú?", + "uk": "На якій веб-сторінці опубліковано меню?" }, "render": { "special": { @@ -634,7 +635,8 @@ "text": { "en": "Consult the menu", "de": "Das Menü einsehen", - "es": "Consultar el menú" + "es": "Consultar el menú", + "uk": "Зверніться до меню" } } }, diff --git a/assets/layers/gps_track/gps_track.json b/assets/layers/gps_track/gps_track.json index c827be9c1..bd6fb7a08 100644 --- a/assets/layers/gps_track/gps_track.json +++ b/assets/layers/gps_track/gps_track.json @@ -59,7 +59,8 @@ "fr": "C'est le chemin que vous avez parcouru depuis l'ouverture de ce site. Ne vous inquiétez pas - ceci n'est visible que pour vous et personne d'autre. Vos données de localisation ne sont jamais envoyées hors de l'appareil.", "ca": "Aquest és el camí que heu recorregut des que s'ha obert aquest lloc web. No et preocupis: això només és visible per a tu i ningú més. Les vostres dades d'ubicació mai s'envien fora del dispositiu.", "cs": "To je cesta, kterou jste urazili od otevření těchto webových stránek. Nemějte obavy - je viditelná pouze pro vás a pro nikoho jiného. Údaje o vaší poloze nejsou nikdy odesílány mimo zařízení.", - "es": "Esta es la traza que has recorrido desde que se abrió este sitio web. No te preocupes, solo tú puedes verla y nadie más. Tus datos de ubicación nunca se envían fuera del dispositivo." + "es": "Esta es la traza que has recorrido desde que se abrió este sitio web. No te preocupes, solo tú puedes verla y nadie más. Tus datos de ubicación nunca se envían fuera del dispositivo.", + "uk": "Це шлях, який ви пройшли з моменту відкриття веб-сайту. Не хвилюйтеся – це видно лише вам і нікому більше. Дані про ваше місцезнаходження ніколи не надсилаються за межі пристрою." } }, "export_as_gpx", diff --git a/assets/layers/icons/icons.json b/assets/layers/icons/icons.json index 6b1d1fdf2..bc89dc6b9 100644 --- a/assets/layers/icons/icons.json +++ b/assets/layers/icons/icons.json @@ -130,7 +130,8 @@ "de": "Telefon", "pl": "telefon", "cs": "telefon", - "es": "teléfono" + "es": "teléfono", + "uk": "телефон" } } }, @@ -149,7 +150,8 @@ "de": "Telefon", "pl": "telefon", "cs": "telefon", - "es": "teléfono" + "es": "teléfono", + "uk": "телефон" } } } diff --git a/assets/layers/nature_reserve/nature_reserve.json b/assets/layers/nature_reserve/nature_reserve.json index 181736567..a72aac68e 100644 --- a/assets/layers/nature_reserve/nature_reserve.json +++ b/assets/layers/nature_reserve/nature_reserve.json @@ -495,7 +495,8 @@ "de": "Welche Telefonnummer kann man bei Fragen und Problemen zu diesem Gebiet anrufen?", "ca": "A quin número de telèfon es pot trucar amb preguntes i problemes amb aquest parc natural?", "cs": "Na jaké telefonní číslo lze volat v případě dotazů a problémů s touto přírodní rezervací?", - "es": "¿Qué número de teléfono se puede llamar para preguntas y problemas con esta reserva natural?" + "es": "¿Qué número de teléfono se puede llamar para preguntas y problemas con esta reserva natural?", + "uk": "За яким номером телефону можна звертатися з питаннями та проблемами, пов'язаними з цим заповідником?" }, "render": { "*": "{phone}" @@ -513,7 +514,8 @@ "de": "Respektieren Sie die Privatsphäre. Geben Sie nur dann eine Telefonnummer an, wenn diese allgemein bekannt ist", "ca": "Respecteu la privadesa: només empleneu una adreça de número de telèfon personal si es publica àmpliament", "cs": "Respektujte soukromí - adresu s osobním telefonním číslem vyplňte pouze v případě, že je široce zveřejněna", - "es": "Respeta la privacidad: sólo rellena una dirección de número de teléfono personal si esto se publica ampliamente" + "es": "Respeta la privacidad: sólo rellena una dirección de número de teléfono personal si esto se publica ampliamente", + "uk": "Поважайте приватність - вказуйте особистий номер телефону лише в тому випадку, якщо він є загальнодоступним" } }, { diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index e19631b03..d17a82410 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -101,7 +101,8 @@ "fr": "C'est un parking en surface", "ca": "Aquest és un aparcament en superfície", "cs": "Jedná se o povrchové parkoviště", - "es": "Este es un aparcamiento en superficie" + "es": "Este es un aparcamiento en superficie", + "uk": "Це наземний паркінг" } }, { @@ -113,7 +114,8 @@ "fr": "C'est un lieu de stationnement à côté d'une route", "ca": "Es tracta d'un aparcament al costat d'un carrer", "cs": "Jedná se o parkoviště vedle ulice", - "es": "Esta es una bahía de aparcamiento junto a una calle" + "es": "Esta es una bahía de aparcamiento junto a una calle", + "uk": "Це паркувальний майданчик поруч з вулицею" } }, { @@ -126,7 +128,8 @@ "ca": "Aquest és un aparcament subterrani", "pl": "To jest podziemny parking", "cs": "Jedná se o podzemní garáž", - "es": "Este es un aparcamiento subterráneo" + "es": "Este es un aparcamiento subterráneo", + "uk": "Це підземний паркінг" } }, { @@ -139,7 +142,8 @@ "pl": "To jest wielopiętrowy parking", "ca": "Es tracta d'un garatge de diverses plantes", "cs": "Jedná se o vícepodlažní parkovací garáž", - "es": "Este es un aparcamiento de varios pisos" + "es": "Este es un aparcamiento de varios pisos", + "uk": "Це багатоповерховий паркінг" } }, { @@ -150,7 +154,8 @@ "de": "Dies ist ein Parkdeck auf dem Dach", "fr": "C'est un parking sur le toit", "cs": "Jedná se o střešní parkoviště", - "es": "Este es un aparcamiento en azotea" + "es": "Este es un aparcamiento en azotea", + "uk": "Це паркувальний майданчик на даху" } }, { @@ -163,7 +168,8 @@ "pl": "To jest pas do parkowania na jezdni", "ca": "Aquest és un carril per aparcar al carrer", "cs": "Jedná se o pruh pro parkování na silnici", - "es": "Este es un carril para aparcar en la carretera" + "es": "Este es un carril para aparcar en la carretera", + "uk": "Це смуга для паркування на дорозі" } }, { @@ -174,7 +180,8 @@ "de": "Dies ist ein durch Carports überdachter Parkplatz", "fr": "C'est un parking couvert avec des abris auto", "cs": "Jedná se o parkoviště kryté přístřešky pro auta", - "es": "Este aparcamiento está cubierto por cocheras" + "es": "Este aparcamiento está cubierto por cocheras", + "uk": "Це парковка, закрита навісами для автомобілів" } }, { @@ -185,7 +192,8 @@ "de": "Dies ist ein Parkplatz bestehend aus Garagenboxen", "fr": "C'est un parking composé de box de garage", "cs": "Jedná se o parkoviště skládající se z garážových boxů", - "es": "Este es un aparcamiento que consta de boxes de garaje" + "es": "Este es un aparcamiento que consta de boxes de garaje", + "uk": "Це паркінг, що складається з гаражних боксів" } }, { @@ -197,7 +205,8 @@ "fr": "C'est un parking sur une aire de stationnement", "ca": "Aquest és un aparcament en una zona de descans", "cs": "Jedná se o parkoviště na odpočívadle", - "es": "Este es un aparcamiento en una zona de descanso" + "es": "Este es un aparcamiento en una zona de descanso", + "uk": "Це парковка на проїжджій частині" } }, { @@ -208,7 +217,8 @@ "de": "Hier gibt es Parkmöglichkeiten unter einer offenen Dachkonstruktion", "fr": "C'est un parking composé de cabanons", "cs": "Jedná se o parkoviště tvořené přístřešky", - "es": "Este es un aparcamiento que consta de cobertizos" + "es": "Este es un aparcamiento que consta de cobertizos", + "uk": "Це парковка, що складається з навісів" } } ], @@ -220,7 +230,8 @@ "ca": "Quin tipus d'aparcament és aquest?", "pl": "Jaki to rodzaj parkingu?", "cs": "Jaký je druh parkování?", - "es": "¿Qué tipo de aparcamiento es este?" + "es": "¿Qué tipo de aparcamiento es este?", + "uk": "Що це за парковка?" } }, { diff --git a/assets/layers/picnic_table/picnic_table.json b/assets/layers/picnic_table/picnic_table.json index 9eb0f021d..bcda2f176 100644 --- a/assets/layers/picnic_table/picnic_table.json +++ b/assets/layers/picnic_table/picnic_table.json @@ -9,7 +9,8 @@ "de": "Picknick-Tische", "ca": "Taules de pícnic", "es": "Mesas de Picnic", - "cs": "Piknikové stoly" + "cs": "Piknikové stoly", + "uk": "Столи для пікніка" }, "description": { "en": "The layer showing picnic tables", diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json index 56415ee37..28a020b92 100644 --- a/assets/layers/playground/playground.json +++ b/assets/layers/playground/playground.json @@ -666,7 +666,8 @@ "it": "{phone}", "es": "{phone}", "cs": "{phone}", - "pl": "{phone}" + "pl": "{phone}", + "uk": "{phone}" }, "freeform": { "key": "phone", diff --git a/assets/layers/postboxes/postboxes.json b/assets/layers/postboxes/postboxes.json index 379cd98c8..95e17298e 100644 --- a/assets/layers/postboxes/postboxes.json +++ b/assets/layers/postboxes/postboxes.json @@ -133,7 +133,8 @@ ], "title": { "en": "a postbox on a wall", - "nl": "een brievenbus tegen een muur" + "nl": "een brievenbus tegen een muur", + "de": "ein Briefkasten an einer Wand" }, "snapToLayer": [ "walls_and_buildings" @@ -149,10 +150,12 @@ { "id": "operator", "question": { - "en": "Who operates this postbox?" + "en": "Who operates this postbox?", + "de": "Wer betreibt diesen Briefkasten?" }, "render": { - "en": "This postbox is operated by {operator}" + "en": "This postbox is operated by {operator}", + "de": "Dieser Briefkasten wird von {operator} betrieben" }, "freeform": { "key": "operator" diff --git a/assets/layers/postoffices/postoffices.json b/assets/layers/postoffices/postoffices.json index e6f4954ae..535db32a7 100644 --- a/assets/layers/postoffices/postoffices.json +++ b/assets/layers/postoffices/postoffices.json @@ -211,7 +211,8 @@ "render": { "en": "This is a {brand} post office", "de": "Dies ist eine Poststelle von {brand}", - "es": "Esta es una oficina de correos {brand}" + "es": "Esta es una oficina de correos {brand}", + "uk": "Це поштове відділення {brand}" }, "freeform": { "type": "nsi", diff --git a/assets/layers/public_bookcase/public_bookcase.json b/assets/layers/public_bookcase/public_bookcase.json index 041d5bc94..e66e03060 100644 --- a/assets/layers/public_bookcase/public_bookcase.json +++ b/assets/layers/public_bookcase/public_bookcase.json @@ -549,7 +549,8 @@ "hu": "További információ ezen a weboldalon", "ca": "Més informació al web", "cs": "Více informací na webových stránkách", - "es": "Más información en la web" + "es": "Más información en la web", + "uk": "Більше інформації на сайті" } } }, @@ -563,7 +564,8 @@ "hu": "Van-e olyan weboldal, ahol további információ található erről a nyilvános könyvespolcról?", "ca": "Hi ha algun lloc web amb més informació sobre aquesta prestatgeria pública?", "cs": "Existuje webová stránka s dalšími informacemi o této veřejné knihobudce?", - "es": "¿Hay un sitio web con más información sobre este librero público?" + "es": "¿Hay un sitio web con más información sobre este librero público?", + "uk": "Чи є веб-сайт із додатковою інформацією про цю публічну книжкову шафу?" }, "freeform": { "key": "website", diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json index a5b70f182..7c040b44a 100644 --- a/assets/layers/questions/questions.json +++ b/assets/layers/questions/questions.json @@ -215,7 +215,8 @@ "en": "Edit phone number", "nl": "Pas telefoonnummer aan", "de": "Telefonnummer bearbeiten", - "es": "Editar número de teléfono" + "es": "Editar número de teléfono", + "uk": "Редагувати номер телефону" } }, { @@ -395,7 +396,8 @@ "nl": "Pas website aan", "de": "Webseite bearbeiten", "pl": "Edytuj stronę internetową", - "es": "Editar sitio web" + "es": "Editar sitio web", + "uk": "Редагувати веб-сайт" } }, { @@ -842,7 +844,8 @@ "nb_NO": "Døgnåpent (inkludert helligdager)", "cs": "Otevřeno 24/7 (včetně svátků)", "ca": "Obert 24/7 (incloent-hi festius)", - "pl": "Otwarte 24/7 (również w święta)" + "pl": "Otwarte 24/7 (również w święta)", + "uk": "Працює 24/7 (включаючи святкові дні)" } } ] @@ -1029,7 +1032,8 @@ "es": "¿Qué métodos de pago se aceptan aquí?", "zh_Hans": "这里支持哪些支付方式?", "da": "Hvilke betalingsmetoder accepteres her?", - "cs": "Jaké platební metody jsou zde přijímány?" + "cs": "Jaké platební metody jsou zde přijímány?", + "uk": "Які способи оплати тут приймаються?" }, "multiAnswer": true, "mappings": [ @@ -1101,7 +1105,8 @@ "de": "Die Bezahlung per QR-Code ist hier möglich", "es": "Aquí es posible pagar con código QR", "ca": "Aquí es pot pagar amb codi QR", - "cs": "Platba QR kódem je zde možná" + "cs": "Platba QR kódem je zde možná", + "uk": "Оплата за допомогою QR-коду можлива тут" } } ], @@ -1138,7 +1143,8 @@ "es": "Aquí se aceptan monedas", "nb_NO": "Mynter aksepteres her", "pl": "Monety są tutaj akceptowane", - "cs": "Jsou zde přijímány mince" + "cs": "Jsou zde přijímány mince", + "uk": "Монети приймаються тут" } }, { @@ -1154,7 +1160,8 @@ "es": "Aquí se aceptan billetes", "nb_NO": "Sedler aksepteres her", "pl": "Banknoty są tutaj akceptowane", - "cs": "Jsou zde přijímány bankovky" + "cs": "Jsou zde přijímány bankovky", + "uk": "Тут приймаються банкноти" } }, { @@ -1170,7 +1177,8 @@ "es": "Aquí se aceptan tarjetas de débito", "nb_NO": "Debetkort aksepteres her", "pl": "Akceptowane są tutaj karty debetowe", - "cs": "Jsou zde přijímány debetní karty" + "cs": "Jsou zde přijímány debetní karty", + "uk": "Тут приймаються дебетові картки" } }, { @@ -1186,7 +1194,8 @@ "es": "Aquí se aceptan tarjetas de crédito", "nb_NO": "Kredittkort aksepteres her", "pl": "Akceptowane są tutaj karty kredytowe", - "cs": "Jsou zde přijímány kreditní karty" + "cs": "Jsou zde přijímány kreditní karty", + "uk": "Тут приймаються кредитні картки" } } ] @@ -3059,21 +3068,24 @@ "id": "indoor", "question": { "en": "Is this object located indoors?", - "nl": "Bevindt dit object zich binnen?" + "nl": "Bevindt dit object zich binnen?", + "de": "Befindet sich das Objekt in einem Innenraum?" }, "mappings": [ { "if": "indoor=yes", "then": { "en": "This object is located indoors", - "nl": "Dit object bevindt zich binnen" + "nl": "Dit object bevindt zich binnen", + "de": "Dieses Objekt befindet sich in einem Innenraum" } }, { "if": "indoor=no", "then": { "en": "This object is located outdoors", - "nl": "Dit object bevindt zich buiten" + "nl": "Dit object bevindt zich buiten", + "de": "Dieses Objekt befindet sich im Freien" } } ] diff --git a/assets/layers/school/school.json b/assets/layers/school/school.json index 1d51351dd..6a5629af4 100644 --- a/assets/layers/school/school.json +++ b/assets/layers/school/school.json @@ -587,7 +587,8 @@ "fr": "La langue principale de cette école est inconnue", "ca": "La llengua principal d'aquesta escola és desconeguda", "cs": "Hlavní jazyk této školy není znám", - "es": "Se desconoce el idioma principal de esta escuela" + "es": "Se desconoce el idioma principal de esta escuela", + "uk": "Основна мова цієї школи невідома" } } } diff --git a/assets/layers/surveillance_camera/doorbell.svg b/assets/layers/surveillance_camera/doorbell.svg new file mode 100644 index 000000000..baea8bd7f --- /dev/null +++ b/assets/layers/surveillance_camera/doorbell.svg @@ -0,0 +1,109 @@ + + + + diff --git a/assets/layers/surveillance_camera/doorbell.svg.license b/assets/layers/surveillance_camera/doorbell.svg.license new file mode 100644 index 000000000..ed0288300 --- /dev/null +++ b/assets/layers/surveillance_camera/doorbell.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Pieter Vander Vennet +SPDX-License-Identifier: CC0-1.0 \ No newline at end of file diff --git a/assets/layers/surveillance_camera/license_info.json b/assets/layers/surveillance_camera/license_info.json index a0e23e32e..21f2567d3 100644 --- a/assets/layers/surveillance_camera/license_info.json +++ b/assets/layers/surveillance_camera/license_info.json @@ -26,5 +26,13 @@ "sources": [ "https://commons.wikimedia.org/wiki/File:ANPR_Camera_Front.jpg" ] + }, + { + "path": "doorbell.svg", + "license": "CC0-1.0", + "authors": [ + "Pieter Vander Vennet" + ], + "sources": [] } ] \ No newline at end of file diff --git a/assets/layers/surveillance_camera/surveillance_camera.json b/assets/layers/surveillance_camera/surveillance_camera.json index 29907ab1d..c699dfc20 100644 --- a/assets/layers/surveillance_camera/surveillance_camera.json +++ b/assets/layers/surveillance_camera/surveillance_camera.json @@ -67,6 +67,10 @@ "if": "camera:type=dome", "then": "./assets/themes/surveillance/dome.svg" }, + { + "if": "camera:type=doorbell", + "then": "./assets/layers/surveillance_camera/doorbell.svg" + }, { "if": "_direction:leftright=right", "then": "./assets/themes/surveillance/cam_right.svg" @@ -314,11 +318,7 @@ "icon": "./assets/themes/surveillance/dome.svg" }, { - "if": { - "and": [ - "camera:type=panning" - ] - }, + "if": "camera:type=panning", "then": { "en": "A panning camera", "nl": "Een camera die (met een motor) van links naar rechts kan draaien", @@ -330,6 +330,17 @@ "es": "Una cámara panorámica", "cs": "Otáčecí kamera" } + }, + { + "if": "camera:type=doorbell", + "icon": { + "path": "./assets/layers/surveillance_camera/doorbell.svg", + "size": "large" + }, + "then": { + "en": "A doorbell which might be turned on remotely at any time or by motion detection. These are typically Smart, internet-connected doorbells. Typical brands are Ring, Google Nest, Eufy, ...", + "de": "Eine Türklingel, die jederzeit oder per Bewegungserkennung ferngeschaltet werden kann. Dies sind typischerweise Smart, internetgebundene Türklingeln. Typische Marken sind Ring, Google Nest, Eufy, ..." + } } ], "id": "Camera type: fixed; panning; dome" @@ -445,11 +456,7 @@ }, "mappings": [ { - "if": { - "and": [ - "surveillance=public" - ] - }, + "if": "surveillance=public", "then": { "en": "A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel, …", "nl": "Bewaking van de publieke ruimte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel…", @@ -464,11 +471,7 @@ } }, { - "if": { - "and": [ - "surveillance=outdoor" - ] - }, + "if": "surveillance=outdoor", "then": { "en": "An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, …)", "nl": "Een buitenruimte met privaat karakter (zoals een privé-oprit, een parking, tankstation, …)", @@ -506,20 +509,13 @@ }, { "question": { - "en": "Is the public space surveilled by this camera an indoor or outdoor space?", - "nl": "Bevindt de bewaakte publieke ruimte camera zich binnen of buiten?", - "fr": "L'espace public surveillé par cette caméra est-il un espace intérieur ou extérieur ?", - "it": "Lo spazio pubblico sorvegliato da questa videocamera è all'aperto o al chiuso?", - "de": "Handelt es sich bei dem von dieser Kamera überwachten öffentlichen Raum um einen Innen- oder Außenbereich?", - "da": "Er det offentlige rum, der overvåges af dette kamera, et indendørs eller udendørs rum?", - "es": "¿El espacio público vigilado por esta cámara es interior o exterior?", - "ca": "L'espai públic vigilat per aquesta càmera és un espai interior o exterior?", - "cs": "Je veřejný prostor sledovaný touto kamerou vnitřní nebo venkovní prostor?", - "sl": "Ali je javni prostor, ki ga nadzoruje ta kamera, notranji ali zunanji?" + "en": "Is this camera located inside or outside?", + "nl": "Bevindt de camera zich binnen of buiten?" }, "condition": { "and": [ - "surveillance:type=public" + "surveillance!=outdoor", + "surveillance!=indoor" ] }, "mappings": [ @@ -572,7 +568,7 @@ "hideInAnswer": true } ], - "id": "is_indoor" + "id": "camera_is_indoor" }, { "question": { @@ -603,9 +599,20 @@ "type": "nat" }, "condition": { - "or": [ - "indoor=yes", - "surveillance:type=ye" + "and": [ + "camera:type!=doorbell", + { + "or": [ + "indoor=yes", + "surveillance=indoor" + ] + }, + { + "or": [ + "surveillance:type=alpr", + "surveillance:type=camera" + ] + } ] }, "id": "Level" diff --git a/assets/layers/tactile_map/tactile_map.json b/assets/layers/tactile_map/tactile_map.json index f8fb216ac..fdb1eb837 100644 --- a/assets/layers/tactile_map/tactile_map.json +++ b/assets/layers/tactile_map/tactile_map.json @@ -1,16 +1,19 @@ { "id": "tactile_map", "name": { - "en": "Tactile Maps" + "en": "Tactile Maps", + "de": "Taktile Karten" }, "description": { - "en": "Layer showing tactile maps, which can be used by visually impaired people to navigate the city." + "en": "Layer showing tactile maps, which can be used by visually impaired people to navigate the city.", + "de": "Ebene mit taktilen Karten, die von sehbehinderten Menschen zur Navigation in der Stadt verwendet werden können." }, "source": { "osmTags": "information=tactile_map" }, "title": { - "en": "Tactile Map" + "en": "Tactile Map", + "de": "Taktile Karte" }, "presets": [ { @@ -19,10 +22,12 @@ "information=tactile_map" ], "title": { - "en": "a tactile map" + "en": "a tactile map", + "de": "eine taktile Karte" }, "description": { - "en": "A tactile map that can be read using touch. Unlike a tactile model, this is relatively flat and does not feature three-dimensional buildings and such." + "en": "A tactile map that can be read using touch. Unlike a tactile model, this is relatively flat and does not feature three-dimensional buildings and such.", + "de": "Eine taktile Karte, die durch Berühren gelesen werden kann. Im Gegensatz zu einem taktilen Modell ist diese Karte relativ flach und enthält keine dreidimensionalen Gebäude oder ähnliches." } } ], @@ -51,34 +56,40 @@ { "id": "description", "question": { - "en": "What does this tactile map show?" + "en": "What does this tactile map show?", + "de": "Was zeigt diese taktile Karte?" }, "freeform": { "key": "blind:description:en", "placeholder": { - "en": "e.g. Tactile map of the city center" + "en": "e.g. Tactile map of the city center", + "de": "z.B. Taktile Karte des Stadtzentrums" } }, "render": { - "en": "Description: {blind:description:en}." + "en": "Description: {blind:description:en}.", + "de": "Beschreibung: {blind:description:en}." } }, { "id": "braille", "question": { - "en": "Is there braille text on this tactile map?" + "en": "Is there braille text on this tactile map?", + "de": "Gibt es einen Text in Blindenschrift auf dieser taktilen Karte?" }, "mappings": [ { "if": "braille=yes", "then": { - "en": "This tactile map has braille text." + "en": "This tactile map has braille text.", + "de": "Diese taktile Karte hat einen Text in Blindenschrift." } }, { "if": "braille=no", "then": { - "en": "This tactile map does not have braille text." + "en": "This tactile map does not have braille text.", + "de": "Diese taktile Karte hat keinen Text in Blindenschrift." } } ] @@ -91,13 +102,16 @@ "type": "language_chooser", "key": "tactile_writing:braille", "question": { - "en": "In which languages is the braille text on this tactile map?" + "en": "In which languages is the braille text on this tactile map?", + "de": "In welchen Sprachen ist der Text in Blindenschrift auf dieser taktilen Karte?" }, "render_list_item": { - "en": "This map has braille text in {language}" + "en": "This map has braille text in {language}", + "de": "Diese Karte hat Text in Blindenschrift in {language}" }, "render_single_language": { - "en": "This map has braille text in {language}" + "en": "This map has braille text in {language}", + "de": "Diese Karte hat Text in Blindenschrift in {language}" } } } @@ -105,19 +119,22 @@ { "id": "embossed_letters", "question": { - "en": "Are there embossed letters on this tactile map?" + "en": "Are there embossed letters on this tactile map?", + "de": "Gibt es auf dieser taktilen Karte geprägte Buchstaben?" }, "mappings": [ { "if": "embossed_letters=yes", "then": { - "en": "This tactile map has embossed letters." + "en": "This tactile map has embossed letters.", + "de": "Diese taktile Karte hat geprägte Buchstaben." } }, { "if": "embossed_letters=no", "then": { - "en": "This tactile map does not have embossed letters." + "en": "This tactile map does not have embossed letters.", + "de": "Diese taktile Karte hat keine geprägten Buchstaben." } } ] @@ -130,13 +147,16 @@ "type": "language_chooser", "key": "tactile_writing:embossed", "question": { - "en": "In which languages are the embossed letters on this tactile map?" + "en": "In which languages are the embossed letters on this tactile map?", + "de": "In welchen Sprachen sind die geprägten Buchstaben auf dieser taktilen Karte?" }, "render_list_item": { - "en": "This map has embossed letters in {language}" + "en": "This map has embossed letters in {language}", + "de": "Diese Karte hat geprägte Buchstaben in {language}" }, "render_single_language": { - "en": "This map has embossed letters in {language}" + "en": "This map has embossed letters in {language}", + "de": "Diese Karte hat geprägte Buchstaben in {language}" } } } diff --git a/assets/layers/tactile_model/tactile_model.json b/assets/layers/tactile_model/tactile_model.json index 98d98ead3..127e72f63 100644 --- a/assets/layers/tactile_model/tactile_model.json +++ b/assets/layers/tactile_model/tactile_model.json @@ -1,16 +1,19 @@ { "id": "tactile_model", "name": { - "en": "Tactile Models" + "en": "Tactile Models", + "de": "Taktile Modelle" }, "description": { - "en": "Layer showing tactile models, three-dimensional models of the surrounding area." + "en": "Layer showing tactile models, three-dimensional models of the surrounding area.", + "de": "Ebene mit dreidimensionalen ertastbaren Modellen der Umgebung." }, "source": { "osmTags": "information=tactile_model" }, "title": { - "en": "Tactile Model" + "en": "Tactile Model", + "de": "Taktiles Modell" }, "presets": [ { @@ -19,10 +22,12 @@ "information=tactile_model" ], "title": { - "en": "a tactile model" + "en": "a tactile model", + "de": "ein taktiles Modell" }, "description": { - "en": "A tactile model is a three-dimensional model of an area, allowing people to explore/see an area by touch." + "en": "A tactile model is a three-dimensional model of an area, allowing people to explore/see an area by touch.", + "de": "Ein taktiles Modell ist ein dreidimensionales Modell eines Gebiets, das es den Menschen ermöglicht, ein Gebiet durch Berührung zu erkunden/sehen." } } ], @@ -47,34 +52,40 @@ { "id": "description", "question": { - "en": "What does this tactile model show?" + "en": "What does this tactile model show?", + "de": "Was zeigt dieses taktile Modell?" }, "freeform": { "key": "blind:description:en", "placeholder": { - "en": "e.g. Tactile model of the city center" + "en": "e.g. Tactile model of the city center", + "de": "z.B. Taktiles Modell des Stadtzentrums" } }, "render": { - "en": "Description: {blind:description:en}." + "en": "Description: {blind:description:en}.", + "de": "Beschreibung: {blind:description:en}." } }, { "id": "braille", "question": { - "en": "Is there a braille description?" + "en": "Is there a braille description?", + "de": "Gibt es eine Beschreibung in Blindenschrift?" }, "mappings": [ { "if": "braille=yes", "then": { - "en": "There is a braille description." + "en": "There is a braille description.", + "de": "Es gibt eine Beschreibung in Blindenschrift." } }, { "if": "braille=no", "then": { - "en": "There is no braille description." + "en": "There is no braille description.", + "de": "Es gibt keine Beschreibung in Blindenschrift." } } ] @@ -87,13 +98,16 @@ "type": "language_chooser", "key": "tactile_writing:braille", "question": { - "en": "In which languages is there a braille description?" + "en": "In which languages is there a braille description?", + "de": "In welchen Sprachen gibt es eine Beschreibung in Blindenschrift?" }, "render_list_item": { - "en": "This model has a braille description in {language()}" + "en": "This model has a braille description in {language()}", + "de": "Dieses Modell hat eine Beschreibung in Brailleschrift in {language()}" }, "render_single_language": { - "en": "This model has a braille description in {language}" + "en": "This model has a braille description in {language}", + "de": "Dieses Modell hat eine Beschreibung in Brailleschrift in {language}" } } } @@ -101,19 +115,22 @@ { "id": "embossed_letters", "question": { - "en": "Are there embossed letters describing the model?" + "en": "Are there embossed letters describing the model?", + "de": "Gibt es eingeprägte Buchstaben, die das Modell beschreiben?" }, "mappings": [ { "if": "embossed_letters=yes", "then": { - "en": "There are embossed letters describing the model." + "en": "There are embossed letters describing the model.", + "de": "Das Modell ist mit geprägten Buchstaben beschrieben." } }, { "if": "embossed_letters=no", "then": { - "en": "There are no embossed letters describing the model." + "en": "There are no embossed letters describing the model.", + "de": "Es gibt keine eingeprägten Buchstaben, die das Modell beschreiben." } } ] @@ -126,13 +143,16 @@ "type": "language_chooser", "key": "tactile_writing:embossed_letters", "question": { - "en": "In which languages are there embossed letters?" + "en": "In which languages are there embossed letters?", + "de": "In welchen Sprachen gibt es geprägte Buchstaben?" }, "render_list_item": { - "en": "This model has embossed letters in {language()}" + "en": "This model has embossed letters in {language()}", + "de": "Dieses Modell hat geprägte Buchstaben in {language()}" }, "render_single_language": { - "en": "This model has embossed letters in {language}" + "en": "This model has embossed letters in {language}", + "de": "Dieses Modell hat geprägte Buchstaben in {language}" } } } @@ -140,16 +160,19 @@ { "id": "scale", "question": { - "en": "What scale is the model?" + "en": "What scale is the model?", + "de": "Welchen Maßstab hat das Modell?" }, "freeform": { "key": "scale", "placeholder": { - "en": "e.g. 1:1000" + "en": "e.g. 1:1000", + "de": "z.B. 1:1000" } }, "render": { - "en": "The scale of this model is {scale}." + "en": "The scale of this model is {scale}.", + "de": "Der Maßstab dieses Modells ist {scale}." } }, "website" diff --git a/assets/layers/transit_stops/transit_stops.json b/assets/layers/transit_stops/transit_stops.json index 013bf88d9..e0e548e16 100644 --- a/assets/layers/transit_stops/transit_stops.json +++ b/assets/layers/transit_stops/transit_stops.json @@ -140,7 +140,8 @@ "ca": "Aquesta parada té una coberta", "fr": "Cet arrêt a un abri", "cs": "Tato zastávka má přístřešek", - "es": "Esta parada tiene un refugio" + "es": "Esta parada tiene un refugio", + "uk": "На цій зупинці є навіс" } }, { @@ -153,7 +154,8 @@ "ca": "Aquesta parada no té una coberta", "fr": "Cet arrêt n'a pas d'abri", "cs": "Tato zastávka nemá přístřešek", - "es": "Esta parada no tiene un refugio" + "es": "Esta parada no tiene un refugio", + "uk": "Ця зупинка не має накриття" } }, { @@ -177,7 +179,8 @@ "ca": "Aquesta parada té una coberta?", "fr": "Cet arrêt a-t-il un abri ?", "cs": "Má tato zastávka přístřešek?", - "es": "¿Tiene esta parada un refugio?" + "es": "¿Tiene esta parada un refugio?", + "uk": "Чи є на цій зупинці укриття?" } }, { @@ -193,7 +196,8 @@ "ca": "Aquesta parada té un banc", "fr": "Cet arrêt a un banc", "cs": "Tato zastávka má lavičku", - "es": "Esta parada tiene un banco" + "es": "Esta parada tiene un banco", + "uk": "На цій зупинці є лавка" } }, { @@ -231,7 +235,8 @@ "ca": "Aquesta parada té un banc?", "fr": "Est-ce que cet arrêt a un banc ?", "cs": "Má tato zastávka lavičku?", - "es": "¿Tiene esta parada un banco?" + "es": "¿Tiene esta parada un banco?", + "uk": "Чи є на цій зупинці лавка?" } }, { diff --git a/assets/layers/vending_machine/vending_machine.json b/assets/layers/vending_machine/vending_machine.json index 89b085ca5..37fa96a91 100644 --- a/assets/layers/vending_machine/vending_machine.json +++ b/assets/layers/vending_machine/vending_machine.json @@ -37,7 +37,8 @@ "fr": "Distributeur", "ca": "Màquina expenedora", "cs": "Prodejní automat", - "es": "Máquina expendedora" + "es": "Máquina expendedora", + "uk": "Торговий автомат" }, "mappings": [ { @@ -387,7 +388,8 @@ "fr": "Que vent ce distributeur ?", "ca": "Que ven aquesta màquina expenedora?", "cs": "Co tento automat prodává?", - "es": "¿Qué vende esta máquina expendedora?" + "es": "¿Qué vende esta máquina expendedora?", + "uk": "Що продає цей автомат?" }, "freeform": { "key": "vending", @@ -402,7 +404,8 @@ "fr": "Ce distributeur vent {vending}", "ca": "Aquesta màquina expenedora ven {vending}", "cs": "Tento automat prodává {vending}", - "es": "Esta máquina expendedora vende {vending}" + "es": "Esta máquina expendedora vende {vending}", + "uk": "Цей торговий автомат продає {vending}" }, "mappings": [ { @@ -414,7 +417,8 @@ "fr": "Vent des boissons", "ca": "Es venen begudes", "cs": "Prodává nápoje", - "es": "Se venden bebidas" + "es": "Se venden bebidas", + "uk": "Напої" }, "icon": "./assets/layers/id_presets/temaki-bottles.svg" }, @@ -427,7 +431,8 @@ "fr": "Vent des confiseries", "ca": "Es venen llaminadures", "cs": "Prodává sladkosti", - "es": "Se venden dulces" + "es": "Se venden dulces", + "uk": "Солодощі" }, "icon": "./assets/layers/id_presets/maki-confectionery.svg" }, @@ -440,7 +445,8 @@ "fr": "Vent de la nourriture", "ca": "Es ven menjar", "cs": "Prodává jídlo", - "es": "Se vende comida" + "es": "Se vende comida", + "uk": "Продукти харчування" }, "icon": "./assets/layers/vending_machine/utensils.svg" }, @@ -453,7 +459,8 @@ "fr": "Vent des cigarettes", "ca": "Es ven tabaco", "cs": "Prodává cigarety", - "es": "Se venden cigarrillos" + "es": "Se venden cigarrillos", + "uk": "Сигарети" }, "icon": "./assets/layers/vending_machine/smoking.svg" }, @@ -466,7 +473,8 @@ "fr": "Vent des préservatifs", "ca": "Es venen preservatius", "cs": "Prodává kondomy", - "es": "Se venden preservativos" + "es": "Se venden preservativos", + "uk": "Презервативи" }, "icon": "./assets/layers/vending_machine/condom.svg" }, @@ -479,7 +487,8 @@ "fr": "Vent du café", "ca": "Es ven cafè", "cs": "Prodává kafe", - "es": "Se vende café" + "es": "Se vende café", + "uk": "Кава" }, "icon": "./assets/layers/vending_machine/mug-saucer.svg" }, @@ -492,7 +501,8 @@ "fr": "Vent de l'eau", "ca": "Es ven aigua", "cs": "Prodává pitnou vodu", - "es": "Se vende agua potable" + "es": "Se vende agua potable", + "uk": "Питна вода" }, "icon": "./assets/layers/id_presets/temaki-water_bottle.svg" }, @@ -505,7 +515,8 @@ "fr": "Vent des journaux", "ca": "Es venen diaris", "cs": "Prodává noviny", - "es": "Se venden periódicos" + "es": "Se venden periódicos", + "uk": "Газети" }, "icon": "./assets/layers/id_presets/fas-newspaper.svg" }, @@ -520,7 +531,8 @@ "cs": "Prodává duše na kola", "pt_BR": "Câmaras de ar para bicicletas são vendidas aqui", "es": "Se venden cámaras de aire para bicicleta", - "pt": "Câmaras de ar para bicicletas são vendidas aqui" + "pt": "Câmaras de ar para bicicletas são vendidas aqui", + "uk": "Велосипедні внутрішні трубки" } }, { @@ -532,7 +544,8 @@ "fr": "Vent du lait", "ca": "Es ven llet", "cs": "Prodává mléko", - "es": "Se vende leche" + "es": "Se vende leche", + "uk": "Молоко" }, "icon": "./assets/layers/vending_machine/cow.svg" }, @@ -545,7 +558,8 @@ "fr": "Vent du pain", "ca": "Es ven pa", "cs": "Prodává chléb", - "es": "Se vende pan" + "es": "Se vende pan", + "uk": "Хліб" }, "icon": "./assets/layers/id_presets/maki-bakery.svg" }, @@ -558,7 +572,8 @@ "fr": "Vent des œufs", "ca": "Es venen ous", "cs": "Prodává vejce", - "es": "Se venden huevos" + "es": "Se venden huevos", + "uk": "Яйця" }, "icon": "./assets/layers/vending_machine/egg.svg" }, @@ -568,7 +583,8 @@ "en": "Ice cream is sold", "nl": "IJs wordt verkocht", "de": "Speiseeis wird verkauft", - "es": "Se venden helados" + "es": "Se venden helados", + "uk": "Морозиво" }, "icon": "./assets/layers/ice_cream/ice_cream.svg" }, @@ -581,7 +597,8 @@ "fr": "Vent du fromage", "ca": "Es ven formatge", "cs": "Prodává sýr", - "es": "Se vende queso" + "es": "Se vende queso", + "uk": "Твердий сир" }, "icon": "./assets/layers/id_presets/fas-cheese.svg" }, @@ -594,7 +611,8 @@ "fr": "Vent du miel", "ca": "Es ven mel", "cs": "Prodává med", - "es": "Se vende miel" + "es": "Se vende miel", + "uk": "Мед" }, "icon": "./assets/layers/vending_machine/honey.svg" }, @@ -607,7 +625,8 @@ "fr": "Vent des pommes de terre", "ca": "Es venen papes", "cs": "Prodává brambory", - "es": "Se venden patatas" + "es": "Se venden patatas", + "uk": "Картопля" }, "icon": "./assets/layers/vending_machine/potato.svg" }, @@ -619,7 +638,8 @@ "ca": "Es venen productes carnis", "de": "Fleisch wird verkauft", "cs": "Prodává maso", - "es": "Se vende carne" + "es": "Se vende carne", + "uk": "М'ясо" }, "icon": "./assets/layers/id_presets/temaki-meat.svg" }, @@ -631,7 +651,8 @@ "de": "Obst wird verkauft", "cs": "Prodává ovoce", "ca": "Es ven fruita", - "es": "Se vende fruta" + "es": "Se vende fruta", + "uk": "Фрукти" }, "icon": "./assets/layers/vending_machine/fruits.svg" }, @@ -643,7 +664,8 @@ "de": "Erdbeeren werden verkauft", "cs": "Prodává jahody", "ca": "Es venen maduixes", - "es": "Se venden fresas" + "es": "Se venden fresas", + "uk": "Полуниця" }, "icon": "./assets/layers/vending_machine/strawberry.svg" }, @@ -656,7 +678,8 @@ "fr": "Vent des fleurs", "ca": "Es venen flors", "cs": "Prodává květiny", - "es": "Se venden flores" + "es": "Se venden flores", + "uk": "Квіти" }, "icon": "./assets/layers/id_presets/maki-florist.svg" }, @@ -668,7 +691,8 @@ "de": "Parkscheine werden verkauft", "ca": "Es venen tiquets d'aparcament", "cs": "Prodává parkovací lístky", - "es": "Se venden tickets de aparcamiento" + "es": "Se venden tickets de aparcamiento", + "uk": "Паркувальні талони" }, "icon": "./assets/layers/parking_ticket_machine/parking_tickets.svg" }, @@ -679,7 +703,8 @@ "ca": "Es venen cèntims premsats", "de": "Souvenirmünzen werden verkauft", "cs": "Prodává pamětní mince/lisované", - "es": "Se venden monedas conmemorativas" + "es": "Se venden monedas conmemorativas", + "uk": "Пресовані монети" }, "icon": "./assets/themes/elongated_coin/penny.svg" }, @@ -691,7 +716,8 @@ "de": "Fahrscheine werden verkauft", "ca": "Es venen bitllets de transport públic", "cs": "Prodává lístky na MHD", - "es": "Se venden billetes de transporte público" + "es": "Se venden billetes de transporte público", + "uk": "Квитки на громадський транспорт" }, "icon": "./assets/themes/stations/public_transport_tickets.svg" }, @@ -705,7 +731,8 @@ "ca": "Es venen llums per a bicicletes", "pt_BR": "Luzes para bicicleta são vendidas aqui", "es": "Se venden luces para bicicleta", - "pt": "Luzes para bicicleta são vendidas aqui" + "pt": "Luzes para bicicleta são vendidas aqui", + "uk": "Велосипедні ліхтарі" } }, { @@ -718,7 +745,8 @@ "ca": "Es venen guants", "pt_BR": "Luvas são vendidas aqui", "es": "Se venden guantes", - "pt": "Luvas são vendidas aqui" + "pt": "Luvas são vendidas aqui", + "uk": "Рукавички" } }, { @@ -731,7 +759,8 @@ "ca": "Es venen kits de reparació de bicicletes", "pt_BR": "Kits para reparo de bicicleta são vendidos aqui", "es": "Se venden kits de reparación para bicicletas", - "pt": "Kits para reparo de bicicleta são vendidos aqui" + "pt": "Kits para reparo de bicicleta são vendidos aqui", + "uk": "Набори для ремонту велосипедів" } }, { @@ -744,7 +773,8 @@ "ca": "Es venen bombes de bicicletes", "pt_BR": "Bombas de ar para bicicleta são vendidas aqui", "es": "Se venden bombas para bicicletas", - "pt": "Bombas de ar para bicicleta são vendidas aqui" + "pt": "Bombas de ar para bicicleta são vendidas aqui", + "uk": "Велосипедні насоси" } }, { @@ -757,7 +787,8 @@ "ca": "Es venen cadenats per a bicicletes", "pt_BR": "Cadeados para bicicleta são vendidos aqui", "es": "Se venden candados para bicicletas", - "pt": "Cadeados para bicicleta são vendidos aqui" + "pt": "Cadeados para bicicleta são vendidos aqui", + "uk": "Велосипедні замки" } } ], @@ -832,7 +863,8 @@ "fr": "Qui exploite ce distributeur ?", "ca": "Qui opera aquesta màquina expenedora?", "cs": "Kdo provozuje tento automat?", - "es": "¿Quién opera esta máquina expendedora?" + "es": "¿Quién opera esta máquina expendedora?", + "uk": "Хто керує цим автоматом?" }, "freeform": { "key": "operator", @@ -853,7 +885,8 @@ "fr": "Ce distributeur est exploité par {operator}", "ca": "{operator} gestiona aquesta màquina expenedora", "cs": "Tento prodejní automat provozuje {operator}", - "es": "Esta máquina expendedora es operada por {operator}" + "es": "Esta máquina expendedora es operada por {operator}", + "uk": "Цим торговим автоматом керує {operator}" } }, { @@ -865,7 +898,8 @@ "fr": "Est-ce que ce distributeur est en intérieur ?", "ca": "Aquesta màquina expenedora està a l'exterior?", "cs": "Je tento automat uvnitř?", - "es": "¿Esta máquina expendedora está en interiores?" + "es": "¿Esta máquina expendedora está en interiores?", + "uk": "Цей торговий автомат знаходиться в приміщенні?" }, "mappings": [ { @@ -890,7 +924,8 @@ "fr": "Ce distributeur est à l'intérieur", "ca": "Aquesta màquina expenedora està a l'interior", "cs": "Tento prodejní automat je uvnitř", - "es": "Esta máquina expendedora está en interiores" + "es": "Esta máquina expendedora está en interiores", + "uk": "Цей торговий автомат знаходиться в приміщенні" } }, { @@ -902,7 +937,8 @@ "fr": "Ce distributeur est à l'extérieur", "ca": "Aquesta màquina expenedora està a l'exterior", "cs": "Tento prodejní automat je venku", - "es": "Esta máquina expendedora está al aire libre" + "es": "Esta máquina expendedora está al aire libre", + "uk": "Цей торговий автомат знаходиться на відкритому повітрі" } } ] @@ -923,7 +959,8 @@ "ca": "Aquest és el número al qual podeu trucar en cas de problemes amb la màquina expenedora", "de": "Die ist die Telefonnummer, die bei Problemen mit dem Automaten kontaktiert werden kann", "cs": "Toto je číslo, na které můžete zavolat v případě problémů s automatem", - "es": "Este es el número al que puedes llamar en caso de problemas con la máquina expendedora" + "es": "Este es el número al que puedes llamar en caso de problemas con la máquina expendedora", + "uk": "Це номер, за яким ви можете зателефонувати у разі виникнення проблем з торговим автоматом" } } }, @@ -1018,7 +1055,8 @@ "es": "¿Esta máquina expendedora sigue operativa?", "da": "Er denne salgsautomat stadig i drift?", "cs": "Je tento automat stále v provozu?", - "ca": "Aquesta màquina expenedora encara funciona?" + "ca": "Aquesta màquina expenedora encara funciona?", + "uk": "Чи працює цей торговий автомат досі?" }, "mappings": [ { @@ -1038,7 +1076,8 @@ "da": "Denne salgsautomat virker", "es": "Esta máquina expendedora funciona", "cs": "Tento prodejní automat funguje", - "ca": "Aquesta màquina expenedora funciona" + "ca": "Aquesta màquina expenedora funciona", + "uk": "Цей торговий автомат працює" } }, { @@ -1058,7 +1097,8 @@ "es": "Esta máquina expendedora está rota", "da": "Denne salgsautomat er i stykker", "cs": "Tento prodejní automat je rozbitý", - "ca": "Aquesta màquina expenedora està trencada" + "ca": "Aquesta màquina expenedora està trencada", + "uk": "Цей торговий автомат несправний" } }, { @@ -1078,7 +1118,8 @@ "es": "Esta máquina expendedora está cerrada", "da": "Denne salgsautomat er lukket", "cs": "Tento prodejní automat je uzavřen", - "ca": "Aquesta màquina expenedora està tancada" + "ca": "Aquesta màquina expenedora està tancada", + "uk": "Цей торговий автомат закрито" } }, { diff --git a/assets/themes/bag/bag.json b/assets/themes/bag/bag.json index a36ec38e2..47c543c41 100644 --- a/assets/themes/bag/bag.json +++ b/assets/themes/bag/bag.json @@ -1,7 +1,7 @@ { "id": "bag", "title": { - "nl": "BAG import helper", + "nl": "BAG-importeerhulp", "en": "BAG import helper", "de": "BAG-Importhilfe", "fr": "Facilitateur d'import BAG", @@ -29,7 +29,7 @@ "uk": "Ця тема допомагає імпортувати дані з BAG" }, "shortDescription": { - "nl": "BAG import helper tool", + "nl": "BAG-importeerhulptool", "en": "BAG import helper tool", "de": "BAG-Import-Hilfswerkzeug", "fr": "Outil de facilitation d'import BAG", diff --git a/assets/themes/bicycle_parkings/bicycle_parkings.json b/assets/themes/bicycle_parkings/bicycle_parkings.json index f0f15c816..fc1b18754 100644 --- a/assets/themes/bicycle_parkings/bicycle_parkings.json +++ b/assets/themes/bicycle_parkings/bicycle_parkings.json @@ -14,7 +14,8 @@ "cs": "Parkování jízdních kol", "ru": "Велопарковки", "uk": "Велопарковки", - "hu": "Kerékpártárolók" + "hu": "Kerékpártárolók", + "nl": "Fietsenstallingen" }, "description": { "en": "A map showing all types of bicycle parkings", @@ -26,7 +27,9 @@ "ca": "Un mapa que mostra tots els tipus d'aparcaments de bicicletes", "cs": "Mapa všech typů parkovišť pro jízdní kola", "uk": "Мапа, що показує всі типи велосипедних парковок", - "pl": "Mapa pokazująca wszystkie typy parkingów dla rowerów" + "pl": "Mapa pokazująca wszystkie typy parkingów dla rowerów", + "nl": "Een kaart met alle soorten fietsenstallingen", + "fr": "Une carte qui présente tous les types de parkings vélos" }, "icon": "./assets/themes/bicycle_parkings/logo.svg", "layers": [ diff --git a/assets/themes/bicycle_rental/bicycle_rental.json b/assets/themes/bicycle_rental/bicycle_rental.json index 702dff477..71704599f 100644 --- a/assets/themes/bicycle_rental/bicycle_rental.json +++ b/assets/themes/bicycle_rental/bicycle_rental.json @@ -23,7 +23,7 @@ }, "description": { "en": "On this map, you'll find the many bicycle rental stations as they are known by OpenStreetMap", - "nl": "Op deze kaart vind je verschillende fietsverhuurpunten en fietsverhuurzaken", + "nl": "Op deze kaart vind je de verschillende fietsverhuurpunten en fietsverhuurzaken die gekend zijn door OpenStreetMap", "de": "Eine Karte mit allen Fahrradverleihstationen, die in OpenStreetMap eingetragen wurden", "fr": "Vous trouverez sur cette carte toutes les stations de location de vélo telles qu'elles sont référencées dans OpenStreetMap", "es": "En este mapa, encontrarás las numerosas estaciones de alquiler de bicicletas tal como se conocen en OpenStreetMap", diff --git a/assets/themes/bicyclelib/bicyclelib.json b/assets/themes/bicyclelib/bicyclelib.json index c8367cd87..e0bf4f25d 100644 --- a/assets/themes/bicyclelib/bicyclelib.json +++ b/assets/themes/bicyclelib/bicyclelib.json @@ -25,7 +25,7 @@ "uk": "Велобібліотеки" }, "description": { - "nl": "Een fietsbibliotheek is een plaats waar men een fiets kan lenen, vaak voor een klein bedrag per jaar. Een typisch voorbeeld zijn kinderfietsbibliotheken, waar men een fiets op maat van het kind kan lenen. Is het kind de fiets ontgroeid, dan kan het te kleine fietsje omgeruild worden voor een grotere.", + "nl": "Een fietsbibliotheek is een plaats waar men een fiets kan lenen, vaak voor een klein bedrag per jaar. Een typisch voorbeeld zijn kinderfietsbibliotheken, waar men een fiets op maat van het kind kan lenen. Is het kind de fiets ontgroeid, dan kan het te kleine fietsje omgeruild worden voor een grotere", "en": "A bicycle library is a place where bicycles can be lent, often for a small yearly fee. A notable use case are bicycle libraries for kids, which allows them to change for a bigger bike when they've outgrown their current bike", "it": "«Biciclette in prestito» è un luogo dove le biciclette possono essere prese in prestito, spesso in cambio di un piccolo contributo annuale. Un caso degno di nota è quello delle biciclette in prestito per bambini che permettono loro di cambiare le dimensioni della propria bici quando quella attuale diventa troppo piccola", "ru": "Велосипедная библиотека - это место, где велосипеды можно взять на время, часто за небольшую ежегодную плату. Примером использования являются библиотеки велосипедов для детей, что позволяет им сменить велосипед на больший, когда они перерастают свой нынешний велосипед", diff --git a/assets/themes/binoculars/binoculars.json b/assets/themes/binoculars/binoculars.json index a67ba560e..e77192a69 100644 --- a/assets/themes/binoculars/binoculars.json +++ b/assets/themes/binoculars/binoculars.json @@ -22,7 +22,7 @@ }, "description": { "en": "A map with binoculars fixed in place with a pole. It can typically be found on touristic locations, viewpoints, on top of panoramic towers or occasionally on a nature reserve.", - "nl": "Een kaart met verrekijkers die op een vaste plaats zijn gemonteerd", + "nl": "Een kaart met verrekijkers die op een vaste plaats zijn gemonteerd.", "de": "Eine Karte fest installierter Ferngläser. Man findet sie meist an touristischen Zielen, Aussichtspunkten, Aussichtstürmen oder gelegentlich in Naturschutzgebieten.", "it": "Una cartina dei binocoli su un palo fissi in un luogo. Si trovano tipicamente nei luoghi turistici, nei belvedere, in cima a torri panoramiche oppure occasionalmente nelle riserve naturali.", "zh_Hant": "固定一地的望遠鏡地圖,特別是能夠在旅遊景點、觀景點、城鎮環景點,或是自然保護區找到。", diff --git a/assets/themes/cafes_and_pubs/cafes_and_pubs.json b/assets/themes/cafes_and_pubs/cafes_and_pubs.json index 4d68c786a..7bca541b8 100644 --- a/assets/themes/cafes_and_pubs/cafes_and_pubs.json +++ b/assets/themes/cafes_and_pubs/cafes_and_pubs.json @@ -23,11 +23,11 @@ }, "description": { "en": "Coffeehouses, pubs and bars", - "nl": "Cafés, kroegen en drinkgelegenheden", + "nl": "Koffiehuizen, Cafés, en drinkgelegenheden", "de": "Cafés, Kneipen und Bars", "ca": "Cafeteries, bars i pubs", "es": "Cafeterías, pubs y bares", - "fr": "Bars et pubs", + "fr": "Cafés, pubs et bars", "da": "Pubber og barer", "nb_NO": "Kneiper og barer", "pa_PK": "پب (بار)", diff --git a/assets/themes/campersite/campersite.json b/assets/themes/campersite/campersite.json index 1c28bdfdd..08b7512a4 100644 --- a/assets/themes/campersite/campersite.json +++ b/assets/themes/campersite/campersite.json @@ -26,7 +26,7 @@ "ru": "На этом сайте собраны все официальные места остановки кемперов и места, где можно сбросить серую и черную воду. Вы можете добавить подробную информацию о предоставляемых услугах и их стоимости. Добавлять фотографии и отзывы. Это веб-сайт и веб-приложение. Данные хранятся в OpenStreetMap, поэтому они будут бесплатными всегда и могут быть повторно использованы любым приложением.", "ja": "このWebサイトでは、すべてのキャンピングカーの公式停車場所と、汚水を捨てることができる場所を収集します。提供されるサービスとコストに関する詳細を追加できます。写真とレビューを追加します。これはウェブサイトとウェブアプリです。データはOpenStreetMapに保存されるので、永遠に無料で、どんなアプリからでも再利用できます。", "zh_Hant": "這個網站收集所有官方露營地點,以及那邊能排放廢水。你可以加上詳細的服務項目與價格,加上圖片以及評價。", - "nl": "Deze website verzamelt en toont alle officiële plaatsen waar een camper mag overnachten en afvalwater kan lozen. Ook jij kan extra gegevens toevoegen, zoals welke services er geboden worden en hoeveel dit kot, ook afbeeldingen en reviews kan je toevoegen. De data wordt op OpenStreetMap opgeslagen en is dus altijd gratis te hergebruiken, ook door andere applicaties.", + "nl": "Deze website verzamelt en toont alle officiële plaatsen waar een camper mag overnachten en afvalwater kan lozen. Ook jij kan extra gegevens toevoegen, zoals welke services er geboden worden en hoeveel dit kost. Voeg afbeeldingen en reviews toe.", "fr": "Ce site collecte les zones de camping officielles ainsi que les aires de vidange. Il est possible d’ajouter des détails à propos des services proposés ainsi que leurs coûts. Ajoutez vos images et avis.", "de": "Eine Karte für offizielle Wohnmobilstellplätze und Orte zur Entsorgung von Schmutzwasser. Sie können Details über die angebotenen Dienstleistungen und die Kosten hinzufügen, oder Bilder und Bewertungen ergänzen.", "hu": "Ez az oldal az összes olyan hivatalos lakóautós megállóhelyet és helyet gyűjti össze, ahol szürke és fekete szennyvizet lehet üríteni. Hozzáadhat részleteket a nyújtott szolgáltatásokról és a költségekről, valamint képeket és értékeléseket. Ez egyszerre egy weboldal és egy webes alkalmazás. Az adatokat az OpenStreetMapen tároljuk, így mindig ingyenesek lesznek, és bármelyik alkalmazás újra felhasználhatja őket.", diff --git a/assets/themes/circular_economy/circular_economy.json b/assets/themes/circular_economy/circular_economy.json index 8a9f425fb..6907dccc7 100644 --- a/assets/themes/circular_economy/circular_economy.json +++ b/assets/themes/circular_economy/circular_economy.json @@ -8,7 +8,9 @@ "cs": "Cirkulární ekonomika", "uk": "Переробна економіка", "hu": "Körforgásos gazdaság", - "pl": "Gospodarka o obiegu zamkniętym" + "pl": "Gospodarka o obiegu zamkniętym", + "nl": "Circulaire economie", + "fr": "Économie circulaire" }, "description": { "en": "Various items which help people to share, reuse or recycle.", @@ -17,7 +19,8 @@ "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": "Різноманітні предмети, які допомагають людям ділитися, повторно використовувати або переробляти.", - "pl": "Różne przedmioty, które pomagają ludziom się dzielić, ponownie używać lub poddawać recyklingowi." + "pl": "Różne przedmioty, które pomagają ludziom się dzielić, ponownie używać lub poddawać recyklingowi.", + "nl": "Verschillende items die mensen helpen om te delen, te hergebruiken of te recycleren." }, "icon": "./assets/themes/circular_economy/circular.svg", "layers": [ @@ -50,7 +53,9 @@ "ca": "Tendes de segona mà", "cs": "Obchody s použitým zbožím", "uk": "Магазини секонд-хенду", - "pl": "Sklepy second-hand" + "pl": "Sklepy second-hand", + "nl": "Tweedehandswinkels", + "fr": "Commerces de produits d'occasion" }, "filter": null, "source": { diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json index 7fd6e7d8c..bf40a7347 100644 --- a/assets/themes/climbing/climbing.json +++ b/assets/themes/climbing/climbing.json @@ -19,7 +19,7 @@ "uk": "Скелелазні тренажерні зали, клуби та місця" }, "description": { - "nl": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, bolderzalen en klimmen in de natuur", + "nl": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, boulderzalen en klimmen in de natuur.", "de": "Eine Karte mit Klettermöglichkeiten wie Kletterhallen, Kletterparks oder Felsen.", "en": "On this map you will find various climbing opportunities such as climbing gyms, bouldering halls and rocks in nature.", "ru": "На этой карте вы найдете различные возможности для скалолазания, такие как скалодромы, залы для боулдеринга и скалы на природе.", @@ -359,7 +359,8 @@ "pl": "Czy ten warsztat szewski naprawia buty wspinaczkowe?", "da": "Reparerer denne butik klatresko?", "it": "Questo negozio ripara scarpe da arrampicata?", - "uk": "Чи ремонтує ця майстерня альпіністське взуття?" + "uk": "Чи ремонтує ця майстерня альпіністське взуття?", + "nl": "Repareert deze schoenwinkel bergschoenen?" }, "mappings": [ { @@ -374,7 +375,8 @@ "pl": "Ten warsztat naprawia buty wspinaczkowe", "da": "Denne butik reparerer klatresko", "it": "Questo negozio ripara scarpe da arrampicata", - "uk": "У цій майстерні ремонтують альпіністське взуття" + "uk": "У цій майстерні ремонтують альпіністське взуття", + "nl": "Deze winkel repareert bergschoenen" } }, { @@ -389,7 +391,8 @@ "pl": "Ten warsztat nie naprawia butów wspinaczkowych", "da": "Denne butik reparerer ikke klatresko", "it": "Questo negozio non ripara scarpe da arrampicata", - "uk": "Цей магазин не займається ремонтом альпіністського взуття" + "uk": "Цей магазин не займається ремонтом альпіністського взуття", + "nl": "Deze winkel repareert geen bergschoenen" } } ] @@ -417,14 +420,15 @@ "question": { "en": "Does this shoe repair shop also repair climbing shoes?", "de": "Repariert dieses Schuhgeschäft auch Kletterschuhe?", - "fr": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?", + "fr": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?", "es": "¿Esta zapatería también repara zapatillas de escalada?", "ca": "Aquesta botiga de reparació de calçat també repara sabates d'escalada?", "cs": "Opravuje tato opravna obuvy také lezeckou obuv?", "pl": "Czy ten warsztat obuwniczy naprawia również buty wspinaczkowe?", "da": "Reparerer denne skomager klatresko?", "it": "Questo negozio ripara scarpe da arrampicata?", - "uk": "Чи ремонтує ця майстерня також альпіністське взуття?" + "uk": "Чи ремонтує ця майстерня також альпіністське взуття?", + "nl": "Repareert deze schoenmaker ook bergschoenen?" }, "mappings": [ { @@ -439,7 +443,8 @@ "pl": "Ten warsztat naprawia buty wspinaczkowe", "da": "Denne butik reparerer klatresko", "it": "Questo negozio ripara scarpe da arrampicata", - "uk": "У цій майстерні ремонтують альпіністське взуття" + "uk": "У цій майстерні ремонтують альпіністське взуття", + "nl": "Deze winkel repareert bergschoenen" } }, { @@ -454,7 +459,8 @@ "pl": "Ten warsztat nie naprawia butów wspinaczkowych", "da": "Denne butik reparerer ikke klatresko", "it": "Questo negozio non ripara scarpe da arrampicata", - "uk": "Цей магазин не займається ремонтом альпіністського взуття" + "uk": "Цей магазин не займається ремонтом альпіністського взуття", + "nl": "Deze winkel repareert geen bergschoenen" } } ] @@ -476,7 +482,8 @@ "da": "en skomager", "it": "un calzolaio", "uk": "майстерня по ремонту взуття", - "hu": "egy cipészműhely" + "hu": "egy cipészműhely", + "nl": "een schoenmaker" } } ] diff --git a/assets/themes/cyclenodes/cyclenodes.json b/assets/themes/cyclenodes/cyclenodes.json index 15f82008a..21d44ca7e 100644 --- a/assets/themes/cyclenodes/cyclenodes.json +++ b/assets/themes/cyclenodes/cyclenodes.json @@ -39,7 +39,7 @@ "de": "Knotenpunktverbindungen", "es": "Enlaces de nodo a nodo", "nl": "Verbindingen van node naar node", - "fr": "liens noeud à noeud", + "fr": "Liens nœud à nœud", "ca": "Enllaços node a node", "cs": "Propojení mezi uzly", "pl": "łącza węzeł do węzła", @@ -61,7 +61,7 @@ "de": "Knotenpunktverbindung", "es": "Enlace de nodo a nodo", "nl": "Node-naar-node verbinding", - "fr": "lien noeud à noeud", + "fr": "Lien nœud à nœud", "ca": "Enllaç node a node", "cs": "propojení mezi uzly", "pl": "połączenie węzła z węzłem", @@ -75,7 +75,7 @@ "de": "Knotenpunktverbindung {ref}", "es": "Enlace de nodo a nodo {ref}", "nl": "Node-naar-node verbinding {ref}", - "fr": "lien noeud à noeud {ref}", + "fr": "Lien nœud à nœud {ref}", "ca": "Enllaç node a node {ref}", "cs": "propojení mezi uzly {ref}", "pl": "połączenie węzła z węzłem {ref}", @@ -141,7 +141,7 @@ "es": "Nodos", "nb_NO": "noder", "nl": "Knooppunten", - "fr": "noeuds", + "fr": "Nœuds", "pa_PK": "نوڈ", "cs": "uzly", "eu": "nodoak", @@ -373,14 +373,18 @@ "en": "Cycling guideposts", "de": "Fahrrad-Wegweiser", "cs": "Cyklistické ukazatele", - "es": "Señalización ciclista" + "es": "Señalización ciclista", + "nl": "Fietswegwijzers", + "fr": "Panneaux directionnels cyclables" }, "title": { "render": { "en": "Cycling guidepost", "de": "Fahrrad-Wegweiser", "cs": "Cyklistický ukazatel", - "es": "Hito ciclista" + "es": "Hito ciclista", + "nl": "Fietswegwijzer", + "fr": "Panneau directionnel cyclable" } } }, @@ -409,7 +413,8 @@ "en": "a route marker for a node to node link", "de": "Eine Routenmarkierung für eine Verbindung von Knoten zu Knoten", "cs": "značka trasy pro spojení mezi uzly", - "es": "un marcador de ruta para un enlace de nodo a nodo" + "es": "un marcador de ruta para un enlace de nodo a nodo", + "nl": "een knooppuntwegwijzer" }, "=exampleImages": [ "./assets/layers/route_marker/bicycle_route_marker.jpg" diff --git a/assets/themes/cyclofix/cyclofix.json b/assets/themes/cyclofix/cyclofix.json index 1b6fa3165..07b928d26 100644 --- a/assets/themes/cyclofix/cyclofix.json +++ b/assets/themes/cyclofix/cyclofix.json @@ -21,8 +21,8 @@ }, "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.", - "nl": "Het doel van deze kaart is om fietsers een gebruiksvriendelijke oplossing te bieden voor het vinden van de juiste infrastructuur voor hun behoeften.

U kunt uw exacte locatie volgen (enkel mobiel) en in de linkerbenedenhoek categorieën selecteren die voor u relevant zijn. U kunt deze tool ook gebruiken om 'spelden' aan de kaart toe te voegen of te bewerken en meer gegevens te verstrekken door de vragen te beantwoorden.

Alle wijzigingen die u maakt worden automatisch opgeslagen in de wereldwijde database van OpenStreetMap en kunnen door anderen vrij worden hergebruikt.

Bekijk voor meer info over cyclofix ook cyclofix.osm.be.", - "fr": "Le but de cette carte est de présenter aux cyclistes une solution facile à utiliser pour trouver l'infrastructure appropriée à leurs besoins.

Vous pouvez suivre votre localisation précise (mobile uniquement) et sélectionner les couches qui vous concernent dans le coin inférieur gauche. Vous pouvez également utiliser cet outil pour ajouter ou modifier des épingles (points d'intérêt) sur la carte et fournir plus de données en répondant aux questions.

Toutes les modifications que vous apportez seront automatiquement enregistrées dans la base de données mondiale d'OpenStreetMap et peuvent être librement réutilisées par d'autres.

Pour plus d'informations sur le projet cyclofix, rendez-vous sur cyclofix.osm.be.", + "nl": "Een kaart waarop fietsers gepaste infrastructuur kunnen vinden zoals fietspompen, drinkwater, fietsenwinkels, reparatiepunten of stallingen.", + "fr": "Une carte pour permettre aux cyclistes de trouver les infrastructures appropriées à leurs besoins, telles que des pompes à vélo, de l'eau potable, des vélocystes, des stations de réparation ou des parkings.", "gl": "O obxectivo deste mapa é amosar ós ciclistas unha solución doada de empregar para atopar a infraestrutura axeitada para as súas necesidades.

Podes obter a túa localización precisa (só para dispositivos móbiles) e escoller as capas que sexan relevantes para ti na esquina inferior esquerda. Tamén podes empregar esta ferramenta para engadir ou editar puntos de interese ó mapa e fornecer máis datos respondendo as cuestións.

Todas as modificacións que fagas serán gardadas de xeito automático na base de datos global do OpenStreetMap e outros poderán reutilizalos libremente.

Para máis información sobre o proxecto cyclofix, vai a cyclofix.osm.be.", "de": "Eine Karte, die Radfahrern hilft, die für ihre Bedürfnisse geeignete Infrastruktur zu finden, z. B. Fahrradpumpen, Trinkwasser, Fahrradläden, Reparaturstationen oder Parkmöglichkeiten.", "ja": "このマップの目的は、サイクリストのニーズに適した施設を見つけるための使いやすいソリューションを提供することです。

正確な位置を追跡し(モバイルのみ)、左下コーナーで関連するレイヤを選択できます。このツールを使用して、マップにピン(注目点)を追加または編集したり、質問に答えることでより多くのデータを提供することもできます。

変更内容はすべてOpenStreetMapのグローバルデータベースに自動的に保存され、他のユーザーが自由に再利用できます。

cyclofixプロジェクトの詳細については、 cyclofix.osm.be を参照してください。", diff --git a/assets/themes/disaster_response/disaster_response.json b/assets/themes/disaster_response/disaster_response.json index c851f5271..2feec6ce8 100644 --- a/assets/themes/disaster_response/disaster_response.json +++ b/assets/themes/disaster_response/disaster_response.json @@ -10,7 +10,8 @@ "cs": "Reakce na katastrofy a záchranné služby", "ru": "Ликвидация последствий стихийных бедствий и аварийные службы", "hu": "Katasztrófaelhárítás és sürgősségi szolgálatok", - "uk": "Реагування на стихійні лиха та аварійні служби" + "uk": "Реагування на стихійні лиха та аварійні служби", + "nl": "Rampbestrijding en hulpdiensten" }, "description": { "en": "This map contains elements meant for disaster preparedness and response.", @@ -19,7 +20,8 @@ "es": "Este mapa contiene elementos destinados a la preparación y respuesta ante desastres.", "ca": "Aquest mapa conté elements destinants a la preparació i resposta davant desastres.", "cs": "Tato mapa obsahuje prvky určené pro připravenost na katastrofy a reakci na ně.", - "uk": "Ця мапа містить обʼєкти, призначені для забезпечення готовності до стихійних лих та реагування на них." + "uk": "Ця мапа містить обʼєкти, призначені для забезпечення готовності до стихійних лих та реагування на них.", + "nl": "Deze kaart bevat elementen die bedoeld zijn voor rampbestrijding en -voorbereiding." }, "icon": "./assets/themes/disaster_response/CivilDefence.svg", "socialImage": "./assets/themes/disaster_response/social.svg", diff --git a/assets/themes/education/education.json b/assets/themes/education/education.json index 7962d0a34..796580e28 100644 --- a/assets/themes/education/education.json +++ b/assets/themes/education/education.json @@ -21,7 +21,7 @@ }, "description": { "en": "On this map, you'll find information about all types of schools and education and can easily add more information", - "nl": "Deze kaart toont info over verschillende onderwijsinstellingen zoals kleuterscholen, middelbare scholen en tertiair onderwijs.", + "nl": "Deze kaart toont info over scholen en onderwijsinstellingen. Je kan er gemakkelijk meer informatie aan toevoegen", "de": "Auf dieser Karte können Sie Informationen über Bildungseinrichtungen finden und hinzufügen", "fr": "Sur cette carte, vous trouverez des informations concernant tous les types d'écoles et d'enseignement. Vous pouvez facilement ajouter plus d'informations", "ca": "En aquest mapa trobareu informació sobre tots els tipus d'escoles i educació i podreu afegir fàcilment més informació", diff --git a/assets/themes/elongated_coin/elongated_coin.json b/assets/themes/elongated_coin/elongated_coin.json index 62900eac8..d18467cc4 100644 --- a/assets/themes/elongated_coin/elongated_coin.json +++ b/assets/themes/elongated_coin/elongated_coin.json @@ -8,7 +8,8 @@ "cs": "Stroje na ražbu mincí", "pl": "Prasy do groszy", "hu": "Kinyújtottérem-automaták", - "uk": "Монетні преси" + "uk": "Монетні преси", + "nl": "Muntpersen" }, "description": { "en": "Find penny presses to create your own elongated coins.", @@ -17,7 +18,8 @@ "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.", - "uk": "Знайдіть преси для монет, щоб створити власні витягнуті монети." + "uk": "Знайдіть преси для монет, щоб створити власні витягнуті монети.", + "nl": "Zoek muntpersen om uitgerokken munten te maken." }, "icon": "./assets/themes/elongated_coin/penny.svg", "startZoom": 11, diff --git a/assets/themes/etymology/etymology.json b/assets/themes/etymology/etymology.json index c85882821..15b41b59a 100644 --- a/assets/themes/etymology/etymology.json +++ b/assets/themes/etymology/etymology.json @@ -2,13 +2,13 @@ "id": "etymology", "title": { "en": "Etymology - what is a place named after?", - "nl": "Etymologie - waarnaar is een straat vernoemd?", + "nl": "Etymologie - waarnaar is een plaats naar vernoemd?", "de": "Etymologie - Wonach ist ein Ort benannt?", "it": "Etimologia - da cosa prende nome un luogo?", "ru": "Открытая этимологическая карта", "zh_Hant": "開放詞源地圖", "hu": "Etimológiai térkép – miről kapta a nevét ez a hely?", - "fr": "Étymologie - d'où les rues tirent leur nom ?", + "fr": "Étymologie - d'où les lieux tirent leur nom ?", "ca": "Etimologia: com rep el nom un lloc?", "da": "Etymology - hvad er et sted opkaldt efter?", "nb_NO": "Åpent etymologikart", diff --git a/assets/themes/fireplace/fireplace.json b/assets/themes/fireplace/fireplace.json index 0ebec5245..fb1a3b1ff 100644 --- a/assets/themes/fireplace/fireplace.json +++ b/assets/themes/fireplace/fireplace.json @@ -7,7 +7,8 @@ "ca": "Xemeneies i barbacoes", "cs": "Ohniště a grily", "hu": "Tűzrakó- és grillezőhelyek", - "uk": "Вогнища та барбекю" + "uk": "Вогнища та барбекю", + "nl": "Haarden en barbecues" }, "description": { "de": "Stelle im Freien zum Feuermachen oder ein ortsfest installierter Grill an einer offizielle Stelle.", @@ -15,7 +16,9 @@ "es": "Lugar al aire libre para hacer fuego o una barbacoa/parrilla fija en un lugar oficial.", "ca": "Lloc a l'aire lliure adequat per a fer foc i barbacoes.", "cs": "Venkovní místo pro rozdělání ohně nebo grilování na oficiálním místě.", - "uk": "Відкрите місце для розведення багаття або стаціонарне барбекю в офіційному місці." + "uk": "Відкрите місце для розведення багаття або стаціонарне барбекю в офіційному місці.", + "nl": "Buitenruimte om een vuur te maken of een vaste barbecue op een officiële plaats.", + "fr": "Lieu extérieur pour faire un feu ou barbecue fixe dans un lieu officiel." }, "icon": "./assets/layers/assembly_point/fire.svg", "layers": [ diff --git a/assets/themes/food/food.json b/assets/themes/food/food.json index ebecb7b81..89a8d9734 100644 --- a/assets/themes/food/food.json +++ b/assets/themes/food/food.json @@ -2,7 +2,7 @@ "id": "food", "title": { "en": "Restaurants and fast food", - "nl": "Eetgelegenheden", + "nl": "Restaurants en fastfood", "de": "Restaurants und Schnellimbisse", "it": "Ristoranti e fast food", "nb_NO": "Restauranter og søppelmat", @@ -18,7 +18,7 @@ "uk": "Ресторани та фаст-фуд" }, "description": { - "nl": "Restaurants en fast food", + "nl": "Restaurants en fastfood", "en": "Restaurants and fast food", "de": "Restaurants und Schnellimbisse", "es": "Restaurantes y comida rápida", diff --git a/assets/themes/fritures/fritures.json b/assets/themes/fritures/fritures.json index 931ec2c05..83a6e03ca 100644 --- a/assets/themes/fritures/fritures.json +++ b/assets/themes/fritures/fritures.json @@ -68,7 +68,8 @@ "en": "No oil type preference", "de": "Kein Öltyp bevorzugt", "es": "Sin preferencia de tipo de aceite", - "cs": "Žádný preferovaný typ oleje" + "cs": "Žádný preferovaný typ oleje", + "nl": "Geen voorkeur voor een bepaald type frituurolie" } }, { @@ -77,7 +78,8 @@ "de": "Nur Friteusen mit Pflanzenöl anzeigen", "ca": "Només mostra freiduries que utilitzen oli vegetal", "es": "Mostrar solo freidoras que usan aceite vegetal", - "cs": "Zobrazit pouze jídla smažená na rostlinném oleji" + "cs": "Zobrazit pouze jídla smažená na rostlinném oleji", + "nl": "Toon enkel frituren die plantaardige frituurolie gebruiken" }, "osmTags": "friture:oil=vegetable" }, @@ -87,7 +89,8 @@ "de": "Nur Friteusen mit tierischem Öl anzeigen", "ca": "Només mostra freiduries que utilitzen oli animal", "es": "Mostrar solo freidoras que usan aceite animal", - "cs": "Zobrazit pouze jídla smažená na živočišném oleji" + "cs": "Zobrazit pouze jídla smažená na živočišném oleji", + "nl": "Toon enkel frituren die dierlijk frietvet gebruiken" }, "osmTags": "friture:oil=animal" } diff --git a/assets/themes/ghostbikes/ghostbikes.json b/assets/themes/ghostbikes/ghostbikes.json index 389395dd8..50b4c7b1e 100644 --- a/assets/themes/ghostbikes/ghostbikes.json +++ b/assets/themes/ghostbikes/ghostbikes.json @@ -26,7 +26,7 @@ }, "description": { "en": "A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location.

On this map, one can see all the ghost bikes which are known by OpenStreetMap. Is a ghost bike missing? Everyone can add or update information here - you only need to have a (free) OpenStreetMap account.

There exists an automated account on Mastodon which posts a monthly overview of ghost bikes worldwide

", - "nl": "Een Witte Fiets of Spookfiets is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat om een fiets die volledig wit is geschilderd en in de buurt van het ongeval werd geinstalleerd.

Op deze kaart zie je alle witte fietsen die door OpenStreetMap gekend zijn. Ontbreekt er een Witte Fiets of wens je informatie aan te passen? Meld je dan aan met een (gratis) OpenStreetMap account.", + "nl": "Een Witte Fiets of Spookfiets is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat om een fiets die volledig wit is geschilderd en in de buurt van het ongeval werd geplaatst.

Op deze kaart zie je alle witte fietsen die door OpenStreetMap gekend zijn. Ontbreekt er een Witte Fiets of wens je informatie aan te passen? Meld je dan aan met een (gratis) OpenStreetMap account.

Er bestaat een geautomatiseerd account op Mastodon dat maandelijks een overzicht van spookfietsen wereldwijd post

", "de": "Geisterräder sind weiße Fahrräder, die zum Gedenken tödlich verunglückter Radfahrer vor Ort aufgestellt wurden.

Auf dieser Karte sehen Sie alle Geisterräder, die in OpenStreetMap eingetragen sind. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufügen oder aktualisieren - Sie benötigen nur ein (kostenloses) OpenStreetMap-Konto.

Es gibt ein Konto auf Mastodon, das monatliche eine weltweite Übersicht von Geisterfahrrädern veröffentlicht

", "ja": "ゴーストバイクは、交通事故で死亡したサイクリストを記念するもので、事故現場の近くに恒久的に置かれた白い自転車の形をしています。

このマップには、OpenStreetMapで知られているゴーストバイクがすべて表示されます。ゴーストバイクは行方不明ですか?誰でもここで情報の追加や更新ができます。必要なのは(無料の)OpenStreetMapアカウントだけです。", "zh_Hant": "幽靈單車是用來紀念死於交通事故的單車騎士,在事發地點附近放置白色單車。

在這份地圖上面,你可以看到所有在開放街圖已知的幽靈單車。有缺漏的幽靈單車嗎?所有人都可以在這邊新增或是更新資訊-只有你有(免費)開放街圖帳號。", diff --git a/assets/themes/ghostsigns/ghostsigns.json b/assets/themes/ghostsigns/ghostsigns.json index 7b58ccf6e..ec10a17f3 100644 --- a/assets/themes/ghostsigns/ghostsigns.json +++ b/assets/themes/ghostsigns/ghostsigns.json @@ -5,7 +5,8 @@ "de": "Geisterzeichen", "es": "Letreros fantasma", "cs": "Nápisy na zdech", - "uk": "Примарні знаки" + "uk": "Примарні знаки", + "nl": "Spookreclames" }, "description": { "en": "A map showing disused signs on buildings", @@ -13,7 +14,9 @@ "es": "Un mapa que muestra letreros en desuso en los edificios", "ca": "Un mapa que mostra els rètols en desús dels edificis", "cs": "Mapa zobrazující nepoužívané nápisy na budovách", - "uk": "Мапа, на якій показані вивіски на будівлях, що не використовуються" + "uk": "Мапа, на якій показані вивіски на будівлях, що не використовуються", + "fr": "Une carte montrant les enseignes désaffectées sur des bâtiments", + "nl": "Een kaart met ongebruikte borden op gebouwen" }, "icon": "./assets/themes/advertising/wall_painting.svg", "layers": [ @@ -45,7 +48,9 @@ "en": "Is this artwork a historic advertisement?", "de": "Ist dieses Kunstwerk eine historische Werbung?", "es": "¿Es esta obra de arte un anuncio histórico?", - "cs": "Je toto dílo historickou reklamou?" + "cs": "Je toto dílo historickou reklamou?", + "fr": "Est-ce que cette œuvre d'art est une publicité historique ?", + "nl": "Is dit kunstwerk een historische advertentie?" }, "mappings": [ { @@ -57,7 +62,9 @@ "en": "This artwork is a historic advertisement", "de": "Dieses Kunstwerk ist eine historische Werbung", "es": "Esta obra de arte es un anuncio histórico", - "cs": "Toto dílo je historickou reklamou" + "cs": "Toto dílo je historickou reklamou", + "fr": "Cette œuvre d'art est une publicité historique", + "nl": "Dit kunstwerk is een historische advertentie" } }, { @@ -69,7 +76,9 @@ "en": "This artwork is not a historic advertisement", "de": "Dieses Kunstwerk ist keine historische Werbung", "es": "Esta obra de arte no es un anuncio histórico", - "cs": "Toto dílo není historickou reklamou" + "cs": "Toto dílo není historickou reklamou", + "fr": "Cette œuvre d'art n'est pas une publicité historique", + "nl": "Dit kunstwerk is geen historische advertentie" } } ] diff --git a/assets/themes/glutenfree/glutenfree.json b/assets/themes/glutenfree/glutenfree.json index b3933cff4..85ec0b651 100644 --- a/assets/themes/glutenfree/glutenfree.json +++ b/assets/themes/glutenfree/glutenfree.json @@ -9,7 +9,9 @@ "cs": "Bez lepku", "ru": "Без глютена", "hu": "Gluténmentes helyek", - "uk": "Без глютену" + "uk": "Без глютену", + "fr": "Sans gluten", + "nl": "Glutenvrij" }, "description": { "en": "A crowdsourced map with glutenfree items", @@ -18,7 +20,8 @@ "es": "Un mapa colaborativo con artículos sin gluten", "ca": "Un mapa col·lectiu amb articles sense gluten", "cs": "Mapa s bezlepkovými položkami vytvořená pomocí crowdsourcingu", - "uk": "Колективна мапа з безглютеновими продуктами" + "uk": "Колективна мапа з безглютеновими продуктами", + "nl": "Een gecrowdsourcete kaart met glutenvrije artikelen" }, "icon": "./assets/layers/questions/glutenfree.svg", "layers": [ diff --git a/assets/themes/grb/grb.json b/assets/themes/grb/grb.json index 9bacdb89d..4b7ca9a08 100644 --- a/assets/themes/grb/grb.json +++ b/assets/themes/grb/grb.json @@ -163,7 +163,8 @@ "ca": "Ha estat importat des de GRB, el número de referència és {source:geometry:ref}", "cs": "Byl importován z GRB, referenční číslo je {source:geometry:ref}", "es": "Ha sido importado de GRB, el número de referencia es {source:geometry:ref}", - "pl": "Został zaimportowany z GRB, numer referencyjny to {source:geometry:ref}" + "pl": "Został zaimportowany z GRB, numer referencyjny to {source:geometry:ref}", + "nl": "Werd geïmporteerd vanuit GRB, het referentienummer is {source:geometry:ref}" }, "condition": "source:geometry:ref~*" }, diff --git a/assets/themes/guideposts/guideposts.json b/assets/themes/guideposts/guideposts.json index 001f4f6d6..6530453df 100644 --- a/assets/themes/guideposts/guideposts.json +++ b/assets/themes/guideposts/guideposts.json @@ -8,7 +8,8 @@ "pl": "Drogowskazy", "ca": "Pal guia", "ru": "Указатели", - "uk": "Вказівники" + "uk": "Вказівники", + "nl": "Wegwijzers" }, "description": { "en": "Guideposts (also known as fingerposts or finger posts) are often found along official hiking, cycling, skiing or horseback riding routes to indicate the directions to different destinations. Additionally, they are often named after a region or place and show the altitude.\n\nThe position of a signpost can be used by a hiker/biker/rider/skier as a confirmation of the current position, especially if they use a printed map without a GPS receiver. ", @@ -16,7 +17,8 @@ "de": "Wegweiser an offiziellen Wander-, Rad-, Ski- oder Reitstrecken, um Richtungen zu verschiedenen Zielen anzuzeigen. Sie sind oft nach einer Region oder einem Ort benannt und zeigen die Höhe an.\n\nDie Position eines Wegweisers kann von Wanderern, Radfahrern, Reitern oder Skifahrern als Bestätigung der aktuellen Position genutzt werden, insbesondere wenn sie eine gedruckte Karte ohne GPS-Empfänger verwenden. ", "es": "Los postes indicadores (también conocidos como señalización o \"fingerposts\") suelen encontrarse a lo largo de rutas oficiales de senderismo, ciclismo, esquí o equitación para indicar las direcciones a diferentes destinos. Además, a menudo llevan el nombre de una región o lugar y muestran la altitud.\n\nLa posición de un poste indicador puede ser utilizada por un excursionista/ciclista/jinete/esquiador como confirmación de la posición actual, especialmente si utiliza un mapa impreso sin un receptor GPS. ", "pl": "Drogowskazy (znane również jako \"palce na słupkach\") często znajdują się wzdłuż oficjalnych szlaków pieszych, rowerowych, narciarskich lub konnych i wskazują drogę do różnych miejsc. Ponadto często noszą nazwy regionu lub miejsca i wskazują wysokość.\n\nPozycja drogowskazu może być wykorzystana przez turystę/rowerzystę/jeźdźca/narciarza jako potwierdzenie aktualnej pozycji, zwłaszcza jeśli korzysta z drukowanej mapy bez odbiornika GPS. ", - "uk": "Орієнтири (також відомі як вказівні стовпчики) часто зустрічаються вздовж офіційних пішохідних, велосипедних, лижних або кінних маршрутів, щоб вказати напрямок до різних пунктів призначення. Крім того, вони часто названі на честь регіону або місця і показують висоту над рівнем моря.\n\nПоложення вказівника може використовуватися пішоходом/велосипедистом/вершником/лижником як підтвердження поточного положення, особливо якщо він користується друкованою картою без GPS-приймача. " + "uk": "Орієнтири (також відомі як вказівні стовпчики) часто зустрічаються вздовж офіційних пішохідних, велосипедних, лижних або кінних маршрутів, щоб вказати напрямок до різних пунктів призначення. Крім того, вони часто названі на честь регіону або місця і показують висоту над рівнем моря.\n\nПоложення вказівника може використовуватися пішоходом/велосипедистом/вершником/лижником як підтвердження поточного положення, особливо якщо він користується друкованою картою без GPS-приймача. ", + "nl": "Wegwijzers (ook wel handwijzer genoemd) zijn vaak te vinden langs officiële wandel-, fiets-, ski- of paardrijroutes om de richtingen naar verschillende bestemmingen aan te geven. Vaak zijn ze vernoemd naar een regio of plaats en geven ze de hoogte aan.\n\nDe positie van een wegwijzer kan door een wandelaar/fietser/renner/skiër worden gebruikt als bevestiging van de huidige positie, vooral als ze een gedrukte kaart zonder GPS-ontvanger gebruiken. " }, "icon": "./assets/layers/guidepost/guidepost.svg", "layers": [ diff --git a/assets/themes/icecream/icecream.json b/assets/themes/icecream/icecream.json index 264acbe1e..ac850858f 100644 --- a/assets/themes/icecream/icecream.json +++ b/assets/themes/icecream/icecream.json @@ -10,7 +10,9 @@ "it": "Gelato", "ru": "Мороженое", "hu": "Fagylalt", - "uk": "Морозиво" + "uk": "Морозиво", + "fr": "Glace", + "nl": "IJs" }, "description": { "en": "A map showing ice cream parlors and ice cream vending machines", @@ -18,7 +20,8 @@ "cs": "Mapa zobrazující prodej zmrzliny a automaty na zmrzlinu", "ca": "Un mapa que mostra les gelateries i les màquines expenedores de gelats", "es": "Un mapa que muestra heladerías y máquinas expendedoras de helados", - "it": "Una mappa che mostra le gelaterie e i distributori automatici di gelato" + "it": "Una mappa che mostra le gelaterie e i distributori automatici di gelato", + "nl": "Een kaart met ijssalons en ijsautomaten" }, "icon": "./assets/layers/ice_cream/ice_cream.svg", "layers": [ diff --git a/assets/themes/items_with_image/items_with_image.json b/assets/themes/items_with_image/items_with_image.json index fa9445ba4..01921e63c 100644 --- a/assets/themes/items_with_image/items_with_image.json +++ b/assets/themes/items_with_image/items_with_image.json @@ -5,13 +5,15 @@ "de": "Alle Elemente mit Bildern", "es": "Todos los elementos con imágenes", "cs": "Všechny položky s obrázky", - "hu": "Minden képpel rendelkező térképobjektum" + "hu": "Minden képpel rendelkező térképobjektum", + "nl": "Alle items met afbeeldingen" }, "description": { "en": "A map showing all items on OSM which have an image. This theme is a very bad fit for MapComplete as someone is not able to directly add a picture. However, this theme is mostly here to include this all into the database, which'll allow this to quickly fetch images nearby for other features", "de": "Eine Karte, die alle Objekte auf OSM zeigt, die ein Bild haben. Dieses Thema ist sehr schlecht für MapComplete geeignet, da man nicht direkt ein Bild hinzufügen kann. Dieses Thema ist jedoch hauptsächlich dazu da, um alles in die Datenbank aufzunehmen, was es ermöglicht, Bilder in der Nähe für andere Funktionen schnell zu finden", "es": "Un mapa que muestra todos los elementos en OSM que tienen una imagen. Este tema no es adecuado para MapComplete, ya que no se puede agregar una imagen directamente. Sin embargo, este tema está aquí principalmente para incluir todo esto en la base de datos, lo que permitirá obtener rápidamente imágenes cercanas para otras funciones", - "cs": "Mapa zobrazující všechny položky v OSM, které mají obrázek. Toto téma je pro MapComplete velmi nevhodné, protože někdo nemůže přímo přidat obrázek. Nicméně toto téma je zde hlavně proto, aby to vše zahrnovalo do databáze, což umožní rychle načítat obrázky v okolí pro další funkce" + "cs": "Mapa zobrazující všechny položky v OSM, které mají obrázek. Toto téma je pro MapComplete velmi nevhodné, protože někdo nemůže přímo přidat obrázek. Nicméně toto téma je zde hlavně proto, aby to vše zahrnovalo do databáze, což umožní rychle načítat obrázky v okolí pro další funkce", + "nl": "Een kaart die alle items op OSM toont die een afbeelding hebben. Dit thema past heel slecht bij MapComplete omdat het niet mogelijk is een afbeelding toe te voegen. Dit thema is er vooral om alles in de database op te nemen, waardoor het snel afbeeldingen in de buurt kan ophalen voor andere functies" }, "icon": "./assets/layers/item_with_image/camera.svg", "hideFromOverview": true, diff --git a/assets/themes/lactosefree/lactosefree.json b/assets/themes/lactosefree/lactosefree.json index 5453819cf..d09cc3f5a 100644 --- a/assets/themes/lactosefree/lactosefree.json +++ b/assets/themes/lactosefree/lactosefree.json @@ -7,7 +7,8 @@ "ca": "Botigues i restaurants amb productes sense lactosa", "cs": "Bezlaktózové obchody a restaurace", "hu": "Laktózmentes boltok és éttermek", - "uk": "Магазини та ресторани без лактози" + "uk": "Магазини та ресторани без лактози", + "nl": "Lactosevrije winkels en restaurants" }, "description": { "en": "A crowdsourced map with lactose free shops and restaurants", @@ -15,7 +16,8 @@ "es": "Un mapa colaborativo con tiendas y restaurantes sin lactosa", "ca": "Un mapa col·lectiu amb botigues i restaurants sense lactosa", "cs": "Mapa bezlaktózových obchodů a restaurací vytvořená crowdsourcingem", - "uk": "Колективна мапа з магазинами та ресторанами з безлактозними продуктами" + "uk": "Колективна мапа з магазинами та ресторанами з безлактозними продуктами", + "nl": "Een gecrowdsourcete kaart met lactosevrije winkels en restaurants" }, "icon": "./assets/layers/questions/lactose_free.svg", "layers": [ diff --git a/assets/themes/lighthouses/lighthouses.json b/assets/themes/lighthouses/lighthouses.json index 7d6a934bd..d4ca190e5 100644 --- a/assets/themes/lighthouses/lighthouses.json +++ b/assets/themes/lighthouses/lighthouses.json @@ -9,7 +9,9 @@ "ca": "Fars", "cs": "Majáky", "hu": "Világítótornyok", - "uk": "Маяки" + "uk": "Маяки", + "fr": "Phares", + "nl": "Vuurtorens" }, "description": { "en": "Lighthouses are tall buildings with a light on top to guide marine traffic.", @@ -17,7 +19,9 @@ "it": "I fari sono edifici alti con una luce in cima per guidare il traffico marittimo.", "es": "Los faros son edificios altos con una luz en la parte superior para guiar el tráfico marítimo.", "cs": "Majáky jsou vysoké budovy se světlem na vrcholu, které slouží k vedení námořní dopravy.", - "uk": "Маяки - це високі будівлі зі світлом на вершині, що спрямовують морський рух." + "uk": "Маяки - це високі будівлі зі світлом на вершині, що спрямовують морський рух.", + "fr": "Les phares sont des hauts bâtiments avec une lumière au sommet pour guider le trafic maritime.", + "nl": "Vuurtorens zijn hoge gebouwen met een licht erop om het scheepvaartverkeer te leiden." }, "icon": "./assets/themes/lighthouses/lighthouse.svg", "startLat": 51.33884, diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index 504e47bf2..b72511847 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -4,20 +4,26 @@ "en": "Changes made with MapComplete", "de": "Änderungen mit MapComplete", "cs": "Změny provedené pomocí MapComplete", - "es": "Cambios realizados con MapComplete" + "es": "Cambios realizados con MapComplete", + "fr": "Modifications faites avec MapComplete", + "nl": "Wijzigingen gemaakt met MapComplete" }, "shortDescription": { "en": "Shows changes made by MapComplete", "de": "Zeigt die von MapComplete vorgenommenen Änderungen an", "cs": "Zobrazuje změny provedené nástrojem MapComplete", - "es": "Muestra los cambios realizados por MapComplete" + "es": "Muestra los cambios realizados por MapComplete", + "fr": "Afficher les modifications faites avec MapComplete", + "nl": "Toont wijzigingen gemaakt met MapComplete" }, "description": { "en": "This maps shows all the changes made with MapComplete", "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", "es": "Este mapa muestra todos los cambios realizados con MapComplete", "pl": "Ta mapa pokazuje wszystkie zmiany wprowadzone za pomocą MapComplete", - "cs": "Tyto mapy zobrazují všechny změny provedené pomocí MapComplete" + "cs": "Tyto mapy zobrazují všechny změny provedené pomocí MapComplete", + "fr": "Cette carte montre tous les changements effectués avec MapComplete", + "nl": "Deze kaarten tonen alle wijzigingen die zijn gemaakt met MapComplete" }, "icon": "./assets/svg/logo.svg", "hideFromOverview": true, @@ -30,7 +36,9 @@ "name": { "en": "Changeset centers", "de": "Changeset-Zentren", - "es": "Centros de conjuntos de cambios" + "es": "Centros de conjuntos de cambios", + "fr": "Centre du groupe de modifications", + "nl": "Changeset centra" }, "minzoom": 0, "source": { @@ -43,14 +51,16 @@ "en": "Changeset for {theme}", "de": "Änderungssatz für {theme}", "cs": "Sada změn pro {theme}", - "es": "Conjunto de cambios para {theme}" + "es": "Conjunto de cambios para {theme}", + "nl": "Changeset voor {theme}" } }, "description": { "en": "Shows all MapComplete changes", "de": "Zeigt alle MapComplete-Änderungen", "es": "Muestra todos los cambios de MapComplete", - "cs": "Zobrazí všechny změny MapComplete" + "cs": "Zobrazí všechny změny MapComplete", + "nl": "Toon alle MapComplete-wijzigingen" }, "tagRenderings": [ { @@ -59,7 +69,8 @@ "en": "Changeset {id}", "de": "Änderungssatz {id}", "cs": "Sada změn {id}", - "es": "Conjunto de cambios {id}" + "es": "Conjunto de cambios {id}", + "nl": "Changeset {id}" } }, { @@ -68,7 +79,8 @@ "en": "What contributor did make this change?", "de": "Wer hat zu dieser Änderung beigetragen?", "cs": "Který přispěvatel provedl tuto změnu?", - "es": "¿Qué colaborador realizó este cambio?" + "es": "¿Qué colaborador realizó este cambio?", + "nl": "Welke bijdrager maakte deze verandering?" }, "freeform": { "key": "user" @@ -77,7 +89,9 @@ "en": "Change made by {user}", "de": "Änderung vorgenommen von {user}", "cs": "Změna provedena uživatelem {user}", - "es": "Cambio realizado por {user}" + "es": "Cambio realizado por {user}", + "fr": "Modification faite par {user}", + "nl": "Wijziging aangebracht door {user}" } }, { @@ -86,7 +100,8 @@ "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?", - "es": "¿Qué tema se utilizó para realizar este cambio?" + "es": "¿Qué tema se utilizó para realizar este cambio?", + "nl": "Welk thema werd gebruikt voor deze wijziging?" }, "freeform": { "key": "theme" @@ -94,7 +109,8 @@ "render": { "en": "Change with theme {theme}", "de": "Änderung mit Thema {theme}", - "es": "Cambio con el tema {theme}" + "es": "Cambio con el tema {theme}", + "nl": "Verander met thema {theme}" } }, { @@ -106,13 +122,15 @@ "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?", - "es": "¿En qué configuración regional (idioma) se realizó este cambio?" + "es": "¿En qué configuración regional (idioma) se realizó este cambio?", + "nl": "In welke 'locale' (taal) is deze wijziging gemaakt?" }, "render": { "en": "User locale is {locale}", "de": "Die Benutzersprache ist {locale}", "cs": "Uživatelské prostředí je {locale}", - "es": "Configuración regional del usuario es {locale}" + "es": "Configuración regional del usuario es {locale}", + "nl": "De gebruikerstaal (locale) is {locale}" } }, { @@ -121,13 +139,15 @@ "en": "Change with with {host}", "de": "Änderung mit {host}", "cs": "Změnit pomocí {host}", - "es": "Cambio realizado con {host}" + "es": "Cambio realizado con {host}", + "nl": "Gewijzigd met {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?", - "es": "¿Con qué anfitrión (sitio web) se realizó este cambio?" + "es": "¿Con qué anfitrión (sitio web) se realizó este cambio?", + "nl": "Met welke host (website) is deze wijziging gemaakt?" }, "freeform": { "key": "host" @@ -151,13 +171,17 @@ "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?", - "es": "¿Qué versión de MapComplete se utilizó para realizar este cambio?" + "es": "¿Qué versión de MapComplete se utilizó para realizar este cambio?", + "fr": "Quelle version de MapCompletee a été utilisée pour faire cette modification ?", + "nl": "Welke versie van MapComplete is gebruikt voor deze wijziging?" }, "render": { "en": "Made with {editor}", "de": "Erstellt mit {editor}", "cs": "Vytvořeno pomocí {editor}", - "es": "Hecho con {editor}" + "es": "Hecho con {editor}", + "fr": "Fait avec {editor}", + "nl": "Gemaakt met {editor}" }, "freeform": { "key": "editor" @@ -559,7 +583,9 @@ "de": "Themenname enthält {search}", "es": "El nombre del tema contiene {search}", "pl": "Nazwa tematu zawiera {search}", - "cs": "Název obsahuje {search}" + "cs": "Název obsahuje {search}", + "fr": "Le nom du thème contient {search}", + "nl": "Themanaam bevat {search}" } } ] @@ -578,7 +604,9 @@ "en": "Themename does not contain {search}", "de": "Themename enthält nicht {search}", "es": "El nombre del tema no contiene {search}", - "cs": "Název motivu neobsahuje {search}" + "cs": "Název motivu neobsahuje {search}", + "fr": "Le nom du thème ne contient pas {search}", + "nl": "Themanaam bevat geen {search}" } } ] @@ -597,7 +625,9 @@ "en": "Made by contributor {search}", "de": "Erstellt von Mitwirkendem {search}", "es": "Hecho por el colaborador {search}", - "cs": "Vytvořeno přispěvatelem {search}" + "cs": "Vytvořeno přispěvatelem {search}", + "fr": "Fait par le·a contributeur·trice {search}", + "nl": "Toegevoegd door {search}" } } ] @@ -616,7 +646,9 @@ "en": "Not made by contributor {search}", "de": "Nicht erstellt von Mitwirkendem {search}", "es": "No hecho por el colaborador {search}", - "cs": "Nevytvořeno přispěvatelem {search}" + "cs": "Nevytvořeno přispěvatelem {search}", + "fr": "Pas fait par le·a contributeur·trice {search}", + "nl": "Niet toegevoegd door {search}" } } ] @@ -636,7 +668,9 @@ "en": "Made before {search}", "de": "Erstellt vor {search}", "es": "Hecho antes de {search}", - "cs": "Vytvořeno před {search}" + "cs": "Vytvořeno před {search}", + "fr": "Fait avant {search}", + "nl": "Toegevoegd vóór {search}" } } ] @@ -656,7 +690,9 @@ "en": "Made after {search}", "de": "Erstellt nach {search}", "es": "Hecho después de {search}", - "cs": "Vytvořeno po {search}" + "cs": "Vytvořeno po {search}", + "fr": "Fait après {search}", + "nl": "Toegevoegd na {search}" } } ] @@ -675,7 +711,9 @@ "en": "User language (iso-code) {search}", "de": "Benutzersprache (ISO-Code) {search}", "es": "Idioma del usuario (código ISO) {search}", - "cs": "Jazyk uživatele (iso-kód) {search}" + "cs": "Jazyk uživatele (iso-kód) {search}", + "fr": "Langage utilisateur (code iso) {search}", + "nl": "Gebruikerstaal (iso-code) {search}" } } ] @@ -694,7 +732,8 @@ "en": "Made with host {search}", "de": "Erstellt mit Host {search}", "cs": "Vytvořeno pomocí hostitele {search}", - "es": "Hecho con el anfitrión {search}" + "es": "Hecho con el anfitrión {search}", + "nl": "Gemaakt met {search}" } } ] @@ -708,7 +747,8 @@ "en": "Changeset added at least one image", "de": "Changeset hat mindestens ein Bild hinzugefügt", "cs": "Sada změn přidala alespoň jeden obrázek", - "es": "El conjunto de cambios agregó al menos una imagen" + "es": "El conjunto de cambios agregó al menos una imagen", + "nl": "Changeset voegde minstens één afbeelding toe" } } ] @@ -722,7 +762,8 @@ "en": "Exclude GRB theme", "de": "GRB-Thema ausschließen", "cs": "Vyloučit motiv GRB", - "es": "Excluir el tema GRB" + "es": "Excluir el tema GRB", + "nl": "GRB-thema uitsluiten" } } ] @@ -736,7 +777,8 @@ "en": "Exclude etymology theme", "de": "Etymologie-Thema ausschließen", "es": "Excluir el tema de etimología", - "cs": "Vyloučit etymologii tématu" + "cs": "Vyloučit etymologii tématu", + "nl": "Thema etymologie uitsluiten" } } ] @@ -754,7 +796,9 @@ "en": "More statistics can be found here", "de": "Weitere Statistiken findest du hier", "cs": "Další statistiky najdete zde", - "es": "Puedes encontrar más estadísticas aquí" + "es": "Puedes encontrar más estadísticas aquí", + "fr": "Plus de statistiques peuvent être trouvées ici", + "nl": "Meer statistieken vind je hier" } }, { diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json index 954e6eb63..22efa4801 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json @@ -4,20 +4,26 @@ "en": "Changes made with MapComplete", "de": "Änderungen mit MapComplete", "cs": "Změny provedené pomocí MapComplete", - "es": "Cambios realizados con MapComplete" + "es": "Cambios realizados con MapComplete", + "fr": "Modifications faites avec MapComplete", + "nl": "Wijzigingen gemaakt met MapComplete" }, "shortDescription": { "en": "Shows changes made by MapComplete", "de": "Zeigt die von MapComplete vorgenommenen Änderungen an", "cs": "Zobrazuje změny provedené nástrojem MapComplete", - "es": "Muestra los cambios realizados por MapComplete" + "es": "Muestra los cambios realizados por MapComplete", + "fr": "Afficher les modifications faites avec MapComplete", + "nl": "Toont wijzigingen gemaakt met MapComplete" }, "description": { "en": "This maps shows all the changes made with MapComplete", "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", "es": "Este mapa muestra todos los cambios realizados con MapComplete", "pl": "Ta mapa pokazuje wszystkie zmiany wprowadzone za pomocą MapComplete", - "cs": "Tyto mapy zobrazují všechny změny provedené pomocí MapComplete" + "cs": "Tyto mapy zobrazují všechny změny provedené pomocí MapComplete", + "fr": "Cette carte montre tous les changements effectués avec MapComplete", + "nl": "Deze kaarten tonen alle wijzigingen die zijn gemaakt met MapComplete" }, "icon": "./assets/svg/logo.svg", "hideFromOverview": true, @@ -30,7 +36,9 @@ "name": { "en": "Changeset centers", "de": "Changeset-Zentren", - "es": "Centros de conjuntos de cambios" + "es": "Centros de conjuntos de cambios", + "fr": "Centre du groupe de modifications", + "nl": "Changeset centra" }, "minzoom": 0, "source": { @@ -43,14 +51,16 @@ "en": "Changeset for {theme}", "de": "Änderungssatz für {theme}", "cs": "Sada změn pro {theme}", - "es": "Conjunto de cambios para {theme}" + "es": "Conjunto de cambios para {theme}", + "nl": "Changeset voor {theme}" } }, "description": { "en": "Shows all MapComplete changes", "de": "Zeigt alle MapComplete-Änderungen", "es": "Muestra todos los cambios de MapComplete", - "cs": "Zobrazí všechny změny MapComplete" + "cs": "Zobrazí všechny změny MapComplete", + "nl": "Toon alle MapComplete-wijzigingen" }, "tagRenderings": [ { @@ -59,7 +69,8 @@ "en": "Changeset {id}", "de": "Änderungssatz {id}", "cs": "Sada změn {id}", - "es": "Conjunto de cambios {id}" + "es": "Conjunto de cambios {id}", + "nl": "Changeset {id}" } }, { @@ -68,7 +79,8 @@ "en": "What contributor did make this change?", "de": "Wer hat zu dieser Änderung beigetragen?", "cs": "Který přispěvatel provedl tuto změnu?", - "es": "¿Qué colaborador realizó este cambio?" + "es": "¿Qué colaborador realizó este cambio?", + "nl": "Welke bijdrager maakte deze verandering?" }, "freeform": { "key": "user" @@ -77,7 +89,9 @@ "en": "Change made by {user}", "de": "Änderung vorgenommen von {user}", "cs": "Změna provedena uživatelem {user}", - "es": "Cambio realizado por {user}" + "es": "Cambio realizado por {user}", + "fr": "Modification faite par {user}", + "nl": "Wijziging aangebracht door {user}" } }, { @@ -86,7 +100,8 @@ "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?", - "es": "¿Qué tema se utilizó para realizar este cambio?" + "es": "¿Qué tema se utilizó para realizar este cambio?", + "nl": "Welk thema werd gebruikt voor deze wijziging?" }, "freeform": { "key": "theme" @@ -94,7 +109,8 @@ "render": { "en": "Change with theme {theme}", "de": "Änderung mit Thema {theme}", - "es": "Cambio con el tema {theme}" + "es": "Cambio con el tema {theme}", + "nl": "Verander met thema {theme}" } }, { @@ -106,13 +122,15 @@ "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?", - "es": "¿En qué configuración regional (idioma) se realizó este cambio?" + "es": "¿En qué configuración regional (idioma) se realizó este cambio?", + "nl": "In welke 'locale' (taal) is deze wijziging gemaakt?" }, "render": { "en": "User locale is {locale}", "de": "Die Benutzersprache ist {locale}", "cs": "Uživatelské prostředí je {locale}", - "es": "Configuración regional del usuario es {locale}" + "es": "Configuración regional del usuario es {locale}", + "nl": "De gebruikerstaal (locale) is {locale}" } }, { @@ -121,13 +139,15 @@ "en": "Change with with {host}", "de": "Änderung mit {host}", "cs": "Změnit pomocí {host}", - "es": "Cambio realizado con {host}" + "es": "Cambio realizado con {host}", + "nl": "Gewijzigd met {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?", - "es": "¿Con qué anfitrión (sitio web) se realizó este cambio?" + "es": "¿Con qué anfitrión (sitio web) se realizó este cambio?", + "nl": "Met welke host (website) is deze wijziging gemaakt?" }, "freeform": { "key": "host" @@ -151,13 +171,17 @@ "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?", - "es": "¿Qué versión de MapComplete se utilizó para realizar este cambio?" + "es": "¿Qué versión de MapComplete se utilizó para realizar este cambio?", + "fr": "Quelle version de MapCompletee a été utilisée pour faire cette modification ?", + "nl": "Welke versie van MapComplete is gebruikt voor deze wijziging?" }, "render": { "en": "Made with {editor}", "de": "Erstellt mit {editor}", "cs": "Vytvořeno pomocí {editor}", - "es": "Hecho con {editor}" + "es": "Hecho con {editor}", + "fr": "Fait avec {editor}", + "nl": "Gemaakt met {editor}" }, "freeform": { "key": "editor" @@ -197,7 +221,9 @@ "de": "Themenname enthält {search}", "es": "El nombre del tema contiene {search}", "pl": "Nazwa tematu zawiera {search}", - "cs": "Název obsahuje {search}" + "cs": "Název obsahuje {search}", + "fr": "Le nom du thème contient {search}", + "nl": "Themanaam bevat {search}" } } ] @@ -216,7 +242,9 @@ "en": "Themename does not contain {search}", "de": "Themename enthält nicht {search}", "es": "El nombre del tema no contiene {search}", - "cs": "Název motivu neobsahuje {search}" + "cs": "Název motivu neobsahuje {search}", + "fr": "Le nom du thème ne contient pas {search}", + "nl": "Themanaam bevat geen {search}" } } ] @@ -235,7 +263,9 @@ "en": "Made by contributor {search}", "de": "Erstellt von Mitwirkendem {search}", "es": "Hecho por el colaborador {search}", - "cs": "Vytvořeno přispěvatelem {search}" + "cs": "Vytvořeno přispěvatelem {search}", + "fr": "Fait par le·a contributeur·trice {search}", + "nl": "Toegevoegd door {search}" } } ] @@ -254,7 +284,9 @@ "en": "Not made by contributor {search}", "de": "Nicht erstellt von Mitwirkendem {search}", "es": "No hecho por el colaborador {search}", - "cs": "Nevytvořeno přispěvatelem {search}" + "cs": "Nevytvořeno přispěvatelem {search}", + "fr": "Pas fait par le·a contributeur·trice {search}", + "nl": "Niet toegevoegd door {search}" } } ] @@ -274,7 +306,9 @@ "en": "Made before {search}", "de": "Erstellt vor {search}", "es": "Hecho antes de {search}", - "cs": "Vytvořeno před {search}" + "cs": "Vytvořeno před {search}", + "fr": "Fait avant {search}", + "nl": "Toegevoegd vóór {search}" } } ] @@ -294,7 +328,9 @@ "en": "Made after {search}", "de": "Erstellt nach {search}", "es": "Hecho después de {search}", - "cs": "Vytvořeno po {search}" + "cs": "Vytvořeno po {search}", + "fr": "Fait après {search}", + "nl": "Toegevoegd na {search}" } } ] @@ -313,7 +349,9 @@ "en": "User language (iso-code) {search}", "de": "Benutzersprache (ISO-Code) {search}", "es": "Idioma del usuario (código ISO) {search}", - "cs": "Jazyk uživatele (iso-kód) {search}" + "cs": "Jazyk uživatele (iso-kód) {search}", + "fr": "Langage utilisateur (code iso) {search}", + "nl": "Gebruikerstaal (iso-code) {search}" } } ] @@ -332,7 +370,8 @@ "en": "Made with host {search}", "de": "Erstellt mit Host {search}", "cs": "Vytvořeno pomocí hostitele {search}", - "es": "Hecho con el anfitrión {search}" + "es": "Hecho con el anfitrión {search}", + "nl": "Gemaakt met {search}" } } ] @@ -346,7 +385,8 @@ "en": "Changeset added at least one image", "de": "Changeset hat mindestens ein Bild hinzugefügt", "cs": "Sada změn přidala alespoň jeden obrázek", - "es": "El conjunto de cambios agregó al menos una imagen" + "es": "El conjunto de cambios agregó al menos una imagen", + "nl": "Changeset voegde minstens één afbeelding toe" } } ] @@ -360,7 +400,8 @@ "en": "Exclude GRB theme", "de": "GRB-Thema ausschließen", "cs": "Vyloučit motiv GRB", - "es": "Excluir el tema GRB" + "es": "Excluir el tema GRB", + "nl": "GRB-thema uitsluiten" } } ] @@ -374,7 +415,8 @@ "en": "Exclude etymology theme", "de": "Etymologie-Thema ausschließen", "es": "Excluir el tema de etimología", - "cs": "Vyloučit etymologii tématu" + "cs": "Vyloučit etymologii tématu", + "nl": "Thema etymologie uitsluiten" } } ] @@ -392,7 +434,9 @@ "en": "More statistics can be found here", "de": "Weitere Statistiken findest du hier", "cs": "Další statistiky najdete zde", - "es": "Puedes encontrar más estadísticas aquí" + "es": "Puedes encontrar más estadísticas aquí", + "fr": "Plus de statistiques peuvent être trouvées ici", + "nl": "Meer statistieken vind je hier" } }, { diff --git a/assets/themes/maproulette/maproulette.json b/assets/themes/maproulette/maproulette.json index 03ba82f4c..89d1806a7 100644 --- a/assets/themes/maproulette/maproulette.json +++ b/assets/themes/maproulette/maproulette.json @@ -19,7 +19,7 @@ "de": "Thema mit MapRoulette-Aufgaben, die Sie suchen, filtern und beheben können.", "fr": "Thème MapRoulette permettant d’afficher, rechercher, filtrer et résoudre les tâches.", "da": "Tema, der viser MapRoulette-opgaver, så du kan søge, filtrere og rette dem.", - "nl": "Thema met MapRoulette taken, waar je ze kunt zoeken, filteren en ze oplossen.", + "nl": "Thema met MapRoulette taken, waar je ze kunt zoeken, filteren en oplossen.", "es": "Tema que muestra las tareas de MapRoulette, permitiéndote buscarlas, filtrarlas y solucionarlas.", "cs": "Téma zobrazující úkoly MapRoulette, které umožňuje vyhledávat, filtrovat a opravovat je.", "ca": "Tema que mostra les tasques de MapRoulette, que us permet cercar-les, filtrar-les i solucionar-les.", diff --git a/assets/themes/maxspeed/maxspeed.json b/assets/themes/maxspeed/maxspeed.json index 9428bc24c..c62a67416 100644 --- a/assets/themes/maxspeed/maxspeed.json +++ b/assets/themes/maxspeed/maxspeed.json @@ -22,7 +22,7 @@ "de": "Diese Karte zeigt die zulässige Höchstgeschwindigkeit auf jeder Straße. Wenn eine Höchstgeschwindigkeit fehlt oder falsch ist, können Sie dies hier korrigieren.", "fr": "Cette carte montre la vitesse maximale autorisée sur les routes. Si la vitesse maximale est manquante ou erronée, vous pouvez la corriger ici.", "da": "Dette kort viser den lovligt tilladte maksimale hastighed på hver vej. Hvis en maxspeed mangler eller er forkert, kan du rette den her.", - "nl": "Deze kaart toont de maximum toegestane snelheid voor elke weg. Als er een maximumsnelheid mist of niet klopt, kan je hem hier aanpassen.", + "nl": "Deze kaart toont de maximum toegestane snelheid voor elke weg. Als er een maximumsnelheid ontbreekt of niet klopt, kan je deze hier aanpassen.", "cs": "Tato mapa zobrazuje zákonem povolenou maximální rychlost na každé silnici. Pokud maximální rychlost chybí nebo je nesprávná, můžete ji zde opravit.", "es": "Este mapa muestra la velocidad máxima legalmente permitida en cada carretera. Si falta o está mal una velocidad máxima, puedes corregirla aquí.", "ca": "Aquest mapa mostra la velocitat màxima permesa legalment a cada carretera. Si falta una velocitat màxima o és incorrecta, podeu corregir-la aquí.", diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 26523f2ed..0d92eead6 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -19,7 +19,7 @@ "en": "On this map, publicly weelchair accessible places are shown and can be easily added", "de": "Auf dieser Karte können Sie öffentlich zugängliche Orte für Rollstuhlfahrer ansehen, bearbeiten oder hinzufügen", "fr": "Sur cette carte nous pouvons voir et ajouter les différents endroits publiques accessibles aux chaises roulantes", - "nl": "Op deze kaart kan je informatie rond rolstoeltoegankelijkheid zien, zoals toegangsdeuren met hun breedte en drempelhoogte, toiletten met toegankelijkheidsinformatie, recepties maar ook winkels, cafés en restaurants.", + "nl": "Op deze kaart kan je rolstoeltoegankelijke plaatsen vinden en toevoegen", "da": "På dette kort vises steder, der er offentligt tilgængelige for kørestolsbrugere, og de kan nemt tilføjes", "cs": "Na této mapě jsou zobrazena veřejně přístupná místa pro vozíčkáře, a lze je také snadno přidat", "es": "En este mapa, se muestran y se pueden agregar fácilmente lugares accesibles para sillas de ruedas", diff --git a/assets/themes/openlovemap/openlovemap.json b/assets/themes/openlovemap/openlovemap.json index ba5148545..b856e9261 100644 --- a/assets/themes/openlovemap/openlovemap.json +++ b/assets/themes/openlovemap/openlovemap.json @@ -5,13 +5,17 @@ "de": "Open Love Map", "es": "Open Love Map", "cs": "Open Love Map", - "hu": "Open Love Map - szerelemtérkép" + "hu": "Open Love Map - szerelemtérkép", + "fr": "Open Love Map", + "nl": "Open Love Kaart" }, "description": { "en": "

Love in the palm of your hand

Open Love Map lists various adult entries, such as brothels, erotic stores and stripclubs.", "de": "

Liebe in der Hand

Open Love Map listet verschiedene Einträge für Erwachsene, wie Bordelle, Erotikshops und Stripclubs.", "es": "

Amor en la palma de tu mano

Open Love Map lista varias entradas para adultos, como burdeles, tiendas eróticas y clubes de striptease.", - "cs": "

Láska na dlani

Open Love Map obsahuje různé položky pro dospělé, například nevěstince, erotické obchody a striptýzové kluby." + "cs": "

Láska na dlani

Open Love Map obsahuje různé položky pro dospělé, například nevěstince, erotické obchody a striptýzové kluby.", + "fr": "

L'amour au creux de votre main

Open Love Map répertorie diverses informations pour adultes telles que des maisons closes, des magasins érotiques ou des clubs de strip-tease.", + "nl": "

Liefde in de palm van je hand

Open Love Map geeft een overzicht van verschillende items voor volwassenen, zoals bordelen, erotische winkels en stripclubs." }, "icon": "./assets/layers/stripclub/stripclub.svg", "hideFromOverview": true, @@ -36,7 +40,9 @@ "en": "Erotic shops", "de": "Erotikgeschäfte", "es": "Tiendas eróticas", - "cs": "Erotické obchody" + "cs": "Erotické obchody", + "fr": "Magasins érotiques", + "nl": "Erotiekwinkels" }, "=presets": [ { @@ -44,7 +50,9 @@ "en": "an erotic shop", "de": "ein Erotikgeschäft", "es": "una tienda erótica", - "cs": "erotický obchod" + "cs": "erotický obchod", + "fr": "un magasin érotique", + "nl": "een erotiekwinkel" }, "tags": [ "shop=erotic" @@ -59,7 +67,8 @@ "en": "Does this shop offer fetish gear?", "de": "Bietet dieser Laden Fetischkleidung an?", "es": "¿Esta tienda ofrece artículos fetiche?", - "cs": "Nabízí tento obchod vybavení pro fetišisty?" + "cs": "Nabízí tento obchod vybavení pro fetišisty?", + "nl": "Biedt deze winkel fetisjspullen aan?" }, "mappings": [ { @@ -69,7 +78,8 @@ "en": "This shop offers soft BDSM-gear, such as fluffy handcuffs, a 'fifty-shade-of-grey'-starterset, ...", "de": "Dieser Laden bietet weiches BDSM-Zubehör an, wie zum Beispiel flauschige Handschellen, ein \"Fifty Shades of Grey\"-Starterset, ...", "es": "Esta tienda ofrece artículos BDSM suaves, como esposas de peluche, un kit de iniciación 'cincuenta sombras de Grey',...", - "cs": "Tento obchod nabízí měkké BDSM pomůcky, jako jsou chlupatá pouta, sada „padesát odstínů šedi“, ..." + "cs": "Tento obchod nabízí měkké BDSM pomůcky, jako jsou chlupatá pouta, sada „padesát odstínů šedi“, ...", + "nl": "Deze winkel biedt soft BDSM-accessoires, zoals zachte handboeien, een 'fifty-shade-of-grey'-starterset, ..." } }, { @@ -79,7 +89,8 @@ "en": "This shop offers specialized BDSM-gear, such as spreader bars, supplies for needle play, medical bondage supplies, impact tools, shackles, metal colors, cuffs, nipple clamps, shibari accessories, ...", "de": "Dieser Laden bietet spezialisiertes BDSM-Zubehör an, wie zum Beispiel Spreizstangen, Utensilien für Nadelfolter, medizinische Bondage-Ausrüstung, Schlagwerkzeuge, Fesseln, Metallhalsbänder, Handschellen, Nippelklemmen, Shibari-Zubehör, ...", "es": "Esta tienda ofrece artículos BDSM especializados, como barras separadoras, artículos para juegos con agujas, artículos de bondage médico, herramientas de impacto, grilletes, colores metálicos, puños, pinzas para pezones, accesorios shibari,...", - "cs": "Tento obchod nabízí specializované BDSM pomůcky, jako jsou roztahovací tyče, potřeby pro hru na jehlách, potřeby pro lékařskou bondáž, nárazové nástroje, pouta, kovové barvy, pouta, svorky na bradavky, shibari doplňky, ..." + "cs": "Tento obchod nabízí specializované BDSM pomůcky, jako jsou roztahovací tyče, potřeby pro hru na jehlách, potřeby pro lékařskou bondáž, nárazové nástroje, pouta, kovové barvy, pouta, svorky na bradavky, shibari doplňky, ...", + "nl": "Deze winkel biedt gespecialiseerde BDSM-benodigdheden, zoals spreidstangen, benodigdheden voor naaldspellen, medische bondagebenodigdheden, slagwerktuigen, kluisters, metalen kleuren, boeien, tepelklemmen, shibari-accessoires, ..." } }, { @@ -89,7 +100,8 @@ "en": "This shop offers pet play accessories, such as puppy masks, animal masks, pony play, tails, hoof shoes, ...", "de": "Dieser Laden bietet Petplay-Zubehör an, wie zum Beispiel Hundemasken, Tiermasken, Ponyplay-Ausrüstung, Schwänze, Hufschuhe, ...", "es": "Esta tienda ofrece accesorios para juegos con mascotas, como máscaras de cachorro, máscaras de animales, juegos de pony, colas, zapatos de casco,...", - "cs": "Tento obchod nabízí doplňky na hraní si na zvířata, jako jsou masky štěňat, masky zvířat, poníci na hraní, ocasy, boty na kopyta, ..." + "cs": "Tento obchod nabízí doplňky na hraní si na zvířata, jako jsou masky štěňat, masky zvířat, poníci na hraní, ocasy, boty na kopyta, ...", + "nl": "Deze winkel biedt 'pet play'-accessoires, zoals puppymaskers, dierenmaskers, ponyspellen, staarten, hoefschoenen, ..." } }, { @@ -99,7 +111,8 @@ "en": "This shop offers leather gear, including pants and shirts usable in daily life up till leather harnesses", "de": "Dieser Laden bietet Lederkleidung an, darunter Hosen und Hemden für den Alltag bis hin zu Lederharnissen", "es": "Esta tienda ofrece artículos de cuero, incluyendo pantalones y camisas utilizables en la vida diaria hasta arneses de cuero", - "cs": "Tento obchod nabízí kožené vybavení, včetně kalhot a košil použitelných v každodenním životě až po kožené postroje" + "cs": "Tento obchod nabízí kožené vybavení, včetně kalhot a košil použitelných v každodenním životě až po kožené postroje", + "nl": "Deze winkel biedt leren kledij aan, waaronder broeken en shirts die je in het dagelijks leven kunt gebruiken tot en met leren harnassen" } }, { @@ -109,7 +122,8 @@ "en": "This shop offers uniforms for roleplay, such nurse uniforms, military uniforms, police, school girl, french maid, ...", "de": "Dieser Laden bietet Uniformen für Rollenspiele an, wie Krankenschwester-Uniformen, Militäruniformen, Polizei-, Schulmädchen- und Dienstmädchen-Outfits, ...", "es": "Esta tienda ofrece uniformes para juegos de rol, como uniformes de enfermera, uniformes militares, policía, colegiala, criada francesa,...", - "cs": "Tento obchod nabízí uniformy pro roleplay, jako jsou uniformy zdravotní sestry, vojenské uniformy, policie, školačky, francouzské pokojské, ..." + "cs": "Tento obchod nabízí uniformy pro roleplay, jako jsou uniformy zdravotní sestry, vojenské uniformy, policie, školačky, francouzské pokojské, ...", + "nl": "Deze winkel biedt uniformen voor rollenspelen aan, zoals verpleegsteruniformen, militaire uniformen, politie, schoolmeisje, Franse dienstmeid, ..." } } ] @@ -185,7 +199,9 @@ "de": "ein Kondomautomat", "es": "una máquina expendedora de condones", "da": "en kondomautomat", - "cs": "automat na kondomy" + "cs": "automat na kondomy", + "fr": "un distributeur de préservatifs", + "nl": "een condoomautomaat" }, "tags": [ "amenity=vending_machine", @@ -265,7 +281,9 @@ "en": "an erotic cinema", "de": "Ein Sex-Kino", "es": "un cine erótico", - "cs": "erotické kino" + "cs": "erotické kino", + "fr": "un cinéma érotique", + "nl": "een erotiekcinema" }, "tags": [ "amenity=cinema", @@ -296,7 +314,9 @@ "en": "What type of hotel is this?", "de": "Welche Art von Hotel ist das?", "es": "¿Qué tipo de hotel es este?", - "cs": "O jaký typ hotelu se jedná?" + "cs": "O jaký typ hotelu se jedná?", + "fr": "De quel type d'hôtel s'agit-il ?", + "nl": "Welk type hotel is dit?" }, "mappings": [ { @@ -329,13 +349,15 @@ "en": "Does {title()} have a private video booth?", "de": "Hat {title()} eine private Videokabine?", "es": "¿Tiene {title()} una cabina de video privada?", - "cs": "Má {title()} soukromou video kabinu?" + "cs": "Má {title()} soukromou video kabinu?", + "nl": "Heeft {title()} een privévideocabine?" }, "questionHint": { "en": "This is for use by a single person.", "de": "Dies ist für die Nutzung durch eine einzelne Person vorgesehen.", "es": "Esto es para uso de una sola persona.", - "cs": "Je určena pro použití jednou osobou." + "cs": "Je určena pro použití jednou osobou.", + "nl": "Dit is voor gebruik door één persoon." }, "mappings": [ { diff --git a/assets/themes/personal/personal.json b/assets/themes/personal/personal.json index 6c1d454b3..a8eb70979 100644 --- a/assets/themes/personal/personal.json +++ b/assets/themes/personal/personal.json @@ -23,7 +23,7 @@ }, "description": { "en": "Create a personal theme based on all the available layers of all themes. In order to show some data, open layer selection", - "nl": "Stel je eigen thema samen door lagen te combineren van alle andere themas", + "nl": "Stel je eigen thema samen door lagen te combineren van alle andere themas. Open Selectie lagen om gegevens te tonen", "es": "Crea un tema personal basado en todas las capas disponibles de todos los temas. Para mostrar algunos datos, abre la selección de capas", "ca": "Crea un tema personal basat en totes les capes disponibles de totes els temes. Per a mostrar les dades, obri selecció de capes", "gl": "Crea un tema baseado en todas as capas dispoñíbeis de todos os temas", diff --git a/assets/themes/pets/pets.json b/assets/themes/pets/pets.json index c8dffb1a7..c27addf23 100644 --- a/assets/themes/pets/pets.json +++ b/assets/themes/pets/pets.json @@ -236,7 +236,7 @@ "en": "A shop where you can bring a dog almost everywhere", "da": "En butik hvor man kan tage en hund med næsten overalt", "de": "Ein Geschäft, in das man Hunde fast überall mitnehmen kann", - "nl": "Een winkel waar je je hond in bijna heel de winkel mag meenemen", + "nl": "Een winkel waar je je hond in bijna overal mag meenemen", "fr": "Un magasin où vous pouvez amener votre chien presque partout", "ca": "Una botiga on pots dur al gos gairebé a tot arreu", "es": "Una tienda donde puedes llevar a un perro casi a todas partes", diff --git a/assets/themes/postboxes/postboxes.json b/assets/themes/postboxes/postboxes.json index 30ae42189..296b7ca2c 100644 --- a/assets/themes/postboxes/postboxes.json +++ b/assets/themes/postboxes/postboxes.json @@ -23,7 +23,7 @@ "hu": "Ezen a térképen postahivatalok és postaládák adatait találod és viheted föl. A térkép segítségével utánanézhetsz, hogy hol adhatod fel a következő képeslapodat! :)
Hibát találtál, vagy hiányzik egy postaláda? A térképet mindössze egy ingyenes OpenStreetMap-fiókkal szerkesztheted.", "de": "Auf dieser Karte können Sie Daten von Poststellen und Briefkästen finden und ergänzen. Sie können diese Karte nutzen, um herauszufinden, wo Sie Ihre nächste Postkarte versenden können :)
Haben Sie einen Fehler entdeckt oder fehlt ein Briefkasten? Sie können die Kartenddaten mit einem kostenlosen OpenStreetMap-Konto bearbeiten.", "es": "En este mapa puedes encontrar y agregar datos de oficinas de correos y buzones. ¡Puedes usar este mapa para encontrar dónde enviar tu próxima postal! :)
¿Viste un error o falta un buzón? Puedes editar este mapa con una cuenta gratuita de OpenStreetMap.", - "nl": "Op deze kaart kan je informatie over brievenbussen en postkantoren vinden en toevoegen. Je kan deze kaart gebruiken om te achterhalen waar je je volgende postkaart naar kan sturen! :)
Zie je een fout of ontbreekt een brievenbus? Dan kan je deze kaart aanpassen met een gratis OpenStreetMap account. ", + "nl": "Op deze kaart kan je informatie over brievenbussen en postkantoren vinden en toevoegen. Je kan deze kaart gebruiken om te achterhalen waar je je volgende postkaart naar kan sturen! :)
Vond je een fout of ontbreekt een brievenbus? Dan kan je deze kaart aanpassen met een gratis OpenStreetMap account.", "fr": "Trouvez et ajoutez des bureaux de poste et boîtes à lettres sur cette carte. Utilisez cette carte où vous pouvez envoyer vos cartes postales ! :)
Vous avez trouvez une erreur ou une boîte à lettres est manquante ? Vous pouvez modifier cette carte avec un compte OpenStreetMap gratuit.", "da": "På dette kort kan du finde og tilføje data for posthuse og postkasser. Du kan bruge dette kort til at finde, hvor du kan sende dit næste postkort! :)
Har du fundet en fejl, eller mangler der en postboks? Du kan redigere dette kort med en gratis OpenStreetMap-konto. ", "ca": "A aquest mapa pots afegir dades d'oficines de correus i bústies de correus. ¡Pots utilitzar aquest mapa per a trobar on pots enviar la teva pròxima postal! :)
Has trobat una errada o algo que falta? Pots editar aquest mapa amb un compte gratuït d'OpenStreetMap.", @@ -66,7 +66,8 @@ "en": "Add a new post partner to the map in an existing shop", "de": "Hinzufügen eines neuen Post-Partners auf der Karte in einem bestehenden Geschäft", "es": "Agregar un nuevo socio postal al mapa en una tienda existente", - "cs": "Přidání nového poštovního partnera do mapy v existujícím obchodě" + "cs": "Přidání nového poštovního partnera do mapy v existujícím obchodě", + "nl": "Een nieuwe postpartner toevoegen aan de kaart in een bestaande winkel" }, "+tagRenderings": [ { @@ -113,13 +114,15 @@ "en": "a missing shop that is a post partner", "de": "ein fehlendes Geschäft, das ein Post-Partner ist", "es": "una tienda que falta y que es un socio postal", - "cs": "chybějící obchod, který je partnerem pošty" + "cs": "chybějící obchod, který je partnerem pošty", + "nl": "een ontbrekende winkel die postpartner is" }, "description": { "en": "If a shop is not yet on the map and is a post partner, you can add it here.", "de": "Wenn ein Laden noch nicht auf der Karte ist und ein Post-Partner ist, kannst du ihn hier hinzufügen.", "es": "Si una tienda aún no está en el mapa y es un socio postal, puedes agregarla aquí.", - "cs": "Pokud obchod ještě není na mapě a je partnerem pošty, můžete jej přidat zde." + "cs": "Pokud obchod ještě není na mapě a je partnerem pošty, můžete jej přidat zde.", + "nl": "Als een winkel nog niet op de kaart staat en een postpartner is, kun je deze hier toevoegen." } } ] diff --git a/assets/themes/rainbow_crossings/rainbow_crossings.json b/assets/themes/rainbow_crossings/rainbow_crossings.json index c276a28cc..12d83ca54 100644 --- a/assets/themes/rainbow_crossings/rainbow_crossings.json +++ b/assets/themes/rainbow_crossings/rainbow_crossings.json @@ -20,7 +20,7 @@ "de": "Auf dieser Karte sind Fußgängerüberwege mit Regenbogenfarben eingezeichnet und können leicht hinzugefügt werden", "fr": "Cette carte affiche et permet la modification des passages cloutés peints aux couleurs de l’arc-en-ciel", "da": "På dette kort er regnbuemalede fodgængerfelter vist og kan nemt tilføjes", - "nl": "Deze kaart toont zebrapaden die in regenboogkleuren of pridekleuren geschilderd zijn.", + "nl": "Op deze kaart vind je regenboogzebrapaden en kan je er toevoegen", "ca": "A aquest mapa es mostren els pasos de vianants pintats amb l'arc de Sant Martí i poden afegir-se fàcilment", "es": "En este mapa, se muestran y se pueden agregar fácilmente pasos de peatones pintados con arcoíris", "cs": "Na této mapě si můžete zobrazit a snadno přidat přechody pro chodce s duhovými malbami", diff --git a/assets/themes/ski/ski.json b/assets/themes/ski/ski.json index a0ed94994..12e223a23 100644 --- a/assets/themes/ski/ski.json +++ b/assets/themes/ski/ski.json @@ -8,14 +8,17 @@ "fr": "Pistes de ski et remontées mécaniques", "cs": "Sjezdovky a lanové dráhy", "hu": "Sípályák és felvonók", - "uk": "Гірськолижні траси та витяги" + "uk": "Гірськолижні траси та витяги", + "nl": "Skipistes en kabelbanen" }, "description": { "en": "Everything you need to go skiing", "de": "Alles, was Sie zum Skifahren brauchen", "es": "Todo lo que necesitas para esquiar", "cs": "Vše, co potřebujete k lyžování", - "uk": "Все необхідне для катання на лижах" + "uk": "Все необхідне для катання на лижах", + "fr": "Tout ce dont vous avez besoin pour aller skier", + "nl": "Alles om te skiën" }, "icon": "./assets/layers/aerialway/chair_lift.svg", "layers": [ diff --git a/assets/themes/surveillance/surveillance.json b/assets/themes/surveillance/surveillance.json index ed58c0c75..b40577867 100644 --- a/assets/themes/surveillance/surveillance.json +++ b/assets/themes/surveillance/surveillance.json @@ -2,7 +2,7 @@ "id": "surveillance", "title": { "en": "Surveillance under Surveillance", - "nl": "Surveillance under Surveillance", + "nl": "Bewaking", "ja": "監視カメラの監視", "zh_Hant": "被監視的監視器", "fr": "Surveillance", diff --git a/assets/themes/walkingnodes/walkingnodes.json b/assets/themes/walkingnodes/walkingnodes.json index 8a4726b48..6944ad79d 100644 --- a/assets/themes/walkingnodes/walkingnodes.json +++ b/assets/themes/walkingnodes/walkingnodes.json @@ -327,14 +327,16 @@ "en": "Hiking guideposts", "de": "Wanderwegweiser", "es": "Señalización de senderismo", - "cs": "Turistické rozcestníky" + "cs": "Turistické rozcestníky", + "nl": "Wandelwegwijzers" }, "title": { "render": { "en": "Hiking guidepost", "de": "Wanderwegweiser", "es": "Hito de senderismo", - "cs": "Turistický rozcestník" + "cs": "Turistický rozcestník", + "nl": "Wandelwegwijzer" } } }, @@ -367,7 +369,8 @@ "en": "a route marker for a node to node link", "de": "Eine Routenmarkierung für eine Verbindung von Knoten zu Knoten", "es": "un marcador de ruta para un enlace de nodo a nodo", - "cs": "značka trasy pro spojení mezi uzly" + "cs": "značka trasy pro spojení mezi uzly", + "nl": "een knooppuntwegwijzer" }, "=exampleImages": [ "./assets/layers/route_marker/walking_route_marker.jpg" diff --git a/assets/themes/waste_basket/waste_basket.json b/assets/themes/waste_basket/waste_basket.json index 932a96b58..1ae4d9ebb 100644 --- a/assets/themes/waste_basket/waste_basket.json +++ b/assets/themes/waste_basket/waste_basket.json @@ -21,12 +21,12 @@ }, "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.", - "nl": "Op deze kaart vind je vuilnisbakken waar je afval in kan smijten. Ontbreekt er een vuilnisbak? Dan kan je die zelf toevoegen", + "nl": "Op deze kaart vind je afvalbakken bij jou in de buurt. Als er een afvalbak ontbreekt op deze kaart, kun je deze zelf toevoegen", "de": "Die Karte zeigt Abfalleimer in der Nähe. Wenn ein Abfalleimer fehlt, kannst du ihn selbst hinzufügen.", "it": "In questa cartina troverai i cestini dei rifiuti nei tuoi paraggi. Se manca un cestino, puoi inserirlo tu stesso", "zh_Hant": "在這份地圖當中,你可以找到你附近的垃圾筒。如果地圖有遺漏垃圾筒,你可以自己加上去", "hu": "Ezen a térképen megtalálhatod a közeledben lévő szemeteskosarakat. Ha hiányzik egy kuka a térképről, te is felrajzolhatod.", - "fr": "Retrouvez les poubelles près de vous. Si une poubelle est manquante, vous pouvez l’ajouter vous même", + "fr": "Retrouvez les poubelles près de vous. Si une poubelle est manquante, vous pouvez l’ajouter vous même.", "da": "På dette kort finder du skraldespande i nærheden af dig. Hvis der mangler en skraldespand på dette kort, kan du selv tilføje den", "ca": "A aquest mapa trobaràs les papereres a prop teua. Si falta una paperera al mapa pots afegir-la tu mateix", "es": "En este mapa, encontrarás papeleras cerca de ti. Si falta alguna papelera en este mapa, puedes añadirla tú mismo.", diff --git a/langs/ca.json b/langs/ca.json index 2ec248b9f..77b8ecfe1 100644 --- a/langs/ca.json +++ b/langs/ca.json @@ -49,11 +49,17 @@ }, "external": { "allAreApplied": "Tots els valors externs que faltaven s'han copiat a OpenStreetMap", + "allIncluded": "Les dades carregades des de {source} estan contingudes a OpenStreetMap", + "apply": "Aplicar", + "applyAll": "Aplica tots els valors que falten", "conflicting": { + "intro": "OpenStreetMap té un valor diferent al del lloc web d'origen per als següents valors.", "title": "Elements conflictius" }, "currentInOsmIs": "Pel moment, OpenStreetMap té el següent valor registrat:", "done": "Fet", + "error": "No s'han pogut carregar les dades vinculades des del lloc web", + "lastModified": "Les dades externes s'han modificat per darrera vegada a {date}", "missing": { "intro": "OpenStreetMap no té informació sobre els següents atributs", "title": "Elements que falten" @@ -365,6 +371,15 @@ }, "useSearch": "Utilitzeu la cerca de dalt per veure els valors predefinits", "visualFeedback": { + "directionsAbsolute": { + "N": "nord", + "NE": "nord-est", + "NW": "nord-oest", + "S": "sud", + "SE": "sud-est", + "SW": "sud-oest", + "W": "oest" + }, "directionsRelative": { "left": "esquerra", "right": "dreta" diff --git a/langs/cs.json b/langs/cs.json index a51fc7a85..a3dce422b 100644 --- a/langs/cs.json +++ b/langs/cs.json @@ -588,10 +588,33 @@ "seeNearby": "Procházet okolní obrázky", "title": "Blízké obrázky streetview" }, + "panoramax": { + "deletionRequested": "Zpráva byla odeslána. Za chvíli se na to podívá moderátor", + "freeform": "Jsou k dispozici další relevantní údaje?", + "otherFreeform": "Uveďte, proč by měl být tento obrázek odstraněn:", + "placeholder": "Vysvětlete, proč by měl být obrázek smazán", + "report": { + "blur_excess": "Příliš mnoho je rozmazané, takže obrázek je k ničemu", + "blur_missing": "Obličej nebo poznávací značka nejsou na tomto obrázku rozmazané", + "copyright": "Na obrázku je obsah chráněný autorským právem", + "inappropriate": "Tento obrázek je nevhodný (obsahuje nahotu, vyzývá k nenávisti nebo není streetview)", + "mislocated": "Obrázek je z jiného místa", + "other": "Jiný důvod, prosím uveďte", + "picture_low_quality": "Obraz je nízké kvality", + "privacy": "Na obrázku je soukromý pozemek" + }, + "requestDeletion": "Žádost o smazání obrázku", + "title": "Proč by měl být tento obrázek trvale smazán?" + }, "pleaseLogin": "Pro přidání fotky se prosím přihlaste", "processing": "Server zpracovává váš obrázek", "respectPrivacy": "Nenahrávejte z Map Google, Google Streetview ani z jiných zdrojů chráněných autorskými právy.", "toBig": "Váš obrázek je příliš velký, protože má velikost {actual_size}. Používejte prosím obrázky o maximální velikosti {max_size}", + "unlink": { + "button": "Odpojit obrázek", + "explanation": "Odpojením tohoto obrázku se tento obrázek již nebude zobrazovat s tímto objektem. Stále se bude objevovat v blízkých obrázcích a možná i dalších objektech.", + "title": "Odpojit tento obrázek?" + }, "upload": { "failReasons": "Možná jste ztratili připojení k internetu", "failReasonsAdvanced": "Případně se ujistěte, že váš prohlížeč a rozšíření neblokují rozhraní API třetích stran.", diff --git a/langs/de.json b/langs/de.json index a2986e5c6..ca3b59392 100644 --- a/langs/de.json +++ b/langs/de.json @@ -913,4 +913,4 @@ "startsWithQ": "Ein Wikidata-Identifikator beginnt mit Q und wird von einer Zahl gefolgt" } } -} +} \ No newline at end of file diff --git a/langs/el.json b/langs/el.json index 0967ef424..7a73a41bf 100644 --- a/langs/el.json +++ b/langs/el.json @@ -1 +1,2 @@ -{} +{ +} \ No newline at end of file diff --git a/langs/es.json b/langs/es.json index d2630b9b9..8c1ccb619 100644 --- a/langs/es.json +++ b/langs/es.json @@ -921,4 +921,4 @@ "startsWithQ": "Un identificador de Wikidata comienza con Q y le sigue un número" } } -} +} \ No newline at end of file diff --git a/langs/fr.json b/langs/fr.json index 29ee02d91..a10f64c68 100644 --- a/langs/fr.json +++ b/langs/fr.json @@ -5,6 +5,7 @@ "centerMessage": { "allFilteredAway": "Aucun objet dans la vue actuelle ne répond aux filtres", "loadingData": "Chargement des données…", + "noData": "Il n'y a pas d'objet concerné dans la présente vue", "ready": "Fini !", "retrying": "Le chargement a échoué. Nouvel essai dans {count} secondes…", "zoomIn": "Rapprochez-vous sur la carte pour voir ou éditer les données" @@ -13,12 +14,13 @@ "available": "Cette communauté parle {native}", "intro": "Prenez contact avec d'autres personnes pour les connaître, apprendre d'elles, …", "notAvailable": "Cette communauté ne parle pas {native}", - "title": "Index communautaire" + "title": "Entrer en contact avec d'autres" }, "delete": { "cancel": "Annuler", "cannotBeDeleted": "Cet objet ne peut être supprimé", "delete": "Supprimer", + "deletedTitle": "Objet supprimé", "explanations": { "hardDelete": "Cet élément sera supprimé d’OpenStreetmap. Il pourra être restauré par des méthodes avancées", "retagNoOtherThemes": "Cet objet sera re-classifié et caché dans cette application", @@ -46,8 +48,19 @@ "whyDelete": "Pourquoi cet élément devrait-il être supprimé ?" }, "external": { + "allAreApplied": "Toutes les valeurs externes manquantes ont été copiées dans OpenStreetMap", + "allIncluded": "Les données chargées de {source} sont contenues dans OpenStreetMap", "apply": "Appliquer", + "applyAll": "Appliquer toutes les valeurs manquantes", + "conflicting": { + "intro": "OpenStreetMap a une valeur différente de celle du site web source pour les valeurs suivantes.", + "title": "Éléments contradictoires" + }, + "currentInOsmIs": "À l'heure actuelle, OpenStreetMap a enregistré la valeur suivante :", "done": "Fait", + "error": "Impossible de charger les données liées du site web", + "lastModified": "Les données externes ont été modifiées pour la dernière fois le {date}", + "loadedFrom": "Les données suivantes sont chargées à partir de {source} à l'aide de JSON-LD intégré", "missing": { "title": "Éléments manquants" } @@ -77,14 +90,24 @@ "editing": { "intro": "L'utilisateur est accueilli par une carte avec des objets. Lorsqu'il en sélectionne un, les informations relatives à cet objet s'affichent." }, + "examples": "Il existe de nombreuses cartes thématiques, dont quelques-unes sont présentées ici.\n\nIl existe de nombreuses autres cartes thématiques en ligne : sur les soins de santé, la navigation intérieure, l'accessibilité en fauteuil roulant, les installations de traitement des déchets, les bibliothèques publiques, les passages pour piétons avec une peinture arc-en-ciel,... Découvrez-les toutes sur mapcomplete.org", "fakeui": { "add_images": "Ajoutez des images en quelques clics", - "edit": "Une info fausse ou pas à jour ? Le bouton de modification est juste ici" + "attributes": "Affiche les attributs de manière conviviale", + "edit": "Une information inexacte ou pas à jour ? Le bouton de modification est juste ici", + "question": "Si un attribut n'est pas encore connu, MapComplete affiche une question", + "see_images": "Affiche des images provenant de contributeurs précédents, Wikipedia, Mapillary, …", + "wikipedia": "Les articles de Wikipédia liés sont affichés" }, + "frontParagraph": "MapComplete est une application web facile à utiliser pour collecter des géodonnées dans OpenStreetMap, permettant de collecter et de gérer des données pertinentes de manière ouverte, participative et réutilisable.\n\nDe nouvelles catégories et de nouveaux attributs peuvent être ajoutés sur demande.", + "lines_too": "Les lignes et les polygones sont également affichés. Des attributs et des images peuvent également être ajoutés et mis à jour sur ces objets.", "mapcomplete": { + "customize": "MapComplete peut être adapté à vos besoins, avec de nouvelles couches cartographiques, de nouvelles fonctionnalités ou en utilisant les couleurs et la police de votre organisation.\nNous avons également de l'expérience dans le lancement de campagnes de crowdsourcing de géodonnées.\nContactez pietervdvn@posteo.net pour un devis.", "intro": "MapComplete est un site qui a {mapCount} carte intéractives. Chaque carte permet d'ajouter et mettre à jour des informations. IL y a de nombreuses fonctionnalités :", + "li0": "Montre où se trouvent les points d'intérêt (POI)", "li1": "Ajouter de nouveaux points et mettre à jour les infos de ceux existant", "li2": "Ajouter facilement des informations de contact et des heures d'ouverture", + "li3": "Peut être placé dans d'autres sites web comme iFrame", "li5": "Fonction d'import de jeux de données existants", "title": "Qu'est-ce que MapComplete ?" }, diff --git a/langs/hu.json b/langs/hu.json index 9e7685a03..6f0165818 100644 --- a/langs/hu.json +++ b/langs/hu.json @@ -106,7 +106,7 @@ "fakeui": { "add_images": "Kép hozzáadása néhány kattintással", "attributes": "Barátságos módon jelenít meg tulajdonságokat", - "edit": "Téves vagy elavult az információ? A szerkesztés gomb ott van!", + "edit": "Téves vagy elavult az információ? A szerkesztés gomb ott van.", "question": "Ha egy tulajdonság még nem ismert, a MapComplete feldob egy kérdést", "see_images": "Megjelenít képeket korábbi szerkesztőktől, a Wikipédiáról, a Mapillaryről stb.", "wikipedia": "Láthatók a belinkelt Wikipédia-szócikkek" @@ -921,4 +921,4 @@ "startsWithQ": "A Wikidata-azonosító Q-val kezdődik, amelyet egy szám követ" } } -} +} \ No newline at end of file diff --git a/langs/layers/ca.json b/langs/layers/ca.json index 46963065c..dd5b6f42e 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -9594,4 +9594,4 @@ "render": "Turbina eòlica" } } -} +} \ No newline at end of file diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 2618f40f1..31cc9d5f1 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -1492,6 +1492,17 @@ } }, "tagRenderings": { + "automated": { + "mappings": { + "0": { + "then": "Jedná se o ruční mycí stanici kol" + }, + "1": { + "then": "Jedná se o mytí kol bez obsluhy" + } + }, + "question": "Je tato služba čištění kol bez obsluhy?" + }, "bike_cleaning-charge": { "mappings": { "0": { @@ -1515,6 +1526,17 @@ }, "question": "Kolik stojí využívání služby mytí?", "render": "Využití služby mytí stojí {service:bicycle:cleaning:charge}" + }, + "self_service": { + "mappings": { + "0": { + "then": "Tato mycí služba je samoobslužná" + }, + "1": { + "then": "Tuto mycí službu provozuje zaměstnanec" + } + }, + "question": "Je tato mycí služba samoobslužná?" } }, "title": { @@ -1972,7 +1994,8 @@ "title": "pozorovatelna" }, "1": { - "description": "Obrazovka nebo stěna s otvory pro sledování ptáků" + "description": "Obrazovka nebo stěna s otvory pro sledování ptáků", + "title": "ptačí pozorovatelna" } }, "tagRenderings": { @@ -2268,6 +2291,7 @@ } }, "charging_station": { + "description": "Nabíjecí stanice", "tagRenderings": { "rewritten-questions": { "renderings": { @@ -10187,4 +10211,4 @@ "render": "větrná turbína" } } -} +} \ No newline at end of file diff --git a/langs/layers/de.json b/langs/layers/de.json index 4b96e4e4f..61672c516 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -10529,6 +10529,9 @@ }, "2": { "then": "Eine bewegliche Kamera" + }, + "3": { + "then": "Eine Türklingel, die jederzeit oder per Bewegungserkennung ferngeschaltet werden kann. Dies sind typischerweise Smart, internetgebundene Türklingeln. Typische Marken sind Ring, Google Nest, Eufy, ..." } }, "question": "Um welchen Kameratyp handelt es sich?" @@ -12782,4 +12785,4 @@ "render": "Windrad" } } -} +} \ No newline at end of file diff --git a/langs/layers/el.json b/langs/layers/el.json index 0967ef424..7a73a41bf 100644 --- a/langs/layers/el.json +++ b/langs/layers/el.json @@ -1 +1,2 @@ -{} +{ +} \ No newline at end of file diff --git a/langs/layers/en.json b/langs/layers/en.json index 1f5a125ee..a759f0687 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -10529,6 +10529,9 @@ }, "2": { "then": "A panning camera" + }, + "3": { + "then": "A doorbell which might be turned on remotely at any time or by motion detection. These are typically Smart, internet-connected doorbells. Typical brands are Ring, Google Nest, Eufy, ..." } }, "question": "What kind of camera is this?" diff --git a/langs/layers/es.json b/langs/layers/es.json index 8d7698fcc..815acc431 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -1492,6 +1492,17 @@ } }, "tagRenderings": { + "automated": { + "mappings": { + "0": { + "then": "Esta es una estación manual de lavado de bicicletas" + }, + "1": { + "then": "Esta es una estación automática de lavado de bicicletas" + } + }, + "question": "¿Está este servicio de limpieza de bicicletas automatizado?" + }, "bike_cleaning-charge": { "mappings": { "0": { @@ -1515,6 +1526,17 @@ }, "question": "¿Cuánto cuesta usar el servicio de limpieza?", "render": "Usar el servicio de limpieza cuesta {service:bicycle:cleaning:charge}" + }, + "self_service": { + "mappings": { + "0": { + "then": "Este servicio de limpieza es de autoservicio" + }, + "1": { + "then": "Este servicio de limpieza está operado por un empleado" + } + }, + "question": "¿Es este servicio de limpieza de autoservicio?" } }, "title": { @@ -3208,6 +3230,10 @@ "1": { "description": "Un reloj visible públicamente montado en una pared", "title": "un reloj de pared" + }, + "2": { + "description": "Un reloj visible públicamente montado directamente en una pared", + "title": "un reloj, montado directamente en una pared" } }, "tagRenderings": { @@ -3288,6 +3314,19 @@ }, "question": "¿Este reloj también muestra la humedad?" }, + "indoor": { + "override": { + "mappings": { + "0": { + "then": "Este reloj está en un espacio interior" + }, + "1": { + "then": "Este reloj está en un espacio exterior" + } + }, + "question": "¿Este reloj está en el interior?" + } + }, "support": { "mappings": { "0": { @@ -3302,9 +3341,6 @@ "3": { "then": "Este reloj es parte de un cartel" }, - "4": { - "then": "Este reloj está en el suelo" - }, "4": { "then": "Este reloj está en el suelo" } @@ -3499,6 +3535,57 @@ } }, "question": "¿Este semáforo tiene señales de vibración para ayudar a cruzar? (normalmente ubicado en la parte inferior del botón de cruce)" + }, + "markings": { + "mappings": { + "0": { + "then": "Este cruce no está señalizado" + }, + "1": { + "then": "Este paso de cebra está señalizado" + }, + "10": { + "then": "Este paso tiene marcas de cebra en colores alternos" + }, + "11": { + "then": "Este paso de cebra tiene doble señalización" + }, + "12": { + "then": "Este cruce tiene pictogramas en la calzada" + }, + "13": { + "then": "Este cruce tiene líneas a cada lado del cruce, junto con barras que las conectan, con una interrupción en cada barra" + }, + "14": { + "then": "Este cruce tiene líneas dobles a cada lado del cruce" + }, + "2": { + "then": "Este cruce tiene marcas de tipo desconocido" + }, + "3": { + "then": "Este cruce tiene líneas a ambos lados del cruce" + }, + "4": { + "then": "Este cruce tiene líneas a ambos lados, junto con barras que las conectan" + }, + "5": { + "then": "Este cruce tiene líneas discontinuas a ambos lados del cruce" + }, + "6": { + "then": "Este cruce tiene líneas de puntos a ambos lados del cruce" + }, + "7": { + "then": "Este cruce se marca utilizando una superficie de color diferente" + }, + "8": { + "then": "Este cruce tiene líneas a ambos lados, junto con barras en ángulo que las conectan" + }, + "9": { + "then": "Este paso tiene marcas de cebra con una interrupción en cada barra" + } + }, + "question": "¿Qué tipo de señalización tiene este cruce?", + "render": "Este cruce tiene marcas {crossing:markings}" } }, "title": { @@ -3914,6 +4001,43 @@ "render": "Vía" } }, + "cyclist_waiting_aid": { + "description": "Diversas infraestructuras que ayudan a los ciclistas mientras esperan en un semáforo.", + "name": "Ayudas a la espera de ciclistas", + "presets": { + "0": { + "description": "Reposapiés, pasamanos u otro tipo de ayuda para mejorar la comodidad durante la espera en los semáforos", + "title": "un ciclista espera ayuda" + } + }, + "tagRenderings": { + "direction": { + "mappings": { + "0": { + "then": "Esta ayuda a la espera puede utilizarse cuando se avanza por esta vía" + }, + "1": { + "then": "Esta ayuda a la espera puede utilizarse cuando se retrocede por este camino" + } + }, + "render": "Esta ayuda a la espera puede utilizarse cuando se va en dirección {direction}" + }, + "side": { + "mappings": { + "0": { + "then": "Esta ayuda a la espera se encuentra en el lado izquierdo" + }, + "1": { + "then": "Esta ayuda a la espera se encuentra en el lado derecho" + }, + "2": { + "then": "Hay ayudas a la espera a ambos lados de la carretera" + } + }, + "question": "¿En qué lado de la carretera se encuentra?" + } + } + }, "defibrillator": { "description": "Una capa que muestra desfibriladores que se pueden usar en caso de emergencia Esto incluye desfibriladores públicos, pero también desfibriladores que pueden necesitar personal para obtener el dispositivo real", "name": "Desfibriladores", diff --git a/langs/layers/fr.json b/langs/layers/fr.json index f5cde9b37..80858a1a8 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -7556,4 +7556,4 @@ "render": "éolienne" } } -} +} \ No newline at end of file diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 151d5e4cb..ebbb393ec 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -25,15 +25,46 @@ } }, "advertising": { + "description": "We vullen de informatie over de advertentie aan met de referentie, de operator en de verlichting", "name": "Reclame", "presets": { + "0": { + "description": "Een grote structuur voor reclame, meestal te vinden in gebieden met veel verkeer, zoals langs drukke wegen", + "title": "een reclamebord" + }, + "1": { + "description": "Een grote structuur voor reclame, meestal te vinden in verkeersrijke gebieden zoals langs drukke wegen, bevestigd op een muur", + "title": "een reclamebord bevestigd aan een muur" + }, + "10": { + "title": "een scherm gemonteerd op een schuilhokje" + }, "11": { "description": "Een stuk groot, weerbestendig textiel met opgedrukte reclameboodschap die permanent aan de muur hangt", "title": "een spandoek" }, + "12": { + "title": "een totem" + }, + "13": { + "description": "Gebruikt voor reclameborden, neonborden, logo's & toegangsborden voor instellingen", + "title": "een bord" + }, + "14": { + "title": "een beeldhouwwerk" + }, "15": { "title": "een muurschildering" }, + "2": { + "title": "een vrijstaande posterbak" + }, + "3": { + "title": "een aan de muur gemonteerde posterbak" + }, + "4": { + "title": "een posterbak die deel uitmaakt van een bushokje" + }, "5": { "description": "Een klein uithangbord voor buurtadvertenties, meestal gericht op voetgangers", "title": "een uithangbord" @@ -53,6 +84,48 @@ } }, "tagRenderings": { + "Sides": { + "mappings": { + "0": { + "then": "Dit object heeft reclame aan een enkele zijde" + }, + "1": { + "then": "Dit object heeft reclame aan beide zijdes" + } + }, + "question": "Vanaf hoeveel kanten kun je naar reclame kijken?" + }, + "animated": { + "mappings": { + "0": { + "then": "Statisch, toont altijd hetzelfde bericht" + }, + "1": { + "then": "Dit object heeft een ingebouwd digitaal scherm om prijzen of andere berichten weer te geven" + }, + "2": { + "then": "Trivision - het reclamebord bestaat uit verschillende driehoekige prisma's die regelmatig ronddraaien" + }, + "3": { + "then": "Roterende posters" + }, + "4": { + "then": "Roteert vanzelf" + } + }, + "question": "Doorloopt deze advertentie meerdere berichten?" + }, + "historic": { + "mappings": { + "0": { + "then": "Dit is een historisch reclamebord (een advertentie voor een bedrijf dat niet meer bestaat of een heel oud bord met erfgoedwaarde)" + }, + "1": { + "then": "Dit reclamebord heeft geen historische waarde (het bedrijf bestaat nog steeds en heeft geen erfgoedwaarde)" + } + }, + "question": "Is dit bord voor een bedrijf dat niet meer bestaat of niet meer wordt onderhouden?" + }, "luminous_or_lit_advertising": { "override": { "+mappings": { @@ -70,15 +143,27 @@ "1": { "then": "Lokale informatie" }, + "2": { + "then": "Veiligheidsinformatie" + }, + "3": { + "then": "Verkiezingsadvertentie" + }, "4": { "then": "Informatie over cultuurevenementen zoals theaters, optredens, …" }, "5": { "then": "Boodschap van NGO-organisaties" }, + "6": { + "then": "Om je mening te geven" + }, "7": { "then": "Religieuze boodschap" }, + "8": { + "then": "Financieringsteken" + }, "9": { "then": "Een kaart" } @@ -95,11 +180,38 @@ }, "type": { "mappings": { + "0": { + "then": "Dit is een reclamebord" + }, + "1": { + "then": "Dit is een bord" + }, + "10": { + "then": "Dit is een muurschildering" + }, + "11": { + "then": "Dit is betegeling - de reclame is op tegels geschilderd" + }, + "12": { + "then": "Dit is een reliëf" + }, "2": { "then": "Dit is een aanplakzuil" }, "3": { "then": "Dit is een vlag" + }, + "4": { + "then": "Dit is een posterbak" + }, + "5": { + "then": "Dit is een scherm" + }, + "6": { + "then": "Dit is een beeldhouwerk" + }, + "7": { + "then": "Dit is een teken" } }, "render": "Dit is een {advertising}" @@ -131,6 +243,20 @@ } } }, + "aerialway": { + "tagRenderings": { + "type": { + "mappings": { + "0": { + "then": "Dit is een kabelbaan waar de gondel op dezelfde kabel naar boven en naar beneden gaat." + }, + "1": { + "then": "Dit is een kabellift waar de gondel in een continue circuit gaat" + } + } + } + } + }, "ambulancestation": { "description": "Een ambulancestation is een plaats waar ambulances, medisch materiaal, persoonlijk beschermingsmateriaal en aanverwanten worden bewaard.", "name": "Kaart van ambulancestations", @@ -180,6 +306,53 @@ "render": "Ambulancestation" } }, + "animal_shelter": { + "tagRenderings": { + "6": { + "mappings": { + "0": { + "then": "Dieren worden hier gehouden totdat ze geadopteerd worden" + }, + "1": { + "then": "Dieren worden hier verzorgd voor de rest van hun leven" + }, + "2": { + "then": "Gewonde dieren worden hier gerevalideerd totdat ze terug in het wild vrijgelaten worden " + } + }, + "question": "Wat is het doel van dit dierenasiel?" + }, + "boarded_animals": { + "mappings": { + "0": { + "then": "Honden worden hier opgevangen" + }, + "1": { + "then": "Katten worden hier opgevangen" + }, + "2": { + "then": "Paarden worden hier opgevangen" + }, + "3": { + "then": "Vogels worden hier opgevangen" + }, + "4": { + "then": "Wilde dieren worden hier opgevangen" + } + }, + "question": "Welke dieren worden hier opgevangen?", + "render": "{animal_shelter} worden hier opgevangen" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Dierenasiel" + } + }, "artwork": { "description": "Een vrije kaart met standbeelden, bustes, graffiti en andere kunstwerken van over de hele wereld", "name": "Kunstwerken", @@ -270,6 +443,13 @@ } }, "question": "Is dit kunstwerk ook een zitbank?" + }, + "doubles_as_memorial": { + "mappings": { + "0": { + "then": "Dit kunstwerk doet ook dienst als herdenkingsmonument" + } + } } }, "title": { @@ -1550,9 +1730,6 @@ }, "title": { "mappings": { - "0": { - "then": "{name}" - }, "1": { "then": "Vogelkijkhut {name}" }, @@ -5630,11 +5807,6 @@ } }, "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, "render": "Natuurgebied" } }, @@ -5926,11 +6098,11 @@ "then": "Er zijn geen parkeerplaatsen voor gehandicapten" }, "2": { - "then": "Er zijn geen parkeerplaatsen voor gehandicapten" + "then": "Er zijn geen parkeerplaatsen voor personen met een beperking" } }, - "question": "Hoeveel parkeerplaatsen voor gehandicapten zijn er op deze parking?", - "render": "Er zijn {capacity:disabled} parkeerplaatsen voor gehandicapten" + "question": "Hoeveel parkeerplaatsen voor personen met een beperking zijn er op deze parking?", + "render": "Er zijn {capacity:disabled} parkeerplaatsen voor personen met een beperking" }, "parking-type": { "mappings": { @@ -6180,21 +6352,6 @@ "render": "Picknicktafel" } }, - "play_forest": { - "description": "Een speelbos is een vrij toegankelijke zone in een bos", - "name": "Speelbossen", - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "Speelbos {name}" - } - }, - "render": "Speelbos" - } - }, "playground": { "deletion": { "nonDeleteMappings": { @@ -7729,9 +7886,6 @@ }, "title": { "mappings": { - "0": { - "then": "{name}" - }, "1": { "then": "Voetpad" }, @@ -9744,25 +9898,13 @@ } }, "village_green": { - "description": "Een laag die dorpsgroen toont (gemeenschapsgroen, maar niet echt een park)", - "name": "Speelweide", - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Speelweide" - } + "description": "Een laag die dorpsgroen toont (gemeenschapsgroen, maar niet echt een park)" }, "visitor_information_centre": { "description": "Een bezoekerscentrum biedt informatie over een specifieke attractie of bezienswaardigheid waar het is gevestigd.", "name": "Bezoekerscentrum", "title": { "mappings": { - "0": { - "then": "{name:nl}" - }, "1": { "then": "{name}" } @@ -9992,4 +10134,4 @@ "render": "windturbine" } } -} \ No newline at end of file +} diff --git a/langs/layers/pl.json b/langs/layers/pl.json index 5aead3423..5a99131fa 100644 --- a/langs/layers/pl.json +++ b/langs/layers/pl.json @@ -3707,4 +3707,4 @@ "render": "turbina wiatrowa" } } -} +} \ No newline at end of file diff --git a/langs/layers/uk.json b/langs/layers/uk.json index d93f178f1..1e1726645 100644 --- a/langs/layers/uk.json +++ b/langs/layers/uk.json @@ -267,6 +267,14 @@ } } }, + "artwork-website": { + "question": "Чи є веб-сайт із додатковою інформацією про цей твір мистецтва?", + "render": { + "special": { + "text": "Більше інформації на цьому сайті" + } + } + }, "doubles_as_bench": { "mappings": { "0": { @@ -314,6 +322,7 @@ } }, "bench": { + "name": "Лавки", "tagRenderings": { "bench-armrest": { "mappings": { @@ -379,6 +388,30 @@ "then": "На цій зупинці немає лавки (ніколи не було або її прибрали)" } } + }, + "name": "Лавки на зупинках громадського транспорту", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "0": { + "then": "Тут є звичайна лавка для сидіння" + }, + "2": { + "then": "Тут немає лавки" + } + }, + "question": "Що це за лавка?" + } + } + }, + "bicycle_counter": { + "tagRenderings": { + "website": { + "freeform": { + "placeholder": "Сайт лічильника" + }, + "question": "Є веб-сайт для цього велосипедного прилавка?" + } } }, "bicycle_rental": { @@ -606,6 +639,10 @@ "tagRenderings": { "caravansites-internet": { "question": "Чи є в цьому місці доступ до Інтернету?" + }, + "caravansites-website": { + "question": "Це місце має веб-сайт?", + "render": "Офіційний веб-сайт: {website}" } } }, @@ -671,6 +708,17 @@ } } } + }, + "website": { + "question": "На якому веб-сайті можна знайти більше інформації про цю зарядну станцію?", + "render": "Більше інформації на {website}" + } + } + }, + "climbing": { + "tagRenderings": { + "website": { + "question": "Чи існує (неофіційний) веб-сайт з додатковою інформацією (наприклад, топос)?" } } }, @@ -897,6 +945,14 @@ } }, "question": "Чи пропонують тут їжу на винос?" + }, + "menu-website": { + "question": "На якій веб-сторінці опубліковано меню?", + "render": { + "special": { + "text": "Зверніться до меню" + } + } } }, "title": { @@ -927,7 +983,12 @@ } }, "gps_track": { - "name": "Твій пройдений шлях" + "name": "Твій пройдений шлях", + "tagRenderings": { + "Privacy notice": { + "render": "Це шлях, який ви пройшли з моменту відкриття веб-сайту. Не хвилюйтеся – це видно лише вам і нікому більше. Дані про ваше місцезнаходження ніколи не надсилаються за межі пристрою." + } + } }, "grave": { "presets": { @@ -1038,6 +1099,45 @@ } } }, + "parking": { + "tagRenderings": { + "parking-type": { + "mappings": { + "0": { + "then": "Це наземний паркінг" + }, + "1": { + "then": "Це паркувальний майданчик поруч з вулицею" + }, + "2": { + "then": "Це підземний паркінг" + }, + "3": { + "then": "Це багатоповерховий паркінг" + }, + "4": { + "then": "Це паркувальний майданчик на даху" + }, + "5": { + "then": "Це смуга для паркування на дорозі" + }, + "6": { + "then": "Це парковка, закрита навісами для автомобілів" + }, + "7": { + "then": "Це паркінг, що складається з гаражних боксів" + }, + "8": { + "then": "Це парковка на проїжджій частині" + }, + "9": { + "then": "Це парковка, що складається з навісів" + } + }, + "question": "Що це за парковка?" + } + } + }, "pharmacy": { "tagRenderings": { "name": { @@ -1047,6 +1147,7 @@ } }, "picnic_table": { + "name": "Столи для пікніка", "tagRenderings": { "picnic_table-material": { "mappings": { @@ -1191,6 +1292,14 @@ "then": "Ця книжкова шафа не є частиною більшої мережі" } } + }, + "public_bookcase-website": { + "question": "Чи є веб-сайт із додатковою інформацією про цю публічну книжкову шафу?", + "render": { + "special": { + "text": "Більше інформації на сайті" + } + } } } }, @@ -1322,6 +1431,7 @@ } }, "website": { + "editButtonAriaLabel": "Редагувати веб-сайт", "question": "Який веб-сайт має {title()}?" } } @@ -1467,6 +1577,7 @@ "school-language": { "render": { "special": { + "no_known_languages": "Основна мова цієї школи невідома", "question": "Яка основна мова цієї школи?
Якою мовою розмовляють зі студентами на немовних курсах та з адміністрацією?
" } } @@ -1760,6 +1871,29 @@ } } }, + "transit_stops": { + "tagRenderings": { + "bench": { + "mappings": { + "0": { + "then": "На цій зупинці є лавка" + } + }, + "question": "Чи є на цій зупинці лавка?" + }, + "shelter": { + "mappings": { + "0": { + "then": "На цій зупинці є навіс" + }, + "1": { + "then": "Ця зупинка не має накриття" + } + }, + "question": "Чи є на цій зупинці укриття?" + } + } + }, "usersettings": { "description": "Спеціальний шар, який не призначений для відображення на карті, але використовується для встановлення користувацьких налаштувань", "tagRenderings": { @@ -2200,4 +2334,4 @@ "render": "Утилізація відходів" } } -} +} \ No newline at end of file diff --git a/langs/nan.json b/langs/nan.json index 465db8fdf..0fdcaa095 100644 --- a/langs/nan.json +++ b/langs/nan.json @@ -12,4 +12,4 @@ "startsWithQ": "A wikidata identifier starts with Q and is followed by a number" } } -} +} \ No newline at end of file diff --git a/langs/nl.json b/langs/nl.json index a13661b79..d749aaeaf 100644 --- a/langs/nl.json +++ b/langs/nl.json @@ -12,7 +12,7 @@ }, "communityIndex": { "available": "Op dit communicatiekanaal spreekt men {native}", - "intro": "Contacteer anderen die bezig zijn met OpenStreetMap om kennis te maken, tips uit te wisselen of van elkaar bij te leren.", + "intro": "Contacteer anderen om kennis te maken, tips uit te wisselen, …", "notAvailable": "Op dit communicatiekanaal spreekt men geen {native}", "title": "Kom in contact met anderen" }, @@ -20,13 +20,15 @@ "cancel": "Annuleren", "cannotBeDeleted": "Dit object kan niet van de kaart verwijderd worden", "delete": "Verwijder", + "deletedTitle": "Verwijderd item", "explanations": { - "hardDelete": "Dit object zal verwijderd worden in OpenStreetMap. Een ervaren bijdrager kan dit ongedaan maken.", + "hardDelete": "Dit object zal verwijderd worden in OpenStreetMap. Een ervaren bijdrager kan dit ongedaan maken", "retagNoOtherThemes": "Dit object zal anders aangeduid worden en niet meer getoond worden in deze applicatie", "retagOtherThemes": "Dit object zal aangepast worden en zichtbaar zijn in {otherThemes}", "selectReason": "Gelieve aan te duiden waarom dit object verwijderd moet worden", "softDelete": "Dit object zal aangepast worden en zal in deze applicatie niet meer getoond worden. {reason}" }, + "isChanged": "Deze eigenschap is gewijzigd en komt niet langer overeen met deze laag", "isDeleted": "Dit object is verwijderd", "isntAPoint": "Enkel punten kunnen verwijderd worden. Het geselecteerde object is een lijn, een oppervlakte of een relatie.", "loading": "Aan het bekijken of dit object veilig verwijderd kan worden.", @@ -46,7 +48,26 @@ "whyDelete": "Waarom moet dit object van de kaart verwijderd worden?" }, "external": { - "error": "Kon geen gestructureerde informatie uit de website ophalen" + "allAreApplied": "Alle ontbrekende, externe waarden zijn gekopieerd naar OpenStreetMap", + "allIncluded": "Gegevens geladen van {source} staan in OpenStreetMap", + "apply": "Pas toe", + "applyAll": "Alle ontbrekende waarden toepassen", + "conflicting": { + "intro": "OpenStreetMap heeft een andere waarde dan de bronwebsite voor de volgende waarden.", + "title": "Tegenstrijdige items" + }, + "currentInOsmIs": "Op dit moment heeft OpenStreetMap de volgende waarde geregistreerd:", + "done": "Klaar", + "error": "Kon geen gestructureerde informatie uit de website ophalen", + "lastModified": "Externe gegevens zijn voor het laatst gewijzigd op {date}", + "loadedFrom": "De volgende gegevens worden geladen van {source} met behulp van de ingesloten JSON-LD", + "missing": { + "intro": "OpenStreetMap heeft geen informatie over de volgende attributen", + "title": "Ontbrekende items" + }, + "noDataLoaded": "De externe website heeft geen gekoppelde gegevens die kunnen worden geladen", + "overwrite": "Overschrijven in OpenStreetMap", + "title": "Gestructureerde gegevens geladen van de externe website" }, "favourite": { "loginNeeded": "

Log in

Je moet je aanmelden met OpenStreetMap om een persoonlijk thema te gebruiken", @@ -63,7 +84,13 @@ "unmark": "Verwijder van je persoonlijke lijst van favorieten", "unmarkNotDeleted": "Dit item wordt niet verwijderd en is nog steeds zichtbaar op de gepaste kaarten voor jou en anderen" }, - "tab": "Jouw favorieten en beoordelingen" + "downloadGeojson": "Download je favorieten als geojson", + "downloadGpx": "Download je favorieten als GPX", + "intro": "Je hebt {length} locaties gemarkeerd als favoriete locatie.", + "introPrivacy": "Deze lijst is alleen voor jou zichtbaar", + "loginToSeeList": "Log in om de lijst met locaties te zien die je als favoriet hebt gemarkeerd", + "tab": "Jouw favorieten en beoordelingen", + "title": "Je favoriete locaties" }, "flyer": { "aerial": "Deze kaart gebruikt luchtfoto's van het Agentschap Informatie Vlaanderen als achtergrond.\nOok het GRB is beschikbaar als achtergrondlaag.", @@ -71,7 +98,7 @@ "cyclofix": "Fietspompen, -winkels, -bandenautomaten en drinkwaterkraantjes vind je op Cyclofix", "description": "Een horizontale A4 flyer om MapComplete te promoten", "editing": { - "ex": "Een (vereenvoudigd) voorbeeld voor een natuurgebied wordt hieronder getoond:", + "ex": "Een (vereenvoudigd) voorbeeld voor een natuurgebied wordt hieronder getoond.", "intro": "De gebruiker krijgt eerst een kaart met interessepunten te zien. Klik je op een punt, dan wordt de interface met informatie over het interessepunt geopend.", "title": "Hoe ziet de interface eruit?" }, @@ -119,6 +146,7 @@ "confirmLocation": "Bevestig deze locatie", "confirmTitle": "Voeg een {title} toe?", "confirmWarning": "Het object dat je toevoegt, is zichtbaar voor iedereen. Veel applicaties gebruiken deze data, voeg dus enkel punten toe die echt bestaan.", + "creating": "Een nieuw punt aan het maken...", "disableFilters": "Zet alle filters af", "disableFiltersExplanation": "Interessepunten kunnen verborgen zijn door een filter", "enableLayer": "Schakel laag {name} in", @@ -158,6 +186,7 @@ "donate": "Geef MapComplete financiële steun", "editId": "Hier bewerken met de OpenStreetMap online editor", "editJosm": "Hier bewerken met JOSM", + "emailCreators": "Stuur een e-mail naar de makers", "followOnMastodon": "Volg MapComplete op Mastodon", "gotoSourceCode": "Bekijk de broncode", "iconAttribution": { @@ -165,6 +194,7 @@ }, "josmNotOpened": "JOSM was niet bereikbaar. Controleer of het open staat en remote control is geactiveerd", "josmOpened": "JOSM is geopend", + "madeBy": "Gemaakt door {author}", "mapContributionsBy": "De huidige data is bijgedragen door {contributors}", "mapContributionsByAndHidden": "De zichtbare data heeft bijdragen van {contributors} en {hiddenCount} andere bijdragers", "mapDataByOsm": "Kaartgegevens: OpenStreetMap", @@ -173,7 +203,11 @@ "openMapillary": "Open Mapillary op deze locatie", "openOsmcha": "Bekijk de laatste bijdragen gemaakt met {theme}", "openOsmchaLastWeek": "Bekijk aanpassingen van de voorbije 7 dagen", + "openPanoramax": "Open Panoramax hier", + "openThemeDocumentation": "Open de documentatie voor themakaart {name}", + "panoramaxHelp": "Panoramax is een online service die foto's van op straat verzamelt en deze onder een vrije licentie beschikbaar stelt. Bijdragers mogen deze foto's gebruiken om OpenStreetMap te verbeteren", "panoramaxLicenseCCBYSA": "Je foto wordt gepubliceerd met een CC-BY-SA-licentie. Iedereen mag je afbeelding hergebruiken mits naamsvermelding.", + "seeOnMapillary": "Bekijk dit beeld op Mapillary", "themeBy": "Thema gemaakt door {author}", "title": "Copyright en attributie", "translatedBy": "MapComplete werd vertaald door {contributors} en {hiddenCount} meer vertalers" @@ -184,15 +218,26 @@ "backgroundMap": "Selecteer een achtergrondlaag", "backgroundSwitch": "Verander achtergrond", "cancel": "Annuleren", + "clearPendingChanges": "Wis hangende wijzigingen", "confirm": "Bevestigen", "customThemeIntro": "

Onofficiële thema's

De onderstaande thema's heb je eerder bezocht en zijn gemaakt door andere OpenStreetMappers.", + "customThemeTitle": "Eigen thema's", "download": { + "custom": { + "download": "Download een PNG van {width}mm breed en {height}mm hoog", + "downloadHelper": "Dit is bedoeld voor afdrukken", + "height": "Hoogte afbeelding (in mm):", + "title": "Een afbeelding downloaden met een aangepaste breedte en hoogte", + "width": "Breedte van afbeelding (in mm): " + }, "downloadAsPdf": "Download een PDF van de huidig zichtbare kaart", "downloadAsPdfHelper": "Perfect om de huidige kaart af te printen", "downloadAsPng": "Download als afbeelding", "downloadAsPngHelper": "Perfect om in rapporten op te nemen", "downloadAsSvg": "Download de huidige kaart als SVG", "downloadAsSvgHelper": "Compatibel met Inkscape of Adobe Illustrator; deze data moeten nog verder verwerkt worden…", + "downloadAsSvgLinesOnly": "Download een SVG van de huidige kaart met uitsluitend lijnen", + "downloadAsSvgLinesOnlyHelper": "Zelfdoorsnijdende lijnen worden opgebroken, kan worden gebruikt met bepaalde 3D-software", "downloadCSV": "Download de zichtbare data als CSV", "downloadCSVHelper": "Compatibel met LibreOffice Calc, Excel, …", "downloadFeatureAsGeojson": "Downloaden als GeoJSON bestand", @@ -201,17 +246,31 @@ "downloadGeojson": "Download de zichtbare data als GeoJSON", "downloadGpx": "Downloaden als GPX-bestand", "downloadGpxHelper": "De meeste navigatie toestellen en applicaties kunnen een GPX-bestand openen", + "downloadImage": "Download afbeelding", "exporting": "Aan het exporteren…", "includeMetaData": "Exporteer metadata (zoals laatste aanpassing, berekende waardes, …)", "licenseInfo": "

Copyright

De voorziene data is beschikbaar onder de ODbL. Het hergebruiken van deze data is gratis voor elke toepassing, maar
  • de bronvermelding © OpenStreetMap bijdragers is vereist
  • Elke wijziging aan deze data moet opnieuw gepubliceerd worden onder dezelfde licentie
Gelieve de volledige licentie te lezen voor details", "noDataLoaded": "Er is nog geen data ingeladen. Downloaden kan zodra de data geladen is.", + "pdf": { + "current_view_generic": "Exporteer een PDF van de huidige weergave naar {paper_size} in {orientation} oriëntatie" + }, "title": "Download", + "toMuch": "Er zijn te veel eigenschappen om ze allemaal te downloaden", "uploadGpx": "Track uploaden naar OpenStreetMap" }, + "enableGeolocationForSafari": "Heb je de pop-up niet gekregen om toestemming voor locatie te vragen?", + "enableGeolocationForSafariLink": "Leer hoe je toestemming voor locatie kunt inschakelen in de instellingen", + "eraseValue": "Wis deze waarde", "error": "Er ging iets mis", "example": "Voorbeeld", "examples": "Voorbeelden", "fewChangesBefore": "Gelieve eerst enkele vragen van bestaande objecten te beantwoorden vooraleer zelf objecten toe te voegen.", + "filterPanel": { + "allTypes": "Alle types", + "disableAll": "Alles uitschakelen", + "enableAll": "Alles inschakelen" + }, + "geopermissionDenied": "Locatietoestemming werd geweigerd", "getStartedLogin": "Login met OpenStreetMap om te beginnen", "getStartedNewAccount": " of maak een nieuwe account aan", "goToInbox": "Ga naar de berichten", @@ -222,6 +281,7 @@ "background": "Kies achtergrondlaag", "filter": "Filter data", "jumpToLocation": "Ga naar jouw locatie", + "locationNotAvailable": "GPS-locatie niet beschikbaar. Heeft dit apparaat een locatie of bevindt je je in een tunnel?", "menu": "Menu", "zoomIn": "Zoom in", "zoomOut": "Zoom uit" @@ -306,7 +366,7 @@ "generatedWith": "Gemaakt met mapcomplete.org/{layoutid}", "versionInfo": "v{version} - gemaakt op {date}" }, - "pickLanguage": "Kies je taal: ", + "pickLanguage": "Kies je taal", "poweredByOsm": "Gebouwd met OpenStreetMap", "questionBox": { "answeredMultiple": "Je beantwoordde {answered} vragen", diff --git a/langs/themes/el.json b/langs/themes/el.json index 0967ef424..7a73a41bf 100644 --- a/langs/themes/el.json +++ b/langs/themes/el.json @@ -1 +1,2 @@ -{} +{ +} \ No newline at end of file diff --git a/langs/themes/fr.json b/langs/themes/fr.json index fdffc9531..62482304c 100644 --- a/langs/themes/fr.json +++ b/langs/themes/fr.json @@ -94,6 +94,7 @@ "title": "Bancs" }, "bicycle_parkings": { + "description": "Une carte qui présente tous les types de parkings vélos", "title": "Stationnement vélo" }, "bicycle_rental": { @@ -119,7 +120,7 @@ "title": "Microbibliothèques" }, "cafes_and_pubs": { - "description": "Bars et pubs", + "description": "Cafés, pubs et bars", "title": "Cafés et pubs" }, "campersite": { @@ -151,6 +152,16 @@ "shortDescription": "Une carte mondiale des points de recharge", "title": "Points de recharge" }, + "circular_economy": { + "layers": { + "5": { + "override": { + "=name": "Commerces de produits d'occasion" + } + } + }, + "title": "Économie circulaire" + }, "climbing": { "description": "Cette carte indique les sites d’escalade comme les salles d’escalade ou les sites naturels.", "descriptionTail": "La carte des sites d'escalade a été créée par Christian Neumann. Merci de le contacter pour des avis ou des questions.

Ce projet utilise les données OpenStreetMap.

", @@ -223,7 +234,7 @@ "then": "Ce commerce ne répare pas les chaussons d'escalade" } }, - "question": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?" + "question": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?" } }, "=presets": { @@ -253,7 +264,7 @@ "description": "Cette carte montre les réseaux de nœuds cyclistes et vous permet d'ajouter facilement de nouveaux nœuds", "layers": { "0": { - "name": "liens noeud à noeud", + "name": "Liens nœud à nœud", "tagRenderings": { "node2node-survey:date": { "override": { @@ -265,14 +276,14 @@ "title": { "mappings": { "0": { - "then": "lien noeud à noeud {ref}" + "then": "Lien nœud à nœud {ref}" } }, - "render": "lien noeud à noeud" + "render": "Lien nœud à nœud" } }, "1": { - "name": "noeuds", + "name": "Nœuds", "tagRenderings": { "node-expected_rcn_route_relations": { "question": "A combien dautres nœuds vélo ce nœud est-il lié ?", @@ -293,6 +304,14 @@ }, "render": "nœud cycliste" } + }, + "2": { + "override": { + "name": "Panneaux directionnels cyclables", + "title": { + "render": "Panneau directionnel cyclable" + } + } } }, "title": "Réseau de Nœuds Cyclistes" @@ -382,7 +401,7 @@ "title": "Rue cyclables" }, "cyclofix": { - "description": "Le but de cette carte est de présenter aux cyclistes une solution facile à utiliser pour trouver l'infrastructure appropriée à leurs besoins.

Vous pouvez suivre votre localisation précise (mobile uniquement) et sélectionner les couches qui vous concernent dans le coin inférieur gauche. Vous pouvez également utiliser cet outil pour ajouter ou modifier des épingles (points d'intérêt) sur la carte et fournir plus de données en répondant aux questions.

Toutes les modifications que vous apportez seront automatiquement enregistrées dans la base de données mondiale d'OpenStreetMap et peuvent être librement réutilisées par d'autres.

Pour plus d'informations sur le projet cyclofix, rendez-vous sur cyclofix.osm.be.", + "description": "Une carte pour permettre aux cyclistes de trouver les infrastructures appropriées à leurs besoins, telles que des pompes à vélo, de l'eau potable, des vélocystes, des stations de réparation ou des parkings.", "title": "Cyclofix - une carte pour les cyclistes" }, "drinking_water": { @@ -433,7 +452,7 @@ } }, "shortDescription": "Quelle est l'origine de ce toponyme ?", - "title": "Étymologie - d'où les rues tirent leur nom ?" + "title": "Étymologie - d'où les lieux tirent leur nom ?" }, "facadegardens": { "description": "Les jardins muraux en ville n’apportent pas seulement paix et tranquillité mais contribuent à embellir la ville, favoriser la biodiversité, régule la température et assainit l’air.
Klimaan VZW et Mechelen Klimaatneutraal veulent cartographier les jardins muraux comme exemple pour les personnes souhaitant en construire ainsi que celles aimant la nature.
Plus d’infos sur klimaan.be.", @@ -522,6 +541,9 @@ "shortDescription": "Cette carte indique les murs végétalisés avec des photos et des informations comme leur orientation, l’ensoleillement et le type de plantes.", "title": "Jardins de façade" }, + "fireplace": { + "description": "Lieu extérieur pour faire un feu ou barbecue fixe dans un lieu officiel." + }, "food": { "description": "Restaurants et restaurants à service rapide", "title": "Restaurants et restaurants rapides" @@ -541,6 +563,31 @@ "description": "Les vélos fantômes sont des mémoriaux pour les cyclistes tuées sur la route, prenant la forme de vélos blancs placés à proximité des faits.

Cette carte indique leur emplacement à partir d’OpenStreetMap. Il est possible de contribuer aux informations ici, sous réserve d’avoir un compte OpenStreetMap (gratuit).

Il existe un compte automatisé Mastodon qui publie un aperçu mensuel des vélos fantômes à travers le monde

", "title": "Vélo fantôme" }, + "ghostsigns": { + "description": "Une carte montrant les enseignes désaffectées sur des bâtiments", + "layers": { + "2": { + "override": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "Cette œuvre d'art est une publicité historique" + }, + "1": { + "then": "Cette œuvre d'art n'est pas une publicité historique" + } + }, + "question": "Est-ce que cette œuvre d'art est une publicité historique ?" + } + } + } + } + } + }, + "glutenfree": { + "title": "Sans gluten" + }, "grb": { "description": "Ce thème tente d’aider l’import automatique GRB.", "layers": { @@ -602,6 +649,9 @@ "description": "Sur cette carte, vous trouverez les hôtels dans votre zone", "title": "Hôtels" }, + "icecream": { + "title": "Glace" + }, "indoors": { "description": "Sur cette carte, les lieux intérieurs accessibles au public sont montrés", "title": "Intérieurs" @@ -622,6 +672,89 @@ }, "title": "Ressauts et traversées" }, + "lighthouses": { + "description": "Les phares sont des hauts bâtiments avec une lumière au sommet pour guider le trafic maritime.", + "title": "Phares" + }, + "mapcomplete-changes": { + "description": "Cette carte montre tous les changements effectués avec MapComplete", + "layers": { + "0": { + "filter": { + "0": { + "options": { + "0": { + "question": "Le nom du thème contient {search}" + } + } + }, + "1": { + "options": { + "0": { + "question": "Le nom du thème ne contient pas {search}" + } + } + }, + "2": { + "options": { + "0": { + "question": "Fait par le·a contributeur·trice {search}" + } + } + }, + "3": { + "options": { + "0": { + "question": "Pas fait par le·a contributeur·trice {search}" + } + } + }, + "4": { + "options": { + "0": { + "question": "Fait avant {search}" + } + } + }, + "5": { + "options": { + "0": { + "question": "Fait après {search}" + } + } + }, + "6": { + "options": { + "0": { + "question": "Langage utilisateur (code iso) {search}" + } + } + } + }, + "name": "Centre du groupe de modifications", + "tagRenderings": { + "contributor": { + "render": "Modification faite par {user}" + }, + "version": { + "question": "Quelle version de MapCompletee a été utilisée pour faire cette modification ?", + "render": "Fait avec {editor}" + } + } + }, + "1": { + "override": { + "tagRenderings+": { + "0": { + "render": "Plus de statistiques peuvent être trouvées ici" + } + } + } + } + }, + "shortDescription": "Afficher les modifications faites avec MapComplete", + "title": "Modifications faites avec MapComplete" + }, "maproulette": { "description": "Thème MapRoulette permettant d’afficher, rechercher, filtrer et résoudre les tâches.", "title": "Tâches MapRoulette" @@ -730,6 +863,49 @@ }, "title": "OnWheels" }, + "openlovemap": { + "description": "

L'amour au creux de votre main

Open Love Map répertorie diverses informations pour adultes telles que des maisons closes, des magasins érotiques ou des clubs de strip-tease.", + "layers": { + "2": { + "override": { + "=presets": { + "0": { + "title": "un magasin érotique" + } + }, + "name": "Magasins érotiques" + } + }, + "4": { + "override": { + "=presets": { + "0": { + "title": "un distributeur de préservatifs" + } + } + } + }, + "6": { + "override": { + "=presets": { + "0": { + "title": "un cinéma érotique" + } + } + } + }, + "9": { + "override": { + "+tagRenderings": { + "0": { + "question": "De quel type d'hôtel s'agit-il ?" + } + } + } + } + }, + "title": "Open Love Map" + }, "openwindpowermap": { "description": "Une carte indiquant les éoliennes et permettant leur édition.", "title": "Générateurs d'énergie éolienne" @@ -821,6 +997,7 @@ "title": "Commerces" }, "ski": { + "description": "Tout ce dont vous avez besoin pour aller skier", "title": "Pistes de ski et remontées mécaniques" }, "sport_pitches": { @@ -1000,7 +1177,7 @@ "title": "Déchets" }, "waste_basket": { - "description": "Retrouvez les poubelles près de vous. Si une poubelle est manquante, vous pouvez l’ajouter vous même", + "description": "Retrouvez les poubelles près de vous. Si une poubelle est manquante, vous pouvez l’ajouter vous même.", "shortDescription": "Une carte des poubelles", "title": "Poubelles" } diff --git a/langs/themes/nl.json b/langs/themes/nl.json index 12a1b877d..e976bb496 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -88,25 +88,29 @@ } } }, - "shortDescription": "BAG import helper tool", - "title": "BAG import helper" + "shortDescription": "BAG-importeerhulptool", + "title": "BAG-importeerhulp" }, "benches": { "description": "Deze kaart toont alle zitbanken die zijn opgenomen in OpenStreetMap: individuele banken en banken bij bushaltes.", "shortDescription": "Een kaart van zitbanken", "title": "Zitbanken" }, + "bicycle_parkings": { + "description": "Een kaart met alle soorten fietsenstallingen", + "title": "Fietsenstallingen" + }, "bicycle_rental": { - "description": "Op deze kaart vind je verschillende fietsverhuurpunten en fietsverhuurzaken", + "description": "Op deze kaart vind je de verschillende fietsverhuurpunten en fietsverhuurzaken die gekend zijn door OpenStreetMap", "shortDescription": "Een kaart met fietsverhuurpunten en fietsverhuurzaken", "title": "Fietsverhuur" }, "bicyclelib": { - "description": "Een fietsbibliotheek is een plaats waar men een fiets kan lenen, vaak voor een klein bedrag per jaar. Een typisch voorbeeld zijn kinderfietsbibliotheken, waar men een fiets op maat van het kind kan lenen. Is het kind de fiets ontgroeid, dan kan het te kleine fietsje omgeruild worden voor een grotere.", + "description": "Een fietsbibliotheek is een plaats waar men een fiets kan lenen, vaak voor een klein bedrag per jaar. Een typisch voorbeeld zijn kinderfietsbibliotheken, waar men een fiets op maat van het kind kan lenen. Is het kind de fiets ontgroeid, dan kan het te kleine fietsje omgeruild worden voor een grotere", "title": "Fietsbibliotheken" }, "binoculars": { - "description": "Een kaart met verrekijkers die op een vaste plaats zijn gemonteerd", + "description": "Een kaart met verrekijkers die op een vaste plaats zijn gemonteerd.", "shortDescription": "Een kaart met publieke verrekijker", "title": "Verrekijkers" }, @@ -119,11 +123,11 @@ "title": "Boekenruilkasten" }, "cafes_and_pubs": { - "description": "Cafés, kroegen en drinkgelegenheden", + "description": "Koffiehuizen, Cafés, en drinkgelegenheden", "title": "Cafés" }, "campersite": { - "description": "Deze website verzamelt en toont alle officiële plaatsen waar een camper mag overnachten en afvalwater kan lozen. Ook jij kan extra gegevens toevoegen, zoals welke services er geboden worden en hoeveel dit kot, ook afbeeldingen en reviews kan je toevoegen. De data wordt op OpenStreetMap opgeslagen en is dus altijd gratis te hergebruiken, ook door andere applicaties.", + "description": "Deze website verzamelt en toont alle officiële plaatsen waar een camper mag overnachten en afvalwater kan lozen. Ook jij kan extra gegevens toevoegen, zoals welke services er geboden worden en hoeveel dit kost. Voeg afbeeldingen en reviews toe.", "overrideAll": { "tagRenderings+": { "0": { @@ -151,8 +155,19 @@ "shortDescription": "Een wereldwijde kaart van oplaadpunten", "title": "Oplaadpunten" }, + "circular_economy": { + "description": "Verschillende items die mensen helpen om te delen, te hergebruiken of te recycleren.", + "layers": { + "5": { + "override": { + "=name": "Tweedehandswinkels" + } + } + }, + "title": "Circulaire economie" + }, "climbing": { - "description": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, bolderzalen en klimmen in de natuur", + "description": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, boulderzalen en klimmen in de natuur.", "descriptionTail": "De klimkaart is oorspronkelijk gemaakt door Christian Neumann op kletterspots.de.", "layers": { "0": { @@ -193,6 +208,45 @@ } } } + }, + "1": { + "override": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "Deze winkel repareert bergschoenen" + }, + "1": { + "then": "Deze winkel repareert geen bergschoenen" + } + }, + "question": "Repareert deze schoenwinkel bergschoenen?" + } + } + } + }, + "2": { + "override": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "Deze winkel repareert bergschoenen" + }, + "1": { + "then": "Deze winkel repareert geen bergschoenen" + } + }, + "question": "Repareert deze schoenmaker ook bergschoenen?" + } + }, + "=presets": { + "0": { + "title": "een schoenmaker" + } + } + } } }, "title": "Klimzalen, klimclubs en klimgelegenheden" @@ -272,6 +326,23 @@ }, "render": "Fietsknooppunt" } + }, + "2": { + "override": { + "name": "Fietswegwijzers", + "title": { + "render": "Fietswegwijzer" + } + } + }, + "3": { + "override": { + "presets": { + "0": { + "title": "een knooppuntwegwijzer" + } + } + } } }, "title": "Fietsknooppuntennetwerken" @@ -361,17 +432,25 @@ "title": "Fietsstraten en fietszones" }, "cyclofix": { - "description": "Het doel van deze kaart is om fietsers een gebruiksvriendelijke oplossing te bieden voor het vinden van de juiste infrastructuur voor hun behoeften.

U kunt uw exacte locatie volgen (enkel mobiel) en in de linkerbenedenhoek categorieën selecteren die voor u relevant zijn. U kunt deze tool ook gebruiken om 'spelden' aan de kaart toe te voegen of te bewerken en meer gegevens te verstrekken door de vragen te beantwoorden.

Alle wijzigingen die u maakt worden automatisch opgeslagen in de wereldwijde database van OpenStreetMap en kunnen door anderen vrij worden hergebruikt.

Bekijk voor meer info over cyclofix ook cyclofix.osm.be.", + "description": "Een kaart waarop fietsers gepaste infrastructuur kunnen vinden zoals fietspompen, drinkwater, fietsenwinkels, reparatiepunten of stallingen.", "title": "Cyclofix - een kaart voor fietsers" }, + "disaster_response": { + "description": "Deze kaart bevat elementen die bedoeld zijn voor rampbestrijding en -voorbereiding.", + "title": "Rampbestrijding en hulpdiensten" + }, "drinking_water": { "description": "Op deze kaart staan publiek toegankelijke drinkwaterpunten en kan je makkelijk een nieuw drinkwaterpunt toevoegen", "title": "Drinkwaterpunten" }, "education": { - "description": "Deze kaart toont info over verschillende onderwijsinstellingen zoals kleuterscholen, middelbare scholen en tertiair onderwijs.", + "description": "Deze kaart toont info over scholen en onderwijsinstellingen. Je kan er gemakkelijk meer informatie aan toevoegen", "title": "Onderwijs" }, + "elongated_coin": { + "description": "Zoek muntpersen om uitgerokken munten te maken.", + "title": "Muntpersen" + }, "etymology": { "description": "Op deze kaart zie je waar een plaats naar is vernoemd. De straten, gebouwen, ... komen uit OpenStreetMap, waar een link naar Wikidata werd gelegd. In de popup zie je het Wikipedia-artikel van hetgeen naarwaar het vernoemd is of de Wikidata-box.

Je kan zelf ook meehelpen!Als je ver inzoomt, krijg je alle straten te zien. Klik je een straat aan, dan krijg je een zoekfunctie waarmee je snel een nieuwe link kan leggen. Je hebt hiervoor een gratis OpenStreetMap account nodig.", "layers": { @@ -412,7 +491,7 @@ } }, "shortDescription": "Wat is de oorsprong van een plaatsnaam?", - "title": "Etymologie - waarnaar is een straat vernoemd?" + "title": "Etymologie - waarnaar is een plaats naar vernoemd?" }, "facadegardens": { "description": "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.", @@ -501,15 +580,34 @@ "shortDescription": "Deze kaart toont geveltuintjes met foto's en bruikbare info over oriëntatie, zonlicht en planttypes.", "title": "Straatgeveltuintjes" }, + "fireplace": { + "description": "Buitenruimte om een vuur te maken of een vaste barbecue op een officiële plaats.", + "title": "Haarden en barbecues" + }, "food": { - "description": "Restaurants en fast food", - "title": "Eetgelegenheden" + "description": "Restaurants en fastfood", + "title": "Restaurants en fastfood" }, "fritures": { "description": "Op deze kaart vind je je favoriete frituur!", "layers": { "0": { "override": { + "filter+": { + "0": { + "options": { + "0": { + "question": "Geen voorkeur voor een bepaald type frituurolie" + }, + "1": { + "question": "Toon enkel frituren die plantaardige frituurolie gebruiken" + }, + "2": { + "question": "Toon enkel frituren die dierlijk frietvet gebruiken" + } + } + } + }, "name": "Frituren" } } @@ -517,9 +615,36 @@ "title": "Friturenkaart" }, "ghostbikes": { - "description": "Een Witte Fiets of Spookfiets is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat om een fiets die volledig wit is geschilderd en in de buurt van het ongeval werd geinstalleerd.

Op deze kaart zie je alle witte fietsen die door OpenStreetMap gekend zijn. Ontbreekt er een Witte Fiets of wens je informatie aan te passen? Meld je dan aan met een (gratis) OpenStreetMap account.", + "description": "Een Witte Fiets of Spookfiets is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat om een fiets die volledig wit is geschilderd en in de buurt van het ongeval werd geplaatst.

Op deze kaart zie je alle witte fietsen die door OpenStreetMap gekend zijn. Ontbreekt er een Witte Fiets of wens je informatie aan te passen? Meld je dan aan met een (gratis) OpenStreetMap account.

Er bestaat een geautomatiseerd account op Mastodon dat maandelijks een overzicht van spookfietsen wereldwijd post

", "title": "Witte Fietsen" }, + "ghostsigns": { + "description": "Een kaart met ongebruikte borden op gebouwen", + "layers": { + "2": { + "override": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "Dit kunstwerk is een historische advertentie" + }, + "1": { + "then": "Dit kunstwerk is geen historische advertentie" + } + }, + "question": "Is dit kunstwerk een historische advertentie?" + } + } + } + } + }, + "title": "Spookreclames" + }, + "glutenfree": { + "description": "Een gecrowdsourcete kaart met glutenvrije artikelen", + "title": "Glutenvrij" + }, "grb": { "description": "Dit thema helpt het GRB importeren.", "layers": { @@ -528,34 +653,8 @@ "building type": { "question": "Wat voor soort gebouw is dit?" }, - "grb-fixme": { - "mappings": { - "0": { - "then": "Geen fixme" - } - }, - "question": "Wat zegt de fixme?", - "render": "De fixme is {fixme}" - }, - "grb-housenumber": { - "mappings": { - "0": { - "then": "Geen huisnummer" - } - }, - "question": "Wat is het huisnummer?", - "render": "Het huisnummer is {addr:housenumber}" - }, - "grb-min-level": { - "question": "Hoeveel verdiepingen ontbreken?", - "render": "Dit gebouw begint maar op de {building:min_level} verdieping" - }, - "grb-street": { - "question": "Wat is de straat?", - "render": "De straat is {addr:street}" - }, - "grb-unit": { - "render": "De wooneenheid-aanduiding is {addr:unit} " + "grb-reference": { + "render": "Werd geïmporteerd vanuit GRB, het referentienummer is {source:geometry:ref}" } } }, @@ -572,35 +671,12 @@ } } } - }, - "5": { - "override": { - "tagRenderings+": { - "0": { - "mappings": { - "0": { - "then": "Geen omliggend OSM-gebouw gevonden" - } - } - }, - "3": { - "mappings": { - "0": { - "then": "Geen omliggend OSM-gebouw gevonden. Een omliggend gebouw is nodig om dit punt als adres punt toe te voegen.
Importeer eerst de gebouwen. Vernieuw dan de pagina om losse adressen toe te voegen
" - } - }, - "render": { - "special": { - "text": "Voeg dit adres als een nieuw adrespunt toe" - } - } - } - } - } } - }, - "shortDescription": "Grb import helper tool", - "title": "GRB import helper" + } + }, + "guideposts": { + "description": "Wegwijzers (ook wel handwijzer genoemd) zijn vaak te vinden langs officiële wandel-, fiets-, ski- of paardrijroutes om de richtingen naar verschillende bestemmingen aan te geven. Vaak zijn ze vernoemd naar een regio of plaats en geven ze de hoogte aan.\n\nDe positie van een wegwijzer kan door een wandelaar/fietser/renner/skiër worden gebruikt als bevestiging van de huidige positie, vooral als ze een gedrukte kaart zonder GPS-ontvanger gebruiken. ", + "title": "Wegwijzers" }, "hackerspaces": { "description": "Op deze kaart kan je hackerspaces zien, toevoegen en updaten", @@ -637,10 +713,18 @@ "description": "Op deze kaart vind je hotels in je omgeving", "title": "Hotels" }, + "icecream": { + "description": "Een kaart met ijssalons en ijsautomaten", + "title": "IJs" + }, "indoors": { "description": "Op deze kaart worden publiek toegankelijke binnenruimtes getoond", "title": "Binnenruimtes" }, + "items_with_image": { + "description": "Een kaart die alle items op OSM toont die een afbeelding hebben. Dit thema past heel slecht bij MapComplete omdat het niet mogelijk is een afbeelding toe te voegen. Dit thema is er vooral om alles in de database op te nemen, waardoor het snel afbeeldingen in de buurt kan ophalen voor andere functies", + "title": "Alle items met afbeeldingen" + }, "kerbs_and_crossings": { "description": "Een kaart met stoepranden en oversteekplaatsen.", "layers": { @@ -657,8 +741,143 @@ }, "title": "Stoepranden en oversteekplaatsen" }, + "lactosefree": { + "description": "Een gecrowdsourcete kaart met lactosevrije winkels en restaurants", + "title": "Lactosevrije winkels en restaurants" + }, + "lighthouses": { + "description": "Vuurtorens zijn hoge gebouwen met een licht erop om het scheepvaartverkeer te leiden.", + "title": "Vuurtorens" + }, + "mapcomplete-changes": { + "description": "Deze kaarten tonen alle wijzigingen die zijn gemaakt met MapComplete", + "layers": { + "0": { + "description": "Toon alle MapComplete-wijzigingen", + "filter": { + "0": { + "options": { + "0": { + "question": "Themanaam bevat {search}" + } + } + }, + "1": { + "options": { + "0": { + "question": "Themanaam bevat geen {search}" + } + } + }, + "10": { + "options": { + "0": { + "question": "Thema etymologie uitsluiten" + } + } + }, + "2": { + "options": { + "0": { + "question": "Toegevoegd door {search}" + } + } + }, + "3": { + "options": { + "0": { + "question": "Niet toegevoegd door {search}" + } + } + }, + "4": { + "options": { + "0": { + "question": "Toegevoegd vóór {search}" + } + } + }, + "5": { + "options": { + "0": { + "question": "Toegevoegd na {search}" + } + } + }, + "6": { + "options": { + "0": { + "question": "Gebruikerstaal (iso-code) {search}" + } + } + }, + "7": { + "options": { + "0": { + "question": "Gemaakt met {search}" + } + } + }, + "8": { + "options": { + "0": { + "question": "Changeset voegde minstens één afbeelding toe" + } + } + }, + "9": { + "options": { + "0": { + "question": "GRB-thema uitsluiten" + } + } + } + }, + "name": "Changeset centra", + "tagRenderings": { + "contributor": { + "question": "Welke bijdrager maakte deze verandering?", + "render": "Wijziging aangebracht door {user}" + }, + "host": { + "question": "Met welke host (website) is deze wijziging gemaakt?", + "render": "Gewijzigd met {host}" + }, + "locale": { + "question": "In welke 'locale' (taal) is deze wijziging gemaakt?", + "render": "De gebruikerstaal (locale) is {locale}" + }, + "show_changeset_id": { + "render": "Changeset {id}" + }, + "theme-id": { + "question": "Welk thema werd gebruikt voor deze wijziging?", + "render": "Verander met thema {theme}" + }, + "version": { + "question": "Welke versie van MapComplete is gebruikt voor deze wijziging?", + "render": "Gemaakt met {editor}" + } + }, + "title": { + "render": "Changeset voor {theme}" + } + }, + "1": { + "override": { + "tagRenderings+": { + "0": { + "render": "Meer statistieken vind je hier" + } + } + } + } + }, + "shortDescription": "Toont wijzigingen gemaakt met MapComplete", + "title": "Wijzigingen gemaakt met MapComplete" + }, "maproulette": { - "description": "Thema met MapRoulette taken, waar je ze kunt zoeken, filteren en ze oplossen.", + "description": "Thema met MapRoulette taken, waar je ze kunt zoeken, filteren en oplossen.", "title": "MapRoulette taken" }, "maps": { @@ -667,7 +886,7 @@ "title": "Een kaart van kaarten" }, "maxspeed": { - "description": "Deze kaart toont de maximum toegestane snelheid voor elke weg. Als er een maximumsnelheid mist of niet klopt, kan je hem hier aanpassen.", + "description": "Deze kaart toont de maximum toegestane snelheid voor elke weg. Als er een maximumsnelheid ontbreekt of niet klopt, kan je deze hier aanpassen.", "shortDescription": "Deze kaart toont de maximumsnelheid voor elke straat.", "title": "Maximale snelheden" }, @@ -690,7 +909,7 @@ "title": "Uitkijktorens" }, "onwheels": { - "description": "Op deze kaart kan je informatie rond rolstoeltoegankelijkheid zien, zoals toegangsdeuren met hun breedte en drempelhoogte, toiletten met toegankelijkheidsinformatie, recepties maar ook winkels, cafés en restaurants.", + "description": "Op deze kaart kan je rolstoeltoegankelijke plaatsen vinden en toevoegen", "layers": { "19": { "override": { @@ -765,6 +984,79 @@ }, "title": "OnWheels" }, + "openlovemap": { + "description": "

Liefde in de palm van je hand

Open Love Map geeft een overzicht van verschillende items voor volwassenen, zoals bordelen, erotische winkels en stripclubs.", + "layers": { + "2": { + "override": { + "=presets": { + "0": { + "title": "een erotiekwinkel" + } + }, + "name": "Erotiekwinkels", + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Deze winkel biedt soft BDSM-accessoires, zoals zachte handboeien, een 'fifty-shade-of-grey'-starterset, ..." + }, + "1": { + "then": "Deze winkel biedt gespecialiseerde BDSM-benodigdheden, zoals spreidstangen, benodigdheden voor naaldspellen, medische bondagebenodigdheden, slagwerktuigen, kluisters, metalen kleuren, boeien, tepelklemmen, shibari-accessoires, ..." + }, + "2": { + "then": "Deze winkel biedt 'pet play'-accessoires, zoals puppymaskers, dierenmaskers, ponyspellen, staarten, hoefschoenen, ..." + }, + "3": { + "then": "Deze winkel biedt leren kledij aan, waaronder broeken en shirts die je in het dagelijks leven kunt gebruiken tot en met leren harnassen" + }, + "4": { + "then": "Deze winkel biedt uniformen voor rollenspelen aan, zoals verpleegsteruniformen, militaire uniformen, politie, schoolmeisje, Franse dienstmeid, ..." + } + }, + "question": "Biedt deze winkel fetisjspullen aan?" + } + } + } + }, + "4": { + "override": { + "=presets": { + "0": { + "title": "een condoomautomaat" + } + } + } + }, + "6": { + "override": { + "=presets": { + "0": { + "title": "een erotiekcinema" + } + } + } + }, + "9": { + "override": { + "+tagRenderings": { + "0": { + "question": "Welk type hotel is dit?" + } + } + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Heeft {title()} een privévideocabine?", + "questionHint": "Dit is voor gebruik door één persoon." + } + } + }, + "title": "Open Love Kaart" + }, "openwindpowermap": { "description": "Een kaart om windturbines te tonen en te bewerken.", "title": "Windmolens" @@ -780,7 +1072,7 @@ "title": "Parking" }, "personal": { - "description": "Stel je eigen thema samen door lagen te combineren van alle andere themas", + "description": "Stel je eigen thema samen door lagen te combineren van alle andere themas. Open Selectie lagen om gegevens te tonen", "title": "Persoonlijk thema" }, "pets": { @@ -803,7 +1095,7 @@ "override": { "presets": { "0": { - "description": "Een winkel waar je je hond in bijna heel de winkel mag meenemen", + "description": "Een winkel waar je je hond in bijna overal mag meenemen", "title": "Hondvriendelijke winkels" } } @@ -812,11 +1104,6 @@ }, "title": "Dierenartsen, hondenloopzones en andere huisdiervriendelijke plaatsen" }, - "play_forests": { - "description": "Een speelbos is een zone in een bos die vrij toegankelijk is voor spelende kinderen. Deze wordt in bossen van het Agentschap Natuur en bos altijd aangeduid met het overeenkomstige bord.", - "shortDescription": "Deze kaart toont speelbossen", - "title": "Speelbossen" - }, "playgrounds": { "description": "Op deze kaart vind je speeltuinen en kan je zelf meer informatie en foto's toevoegen", "shortDescription": "Een kaart met speeltuinen", @@ -847,7 +1134,7 @@ "title": "Postcodes" }, "postboxes": { - "description": "Op deze kaart kan je informatie over brievenbussen en postkantoren vinden en toevoegen. Je kan deze kaart gebruiken om te achterhalen waar je je volgende postkaart naar kan sturen! :)
Zie je een fout of ontbreekt een brievenbus? Dan kan je deze kaart aanpassen met een gratis OpenStreetMap account. ", + "description": "Op deze kaart kan je informatie over brievenbussen en postkantoren vinden en toevoegen. Je kan deze kaart gebruiken om te achterhalen waar je je volgende postkaart naar kan sturen! :)
Vond je een fout of ontbreekt een brievenbus? Dan kan je deze kaart aanpassen met een gratis OpenStreetMap account.", "layers": { "3": { "override": { @@ -863,7 +1150,14 @@ }, "question": "Is deze winkel een post-partner?" } - } + }, + "=presets": { + "0": { + "description": "Als een winkel nog niet op de kaart staat en een postpartner is, kun je deze hier toevoegen.", + "title": "een ontbrekende winkel die postpartner is" + } + }, + "description": "Een nieuwe postpartner toevoegen aan de kaart in een bestaande winkel" } } }, @@ -871,7 +1165,7 @@ "title": "Brievenbussen en postkantoren" }, "rainbow_crossings": { - "description": "Deze kaart toont zebrapaden die in regenboogkleuren of pridekleuren geschilderd zijn.", + "description": "Op deze kaart vind je regenboogzebrapaden en kan je er toevoegen", "title": "Regenboogzebrapaden" }, "shops": { @@ -879,46 +1173,9 @@ "shortDescription": "Een bewerkbare kaart met simpele informatie over winkels", "title": "Winkels" }, - "speelplekken": { - "description": "

Welkom bij de Groendoener!

De Zuidrand dat is spelen, ravotten, chillen, wandelen,… in het groen. Meer dan 200 grote en kleine speelplekken liggen er in parken, in bossen en op pleintjes te wachten om ontdekt te worden. De verschillende speelplekken werden getest én goedgekeurd door kinder- en jongerenreporters uit de Zuidrand. Met leuke challenges dagen de reporters jou uit om ook op ontdekking te gaan. Klik op een speelplek op de kaart, bekijk het filmpje en ga op verkenning!

Het project groendoener kadert binnen het strategisch project Beleefbare Open Ruimte in de Antwerpse Zuidrand en is een samenwerking tussen het departement Leefmilieu van provincie Antwerpen, Sportpret vzw, een OpenStreetMap-België Consultent en Createlli vzw. Het project kwam tot stand met steun van Departement Omgeving van de Vlaamse Overheid.
", - "layers": { - "6": { - "name": "Wandelroutes van provincie Antwerpen", - "tagRenderings": { - "walk-description": { - "render": "

Korte beschrijving:

{description}" - }, - "walk-length": { - "render": "Deze wandeling is {_length:km}km lang" - }, - "walk-operator": { - "question": "Wie beheert deze wandeling en plaatst dus de signalisatiebordjes?" - }, - "walk-operator-email": { - "question": "Naar wie kan men emailen bij problemen rond signalisatie?", - "render": "Bij problemen met signalisatie kan men emailen naar {operator:email}" - }, - "walk-type": { - "mappings": { - "0": { - "then": "Dit is een internationale wandelroute" - }, - "1": { - "then": "Dit is een nationale wandelroute" - }, - "2": { - "then": "Dit is een regionale wandelroute" - }, - "3": { - "then": "Dit is een lokale wandelroute" - } - } - } - } - } - }, - "shortDescription": "Speelplekken in de Antwerpse Zuidrand", - "title": "Welkom bij de groendoener!" + "ski": { + "description": "Alles om te skiën", + "title": "Skipistes en kabelbanen" }, "sport_pitches": { "description": "Een sportveld is een ingerichte plaats met infrastructuur om een sport te beoefenen", @@ -1040,14 +1297,10 @@ }, "title": "Straatverlichting" }, - "street_lighting_assen": { - "description": "Op deze kaart vind je alles over straatlantaarns + een dataset van Assen", - "title": "Straatverlichting - Assen" - }, "surveillance": { "description": "Op deze open kaart kan je bewakingscamera's vinden.", "shortDescription": "Bewakingscameras en dergelijke", - "title": "Surveillance under Surveillance" + "title": "Bewaking" }, "toilets": { "description": "Een kaart met openbare toiletten", @@ -1128,6 +1381,23 @@ }, "render": "Wandelknooppunt" } + }, + "2": { + "override": { + "name": "Wandelwegwijzers", + "title": { + "render": "Wandelwegwijzer" + } + } + }, + "3": { + "override": { + "presets": { + "0": { + "title": "een knooppuntwegwijzer" + } + } + } } }, "title": "Wandelknooppuntnetwerken" @@ -1140,13 +1410,9 @@ "description": "Kaart met afvalbakken en recyclingfaciliteiten.", "title": "Afval" }, - "waste_assen": { - "description": "Kaart met afvalbakken en recyclingfaciliteiten + een dataset voor Assen.", - "title": "Afval - Assen" - }, "waste_basket": { - "description": "Op deze kaart vind je vuilnisbakken waar je afval in kan smijten. Ontbreekt er een vuilnisbak? Dan kan je die zelf toevoegen", + "description": "Op deze kaart vind je afvalbakken bij jou in de buurt. Als er een afvalbak ontbreekt op deze kaart, kun je deze zelf toevoegen", "shortDescription": "Een kaart met vuilnisbakken", "title": "Vuilnisbakken" } -} \ No newline at end of file +} diff --git a/langs/uk.json b/langs/uk.json index 8f285a068..cbef7bd45 100644 --- a/langs/uk.json +++ b/langs/uk.json @@ -464,13 +464,31 @@ "name": "Анонім" }, "public": { - "docs": "Ваш трек буде видно всім, як у вашому профілі користувача, так і в списку GPS-треків на openstreetmap.org" + "docs": "Ваш трек буде видно всім, як у вашому профілі користувача, так і в списку GPS-треків на openstreetmap.org", + "name": "Публічний" } }, - "title": "Завантажте свій трек на OpenStreetMap.org" + "title": "Завантажте свій трек на OpenStreetMap.org", + "uploadFinished": "Ваш трек завантажено!", + "uploading": "Завантажуємо трасування…" }, + "uploadPending": "{count} змін на розгляді", "uploadPendingSingle": "Очікується одна зміна", + "uploadingChanges": "Завантаження змін…", "useSearch": "Скористайтеся пошуком вище, щоб побачити більше варіантів", + "visualFeedback": { + "closestFeaturesAre": "{n} елементи у вікні перегляду.", + "directionsAbsolute": { + "E": "схід", + "N": "північ", + "NE": "північний схід", + "NW": "північний захід", + "S": "південь", + "SE": "південний схід", + "SW": "південний захід", + "W": "захід" + } + }, "waitingForGeopermission": "Очікуємо вашого дозволу на використання геолокації…", "waitingForLocation": "Пошук вашого поточного місцезнаходження…", "welcomeBack": "З поверненням!", @@ -593,6 +611,11 @@ "validation": { "opening_hours": { "description": "Години роботи" + }, + "url": { + "aggregator": "{host} є стороннім веб-сайтом. Якщо можливо, пошукайте на офіційному сайті.", + "description": "посилання на веб-сайт", + "spamSite": "{host} вважається неякісним веб-сайтом. Використання цього веб-сайту заборонено." } } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 70d062d0c..889563004 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mapcomplete", - "version": "0.47.9", + "version": "0.47.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mapcomplete", - "version": "0.47.9", + "version": "0.47.10", "license": "GPL-3.0-or-later", "dependencies": { "@comunica/core": "^3.0.1", @@ -8020,9 +8020,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001678", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz", - "integrity": "sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==", + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "dev": true, "funding": [ { @@ -26968,9 +26968,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001678", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz", - "integrity": "sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==", + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "dev": true }, "canonicalize": { diff --git a/package.json b/package.json index e194db7bd..7cbcff1a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mapcomplete", - "version": "0.47.9", + "version": "0.47.10", "repository": "https://github.com/pietervdvn/MapComplete", "description": "A small website to edit OSM easily", "bugs": "https://github.com/pietervdvn/MapComplete/issues", @@ -114,9 +114,6 @@ "download:editor-layer-index": "vite-node scripts/downloadEli.ts", "download:stats": "vite-node scripts/GenerateSeries.ts", "download:images": "vite-node scripts/generateImageAnalysis.ts -- ~/data/imgur-image-backup/", - "weblate:add-upstream": "git remote add weblate-github git@github.com:weblate/MapComplete.git && git remote add weblate-hosted-core https://hosted.weblate.org/git/mapcomplete/core/ && git remote add weblate-hosted-layers https://hosted.weblate.org/git/mapcomplete/layers/", - "weblate:merge": "git remote update weblate-github; git merge weblate-github/weblate-mapcomplete-core weblate-github/weblate-mapcomplete-layers weblate-github/weblate-mapcomplete-layer-translations", - "weblate:merge-heavy": "git fetch weblate-hosted-layers; git fetch weblate-hosted-core; git merge weblate-hosted-layers/master weblate-hosted-core/master ", "lint": "npm run lint:prettier && npm run lint:eslint && npm run lint:themes", "lint:eslint": "eslint ./src", "lint:prettier": "prettier --check '**/*.ts' '**/*.svelte'", @@ -127,7 +124,7 @@ "optimize-images-scaledown-jpg": "cd assets/ && find . -regextype sed -regex \".*/.*.\\(jpg\\|JPG\\|JPEG\\|jpeg\\)\" -exec mogrify -resize 640x640\\> '{}' \\; && echo 'JPGs are optimized'", "generate:schemas": "export NODE_OPTIONS=\"--max-old-space-size=8192\" && ts2json-schema -p src/Models/ThemeConfig/Json/ -o Docs/Schemas/ -t tsconfig.json -R . -m \".*ConfigJson\" && echo 'tsjson is done' && vite-node scripts/fixSchemas.ts ", "reuse-compliance": "reuse lint", - "housekeeping": "export NODE_OPTIONS=\"--max-old-space-size=1200\" && git pull && npx update-browserslist-db@latest && npm run weblate:merge-heavy && npm run generate && npm run generate:docs && npm run generate:schemas && npm run generate:contributor-list && vite-node scripts/fetchLanguages.ts && vite-node scripts/generateSunnyUnlabeled.ts && npm run format && git add assets/ langs/ Docs/ **/*.ts Docs/* src/* && git commit -m 'chore: automated housekeeping...'", + "housekeeping": "export NODE_OPTIONS=\"--max-old-space-size=1200\" && git pull && npx update-browserslist-db@latest && npm run generate && npm run generate:docs && npm run generate:schemas && npm run generate:contributor-list && vite-node scripts/fetchLanguages.ts && vite-node scripts/generateSunnyUnlabeled.ts && npm run format && git add assets/ langs/ Docs/ **/*.ts Docs/* src/* && git commit -m 'chore: automated housekeeping...'", "###": "MICROSERVICES AND SERVER MAINTAINENCE", "release": "standard-version && git push --follow-tags", "release:minor": "standard-version --release-as minor", @@ -141,7 +138,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 && josm imgur_to_panoramax.osc" + "upload:panoramax": "vite-node scripts/ImgurToPanoramax.ts # && josm imgur_to_panoramax.osc" }, "keywords": [ "OpenStreetMap", diff --git a/scripts/ImgurToPanoramax.ts b/scripts/ImgurToPanoramax.ts index 314c26835..dcdbad55c 100644 --- a/scripts/ImgurToPanoramax.ts +++ b/scripts/ImgurToPanoramax.ts @@ -4,7 +4,7 @@ import { RegexTag } from "../src/Logic/Tags/RegexTag" import Constants from "../src/Models/Constants" import { BBox } from "../src/Logic/BBox" import { existsSync, readFileSync, writeFileSync } from "fs" -import { PanoramaxUploader } from "../src/Logic/ImageProviders/Panoramax" +import PanoramaxImageProvider, { PanoramaxUploader } from "../src/Logic/ImageProviders/Panoramax" import { Feature } from "geojson" import { LicenseInfo } from "../src/Logic/ImageProviders/LicenseInfo" import { GeoOperations } from "../src/Logic/GeoOperations" @@ -16,27 +16,33 @@ import { Changes } from "../src/Logic/Osm/Changes" 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 { UploadableTag } from "../src/Logic/Tags/TagTypes" +import { Imgur } from "../src/Logic/ImageProviders/Imgur" +import { Or } from "../src/Logic/Tags/Or" +import ScriptUtils from "./ScriptUtils" +import { ImmutableStore } from "../src/Logic/UIEventSource" export class ImgurToPanoramax extends Script { private readonly panoramax = new PanoramaxUploader( Constants.panoramax.url, Constants.panoramax.token ) + private licenseChecker = new PanoramaxImageProvider() - private readonly alreadyUploaded: Record = {} - + private readonly alreadyUploaded: Record = this.readAlreadyUploaded() + private readonly alreadyUploadedInv: Record = Utils.transposeMapSimple( + this.alreadyUploaded + ) private _imageDirectory: string private _licenseDirectory: string private readonly sequenceIds = { test: "7f34cf53-27ff-46c9-ac22-78511fa8457a", - cc0: "f0d6f78a-ff95-4db1-8494-6eb44a17bb37", + cc0: "e9bcb8c0-8ade-4ac9-bc9f-cfa464221fd6", // "1de6f4a1-73ac-4c75-ab7f-2a2aabddf50a", // "f0d6f78a-ff95-4db1-8494-6eb44a17bb37", ccby: "288a8052-b475-422c-811a-4f6f1a00015e", - ccbysa: "f3d02893-b4c1-4cd6-8b27-e27ab57eb59a", + ccbysa: "f3d02893-b4c1-4cd6-8b27-e27ab57eb59a" } as const constructor() { @@ -45,27 +51,110 @@ export class ImgurToPanoramax extends Script { ) } - async uploadImage( - key: string, - feat: Feature, - sequences: { - id: string - "stats:items": { count: number } - }[] - ): Promise { + private async getRawInfo(imgurUrl): Promise<{ description?: string; datetime: number }> { + const fallbackpath = + this._licenseDirectory + "/raw/" + imgurUrl.replaceAll(/[^a-zA-Z0-9]/g, "_") + ".json" + if (existsSync(fallbackpath)) { + console.log("Loaded raw info from fallback path") + return JSON.parse(readFileSync(fallbackpath, "utf8"))["data"] + } + // No local data available; lets ask imgur themselves + return new Promise((resolve) => { + Imgur.singleton.DownloadAttribution({ url: imgurUrl }, (raw) => { + console.log("Writing fallback to", fallbackpath, "(via raw)") + writeFileSync(fallbackpath, JSON.stringify(raw), "utf8") + resolve(raw["data"]) + }) + }) + } + + private async getLicenseFor(imgurUrl: string): Promise { + const imageName = imgurUrl.split("/").at(-1) + const licensePath: string = this._licenseDirectory + "/" + imageName + if (existsSync(licensePath)) { + const rawText = readFileSync(licensePath, "utf8") + if (rawText?.toLowerCase() === "cc0" || rawText?.toLowerCase().startsWith("cc0")) { + return { licenseShortName: "CC0", artist: "Unknown" } + } + try { + const licenseText: LicenseInfo = JSON.parse(rawText) + if (licenseText.licenseShortName) { + return licenseText + } + console.log("<<< No valid license found in text", rawText) + return undefined + } catch (e) { + console.error( + "Could not read ", + rawText.slice(0, 20), + "as json for image", + imgurUrl, + "from", + licensePath + ) + } + } + + // We didn't find the expected license in the expected location; search for the fallback (raw) license + const fallbackpath = + this._licenseDirectory + "/raw/" + imgurUrl.replaceAll(/[^a-zA-Z0-9]/g, "_") + ".json" + if (existsSync(fallbackpath)) { + const fallbackRaw: string = JSON.parse(readFileSync(fallbackpath, "utf8"))["data"] + ?.description + if ( + fallbackRaw?.toLowerCase()?.startsWith("cc0") || + fallbackRaw?.toLowerCase()?.indexOf("#cc0") >= 0 + ) { + return { licenseShortName: "CC0", artist: "Unknown" } + } + const license = Imgur.parseLicense(fallbackRaw) + if (license) { + return license + } + console.log( + "No (fallback) license found for (but file exists), not uploading", + imgurUrl, + fallbackRaw + ) + return undefined + } + + // No local data available; lets ask imgur themselves + const attr = await Imgur.singleton.DownloadAttribution({ url: imgurUrl }, (raw) => { + console.log("Writing fallback to", fallbackpath) + writeFileSync(fallbackpath, JSON.stringify(raw), "utf8") + }) + console.log("Got license via API:", attr?.licenseShortName) + await ScriptUtils.sleep(500) + if (attr?.licenseShortName) { + return attr + } + return undefined + } + + async uploadImage(key: string, feat: Feature): Promise { const v = feat.properties[key] if (!v) { return undefined } - const imageHash = v.split("/").at(-1).split(".").at(0) + const isPng = v.endsWith(".png") - if (this.alreadyUploaded[imageHash]) { + const imageHash = v.split("/").at(-1).split(".").at(0) + { const panohash = this.alreadyUploaded[imageHash] - return new And([new Tag(key.replace("image", panohash), panohash), new Tag(key, "")]) + if (panohash) { + console.log("Already uploaded", panohash) + return new And([ + new Tag(key.replace("image", "panoramax"), panohash), + new Tag(key, "") + ]) + } } let path: string = undefined - if (existsSync(this._imageDirectory + "/" + imageHash + ".jpg")) { + if (isPng) { + path = this._imageDirectory + "/../imgur_png_images/jpg/" + imageHash + ".jpg" + } else if (existsSync(this._imageDirectory + "/" + imageHash + ".jpg")) { path = this._imageDirectory + "/" + imageHash + ".jpg" } else if (existsSync(this._imageDirectory + "/" + imageHash + ".jpeg")) { path = this._imageDirectory + "/" + imageHash + ".jpeg" @@ -73,22 +162,26 @@ export class ImgurToPanoramax extends Script { if (!path) { return undefined } - const licensePath = - this._licenseDirectory + "/" + v.replaceAll(/[^a-zA-Z0-9]/g, "_") + ".json" - if (!existsSync(licensePath)) { + let license: LicenseInfo + try { + license = await this.getLicenseFor(v) + } catch (e) { + console.error("Could not fetch license due to", e) + if (e === 404) { + console.log("NOT FOUND") + return new Tag(key, "") + } + throw e + } + if (license === undefined) { return undefined } - const licenseText: LicenseInfo = JSON.parse(readFileSync(licensePath, "utf8")) - if (!licenseText.licenseShortName) { - console.log("No license found for", path, licenseText) + const sequence = this.sequenceIds[license.licenseShortName?.toLowerCase()] + console.log("Reading ",path) + if(!existsSync(path)){ return undefined } - const license = licenseText.licenseShortName.toLowerCase().split(" ")[0].replace(/-/g, "") - const sequence = this.sequenceIds[license] - const author = licenseText.artist - const handle = await open(path) - const stat = await handle.stat() class MyFile extends File { @@ -100,75 +193,174 @@ export class ImgurToPanoramax extends Script { const file = new MyFile([], path) - file.stream = function () { + file.stream = function() { return handle.readableWebStream() } + const licenseRaw = await this.getRawInfo(v) + const date = new Date(licenseRaw.datetime * 1000) + console.log("Uploading", imageHash, sequence) const result = await this.panoramax.uploadImage( file, GeoOperations.centerpointCoordinates(feat), - author, + license.artist, true, - sequence + sequence, + date.toISOString() ) - this.alreadyUploaded[imageHash] = result.value await handle.close() + this.alreadyUploaded[imageHash] = result.value + this.writeAlreadyUploaded() return new And([new Tag(key.replace("image", result.key), result.value), new Tag(key, "")]) } + private writeAlreadyUploaded() { + writeFileSync("uploaded_images.json", JSON.stringify(this.alreadyUploaded)) + } + + private readAlreadyUploaded() { + const uploaded = JSON.parse(readFileSync("uploaded_images.json", "utf8")) + console.log("Detected ", Object.keys(uploaded).length, "previously uploaded images") + return uploaded + } + + private async patchDate(panokey: string) { + const imgurkey = this.alreadyUploadedInv[panokey] + const license = await this.getRawInfo("https://i.imgur.com/" + imgurkey + ".jpg") + const date = new Date(license.datetime * 1000) + const panolicense = await this.panoramax.panoramax.search({ + ids: [panokey] + }) + const panodata = panolicense[0] + const collection: string = panodata.collection + console.log({ imgurkey, date, panodata, datetime: license.datetime }) + const p = this.panoramax.panoramax + const url = p.host + "/collections/" + collection + "/items/" + panokey + const result = await p.fetch(url, { + method: "PATCH", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ + ts: date.getTime() + }) + }) + console.log( + "Patched date of ", + p.createViewLink({ + imageId: panokey + }), + url, + "result is", + result.status, + await result.text() + ) + } + 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 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 + // await this.panoramax.panoramax.createCollection("CC0 - part 2") + // return + /* for (const panohash in this.alreadyUploadedInv) { + await this.patchDate(panohash) + break + }*/ + const bounds = new BBox([ + [ + -180, + -90 + ], + [ + 180, + 90 + ] + ]) + const maxcount = 10000 + const overpassfilters: RegexTag[] = [] + const r = /^https:\/\/i.imgur.com\/.*/ + for (const k of ["image", "image:menu", "image:streetsign"]) { + overpassfilters.push(new RegexTag(k, r)) + for (let i = 0; i < 20; i++) { + overpassfilters.push(new RegexTag(k + ":" + i, r)) + } + } + const overpass = new Overpass( + new Or(overpassfilters), + [], + Constants.defaultOverpassUrls[0], + new ImmutableStore(500) + ) + const features = (await overpass.queryGeoJson(bounds))[0].features + const featuresCopy = [...features] let converted = 0 - const pano = this.panoramax.panoramax - const sequences = await pano.mySequences() + const total = features.length const changes: ChangeDescription[] = [] + do { const f = features.shift() if (!f) { break } + if (converted % 100 === 0) { + console.log( + "Converted:", + converted, + "total:", + total, + "progress:", + Math.round((converted * 100) / total) + "%" + ) + } - const changedTags: (UploadableTag | undefined)[] = [] + let changedTags: (UploadableTag | undefined)[] = [] + console.log(converted + "/" + total, " handling " + f.properties.id) for (const k of ["image", "image:menu", "image:streetsign"]) { - changedTags.push(await this.uploadImage(k, f, sequences)) + changedTags.push(await this.uploadImage(k, f)) for (let i = 0; i < 20; i++) { - changedTags.push(await this.uploadImage(k + ":" + i, f, sequences)) + changedTags.push(await this.uploadImage(k + ":" + i, f)) } } - 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())) + changedTags = Utils.NoNull(changedTags) + if (changedTags.length > 0) { + const action = new ChangeTagAction( + f.properties.id, + new And(changedTags), + f.properties, + { + theme: "image-mover", + changeType: "link-image" + } + ) + changes.push(...(await action.CreateChangeDescriptions())) + } converted++ } while (converted < maxcount) + console.log("Uploaded images for", converted, "items; now creating the changeset") + const modif: string[] = Utils.Dedup(changes.map((ch) => ch.type + "/" + ch.id)) - const modifiedObjectsFresh = ( - ( - await Promise.all( - modif.map((id) => new OsmObjectDownloader().DownloadObjectAsync(id)) + const modifiedObjectsFresh: OsmObject[] = [] + const dloader = new OsmObjectDownloader() + for (let i = 0; i < modif.length; i++) { + if (i % 100 === 0) { + console.log( + "Downloaded osm object", + i, + "/", + modif.length, + "(" + Math.round((i * 100) / modif.length) + "%)" ) - ).filter((m) => m !== "deleted") - ) + } + const id = modif[i] + const obj = await dloader.DownloadObjectAsync(id) + if (obj === "deleted") { + continue + } + modifiedObjectsFresh.push(obj) + } const modifiedObjects = Changes.createChangesetObjectsStatic( changes, modifiedObjectsFresh, @@ -177,6 +369,13 @@ export class ImgurToPanoramax extends Script { ) const cs = Changes.buildChangesetXML("0", modifiedObjects) writeFileSync("imgur_to_panoramax.osc", cs, "utf8") + + const usernames = featuresCopy.map((f) => f.properties.user) + const hist: Record = {} + for (const username of usernames) { + hist[username] = (hist[username] ?? 0) + 1 + } + console.log(hist) } } diff --git a/scripts/generateImageAnalysis.ts b/scripts/generateImageAnalysis.ts index 7dd376ea9..884124313 100644 --- a/scripts/generateImageAnalysis.ts +++ b/scripts/generateImageAnalysis.ts @@ -88,7 +88,7 @@ export default class GenerateImageAnalysis extends Script { if (image === undefined) { return false } - if (!image.match(/https:\/\/i\.imgur\.com\/[a-zA-Z0-9]+\.jpg/)) { + if (!image.match(/https:\/\/i\.imgur\.com\/[a-zA-Z0-9]+(\.jpe?g)|(\.png)/)) { return false } const filename = image.replace(/[\/:.\-%]/g, "_") + ".json" diff --git a/scripts/generateTranslations.ts b/scripts/generateTranslations.ts index b9c08b51e..b4f6df30d 100644 --- a/scripts/generateTranslations.ts +++ b/scripts/generateTranslations.ts @@ -3,6 +3,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs" import { Utils } from "../src/Utils" import ScriptUtils from "./ScriptUtils" import Script from "./Script" +import Constants from "../src/Models/Constants" const knownLanguages = ["en", "nl", "de", "fr", "es", "gl", "ca"] const ignoreTerms = ["searchTerms"] @@ -262,7 +263,9 @@ class TranslationPart { lang = weblatepart weblatepart = "core" } - const fixLink = `Fix it on https://hosted.weblate.org/translate/mapcomplete/${weblatepart}/${lang}/?offset=1&q=context%3A%3D%22${encodeURIComponent( + const fixLink = `Fix it on ${ + Constants.weblate + }translate/mapcomplete/${weblatepart}/${lang}/?offset=1&q=context%3A%3D%22${encodeURIComponent( path.join(".") )}%22` let subparts: string[] = value.match(/{[^}]*}/g) diff --git a/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts b/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts index 494d59e2d..f3a9a9c0c 100644 --- a/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts @@ -49,7 +49,7 @@ export default class OverpassFeatureSource implements UpdatableFeatureSource { }, options?: { padToTiles?: Store - isActive?: Store, + isActive?: Store ignoreZoom?: boolean } ) { @@ -57,7 +57,9 @@ export default class OverpassFeatureSource implements UpdatableFeatureSource { this._isActive = options?.isActive ?? new ImmutableStore(true) this.padToZoomLevel = options?.padToTiles const self = this - this._layersToDownload = options?.ignoreZoom? new ImmutableStore(state.layers) : state.zoom.map((zoom) => this.layersToDownload(zoom)) + this._layersToDownload = options?.ignoreZoom + ? new ImmutableStore(state.layers) + : state.zoom.map((zoom) => this.layersToDownload(zoom)) state.bounds.mapD( (_) => { @@ -123,9 +125,11 @@ export default class OverpassFeatureSource implements UpdatableFeatureSource { let bounds: BBox do { try { - bounds = overrideBounds ?? this.state.bounds.data - ?.pad(this.state.widenFactor) - ?.expandToTileBounds(this.padToZoomLevel?.data) + bounds = + overrideBounds ?? + this.state.bounds.data + ?.pad(this.state.widenFactor) + ?.expandToTileBounds(this.padToZoomLevel?.data) if (!bounds) { return } diff --git a/src/Logic/FeatureSource/Sources/ThemeSource.ts b/src/Logic/FeatureSource/Sources/ThemeSource.ts index bc20862df..3606015a6 100644 --- a/src/Logic/FeatureSource/Sources/ThemeSource.ts +++ b/src/Logic/FeatureSource/Sources/ThemeSource.ts @@ -42,7 +42,7 @@ export default class ThemeSource extends FeatureSourceMerger { backend: string, isDisplayed: (id: string) => Store, mvtAvailableLayers: Set, - fullNodeDatabaseSource?: FullNodeDatabaseSource, + fullNodeDatabaseSource?: FullNodeDatabaseSource ) { const supportsForceDownload: UpdatableFeatureSource[] = [] @@ -63,7 +63,7 @@ export default class ThemeSource extends FeatureSourceMerger { { isActive: isDisplayed(layer.id), maxAge: layer.maxAgeOfCache, - }, + } ) fromCache.set(layer.id, src) } @@ -82,7 +82,7 @@ export default class ThemeSource extends FeatureSourceMerger { zoom, backend, featureSwitches, - fullNodeDatabaseSource, + fullNodeDatabaseSource ) nonMvtSources.push(osmApiSource) @@ -91,14 +91,13 @@ export default class ThemeSource extends FeatureSourceMerger { console.log( "Layers ", nonMvtLayers.map((l) => l.id), - " cannot be fetched from the cache server, defaulting to overpass/OSM-api", + " cannot be fetched from the cache server, defaulting to overpass/OSM-api" ) overpassSource = ThemeSource.setupOverpass(osmLayers, bounds, zoom, featureSwitches) nonMvtSources.push(overpassSource) supportsForceDownload.push(overpassSource) } - function setIsLoading() { const loading = overpassSource?.runningQuery?.data || osmApiSource?.isRunning?.data isLoading.setData(loading) @@ -108,40 +107,47 @@ export default class ThemeSource extends FeatureSourceMerger { osmApiSource?.isRunning?.addCallbackAndRun(() => setIsLoading()) const geojsonSources: UpdatableFeatureSource[] = geojsonlayers.map((l) => - ThemeSource.setupGeojsonSource(l, mapProperties, isDisplayed(l.id)), + ThemeSource.setupGeojsonSource(l, mapProperties, isDisplayed(l.id)) ) const downloadAllBounds: UIEventSource = new UIEventSource(undefined) - const downloadAll= new OverpassFeatureSource({ - layers: layers.filter(l => l.isNormal()), - bounds: mapProperties.bounds, - zoom: mapProperties.zoom, - overpassUrl: featureSwitches.overpassUrl, - overpassTimeout: featureSwitches.overpassTimeout, - overpassMaxZoom: new ImmutableStore(99), - widenFactor: 0, - },{ - ignoreZoom: true - }) + const downloadAll = new OverpassFeatureSource( + { + layers: layers.filter((l) => l.isNormal()), + bounds: mapProperties.bounds, + zoom: mapProperties.zoom, + overpassUrl: featureSwitches.overpassUrl, + overpassTimeout: featureSwitches.overpassTimeout, + overpassMaxZoom: new ImmutableStore(99), + widenFactor: 0, + }, + { + ignoreZoom: true, + } + ) - super(...geojsonSources, ...Array.from(fromCache.values()), ...mvtSources, ...nonMvtSources, downloadAll) + super( + ...geojsonSources, + ...Array.from(fromCache.values()), + ...mvtSources, + ...nonMvtSources, + downloadAll + ) this.isLoading = isLoading supportsForceDownload.push(...geojsonSources) supportsForceDownload.push(...mvtSources) // Non-mvt sources are handled by overpass - this._mapBounds = mapProperties.bounds this._downloadAll = downloadAll this.supportsForceDownload = supportsForceDownload - } private static setupMvtSource( layer: LayerConfig, mapProperties: { zoom: Store; bounds: Store }, - isActive?: Store, + isActive?: Store ): UpdatableFeatureSource { return new DynamicMvtileSource(layer, mapProperties, { isActive }) } @@ -149,12 +155,12 @@ export default class ThemeSource extends FeatureSourceMerger { private static setupGeojsonSource( layer: LayerConfig, mapProperties: { zoom: Store; bounds: Store }, - isActiveByFilter?: Store, + isActiveByFilter?: Store ): UpdatableFeatureSource { const source = layer.source const isActive = mapProperties.zoom.map( (z) => (isActiveByFilter?.data ?? true) && z >= layer.minzoom, - [isActiveByFilter], + [isActiveByFilter] ) if (source.geojsonZoomLevel === undefined) { // This is a 'load everything at once' geojson layer @@ -170,7 +176,7 @@ export default class ThemeSource extends FeatureSourceMerger { zoom: Store, backend: string, featureSwitches: FeatureSwitchState, - fullNodeDatabase: FullNodeDatabaseSource, + fullNodeDatabase: FullNodeDatabaseSource ): OsmFeatureSource | undefined { if (osmLayers.length == 0) { return undefined @@ -204,7 +210,7 @@ export default class ThemeSource extends FeatureSourceMerger { osmLayers: LayerConfig[], bounds: Store, zoom: Store, - featureSwitches: FeatureSwitchState, + featureSwitches: FeatureSwitchState ): OverpassFeatureSource | undefined { if (osmLayers.length == 0) { return undefined @@ -233,14 +239,14 @@ export default class ThemeSource extends FeatureSourceMerger { { padToTiles: zoom.map((zoom) => Math.min(15, zoom + 1)), isActive, - }, + } ) } public async downloadAll() { console.log("Downloading all data:") await this._downloadAll.updateAsync(this._mapBounds.data) - // await Promise.all(this.supportsForceDownload.map((i) => i.updateAsync())) + // await Promise.all(this.supportsForceDownload.map((i) => i.updateAsync())) console.log("Done") } } diff --git a/src/Logic/ImageProviders/AllImageProviders.ts b/src/Logic/ImageProviders/AllImageProviders.ts index 987b1a191..96552b06d 100644 --- a/src/Logic/ImageProviders/AllImageProviders.ts +++ b/src/Logic/ImageProviders/AllImageProviders.ts @@ -68,7 +68,7 @@ export default class AllImageProviders { private static readonly _cachedImageStores: Record> = {} /** - * Tries to extract all image data for this image. Cachedon tags?.data?.id + * Tries to extract all image data for this image. Cached on tags?.data?.id */ public static LoadImagesFor( tags: Store>, @@ -78,8 +78,9 @@ export default class AllImageProviders { return undefined } const id = tags?.data?.id - if (this._cachedImageStores[id]) { - return this._cachedImageStores[id] + const cachekey = id + (tagKey?.join(";") ?? "") + if (this._cachedImageStores[cachekey]) { + return this._cachedImageStores[cachekey] } const source = new UIEventSource([]) @@ -90,6 +91,7 @@ export default class AllImageProviders { However, we override them if a custom image tag is set, e.g. 'image:menu' */ const prefixes = tagKey ?? imageProvider.defaultKeyPrefixes + console.log("Prefixes are", tagKey, prefixes) const singleSource = tags.bindD((tags) => imageProvider.getRelevantUrls(tags, prefixes)) allSources.push(singleSource) singleSource.addCallbackAndRunD((_) => { @@ -98,21 +100,19 @@ export default class AllImageProviders { source.set(dedup) }) } - this._cachedImageStores[id] = source + this._cachedImageStores[cachekey] = source return source } /** * Given a list of URLs, tries to detect the images. Used in e.g. the comments - * @param url */ public static loadImagesFrom(urls: string[]): Store { const tags = { - id: "na", + id: urls.join(";"), } for (let i = 0; i < urls.length; i++) { - const url = urls[i] - tags["image:" + i] = url + tags["image:" + i] = urls[i] } return this.LoadImagesFor(new ImmutableStore(tags)) } diff --git a/src/Logic/ImageProviders/Imgur.ts b/src/Logic/ImageProviders/Imgur.ts index c72ea54fd..dfa7f8b08 100644 --- a/src/Logic/ImageProviders/Imgur.ts +++ b/src/Logic/ImageProviders/Imgur.ts @@ -11,6 +11,7 @@ export class Imgur extends ImageProvider { public readonly defaultKeyPrefixes: string[] = ["image"] public static readonly apiUrl = "https://api.imgur.com/3/image" public static readonly supportingUrls = ["https://i.imgur.com"] + private constructor() { super() } @@ -37,6 +38,37 @@ export class Imgur extends ImageProvider { return undefined } + public static parseLicense(descr: string) { + const data: Record = {} + + if (!descr) { + return undefined + } + if (descr.toLowerCase() === "cc0") { + data.author = "Unknown" + data.license = "CC0" + } else { + for (const tag of descr.split("\n")) { + const kv = tag.split(":") + if (kv.length < 2) { + continue + } + const k = kv[0] + data[k] = kv[1]?.replace(/\r/g, "") + } + } + if (Object.keys(data).length === 0) { + return undefined + } + + const licenseInfo = new LicenseInfo() + + licenseInfo.licenseShortName = data.license + licenseInfo.artist = data.author + + return licenseInfo + } + /** * Download the attribution and license info for the picture at the given URL * @@ -56,9 +88,14 @@ export class Imgur extends ImageProvider { * * */ - public async DownloadAttribution(providedImage: { url: string }): Promise { + public async DownloadAttribution( + providedImage: { + url: string + }, + withResponse?: (obj) => void + ): Promise { const url = providedImage.url - const hash = url.substr("https://i.imgur.com/".length).split(/\.jpe?g/i)[0] + const hash = url.substr("https://i.imgur.com/".length).split(/(\.jpe?g)|(\.png)/i)[0] const apiUrl = "https://api.imgur.com/3/image/" + hash const response = await Utils.downloadJsonCached<{ @@ -66,24 +103,17 @@ export class Imgur extends ImageProvider { }>(apiUrl, 365 * 24 * 60 * 60, { Authorization: "Client-ID " + Constants.ImgurApiKey, }) - - const descr = response.data.description ?? "" - const data: any = {} - const imgurData = response.data - - for (const tag of descr.split("\n")) { - const kv = tag.split(":") - const k = kv[0] - data[k] = kv[1]?.replace(/\r/g, "") + if (withResponse) { + withResponse(response) } - const licenseInfo = new LicenseInfo() + const imgurData = response.data + const license = Imgur.parseLicense(imgurData.description ?? "") + if (license) { + license.views = imgurData.views + license.date = new Date(Number(imgurData.datetime) * 1000) + } - licenseInfo.licenseShortName = data.license - licenseInfo.artist = data.author - licenseInfo.date = new Date(Number(imgurData.datetime) * 1000) - licenseInfo.views = imgurData.views - - return licenseInfo + return license } } diff --git a/src/Logic/ImageProviders/Panoramax.ts b/src/Logic/ImageProviders/Panoramax.ts index bd8970efe..7bb09fae1 100644 --- a/src/Logic/ImageProviders/Panoramax.ts +++ b/src/Logic/ImageProviders/Panoramax.ts @@ -145,12 +145,7 @@ export default class PanoramaxImageProvider extends ImageProvider { ) } - Stores.Chronic(1500, () => hasLoading(source.data)).addCallback((_) => { - console.log( - "Testing panoramax URLS again as some were loading", - source.data, - hasLoading(source.data) - ) + Stores.Chronic(1500, () => hasLoading(source.data)).addCallback(() => { super.getRelevantUrlsFor(tags, prefixes).then((data) => { source.set(data) return !hasLoading(data) @@ -192,9 +187,9 @@ export default class PanoramaxImageProvider extends ImageProvider { export class PanoramaxUploader implements ImageUploader { public readonly panoramax: AuthorizedPanoramax maxFileSizeInMegabytes = 100 * 1000 * 1000 // 100MB - private readonly _targetSequence: Store + private readonly _targetSequence?: Store - constructor(url: string, token: string, targetSequence: Store) { + constructor(url: string, token: string, targetSequence?: Store) { this._targetSequence = targetSequence this.panoramax = new AuthorizedPanoramax(url, token) } @@ -204,7 +199,8 @@ export class PanoramaxUploader implements ImageUploader { currentGps: [number, number], author: string, noblur: boolean = false, - sequenceId?: string + sequenceId?: string, + datetime?: string ): Promise<{ key: string value: string @@ -213,7 +209,7 @@ export class PanoramaxUploader implements ImageUploader { // https://panoramax.openstreetmap.fr/api/docs/swagger#/ let [lon, lat] = currentGps - let datetime = new Date().toISOString() + datetime ??= new Date().toISOString() try { const tags = await ExifReader.load(blob) const [[latD], [latM], [latS, latSDenom]] = < diff --git a/src/Logic/Tags/TagUtils.ts b/src/Logic/Tags/TagUtils.ts index f64d81315..224e3f144 100644 --- a/src/Logic/Tags/TagUtils.ts +++ b/src/Logic/Tags/TagUtils.ts @@ -866,7 +866,7 @@ export class TagUtils { tag + ". To indicate a missing tag, use '" + split[0] + - "!=' instead" + "=' instead" ) } if (split[1] === "") { diff --git a/src/Logic/Web/LinkedDataLoader.ts b/src/Logic/Web/LinkedDataLoader.ts index c2eb21f69..268fd4865 100644 --- a/src/Logic/Web/LinkedDataLoader.ts +++ b/src/Logic/Web/LinkedDataLoader.ts @@ -371,7 +371,7 @@ export default class LinkedDataLoader { const match = maxstay.match(/P([0-9]+)D/) if (match) { const days = Number(match[1]) - if(days === 30){ + if (days === 30) { // 30 is the default which is set if velopark didn't know the actual value return undefined } diff --git a/src/Logic/Web/VeloparkLoader.ts b/src/Logic/Web/VeloparkLoader.ts index dffaec485..09a33f967 100644 --- a/src/Logic/Web/VeloparkLoader.ts +++ b/src/Logic/Web/VeloparkLoader.ts @@ -17,7 +17,7 @@ export default class VeloparkLoader { private static readonly coder = new CountryCoder( Constants.countryCoderEndpoint, - Utils.downloadJson, + Utils.downloadJson ) public static convert(veloparkData: VeloparkData): Feature { @@ -46,14 +46,14 @@ export default class VeloparkLoader { if (veloparkData.contactPoint?.email) { properties["operator:email"] = VeloparkLoader.emailReformatting.reformat( - veloparkData.contactPoint?.email, + veloparkData.contactPoint?.email ) } if (veloparkData.contactPoint?.telephone) { properties["operator:phone"] = VeloparkLoader.phoneValidator.reformat( veloparkData.contactPoint?.telephone, - () => "be", + () => "be" ) } @@ -78,7 +78,7 @@ export default class VeloparkLoader { ) { const duration = g.maximumParkingDuration.substring( 1, - g.maximumParkingDuration.length - 1, + g.maximumParkingDuration.length - 1 ) if (duration !== "30") { // We don't set maxstay if it is 30, they are the default value that velopark chose for "unknown" @@ -97,11 +97,11 @@ export default class VeloparkLoader { const startHour = spec.opens const endHour = spec.closes === "23:59" ? "24:00" : spec.closes const merged = OH.MergeTimes( - OH.ParseRule(dayOfWeek + " " + startHour + "-" + endHour), + OH.ParseRule(dayOfWeek + " " + startHour + "-" + endHour) ) return OH.ToString(merged) }) - .join("; "), + .join("; ") ) properties.opening_hours = oh } diff --git a/src/Models/Constants.ts b/src/Models/Constants.ts index 04c69f44f..3f6f5c943 100644 --- a/src/Models/Constants.ts +++ b/src/Models/Constants.ts @@ -137,6 +137,7 @@ export default class Constants { public static osmAuthConfig: AuthConfig = Constants.config.oauth_credentials public static nominatimEndpoint: string = Constants.config.nominatimEndpoint public static photonEndpoint: string = Constants.config.photonEndpoint + public static weblate: string = "https://translate.mapcomplete.org/" public static linkedDataProxy: string = Constants.config["jsonld-proxy"] /** diff --git a/src/Models/ThemeConfig/Json/LayerConfigJson.ts b/src/Models/ThemeConfig/Json/LayerConfigJson.ts index 78955736c..48ebd5de5 100644 --- a/src/Models/ThemeConfig/Json/LayerConfigJson.ts +++ b/src/Models/ThemeConfig/Json/LayerConfigJson.ts @@ -319,7 +319,7 @@ export interface LayerConfigJson { * * If no presets are defined, the button which invites to add a new preset will not be shown. * - *